multibuild.pl saves us again. unix2dos requires that dos2unix
[oweals/busybox.git] / mkswap.c
index 8a9767cca5985436790b8072f8b84030f07941bc..f72c7009a9e4ad7e662622e6c4a8c84d2ebf9750 100644 (file)
--- a/mkswap.c
+++ b/mkswap.c
@@ -35,7 +35,6 @@
  *
  */
 
  *
  */
 
-#include "busybox.h"
 #include <stdio.h>
 #include <unistd.h>
 #include <string.h>
 #include <stdio.h>
 #include <unistd.h>
 #include <string.h>
 #include <sys/utsname.h>
 #include <asm/page.h>                  /* for PAGE_SIZE and PAGE_SHIFT */
                                /* we also get PAGE_SIZE via getpagesize() */
 #include <sys/utsname.h>
 #include <asm/page.h>                  /* for PAGE_SIZE and PAGE_SHIFT */
                                /* we also get PAGE_SIZE via getpagesize() */
+#include "busybox.h"
 
 #ifndef _IO
 /* pre-1.3.45 */
 
 #ifndef _IO
 /* pre-1.3.45 */
-#define BLKGETSIZE 0x1260
+static const int BLKGETSIZE = 0x1260;
 #else
 /* same on i386, m68k, arm; different on alpha, mips, sparc, ppc */
 #define BLKGETSIZE _IO(0x12,96)
 #else
 /* same on i386, m68k, arm; different on alpha, mips, sparc, ppc */
 #define BLKGETSIZE _IO(0x12,96)
@@ -63,20 +63,6 @@ static int version = -1;
 
 #define MAKE_VERSION(p,q,r)    (65536*(p) + 256*(q) + (r))
 
 
 #define MAKE_VERSION(p,q,r)    (65536*(p) + 256*(q) + (r))
 
-static int linux_version_code(void)
-{
-       struct utsname my_utsname;
-       int p, q, r;
-
-       if (uname(&my_utsname) == 0) {
-               p = atoi(strtok(my_utsname.release, "."));
-               q = atoi(strtok(NULL, "."));
-               r = atoi(strtok(NULL, "."));
-               return MAKE_VERSION(p, q, r);
-       }
-       return 0;
-}
-
 /*
  * The definition of the union swap_header uses the constant PAGE_SIZE.
  * Unfortunately, on some architectures this depends on the hardware model,
 /*
  * The definition of the union swap_header uses the constant PAGE_SIZE.
  * Unfortunately, on some architectures this depends on the hardware model,
@@ -86,7 +72,7 @@ static int linux_version_code(void)
 static int pagesize;
 static int *signature_page;
 
 static int pagesize;
 static int *signature_page;
 
-struct swap_header_v1 {
+static struct swap_header_v1 {
        char bootbits[1024];            /* Space for disklabel etc. */
        unsigned int version;
        unsigned int last_page;
        char bootbits[1024];            /* Space for disklabel etc. */
        unsigned int version;
        unsigned int last_page;
@@ -101,7 +87,7 @@ static void init_signature_page()
 
 #ifdef PAGE_SIZE
        if (pagesize != PAGE_SIZE)
 
 #ifdef PAGE_SIZE
        if (pagesize != PAGE_SIZE)
-               errorMsg("Assuming pages of size %d\n", pagesize);
+               error_msg("Assuming pages of size %d", pagesize);
 #endif
        signature_page = (int *) xmalloc(pagesize);
        memset(signature_page, 0, pagesize);
 #endif
        signature_page = (int *) xmalloc(pagesize);
        memset(signature_page, 0, pagesize);
@@ -187,31 +173,25 @@ static int bit_test_and_clear(unsigned int *addr, unsigned int nr)
 }
 
 
 }
 
 
-void die(const char *str)
-{
-       errorMsg("%s\n", str);
-       exit(FALSE);
-}
-
-void page_ok(int page)
+static void page_ok(int page)
 {
        if (version == 0)
                bit_set(signature_page, page);
 }
 
 {
        if (version == 0)
                bit_set(signature_page, page);
 }
 
-void page_bad(int page)
+static void page_bad(int page)
 {
        if (version == 0)
                bit_test_and_clear(signature_page, page);
        else {
                if (badpages == MAX_BADPAGES)
 {
        if (version == 0)
                bit_test_and_clear(signature_page, page);
        else {
                if (badpages == MAX_BADPAGES)
-                       die("too many bad pages");
+                       error_msg_and_die("too many bad pages");
                p->badpages[badpages] = page;
        }
        badpages++;
 }
 
                p->badpages[badpages] = page;
        }
        badpages++;
 }
 
-void check_blocks(void)
+static void check_blocks(void)
 {
        unsigned int current_page;
        int do_seek = 1;
 {
        unsigned int current_page;
        int do_seek = 1;
@@ -226,7 +206,7 @@ void check_blocks(void)
                }
                if (do_seek && lseek(DEV, current_page * pagesize, SEEK_SET) !=
                        current_page * pagesize)
                }
                if (do_seek && lseek(DEV, current_page * pagesize, SEEK_SET) !=
                        current_page * pagesize)
-                       die("seek failed in check_blocks");
+                       error_msg_and_die("seek failed in check_blocks");
                if ((do_seek = (pagesize != read(DEV, buffer, pagesize)))) {
                        page_bad(current_page++);
                        continue;
                if ((do_seek = (pagesize != read(DEV, buffer, pagesize)))) {
                        page_bad(current_page++);
                        continue;
@@ -274,11 +254,8 @@ static long get_size(const char *file)
        int fd;
        long size;
 
        int fd;
        long size;
 
-       fd = open(file, O_RDONLY);
-       if (fd < 0) {
-               perror(file);
-               exit(1);
-       }
+       if ((fd = open(file, O_RDONLY)) < 0)
+               perror_msg_and_die("%s", file);
        if (ioctl(fd, BLKGETSIZE, &size) >= 0) {
                int sectors_per_page = pagesize / 512;
 
        if (ioctl(fd, BLKGETSIZE, &size) >= 0) {
                int sectors_per_page = pagesize / 512;
 
@@ -310,7 +287,7 @@ int mkswap_main(int argc, char **argv)
 
                                PAGES = strtol(argv[0], &tmp, 0) / blocks_per_page;
                                if (*tmp)
 
                                PAGES = strtol(argv[0], &tmp, 0) / blocks_per_page;
                                if (*tmp)
-                                       usage(mkswap_usage);
+                                       show_usage();
                        } else
                                device_name = argv[0];
                } else {
                        } else
                                device_name = argv[0];
                } else {
@@ -325,27 +302,27 @@ int mkswap_main(int argc, char **argv)
                                version = atoi(argv[0] + 2);
                                break;
                        default:
                                version = atoi(argv[0] + 2);
                                break;
                        default:
-                               usage(mkswap_usage);
+                               show_usage();
                        }
                }
        }
        if (!device_name) {
                        }
                }
        }
        if (!device_name) {
-               errorMsg("error: Nowhere to set up swap on?\n");
-               usage(mkswap_usage);
+               error_msg("error: Nowhere to set up swap on?");
+               show_usage();
        }
        sz = get_size(device_name);
        if (!PAGES) {
                PAGES = sz;
        } else if (PAGES > sz && !force) {
        }
        sz = get_size(device_name);
        if (!PAGES) {
                PAGES = sz;
        } else if (PAGES > sz && !force) {
-               errorMsg("error: size %ld is larger than device size %d\n",
+               error_msg("error: size %ld is larger than device size %d",
                                PAGES * (pagesize / 1024), sz * (pagesize / 1024));
                                PAGES * (pagesize / 1024), sz * (pagesize / 1024));
-               exit(FALSE);
+               return EXIT_FAILURE;
        }
 
        if (version == -1) {
                if (PAGES <= V0_MAX_PAGES)
                        version = 0;
        }
 
        if (version == -1) {
                if (PAGES <= V0_MAX_PAGES)
                        version = 0;
-               else if (linux_version_code() < MAKE_VERSION(2, 1, 117))
+               else if (get_kernel_revision() < MAKE_VERSION(2, 1, 117))
                        version = 0;
                else if (pagesize < 2048)
                        version = 0;
                        version = 0;
                else if (pagesize < 2048)
                        version = 0;
@@ -353,20 +330,20 @@ int mkswap_main(int argc, char **argv)
                        version = 1;
        }
        if (version != 0 && version != 1) {
                        version = 1;
        }
        if (version != 0 && version != 1) {
-               errorMsg("error: unknown version %d\n", version);
-               usage(mkswap_usage);
+               error_msg("error: unknown version %d", version);
+               show_usage();
        }
        if (PAGES < 10) {
        }
        if (PAGES < 10) {
-               errorMsg("error: swap area needs to be at least %ldkB\n",
+               error_msg("error: swap area needs to be at least %ldkB",
                                (long) (10 * pagesize / 1024));
                                (long) (10 * pagesize / 1024));
-               usage(mkswap_usage);
+               show_usage();
        }
 #if 0
        maxpages = ((version == 0) ? V0_MAX_PAGES : V1_MAX_PAGES);
 #else
        if (!version)
                maxpages = V0_MAX_PAGES;
        }
 #if 0
        maxpages = ((version == 0) ? V0_MAX_PAGES : V1_MAX_PAGES);
 #else
        if (!version)
                maxpages = V0_MAX_PAGES;
-       else if (linux_version_code() >= MAKE_VERSION(2, 2, 1))
+       else if (get_kernel_revision() >= MAKE_VERSION(2, 2, 1))
                maxpages = V1_MAX_PAGES;
        else {
                maxpages = V1_OLD_MAX_PAGES;
                maxpages = V1_MAX_PAGES;
        else {
                maxpages = V1_OLD_MAX_PAGES;
@@ -376,19 +353,17 @@ int mkswap_main(int argc, char **argv)
 #endif
        if (PAGES > maxpages) {
                PAGES = maxpages;
 #endif
        if (PAGES > maxpages) {
                PAGES = maxpages;
-               errorMsg("warning: truncating swap area to %ldkB\n",
+               error_msg("warning: truncating swap area to %ldkB",
                                PAGES * pagesize / 1024);
        }
 
        DEV = open(device_name, O_RDWR);
                                PAGES * pagesize / 1024);
        }
 
        DEV = open(device_name, O_RDWR);
-       if (DEV < 0 || fstat(DEV, &statbuf) < 0) {
-               perror(device_name);
-               exit(FALSE);
-       }
+       if (DEV < 0 || fstat(DEV, &statbuf) < 0)
+               perror_msg_and_die("%s", device_name);
        if (!S_ISBLK(statbuf.st_mode))
                check = 0;
        else if (statbuf.st_rdev == 0x0300 || statbuf.st_rdev == 0x0340)
        if (!S_ISBLK(statbuf.st_mode))
                check = 0;
        else if (statbuf.st_rdev == 0x0300 || statbuf.st_rdev == 0x0340)
-               die("Will not try to make swapdevice on '%s'");
+               error_msg_and_die("Will not try to make swapdevice on '%s'", device_name);
 
 #ifdef __sparc__
        if (!force && version == 0) {
 
 #ifdef __sparc__
        if (!force && version == 0) {
@@ -397,17 +372,17 @@ int mkswap_main(int argc, char **argv)
                unsigned short *q, sum;
 
                if (read(DEV, buffer, 512) != 512)
                unsigned short *q, sum;
 
                if (read(DEV, buffer, 512) != 512)
-                       die("fatal: first page unreadable");
+                       error_msg_and_die("fatal: first page unreadable");
                if (buffer[508] == 0xDA && buffer[509] == 0xBE) {
                        q = (unsigned short *) (buffer + 510);
                        for (sum = 0; q >= (unsigned short *) buffer;)
                                sum ^= *q--;
                        if (!sum) {
                if (buffer[508] == 0xDA && buffer[509] == 0xBE) {
                        q = (unsigned short *) (buffer + 510);
                        for (sum = 0; q >= (unsigned short *) buffer;)
                                sum ^= *q--;
                        if (!sum) {
-                               errorMsg("Device '%s' contains a valid Sun disklabel.\n"
+                               error_msg("Device '%s' contains a valid Sun disklabel.\n"
 "This probably means creating v0 swap would destroy your partition table\n"
 "No swap created. If you really want to create swap v0 on that device, use\n"
 "This probably means creating v0 swap would destroy your partition table\n"
 "No swap created. If you really want to create swap v0 on that device, use\n"
-"the -f option to force it.\n", device_name);
-                               exit(FALSE);
+"the -f option to force it.", device_name);
+                               return EXIT_FAILURE;
                        }
                }
        }
                        }
                }
        }
@@ -416,7 +391,7 @@ int mkswap_main(int argc, char **argv)
        if (version == 0 || check)
                check_blocks();
        if (version == 0 && !bit_test_and_clear(signature_page, 0))
        if (version == 0 || check)
                check_blocks();
        if (version == 0 && !bit_test_and_clear(signature_page, 0))
-               die("fatal: first page unreadable");
+               error_msg_and_die("fatal: first page unreadable");
        if (version == 1) {
                p->version = version;
                p->last_page = PAGES - 1;
        if (version == 1) {
                p->version = version;
                p->last_page = PAGES - 1;
@@ -425,23 +400,23 @@ int mkswap_main(int argc, char **argv)
 
        goodpages = PAGES - badpages - 1;
        if (goodpages <= 0)
 
        goodpages = PAGES - badpages - 1;
        if (goodpages <= 0)
-               die("Unable to set up swap-space: unreadable");
+               error_msg_and_die("Unable to set up swap-space: unreadable");
        printf("Setting up swapspace version %d, size = %ld bytes\n",
                   version, (long) (goodpages * pagesize));
        write_signature((version == 0) ? "SWAP-SPACE" : "SWAPSPACE2");
 
        offset = ((version == 0) ? 0 : 1024);
        if (lseek(DEV, offset, SEEK_SET) != offset)
        printf("Setting up swapspace version %d, size = %ld bytes\n",
                   version, (long) (goodpages * pagesize));
        write_signature((version == 0) ? "SWAP-SPACE" : "SWAPSPACE2");
 
        offset = ((version == 0) ? 0 : 1024);
        if (lseek(DEV, offset, SEEK_SET) != offset)
-               die("unable to rewind swap-device");
+               error_msg_and_die("unable to rewind swap-device");
        if (write(DEV, (char *) signature_page + offset, pagesize - offset)
                != pagesize - offset)
        if (write(DEV, (char *) signature_page + offset, pagesize - offset)
                != pagesize - offset)
-               die("unable to write signature page");
+               error_msg_and_die("unable to write signature page");
 
        /*
         * A subsequent swapon() will fail if the signature
         * is not actually on disk. (This is a kernel bug.)
         */
        if (fsync(DEV))
 
        /*
         * A subsequent swapon() will fail if the signature
         * is not actually on disk. (This is a kernel bug.)
         */
        if (fsync(DEV))
-               die("fsync failed");
-       return(TRUE);
+               error_msg_and_die("fsync failed");
+       return EXIT_SUCCESS;
 }
 }