Add remove duplicate slashes to canonicalize_path()

Started by Bruce Momjianover 21 years ago4 messagespatches
Jump to latest
#1Bruce Momjian
bruce@momjian.us

The following applied patch removes duplicate slashes from the path in
canonicalize_path(). It preserve double leading slashes on Win32.

e.g. ////a////b => /a/b

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

Attachments:

/bjm/difftext/plainDownload+28-9
#2Andrew Dunstan
andrew@dunslane.net
In reply to: Bruce Momjian (#1)
Re: Add remove duplicate slashes to canonicalize_path()

Bruce Momjian wrote:

*** 247,255 ****
int len = strlen(path);

if (len > 2 && strcmp(path + len - 2, "/.") == 0)
- {
trim_directory(path);
- }
else if (len > 3 && strcmp(path + len - 3, "/..") == 0)
{
trim_directory(path);

As a matter of style I hate this. Stripping the braces from a branch of
an if statement on the ground that it only has one statement, when other
branches might be multi-statement blocks is just downright ugly. I
thought the outcome of a recent discussion was that we would stop doing
that, at least automatically from pgindent, but I don't see any reason
to do it manually either.

cheers

andrew

#3Bruce Momjian
bruce@momjian.us
In reply to: Andrew Dunstan (#2)
Re: Add remove duplicate slashes to canonicalize_path()

Andrew Dunstan wrote:

Bruce Momjian wrote:

*** 247,255 ****
int len = strlen(path);

if (len > 2 && strcmp(path + len - 2, "/.") == 0)
- {
trim_directory(path);
- }
else if (len > 3 && strcmp(path + len - 3, "/..") == 0)
{
trim_directory(path);

As a matter of style I hate this. Stripping the braces from a branch of
an if statement on the ground that it only has one statement, when other
branches might be multi-statement blocks is just downright ugly. I
thought the outcome of a recent discussion was that we would stop doing
that, at least automatically from pgindent, but I don't see any reason
to do it manually either.

Right, we aren't doing it automatically. Manually it seemed OK. What
is our consensus on this?

-- 
  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
#4Reini Urban
rurban@x-ray.at
In reply to: Bruce Momjian (#1)
Re: Add remove duplicate slashes to canonicalize_path()

Bruce Momjian schrieb:

The following applied patch removes duplicate slashes from the path in
canonicalize_path(). It preserve double leading slashes on Win32.

e.g. ////a////b => /a/b

snip

* o make Win32 path use Unix slashes
* o remove trailing quote on Win32
* o remove trailing slash
* o remove trailing '.'
* o process trailing '..' ourselves

At the first glance I thought this will break Win95 (via cygwin), but it
really is ok, 'cause all the paths go through cygwin.
--
Reini Urban
http://xarch.tu-graz.ac.at/home/rurban/