Thread: Tilde expansion on Win32

Tilde expansion on Win32

From
Bruce Momjian
Date:
I noticed that we don't expand tildes in Win32 because of the use of
tilde in short versions of long file names:
char *expand_tilde(char **filename){    if (!filename || !(*filename))        return NULL;    /* MSDOS uses tilde for
shortversions of long file names, so skip it. */#ifndef WIN32    /* try tilde expansion */    if (**filename == '~')
{

However, I thought the tilde was usually used toward the end of the file
name, not at the beginning.  Is this true?  Should this code be modified?

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: Tilde expansion on Win32

From
"Joshua D. Drake"
Date:
Bruce Momjian wrote:
> I noticed that we don't expand tildes in Win32 because of the use of
> tilde in short versions of long file names:
> 
>     char *
>     expand_tilde(char **filename)
>     {
>         if (!filename || !(*filename))
>             return NULL;
>     
>         /* MSDOS uses tilde for short versions of long file names, so skip it. */
>     #ifndef WIN32
>     
>         /* try tilde expansion */
>         if (**filename == '~')
>         {
> 
> However, I thought the tilde was usually used toward the end of the file
> name, not at the beginning.  Is this true?  Should this code be modified?
> 

If you talking about WIn32 ~ they are typically in the middle. Like:

program files === progra~1

Sincerely,

Joshua D. Drake


-- 
Your PostgreSQL solutions provider, Command Prompt, Inc.
24x7 support - 1.800.492.2240, programming, and consulting
Home of PostgreSQL Replicator, plPHP, plPerlNG and pgPHPToolkit
http://www.commandprompt.com / http://www.postgresql.org


Re: Tilde expansion on Win32

From
"Dave Page"
Date:

> -----Original Message-----
> From: pgsql-hackers-owner@postgresql.org
> [mailto:pgsql-hackers-owner@postgresql.org] On Behalf Of Bruce Momjian
> Sent: 10 June 2005 15:31
> To: PostgreSQL-development
> Subject: [HACKERS] Tilde expansion on Win32
>
> I noticed that we don't expand tildes in Win32 because of the use of
> tilde in short versions of long file names:
>
>     char *
>     expand_tilde(char **filename)
>     {
>         if (!filename || !(*filename))
>             return NULL;
>
>         /* MSDOS uses tilde for short versions of long file
> names, so skip it. */
>     #ifndef WIN32
>
>         /* try tilde expansion */
>         if (**filename == '~')
>         {
>
> However, I thought the tilde was usually used toward the end
> of the file
> name, not at the beginning.  Is this true?  Should this code
> be modified?

Yes, it's true - long filenames may be shortened to something like

Long filename.document -> longfi~1.doc

To munge them into 8.3 format. Without looking at the code I assume that
it is expanding ~dpage into /home/dpage or whatever? If so, I'd be
inclined to leave it - tilde isn't used like that on Windows.

Regards, Dave


Re: Tilde expansion on Win32

From
Bruce Momjian
Date:
Dave Page wrote:
>  
> 
> > -----Original Message-----
> > From: pgsql-hackers-owner@postgresql.org 
> > [mailto:pgsql-hackers-owner@postgresql.org] On Behalf Of Bruce Momjian
> > Sent: 10 June 2005 15:31
> > To: PostgreSQL-development
> > Subject: [HACKERS] Tilde expansion on Win32
> > 
> > I noticed that we don't expand tildes in Win32 because of the use of
> > tilde in short versions of long file names:
> > 
> >     char *
> >     expand_tilde(char **filename)
> >     {
> >         if (!filename || !(*filename))
> >             return NULL;
> >     
> >         /* MSDOS uses tilde for short versions of long file 
> > names, so skip it. */
> >     #ifndef WIN32
> >     
> >         /* try tilde expansion */
> >         if (**filename == '~')
> >         {
> > 
> > However, I thought the tilde was usually used toward the end 
> > of the file
> > name, not at the beginning.  Is this true?  Should this code 
> > be modified?
> 
> Yes, it's true - long filenames may be shortened to something like
> 
> Long filename.document -> longfi~1.doc
> 
> To munge them into 8.3 format. Without looking at the code I assume that
> it is expanding ~dpage into /home/dpage or whatever? If so, I'd be
> inclined to leave it - tilde isn't used like that on Windows.

OK, you d'man.  I will leave it.

I know we can't support ~user/ on Win32, but I thought maybe we should
support ~/.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073