diff -Naur util-linux-2.12.orig/fdisk/cfdisk.c util-linux-2.12/fdisk/cfdisk.c --- util-linux-2.12.orig/fdisk/cfdisk.c 2004-03-27 18:50:54.000000000 +0100 +++ util-linux-2.12/fdisk/cfdisk.c 2004-03-27 18:34:56.000000000 +0100 @@ -85,9 +85,6 @@ #include "get_blocks.h" #include "common.h" -extern long long ext2_llseek(unsigned int fd, long long offset, - unsigned int origin); - #define VERSION UTIL_LINUX_VERSION #ifdef __GNU__ @@ -578,16 +575,16 @@ } static void -read_sector(char *buffer, long long sect_num) { - if (ext2_llseek(fd, sect_num*SECTOR_SIZE, SEEK_SET) < 0) +read_sector(char *buffer, off_t sect_num) { + if (lseek(fd, sect_num*SECTOR_SIZE, SEEK_SET) < 0) fatal(_("Cannot seek on disk drive"), 2); if (read(fd, buffer, SECTOR_SIZE) != SECTOR_SIZE) fatal(_("Cannot read disk drive"), 2); } static void -write_sector(char *buffer, long long sect_num) { - if (ext2_llseek(fd, sect_num*SECTOR_SIZE, SEEK_SET) < 0) +write_sector(char *buffer, off_t sect_num) { + if (lseek(fd, sect_num*SECTOR_SIZE, SEEK_SET) < 0) fatal(_("Cannot seek on disk drive"), 2); if (write(fd, buffer, SECTOR_SIZE) != SECTOR_SIZE) fatal(_("Cannot write disk drive"), 2); @@ -611,10 +608,10 @@ #define DOS_OSTYPE_SZ 8 #define DOS_LABEL_SZ 11 #define DOS_FSTYPE_SZ 8 - long long offset; + off_t offset; offset = (p_info[i].first_sector + p_info[i].offset) * SECTOR_SIZE; - if (ext2_llseek(fd, offset, SEEK_SET) == offset + if (lseek(fd, offset, SEEK_SET) == offset && read(fd, §or, sizeof(sector)) == sizeof(sector)) { dos_copy_to_info(p_info[i].ostype, OSTYPESZ, sector+DOS_OSTYPE_OFFSET, DOS_OSTYPE_SZ); @@ -671,12 +668,12 @@ } xfsb; char *label; - long long offset; + off_t offset; int j; offset = (p_info[i].first_sector + p_info[i].offset) * SECTOR_SIZE + 1024; - if (ext2_llseek(fd, offset, SEEK_SET) == offset + if (lseek(fd, offset, SEEK_SET) == offset && read(fd, &e2fsb, sizeof(e2fsb)) == sizeof(e2fsb) && e2fsb.s_magic[0] + (e2fsb.s_magic[1]<<8) == EXT2_SUPER_MAGIC) { label = e2fsb.s_volume_name; @@ -692,7 +689,7 @@ } offset = (p_info[i].first_sector + p_info[i].offset) * SECTOR_SIZE + 0; - if (ext2_llseek(fd, offset, SEEK_SET) == offset + if (lseek(fd, offset, SEEK_SET) == offset && read(fd, &xfsb, sizeof(xfsb)) == sizeof(xfsb) && !strcmp(xfsb.s_magic, XFS_SUPER_MAGIC)) { label = xfsb.s_fname; @@ -706,7 +703,7 @@ /* reiserfs? */ offset = (p_info[i].first_sector + p_info[i].offset) * SECTOR_SIZE + REISERFS_DISK_OFFSET_IN_BYTES; - if (ext2_llseek(fd, offset, SEEK_SET) == offset + if (lseek(fd, offset, SEEK_SET) == offset && read(fd, &reiserfsb, 1024) == 1024 && is_reiserfs_magic_string(&reiserfsb)) { strncpy(p_info[i].fstype, "reiserfs", FSTYPESZ); diff -Naur util-linux-2.12.orig/fdisk/fdiskbsdlabel.c util-linux-2.12/fdisk/fdiskbsdlabel.c --- util-linux-2.12.orig/fdisk/fdiskbsdlabel.c 2004-03-27 18:50:54.000000000 +0100 +++ util-linux-2.12/fdisk/fdiskbsdlabel.c 2004-03-27 18:36:51.000000000 +0100 @@ -574,7 +574,7 @@ sector = get_start_sect(xbsd_part); #endif - if (ext2_llseek (fd, (long long) sector * SECTOR_SIZE, SEEK_SET) == -1) + if (lseek (fd, (off_t) sector * SECTOR_SIZE, SEEK_SET) == -1) fatal (unable_to_seek); if (BSD_BBSIZE != write (fd, disklabelbuffer, BSD_BBSIZE)) fatal (unable_to_write); @@ -745,7 +745,7 @@ sector = 0; #endif - if (ext2_llseek (fd, (long long) sector * SECTOR_SIZE, SEEK_SET) == -1) + if (lseek (fd, (off_t) sector * SECTOR_SIZE, SEEK_SET) == -1) fatal (unable_to_seek); if (BSD_BBSIZE != read (fd, disklabelbuffer, BSD_BBSIZE)) fatal (unable_to_read); @@ -791,12 +791,12 @@ #if defined (__alpha__) && BSD_LABELSECTOR == 0 alpha_bootblock_checksum (disklabelbuffer); - if (ext2_llseek (fd, (long long) 0, SEEK_SET) == -1) + if (lseek (fd, (off_t) 0, SEEK_SET) == -1) fatal (unable_to_seek); if (BSD_BBSIZE != write (fd, disklabelbuffer, BSD_BBSIZE)) fatal (unable_to_write); #else - if (ext2_llseek (fd, (long long) sector * SECTOR_SIZE + BSD_LABELOFFSET, + if (lseek (fd, (off_t) sector * SECTOR_SIZE + BSD_LABELOFFSET, SEEK_SET) == -1) fatal (unable_to_seek); if (sizeof (struct xbsd_disklabel) != write (fd, d, sizeof (struct xbsd_disklabel))) diff -Naur util-linux-2.12.orig/fdisk/fdisk.c util-linux-2.12/fdisk/fdisk.c --- util-linux-2.12.orig/fdisk/fdisk.c 2004-03-27 18:50:54.000000000 +0100 +++ util-linux-2.12/fdisk/fdisk.c 2004-03-27 18:35:42.000000000 +0100 @@ -241,7 +241,7 @@ static void seek_sector(int fd, unsigned int secno) { long long offset = (long long) secno * sector_size; - if (ext2_llseek(fd, offset, SEEK_SET) == (long long) -1) + if (lseek(fd, offset, SEEK_SET) == (off_t) -1) fatal(unable_to_seek); } diff -Naur util-linux-2.12.orig/fdisk/fdisksgilabel.c util-linux-2.12/fdisk/fdisksgilabel.c --- util-linux-2.12.orig/fdisk/fdisksgilabel.c 2004-03-27 18:50:54.000000000 +0100 +++ util-linux-2.12/fdisk/fdisksgilabel.c 2004-03-27 18:37:17.000000000 +0100 @@ -379,7 +379,7 @@ */ sgiinfo *info = fill_sgiinfo(); int infostartblock = SSWAP32(sgilabel->directory[0].vol_file_start); - if (ext2_llseek(fd, (long long)infostartblock* + if (lseek(fd, (off_t)infostartblock* SECTOR_SIZE, SEEK_SET) < 0) fatal(unable_to_seek); if (write(fd, info, SECTOR_SIZE) != SECTOR_SIZE) diff -Naur util-linux-2.12.orig/fdisk/llseek.c util-linux-2.12/fdisk/llseek.c --- util-linux-2.12.orig/fdisk/llseek.c 2003-07-13 20:30:27.000000000 +0200 +++ util-linux-2.12/fdisk/llseek.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,110 +0,0 @@ -/* - * llseek.c -- stub calling the llseek system call - * - * Copyright (C) 1994 Remy Card. This file may be redistributed - * under the terms of the GNU Public License. - */ - -#include - -#include -#include - -extern long long ext2_llseek (unsigned int, long long, unsigned int); - -#ifdef __linux__ - -#ifdef HAVE_LLSEEK -#include - -#else /* HAVE_LLSEEK */ - -#if defined(__alpha__) || defined(__ia64__) || defined(__s390x__) - -#define my_llseek lseek - -#else -#include /* for __NR__llseek */ - -static int _llseek (unsigned int, unsigned long, - unsigned long, long long *, unsigned int); - -#ifdef __NR__llseek - -static _syscall5(int,_llseek,unsigned int,fd,unsigned long,offset_high, - unsigned long, offset_low,long long *,result, - unsigned int, origin) - -#else - -/* no __NR__llseek on compilation machine - might give it explicitly */ -static int _llseek (unsigned int fd, unsigned long oh, - unsigned long ol, long long *result, - unsigned int origin) { - errno = ENOSYS; - return -1; -} - -#endif - -static long long my_llseek (unsigned int fd, long long offset, - unsigned int origin) -{ - long long result; - int retval; - - retval = _llseek (fd, ((unsigned long long) offset) >> 32, - ((unsigned long long) offset) & 0xffffffff, - &result, origin); - return (retval == -1 ? (long long) retval : result); -} - -#endif /* __alpha__ */ - -#endif /* HAVE_LLSEEK */ - -long long ext2_llseek (unsigned int fd, long long offset, - unsigned int origin) -{ - long long result; - static int do_compat = 0; - - if (!do_compat) { - result = my_llseek (fd, offset, origin); - if (!(result == -1 && errno == ENOSYS)) - return result; - - /* - * Just in case this code runs on top of an old kernel - * which does not support the llseek system call - */ - do_compat = 1; - /* - * Now try ordinary lseek. - */ - } - - if ((sizeof(off_t) >= sizeof(long long)) || - (offset < ((long long) 1 << ((sizeof(off_t)*8) -1)))) - return lseek(fd, (off_t) offset, origin); - - errno = EINVAL; - return -1; -} - -#else /* !linux */ - -long long ext2_llseek (unsigned int fd, long long offset, - unsigned int origin) -{ - if ((sizeof(off_t) < sizeof(long long)) && - (offset >= ((long long) 1 << ((sizeof(off_t)*8) -1)))) { - errno = EINVAL; - return -1; - } - return lseek (fd, (off_t) offset, origin); -} - -#endif /* linux */ - - diff -Naur util-linux-2.12.orig/po/POTFILES.in util-linux-2.12/po/POTFILES.in --- util-linux-2.12.orig/po/POTFILES.in 2003-07-05 22:19:45.000000000 +0200 +++ util-linux-2.12/po/POTFILES.in 2004-03-27 18:46:42.000000000 +0100 @@ -18,7 +18,6 @@ fdisk/fdisksgilabel.c fdisk/fdisksunlabel.c fdisk/i386_sys_types.c -fdisk/llseek.c fdisk/partname.c fdisk/sfdisk.c getopt/getopt.c --- ./fdisk/Makefile.orig 2004-08-22 09:30:42.000000000 -0500 +++ ./fdisk/Makefile 2004-08-22 09:30:55.000000000 -0500 @@ -39,7 +39,7 @@ endif endif -cfdisk: cfdisk.o llseek.o i386_sys_types.o $(LIB)/xstrncpy.o +cfdisk: cfdisk.o i386_sys_types.o $(LIB)/xstrncpy.o ifeq "$(HAVE_SLANG)" "yes" $(CC) $(LDFLAGS) $^ -o $@ $(LIBSLANG) else @@ -55,7 +55,7 @@ rm -f activate ln -s sfdisk activate -fdisk: fdisk.o llseek.o fdiskbsdlabel.o fdisksgilabel.o fdisksunlabel.o \ +fdisk: fdisk.o fdiskbsdlabel.o fdisksgilabel.o fdisksunlabel.o \ fdiskaixlabel.o i386_sys_types.o partname.o fdisk.o: fdisk.c fdisk.h fdiskbsdlabel.o: fdiskbsdlabel.c fdisk.h fdiskbsdlabel.h --- ./fdisk/sfdisk.c.orig 2004-08-22 09:34:01.000000000 -0500 +++ ./fdisk/sfdisk.c 2004-08-22 09:36:31.000000000 -0500 @@ -123,30 +123,18 @@ /* * sseek: seek to specified sector - return 0 on failure * - * For >4GB disks lseek needs a > 32bit arg, and we have to use llseek. - * On the other hand, a 32 bit sector number is OK until 2TB. - * The routines _llseek and sseek below are the only ones that - * know about the loff_t type. + * This relies on _FILE_OFFSET_BITS=64. * * Note: we use 512-byte sectors here, irrespective of the hardware ss. */ -#if !defined (__alpha__) && !defined (__ia64__) && !defined (__x86_64__) && !defined (__s390x__) -static -_syscall5(int, _llseek, unsigned int, fd, ulong, hi, ulong, lo, - loff_t *, res, unsigned int, wh); -#endif static int sseek(char *dev, unsigned int fd, unsigned long s) { - loff_t in, out; - in = ((loff_t) s << 9); + off_t in, out; + in = ((off_t) s << 9); out = 1; -#if !defined (__alpha__) && !defined (__ia64__) && !defined (__x86_64__) && !defined (__s390x__) - if (_llseek (fd, in>>32, in & 0xffffffff, &out, SEEK_SET) != 0) { -#else if ((out = lseek(fd, in, SEEK_SET)) != in) { -#endif perror("llseek"); error(_("seek error on %s - cannot seek to %lu\n"), dev, s); return 0; --- ./partx/partx.c.orig 2004-08-23 06:23:31.000000000 -0500 +++ ./partx/partx.c 2004-08-23 06:26:36.000000000 -0500 @@ -333,30 +333,16 @@ /* * sseek: seek to specified sector + * + * This relies on _FILE_OFFSET_BITS=64. */ -#if !defined (__alpha__) && !defined (__ia64__) && !defined (__s390x__) && !defined(__x86_64__) -#define NEED__llseek -#endif - -#ifdef NEED__llseek -#include /* _syscall */ -static -_syscall5(int, _llseek, uint, fd, ulong, hi, ulong, lo, - long long *, res, uint, wh); -#endif - static int sseek(int fd, unsigned int secnr) { - long long in, out; - in = ((long long) secnr << 9); + off_t in, out; + in = ((off_t) secnr << 9); out = 1; -#ifdef NEED__llseek - if (_llseek (fd, in>>32, in & 0xffffffff, &out, SEEK_SET) != 0 - || out != in) -#else if ((out = lseek(fd, in, SEEK_SET)) != in) -#endif { fprintf(stderr, "llseek error\n"); return -1;