From eb5db626afa3dccbd5d2cb0f4fbec6a1606dcfff Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 30 May 2012 01:40:33 -0400 Subject: [PATCH 3/6] pread/pwrite: drop fallback funcs Linux has provided these functions since the 2.1.x era, so no need to keep these around. We'd rather find out when things are missing (and fix that) than fall back to the unsafe hacks. Signed-off-by: Mike Frysinger (cherry picked from commit 80c9bfc4668e2370b3434a801dc266f336265832) --- libc/sysdeps/linux/common/pread_write.c | 112 ----------------------------- libc/sysdeps/linux/powerpc/pread_write.c | 117 ------------------------------- libc/sysdeps/linux/xtensa/pread_write.c | 112 ----------------------------- 3 files changed, 341 deletions(-) diff --git a/libc/sysdeps/linux/common/pread_write.c b/libc/sysdeps/linux/common/pread_write.c index 089ee93..48fe7dd 100644 --- a/libc/sysdeps/linux/common/pread_write.c +++ b/libc/sysdeps/linux/common/pread_write.c @@ -83,115 +83,3 @@ ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset) weak_alias(__libc_pwrite64,pwrite64) # endif /* __UCLIBC_HAS_LFS__ */ #endif /* __NR_pwrite */ - -#if ! defined __NR_pread || ! defined __NR_pwrite - -static ssize_t __fake_pread_write(int fd, void *buf, - size_t count, off_t offset, int do_pwrite) -{ - int save_errno; - ssize_t result; - off_t old_offset; - - /* Since we must not change the file pointer preserve the - * value so that we can restore it later. */ - if ((old_offset=lseek(fd, 0, SEEK_CUR)) == (off_t) -1) - return -1; - - /* Set to wanted position. */ - if (lseek(fd, offset, SEEK_SET) == (off_t) -1) - return -1; - - if (do_pwrite == 1) { - /* Write the data. */ - result = write(fd, buf, count); - } else { - /* Read the data. */ - result = read(fd, buf, count); - } - - /* Now we have to restore the position. If this fails we - * have to return this as an error. */ - save_errno = errno; - if (lseek(fd, old_offset, SEEK_SET) == (off_t) -1) - { - if (result == -1) - __set_errno(save_errno); - return -1; - } - __set_errno(save_errno); - return(result); -} - -# ifdef __UCLIBC_HAS_LFS__ - -static ssize_t __fake_pread_write64(int fd, void *buf, - size_t count, off64_t offset, int do_pwrite) -{ - int save_errno; - ssize_t result; - off64_t old_offset; - - /* Since we must not change the file pointer preserve the - * value so that we can restore it later. */ - if ((old_offset=lseek64(fd, 0, SEEK_CUR)) == (off64_t) -1) - return -1; - - /* Set to wanted position. */ - if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1) - return -1; - - if (do_pwrite == 1) { - /* Write the data. */ - result = write(fd, buf, count); - } else { - /* Read the data. */ - result = read(fd, buf, count); - } - - /* Now we have to restore the position. */ - save_errno = errno; - if (lseek64(fd, old_offset, SEEK_SET) == (off64_t) -1) { - if (result == -1) - __set_errno (save_errno); - return -1; - } - __set_errno (save_errno); - return result; -} -# endif /* __UCLIBC_HAS_LFS__ */ -#endif /* ! defined __NR_pread || ! defined __NR_pwrite */ - -#ifndef __NR_pread -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset) -{ - return __fake_pread_write(fd, buf, count, offset, 0); -} -weak_alias(__libc_pread,pread) - -# ifdef __UCLIBC_HAS_LFS__ -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset) -{ - return __fake_pread_write64(fd, buf, count, offset, 0); -} -weak_alias(__libc_pread64,pread64) -# endif /* __UCLIBC_HAS_LFS__ */ -#endif /* ! __NR_pread */ - -#ifndef __NR_pwrite -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset) -{ - /* we won't actually be modifying the buffer, - *just cast it to get rid of warnings */ - return __fake_pread_write(fd, (void*)buf, count, offset, 1); -} -weak_alias(__libc_pwrite,pwrite) - -# ifdef __UCLIBC_HAS_LFS__ -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset) -{ - return __fake_pread_write64(fd, (void*)buf, count, offset, 1); -} -weak_alias(__libc_pwrite64,pwrite64) -# endif /* __UCLIBC_HAS_LFS__ */ -#endif /* ! __NR_pwrite */ diff --git a/libc/sysdeps/linux/powerpc/pread_write.c b/libc/sysdeps/linux/powerpc/pread_write.c index 23f256f..92a184c 100644 --- a/libc/sysdeps/linux/powerpc/pread_write.c +++ b/libc/sysdeps/linux/powerpc/pread_write.c @@ -77,120 +77,3 @@ ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset) weak_alias(__libc_pwrite64,pwrite64) # endif /* __UCLIBC_HAS_LFS__ */ #endif /* __NR_pwrite */ - - - -#if ! defined __NR_pread || ! defined __NR_pwrite - -static ssize_t __fake_pread_write(int fd, void *buf, - size_t count, off_t offset, int do_pwrite) -{ - int save_errno; - ssize_t result; - off_t old_offset; - - /* Since we must not change the file pointer preserve the - * value so that we can restore it later. */ - if ((old_offset=lseek(fd, 0, SEEK_CUR)) == (off_t) -1) - return -1; - - /* Set to wanted position. */ - if (lseek (fd, offset, SEEK_SET) == (off_t) -1) - return -1; - - if (do_pwrite == 1) { - /* Write the data. */ - result = write(fd, buf, count); - } else { - /* Read the data. */ - result = read(fd, buf, count); - } - - /* Now we have to restore the position. If this fails we - * have to return this as an error. */ - save_errno = errno; - if (lseek(fd, old_offset, SEEK_SET) == (off_t) -1) - { - if (result == -1) - __set_errno(save_errno); - return -1; - } - __set_errno(save_errno); - return(result); -} - -# ifdef __UCLIBC_HAS_LFS__ - -static ssize_t __fake_pread_write64(int fd, void *buf, - size_t count, off64_t offset, int do_pwrite) -{ - int save_errno; - ssize_t result; - off64_t old_offset; - - /* Since we must not change the file pointer preserve the - * value so that we can restore it later. */ - if ((old_offset=lseek64(fd, 0, SEEK_CUR)) == (off64_t) -1) - return -1; - - /* Set to wanted position. */ - if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1) - return -1; - - if (do_pwrite == 1) { - /* Write the data. */ - result = write(fd, buf, count); - } else { - /* Read the data. */ - result = read(fd, buf, count); - } - - /* Now we have to restore the position. */ - save_errno = errno; - if (lseek64 (fd, old_offset, SEEK_SET) == (off64_t) -1) { - if (result == -1) - __set_errno (save_errno); - return -1; - } - __set_errno (save_errno); - return result; -} -# endif /* __UCLIBC_HAS_LFS__ */ -#endif /* ! defined __NR_pread || ! defined __NR_pwrite */ - -#ifndef __NR_pread -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset); -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset) -{ - return(__fake_pread_write(fd, buf, count, offset, 0)); -} -weak_alias(__libc_pread,pread) - -# ifdef __UCLIBC_HAS_LFS__ -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset); -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset) -{ - return(__fake_pread_write64(fd, buf, count, offset, 0)); -} -weak_alias(__libc_pread64,pread64) -# endif /* __UCLIBC_HAS_LFS__ */ -#endif /* ! __NR_pread */ - - -#ifndef __NR_pwrite -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset); -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset) -{ - return(__fake_pread_write(fd, (void*)buf, count, offset, 1)); -} -weak_alias(__libc_pwrite,pwrite) - -# ifdef __UCLIBC_HAS_LFS__ -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset); -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset) -{ - return(__fake_pread_write64(fd, (void*)buf, count, offset, 1)); -} -weak_alias(__libc_pwrite64,pwrite64) -# endif /* __UCLIBC_HAS_LFS__ */ -#endif /* ! __NR_pwrite */ diff --git a/libc/sysdeps/linux/xtensa/pread_write.c b/libc/sysdeps/linux/xtensa/pread_write.c index bcf7dee..e8b39e9 100644 --- a/libc/sysdeps/linux/xtensa/pread_write.c +++ b/libc/sysdeps/linux/xtensa/pread_write.c @@ -89,115 +89,3 @@ ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset) weak_alias(__libc_pwrite64,pwrite64) # endif /* __UCLIBC_HAS_LFS__ */ #endif /* __NR_pwrite */ - -#if ! defined __NR_pread || ! defined __NR_pwrite - -static ssize_t __fake_pread_write(int fd, void *buf, - size_t count, off_t offset, int do_pwrite) -{ - int save_errno; - ssize_t result; - off_t old_offset; - - /* Since we must not change the file pointer preserve the - * value so that we can restore it later. */ - if ((old_offset=lseek(fd, 0, SEEK_CUR)) == (off_t) -1) - return -1; - - /* Set to wanted position. */ - if (lseek(fd, offset, SEEK_SET) == (off_t) -1) - return -1; - - if (do_pwrite == 1) { - /* Write the data. */ - result = write(fd, buf, count); - } else { - /* Read the data. */ - result = read(fd, buf, count); - } - - /* Now we have to restore the position. If this fails we - * have to return this as an error. */ - save_errno = errno; - if (lseek(fd, old_offset, SEEK_SET) == (off_t) -1) - { - if (result == -1) - __set_errno(save_errno); - return -1; - } - __set_errno(save_errno); - return(result); -} - -# ifdef __UCLIBC_HAS_LFS__ - -static ssize_t __fake_pread_write64(int fd, void *buf, - size_t count, off64_t offset, int do_pwrite) -{ - int save_errno; - ssize_t result; - off64_t old_offset; - - /* Since we must not change the file pointer preserve the - * value so that we can restore it later. */ - if ((old_offset=lseek64(fd, 0, SEEK_CUR)) == (off64_t) -1) - return -1; - - /* Set to wanted position. */ - if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1) - return -1; - - if (do_pwrite == 1) { - /* Write the data. */ - result = write(fd, buf, count); - } else { - /* Read the data. */ - result = read(fd, buf, count); - } - - /* Now we have to restore the position. */ - save_errno = errno; - if (lseek64(fd, old_offset, SEEK_SET) == (off64_t) -1) { - if (result == -1) - __set_errno (save_errno); - return -1; - } - __set_errno (save_errno); - return result; -} -# endif /* __UCLIBC_HAS_LFS__ */ -#endif /* ! defined __NR_pread || ! defined __NR_pwrite */ - -#ifndef __NR_pread -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset) -{ - return __fake_pread_write(fd, buf, count, offset, 0); -} -weak_alias(__libc_pread,pread) - -# ifdef __UCLIBC_HAS_LFS__ -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset) -{ - return __fake_pread_write64(fd, buf, count, offset, 0); -} -weak_alias(__libc_pread64,pread64) -# endif /* __UCLIBC_HAS_LFS__ */ -#endif /* ! __NR_pread */ - -#ifndef __NR_pwrite -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset) -{ - /* we won't actually be modifying the buffer, - *just cast it to get rid of warnings */ - return __fake_pread_write(fd, (void*)buf, count, offset, 1); -} -weak_alias(__libc_pwrite,pwrite) - -# ifdef __UCLIBC_HAS_LFS__ -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset) -{ - return __fake_pread_write64(fd, (void*)buf, count, offset, 1); -} -weak_alias(__libc_pwrite64,pwrite64) -# endif /* __UCLIBC_HAS_LFS__ */ -#endif /* ! __NR_pwrite */ -- 1.7.11.1