From: Karel Zak Date: Wed, 1 Jul 2020 13:47:20 +0000 (+0200) Subject: libblkid: remove blkid_llseek() X-Git-Tag: v2.36-rc2~26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a732e4a1d3441cf4e579b824d4667a2e224e6a4e;p=thirdparty%2Futil-linux.git libblkid: remove blkid_llseek() Let's use libc lseek() everywhere like we use in another tools. It's year 2020 ... Addresses: https://github.com/karelzak/util-linux/issues/1083 Signed-off-by: Karel Zak --- diff --git a/configure.ac b/configure.ac index 543f2cc0ca..77ac3634c1 100644 --- a/configure.ac +++ b/configure.ac @@ -438,20 +438,6 @@ AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec],,, AC_CHECK_DECLS([_NL_TIME_WEEK_1STDAY],[],[],[[#include ]]) -AC_CHECK_DECL([llseek], - [AC_DEFINE([HAVE_LLSEEK_PROTOTYPE], [1], - [Define to 1 if have llseek prototype])], - [], - [#include ]) - -AC_CHECK_DECL([lseek64], - [AC_DEFINE([HAVE_LSEEK64_PROTOTYPE], [1], - [Define to 1 if have lseek64 prototype])], - [], - [#define _LARGEFILE_SOURCE - #define _LARGEFILE64_SOURCE - #include ]) - AC_CHECK_DECL([environ], [AC_DEFINE([HAVE_ENVIRON_DECL], [1], [Define to 1 if have **environ prototype])], @@ -503,7 +489,6 @@ AC_CHECK_FUNCS([ \ jrand48 \ lchown \ llseek \ - lseek64 \ mempcpy \ mkostemp \ nanosleep \ diff --git a/libblkid/src/Makemodule.am b/libblkid/src/Makemodule.am index 610ee4e396..1aa6dfcef1 100644 --- a/libblkid/src/Makemodule.am +++ b/libblkid/src/Makemodule.am @@ -17,7 +17,6 @@ libblkid_la_SOURCES = \ libblkid/src/encode.c \ libblkid/src/evaluate.c \ libblkid/src/getsize.c \ - libblkid/src/llseek.c \ libblkid/src/probe.c \ libblkid/src/read.c \ libblkid/src/resolve.c \ diff --git a/libblkid/src/blkidP.h b/libblkid/src/blkidP.h index 3219cafd51..699413eb26 100644 --- a/libblkid/src/blkidP.h +++ b/libblkid/src/blkidP.h @@ -353,9 +353,6 @@ extern void blkid__scan_dir(char *, dev_t, struct dir_list **, char **) extern int blkid_driver_has_major(const char *drvname, int drvmaj) __attribute__((warn_unused_result)); -/* lseek.c */ -extern blkid_loff_t blkid_llseek(int fd, blkid_loff_t offset, int whence); - /* read.c */ extern void blkid_read_cache(blkid_cache cache) __attribute__((nonnull)); diff --git a/libblkid/src/llseek.c b/libblkid/src/llseek.c deleted file mode 100644 index d5c494e2b4..0000000000 --- a/libblkid/src/llseek.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * llseek.c -- stub calling the llseek system call - * - * Copyright (C) 1994, 1995, 1996, 1997 Theodore Ts'o. - * - * %Begin-Header% - * This file may be redistributed under the terms of the - * GNU Lesser General Public License. - * %End-Header% - */ - -#ifndef _LARGEFILE_SOURCE -# define _LARGEFILE_SOURCE -#endif - -#ifndef _LARGEFILE64_SOURCE -# define _LARGEFILE64_SOURCE -#endif - -#ifdef HAVE_SYS_TYPES_H -#include -#endif - -#ifdef HAVE_ERRNO_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef __MSDOS__ -#include -#endif - -#include "blkidP.h" - -#ifdef __linux__ - -#if defined(HAVE_LSEEK64) && defined(HAVE_LSEEK64_PROTOTYPE) - -#define my_llseek lseek64 - -#elif defined(HAVE_LLSEEK) -#include - -#ifndef HAVE_LLSEEK_PROTOTYPE -extern long long llseek(int fd, long long offset, int origin); -#endif - -#define my_llseek llseek - -#else /* ! HAVE_LLSEEK */ - -#if SIZEOF_LONG == SIZEOF_LONG_LONG - -#define llseek lseek - -#else /* SIZEOF_LONG != SIZEOF_LONG_LONG */ - -#include - -#ifndef __NR__llseek -#define __NR__llseek 140 -#endif - -#ifndef __i386__ -static int _llseek(unsigned int, unsigned long, unsigned long, - blkid_loff_t *, unsigned int); - -static _syscall5(int, _llseek, unsigned int, fd, unsigned long, offset_high, - unsigned long, offset_low, blkid_loff_t *, result, - unsigned int, origin) -#endif - -static blkid_loff_t my_llseek(int fd, blkid_loff_t offset, int origin) -{ - blkid_loff_t result; - int retval; - -#ifndef __i386__ - retval = _llseek(fd, ((unsigned long long) offset) >> 32, - ((unsigned long long)offset) & 0xffffffff, - &result, origin); -#else - retval = syscall(__NR__llseek, fd, ((unsigned long long) offset) >> 32, - ((unsigned long long)offset) & 0xffffffff, - &result, origin); -#endif - return (retval == -1 ? (blkid_loff_t) retval : result); -} - -#endif /* __alpha__ || __ia64__ */ - -#endif /* HAVE_LLSEEK */ - -blkid_loff_t blkid_llseek(int fd, blkid_loff_t offset, int whence) -{ - blkid_loff_t result; - static int do_compat = 0; - - if ((sizeof(off_t) >= sizeof(blkid_loff_t)) || - (offset < ((blkid_loff_t) 1 << ((sizeof(off_t)*8) -1)))) - return lseek(fd, (off_t) offset, whence); - - if (do_compat) { - errno = EOVERFLOW; - return -1; - } - - result = my_llseek(fd, offset, whence); - if (result == -1 && errno == ENOSYS) { - /* - * Just in case this code runs on top of an old kernel - * which does not support the llseek system call - */ - do_compat++; - errno = EOVERFLOW; - } - return result; -} - -#else /* !linux */ - -#ifndef EOVERFLOW -#ifdef EXT2_ET_INVALID_ARGUMENT -#define EOVERFLOW EXT2_ET_INVALID_ARGUMENT -#else -#define EOVERFLOW 112 -#endif -#endif - -blkid_loff_t blkid_llseek(int fd, blkid_loff_t offset, int origin) -{ -#if defined(HAVE_LSEEK64) && defined(HAVE_LSEEK64_PROTOTYPE) - return lseek64 (fd, offset, origin); -#else - if ((sizeof(off_t) < sizeof(blkid_loff_t)) && - (offset >= ((blkid_loff_t) 1 << ((sizeof(off_t)*8) - 1)))) { - errno = EOVERFLOW; - return -1; - } - return lseek(fd, (off_t) offset, origin); -#endif -} - -#endif /* linux */ - - diff --git a/libblkid/src/probe.c b/libblkid/src/probe.c index e148fddc01..1992677cc2 100644 --- a/libblkid/src/probe.c +++ b/libblkid/src/probe.c @@ -535,7 +535,7 @@ static struct blkid_bufinfo *read_buffer(blkid_probe pr, uint64_t real_off, uint ssize_t ret; struct blkid_bufinfo *bf = NULL; - if (blkid_llseek(pr->fd, real_off, SEEK_SET) < 0) { + if (lseek(pr->fd, real_off, SEEK_SET) == (off_t) -1) { errno = 0; return NULL; } @@ -796,7 +796,7 @@ static int is_sector_readable(int fd, uint64_t sector) char buf[512]; ssize_t sz; - if (blkid_llseek(fd, sector * 512, SEEK_SET) < 0) + if (lseek(fd, sector * 512, SEEK_SET) == (off_t) -1) goto failed; sz = read(fd, buf, sizeof(buf)); @@ -1190,7 +1190,7 @@ int blkid_do_wipe(blkid_probe pr, int dryrun) { const char *off = NULL; size_t len = 0; - uint64_t offset, magoff, l; + uint64_t offset, magoff; char buf[BUFSIZ]; int fd, rc = 0; struct blkid_chain *chn; @@ -1230,8 +1230,7 @@ int blkid_do_wipe(blkid_probe pr, int dryrun) "do_wipe [offset=0x%"PRIx64" (%"PRIu64"), len=%zu, chain=%s, idx=%d, dryrun=%s]\n", offset, offset, len, chn->driver->name, chn->idx, dryrun ? "yes" : "not")); - l = blkid_llseek(fd, offset, SEEK_SET); - if ((blkid_loff_t)l == (off_t) -1) + if (lseek(fd, offset, SEEK_SET) == (off_t) -1) return -1; memset(buf, 0, len);