From: Winfried Koenig Date: Wed, 25 Dec 1996 22:45:45 +0000 (+0200) Subject: perl5.003_15 and Interactive Unix X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=ed969818e9262af83dfc5c762815172bd6262d27;p=p5sagit%2Fp5-mst-13.2.git perl5.003_15 and Interactive Unix with my patches, perl5.003_15 compiled with cc, runs all tests. Compiled with gcc I get this failed tests: op/goto...........FAILED on test 8 op/sysio..........FAILED on test 0 lib/autoloader....Goto undefined subroutine at ./lib/autoloader.t line 58. FAILED on test 3 lib/english.......FAILED on test 0 lib/fatal.........FAILED on test 0 lib/hostname......FAILED on test 0 Failed 6/135 tests, 91.11% okay. On my Linux System I get similar failures: op/goto...........FAILED on test 8 op/sysio..........Negative length at ./op/sysio.t line 64. FAILED on test 1 lib/autoloader....Goto undefined subroutine at ./lib/autoloader.t line 58. FAILED on test 0 lib/english.......FAILED on test 0 lib/fatal.........Can't use an undefined value as filehandle reference at ./lib/fatal.t line 21. lib/hostname......FAILED on test 0 Failed 6/135 tests, 94.81% okay. So I think that this problems are already fixed. My changes to perl.h are necessary to compile x2p/malloc.c, but there may be better solutions. p5p-msgid: --- diff --git a/hints/isc.sh b/hints/isc.sh index 5860acc..43b70fd 100644 --- a/hints/isc.sh +++ b/hints/isc.sh @@ -31,6 +31,9 @@ esac # getsockname() and getpeername() return 256 for no good reason ccflags="$ccflags -DBOGUS_GETNAME_RETURN=256" +# rename(2) can't rename long filenames +d_rename=undef + # You can also include -D_SYSV3 to pick up "traditionally visible" # symbols hidden by name-space pollution rules. This raises some # compilation "redefinition" warnings, but they appear harmless. diff --git a/pp_sys.c b/pp_sys.c index 72b8df5..10b64d4 100644 --- a/pp_sys.c +++ b/pp_sys.c @@ -2496,13 +2496,15 @@ PP(pp_rename) #ifdef HAS_RENAME anum = rename(tmps, tmps2); #else - if (same_dirent(tmps2, tmps)) /* can always rename to same name */ - anum = 1; - else { - if (euid || Stat(tmps2, &statbuf) < 0 || !S_ISDIR(statbuf.st_mode)) - (void)UNLINK(tmps2); - if (!(anum = link(tmps, tmps2))) - anum = UNLINK(tmps); + if (!(anum = Stat(tmps, &statbuf))) { + if (same_dirent(tmps2, tmps)) /* can always rename to same name */ + anum = 1; + else { + if (euid || Stat(tmps2, &statbuf) < 0 || !S_ISDIR(statbuf.st_mode)) + (void)UNLINK(tmps2); + if (!(anum = link(tmps, tmps2))) + anum = UNLINK(tmps); + } } #endif SETi( anum >= 0 );