diff options
author | Mike Frysinger <vapier@gentoo.org> | 2012-05-30 01:40:33 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2012-05-30 01:43:32 -0400 |
commit | 80c9bfc4668e2370b3434a801dc266f336265832 (patch) | |
tree | da610848bc97ab1e21dd6b467ea08e79765be260 /libc/sysdeps/linux/common | |
parent | 52fa45da0f86651b70608a58914f3aece7fdfed5 (diff) |
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 <vapier@gentoo.org>
Diffstat (limited to 'libc/sysdeps/linux/common')
-rw-r--r-- | libc/sysdeps/linux/common/pread_write.c | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/libc/sysdeps/linux/common/pread_write.c b/libc/sysdeps/linux/common/pread_write.c index 089ee934d..48fe7dd4b 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 */ |