]> err.no Git - util-linux/commitdiff
mkswap: BLKGETSIZE cleanup
authorKarel Zak <kzak@redhat.com>
Wed, 7 Nov 2007 12:26:27 +0000 (13:26 +0100)
committerKarel Zak <kzak@redhat.com>
Wed, 7 Nov 2007 12:26:27 +0000 (13:26 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
disk-utils/Makefile.am
disk-utils/mkswap.c

index 4b8f55c419c8f05029e596b05d3608a061e20805..7042aeed5e73ca6966879bdd501f23a84f4055c4 100644 (file)
@@ -7,7 +7,7 @@ sbin_PROGRAMS = mkfs mkswap blockdev fsck.minix mkfs.minix mkfs.bfs
 fsck_minix_SOURCES = fsck.minix.c bitops.h minix.h
 mkfs_minix_SOURCES = mkfs.minix.c bitops.h minix.h
 mkfs_bfs_SOURCES = mkfs.bfs.c
-mkswap_SOURCES = mkswap.c swapheader.h ../lib/linux_version.c
+mkswap_SOURCES = mkswap.c swapheader.h ../lib/linux_version.c ../lib/blkdev.c
 
 usrbinexec_PROGRAMS = fdformat isosize
 
index d61075b5128d64bb0f030384c8635eab2cb2839c..850236f9f7cd7ed36ab237f360045c32c82351f2 100644 (file)
 #include "swapheader.h"
 #include "xstrncpy.h"
 #include "nls.h"
+#include "blkdev.h"
 
 #ifdef HAVE_LIBUUID
 #include <uuid/uuid.h>
 #endif
 
-#ifndef _IO
-/* pre-1.3.45 */
-#define BLKGETSIZE 0x1260
-#else
-/* same on i386, m68k, arm; different on alpha, mips, sparc, ppc */
-#define BLKGETSIZE _IO(0x12,96)
-#endif
-
 static char * program_name = "mkswap";
 static char * device_name = NULL;
 static int DEV = -1;
@@ -428,19 +421,18 @@ find_size (int fd) {
 static unsigned long
 get_size(const char  *file) {
        int     fd;
-       unsigned long   size;
+       unsigned long long size;
 
        fd = open(file, O_RDONLY);
        if (fd < 0) {
                perror(file);
                exit(1);
        }
-       if (ioctl(fd, BLKGETSIZE, &size) >= 0) {
-               int sectors_per_page = pagesize/512;
-               size /= sectors_per_page;
-       } else {
+       if (blkdev_get_size(fd, &size) == 0)
+               size /= pagesize;
+       else
                size = find_size(fd) / pagesize;
-       }
+
        close(fd);
        return size;
 }