X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=swaponoff.c;h=ce0e2c6ccdb2e403c92a508ed116d8e66b414ac0;hb=044228d5ecb9b79397f9fc915d046cf4538281e2;hp=3c02bdd42d1baf1efefc1fc926e95cd177213acf;hpb=fac10d7c59f7db0facd5fb94de273310b9ec86e6;p=oweals%2Fbusybox.git diff --git a/swaponoff.c b/swaponoff.c index 3c02bdd42..ce0e2c6cc 100644 --- a/swaponoff.c +++ b/swaponoff.c @@ -1,8 +1,9 @@ +/* vi: set sw=4 ts=4: */ /* * Mini swapon/swapoff implementation for busybox * * - * Copyright (C) 1999 by Lineo, inc. + * Copyright (C) 1999,2000,2001 by Lineo, inc. * Written by Erik Andersen , * * This program is free software; you can redistribute it and/or modify @@ -21,102 +22,94 @@ * */ -#include "internal.h" #include -#include -#include #include #include -#include #include +#include +#include +#include +#if __GNU_LIBRARY__ < 5 +/* libc5 doesn't have sys/swap.h, define these here. */ +extern int swapon (__const char *__path, int __flags); +extern int swapoff (__const char *__path); +#else +#include +#endif + +#include "busybox.h" static int whichApp; -static const char* appName; -static const char swapoff_usage[] = -"swapoff device\n" -"\nStop swapping virtual memory pages on the given device.\n"; -static const char swapon_usage[] = -"swapon device\n" -"\nStart swapping virtual memory pages on the given device.\n"; +static const int SWAPON_APP = 1; +static const int SWAPOFF_APP = 2; -#define SWAPON_APP 1 -#define SWAPOFF_APP 2 +static void swap_enable_disable(char *device) +{ + int status; + if (whichApp == SWAPON_APP) + status = swapon(device, 0); + else + status = swapoff(device); -static void -swap_enable_disable( char *device) -{ - int status; - if ( whichApp == SWAPON_APP ) - status = swapon(device, 0); - else - status = swapoff(device); - - if ( status != 0 ) { - perror(appName); - exit( FALSE); - } + if (status != 0) + perror_msg_and_die(applet_name); } -static void -do_em_all() +static void do_em_all() { struct mntent *m; - FILE *f = setmntent ("/etc/fstab", "r"); - - if (f == NULL) { - perror("/etc/fstab"); - exit( FALSE); - } - while ((m = getmntent (f)) != NULL) { - if (!strstr (m->mnt_type, MNTTYPE_SWAP)) { - swap_enable_disable( m->mnt_fsname); - } + FILE *f = setmntent("/etc/fstab", "r"); + + if (f == NULL) + perror_msg_and_die("/etc/fstab"); + while ((m = getmntent(f)) != NULL) { + if (strcmp(m->mnt_type, MNTTYPE_SWAP)==0) { + swap_enable_disable(m->mnt_fsname); + } } - endmntent (f); - exit( TRUE); + endmntent(f); + exit(EXIT_SUCCESS); } -extern int -swap_on_off_main(int argc, char * * argv) +extern int swap_on_off_main(int argc, char **argv) { - struct stat statBuf; - if (stat("/etc/fstab", &statBuf) < 0) - fprintf(stderr, "/etc/fstab file missing -- Please install one.\n\n"); - - if (strcmp(*argv, "swapon")==0) { - appName = *argv; - whichApp = SWAPON_APP; - - } else { - appName = *argv; - whichApp = SWAPOFF_APP; - } - - if (argc < 2) - goto usage_and_exit; - argc--; - argv++; - - /* Parse any options */ - while (**argv == '-') { - while (*++(*argv)) switch (**argv) { - case 'a': - do_em_all(); - break; - default: + if (strcmp(applet_name, "swapon") == 0) { + whichApp = SWAPON_APP; + } else { + whichApp = SWAPOFF_APP; + } + + if (argc != 2) { goto usage_and_exit; } - } - swap_enable_disable(*argv); - exit( TRUE); + argc--; + argv++; + + /* Parse any options */ + while (**argv == '-') { + while (*++(*argv)) + switch (**argv) { + case 'a': + { + struct stat statBuf; + + if (stat("/etc/fstab", &statBuf) < 0) + error_msg_and_die("/etc/fstab file missing"); + } + do_em_all(); + break; + default: + goto usage_and_exit; + } + } + swap_enable_disable(*argv); + return EXIT_SUCCESS; -usage_and_exit: - usage( (whichApp==SWAPON_APP)? swapon_usage : swapoff_usage); - exit( FALSE); + usage_and_exit: + show_usage(); } -