Tilde expansion on Win32

Started by Bruce Momjianover 20 years ago4 messages
#1Bruce Momjian
pgman@candle.pha.pa.us

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?

-- 
  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, Pennsylvania 19073
#2Joshua D. Drake
jd@commandprompt.com
In reply to: Bruce Momjian (#1)
Re: Tilde expansion on Win32

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

#3Dave Page
dpage@vale-housing.co.uk
In reply to: Joshua D. Drake (#2)
Re: Tilde expansion on Win32

-----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

#4Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Dave Page (#3)
Re: Tilde expansion on Win32

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, Pennsylvania 19073