From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andreas Jaeger To: GNU libc hacker Subject: Correct (f)truncate64 implementation Date: Sat, 18 Dec 1999 03:05:00 -0000 Message-id: X-SW-Source: 1999-12/msg00074.html (f)truncate64 doesn't save errno, it might be changed to ENOSYS if (f)truncate64 is not available but the syscalls are compiled in. Andreas 1999-12-18 Andreas Jaeger * sysdeps/unix/sysv/linux/ftruncate64.c (ftruncate64): Save and set errno. * sysdeps/unix/sysv/linux/truncate64.c (truncate64): Likewise. ============================================================ Index: sysdeps/unix/sysv/linux/ftruncate64.c --- sysdeps/unix/sysv/linux/ftruncate64.c 1999/12/09 00:18:13 1.3 +++ sysdeps/unix/sysv/linux/ftruncate64.c 1999/12/18 11:01:07 @@ -43,6 +43,9 @@ { unsigned int low = length & 0xffffffff; unsigned int high = length >> 32; +#ifndef __ASSUME_TRUNCATE64_SYSCALL + int saved_errno = errno; +#endif int result = INLINE_SYSCALL (ftruncate64, 3, fd, low, high); #ifndef __ASSUME_TRUNCATE64_SYSCALL @@ -51,6 +54,7 @@ return result; #ifndef __ASSUME_TRUNCATE64_SYSCALL + __set_errno (saved_errno); have_no_ftruncate64 = 1; #endif } ============================================================ Index: sysdeps/unix/sysv/linux/truncate64.c --- sysdeps/unix/sysv/linux/truncate64.c 1999/12/09 00:18:13 1.3 +++ sysdeps/unix/sysv/linux/truncate64.c 1999/12/18 11:01:07 @@ -43,6 +43,9 @@ { unsigned int low = length & 0xffffffff; unsigned int high = length >> 32; +#ifndef __ASSUME_TRUNCATE64_SYSCALL + int saved_errno = errno; +#endif int result = INLINE_SYSCALL (truncate64, 3, path, low, high); #ifndef __ASSUME_TRUNCATE64_SYSCALL @@ -51,6 +54,7 @@ return result; #ifndef __ASSUME_TRUNCATE64_SYSCALL + __set_errno (saved_errno); have_no_truncate64 = 1; #endif } -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.rhein-neckar.de