summaryrefslogtreecommitdiff
path: root/pp_sys.c
diff options
context:
space:
mode:
authorWinfried Koenig <win@in.rhein-main.de>1996-12-26 00:45:45 +0200
committerChip Salzenberg <chip@atlantic.net>1996-12-28 06:22:00 +1200
commited969818e9262af83dfc5c762815172bd6262d27 (patch)
treeb243b1581e36484bcfcbeaa652907d21cd6aa6d3 /pp_sys.c
parent07055b4c536e012d70aa7099a086192fbb14e918 (diff)
downloadperl-ed969818e9262af83dfc5c762815172bd6262d27.tar.gz
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: <m0vd254-0004oKC@incom.rhein-main.de>
Diffstat (limited to 'pp_sys.c')
-rw-r--r--pp_sys.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/pp_sys.c b/pp_sys.c
index 72b8df5481..10b64d4c6e 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 );