From 16ac3975a67d58c2f3ad7448ff2401f16ee7b1b1 Mon Sep 17 00:00:00 2001 From: Jarkko Hietaniemi Date: Sun, 21 Jan 2001 22:55:44 +0000 Subject: Tweak the mkdir trailing slash code some more. TO DO: the same handling should probably be done for all the other filesystem functions that can have directories as their arguments. p4raw-id: //depot/perl@8509 --- pp_sys.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'pp_sys.c') diff --git a/pp_sys.c b/pp_sys.c index 8d3200e825..283dbc1868 100644 --- a/pp_sys.c +++ b/pp_sys.c @@ -3600,10 +3600,18 @@ PP(pp_mkdir) tmps = SvPV(TOPs, len); /* Different operating and file systems take differently to - * trailing slashes. To err on the side of portability, we - * snip away one trailing slash. */ - if (tmps[len-1] == '/') { - tmps = savepvn(tmps, len - 1); + * trailing slashes. According to POSIX 1003.1 1996 Edition + * any number of trailing slashes should be allowed. + * Thusly we snip them away so that even non-conforming + * systems are happy. */ + /* We should probably do this "filtering" for all + * the functions that expect (potentially) directory names: + * -d, chdir(), chmod(), chown(), chroot(), fcntl()?, + * (mkdir()), opendir(), rename(), rmdir(), stat(). --jhi */ + if (len > 1 && tmps[len-1] == '/') { + while (tmps[len] == '/' && len > 1) + len--; + tmps = savepvn(tmps, len); copy = TRUE; } -- cgit v1.2.1