More fixes
No binary (build failed)
—
(log yok)
| @@ -132,11 +132,9 @@ static const struct Applet applets[] = { | |
| #ifdef BB_TAR //bin | |
| {"tar", tar_main}, | |
| #endif | |
| - | #ifdef BB_SWAPOFF //sbin |
| - | {"swapoff", monadic_main}, |
| - | #endif |
| - | #ifdef BB_SWAPON //sbin |
| - | {"swapon", monadic_main}, |
| + | #ifdef BB_SWAPONOFF //sbin |
| + | {"swapon", swap_on_off_main}, |
| + | {"swapoff", swap_on_off_main}, |
| #endif | |
| #ifdef BB_SYNC //bin | |
| {"sync", sync_main}, | |
| @@ -148,7 +146,7 @@ static const struct Applet applets[] = { | |
| {"true", true_main}, | |
| #endif | |
| #ifdef BB_UMOUNT //bin | |
| - | {"umount", umount_main}, |
| + | {"umount", umount_main}, |
| #endif | |
| #ifdef BB_UPDATE //sbin | |
| {"update", update_main}, | |
| @@ -132,11 +132,9 @@ static const struct Applet applets[] = { | |
| #ifdef BB_TAR //bin | |
| {"tar", tar_main}, | |
| #endif | |
| - | #ifdef BB_SWAPOFF //sbin |
| - | {"swapoff", monadic_main}, |
| - | #endif |
| - | #ifdef BB_SWAPON //sbin |
| - | {"swapon", monadic_main}, |
| + | #ifdef BB_SWAPONOFF //sbin |
| + | {"swapon", swap_on_off_main}, |
| + | {"swapoff", swap_on_off_main}, |
| #endif | |
| #ifdef BB_SYNC //bin | |
| {"sync", sync_main}, | |
| @@ -148,7 +146,7 @@ static const struct Applet applets[] = { | |
| {"true", true_main}, | |
| #endif | |
| #ifdef BB_UMOUNT //bin | |
| - | {"umount", umount_main}, |
| + | {"umount", umount_main}, |
| #endif | |
| #ifdef BB_UPDATE //sbin | |
| {"update", update_main}, | |
| @@ -42,8 +42,7 @@ | |
| #define BB_RM | |
| #define BB_RMDIR | |
| #define BB_SLEEP | |
| - | ////#define BB_SWAPOFF |
| - | //#define BB_SWAPON |
| + | #define BB_SWAPONOFF |
| #define BB_SYNC | |
| #define BB_TAR | |
| #define BB_TOUCH | |
| @@ -96,6 +96,7 @@ extern int rm_main(int argc, char** argv); | |
| extern int scan_partitions_main(int argc, char** argv); | |
| extern int sh_main(int argc, char** argv); | |
| extern int sleep_main(int argc, char** argv); | |
| + | extern int swap_on_off_main(int argc, char** argv); |
| extern int tar_main(int argc, char** argv); | |
| extern int touch_main(int argc, char** argv); | |
| extern int sync_main(int argc, char** argv); | |
| @@ -1,52 +0,0 @@ | |
| - | #include <sys/swap.h> |
| - | #include <string.h> |
| - | #include <errno.h> |
| - | #include <mntent.h> |
| - | #include "internal.h" |
| - | |
| - | const char swapoff_usage[] = "swapoff block-device\n" |
| - | "\n" |
| - | "\tStop swapping virtual memory pages on the given device.\n"; |
| - | |
| - | extern int |
| - | swapoff_fn(const struct FileInfo * i) |
| - | { |
| - | struct mntent entries[100]; |
| - | int count = 0; |
| - | FILE * swapsTable = setmntent("/proc/swaps", "r"); |
| - | struct mntent * m; |
| - | |
| - | if (!(swapoff(i->source))) { |
| - | if ( swapsTable == 0 ) { |
| - | fprintf(stderr, "/etc/swaps: %s\n", strerror(errno)); |
| - | return 1; |
| - | } |
| - | while ( (m = getmntent(swapsTable)) != 0 ) { |
| - | entries[count].mnt_fsname = strdup(m->mnt_fsname); |
| - | entries[count].mnt_dir = strdup(m->mnt_dir); |
| - | entries[count].mnt_type = strdup(m->mnt_type); |
| - | entries[count].mnt_opts = strdup(m->mnt_opts); |
| - | entries[count].mnt_freq = m->mnt_freq; |
| - | entries[count].mnt_passno = m->mnt_passno; |
| - | count++; |
| - | } |
| - | endmntent(swapsTable); |
| - | if ( (swapsTable = setmntent("/etc/swaps", "w")) ) { |
| - | int id; |
| - | for ( id = 0; id < count; id++ ) { |
| - | int result = |
| - | (strcmp(entries[id].mnt_fsname, i->source)==0 |
| - | ||strcmp(entries[id].mnt_dir, i->source)==0); |
| - | if ( result ) |
| - | continue; |
| - | else |
| - | addmntent(swapsTable, &entries[id]); |
| - | } |
| - | endmntent(swapsTable); |
| - | } |
| - | else if ( errno != EROFS ) |
| - | fprintf(stderr, "/etc/swaps: %s\n", strerror(errno)); |
| - | return (0); |
| - | } |
| - | return (-1); |
| - | } |
| @@ -1,34 +0,0 @@ | |
| - | #include <stdio.h> |
| - | #include <mntent.h> |
| - | #include <sys/swap.h> |
| - | #include "internal.h" |
| - | |
| - | const char swapon_usage[] = "swapon block-device\n" |
| - | "\n" |
| - | "\tSwap virtual memory pages on the given device.\n"; |
| - | |
| - | extern int |
| - | swapon_fn(const struct FileInfo * i) |
| - | { |
| - | FILE *swapsTable; |
| - | struct mntent m; |
| - | |
| - | if (!(swapon(i->source, 0))) { |
| - | if ((swapsTable = setmntent("/etc/swaps", "a+"))) { |
| - | /* Needs the cast to avoid warning about conversion from |
| - | * const char* to just char* |
| - | */ |
| - | m.mnt_fsname = (char*)i->source; |
| - | m.mnt_dir = "none"; |
| - | m.mnt_type = "swap"; |
| - | m.mnt_opts = "sw"; |
| - | m.mnt_freq = 0; |
| - | m.mnt_passno = 0; |
| - | addmntent(swapsTable, &m); |
| - | endmntent(swapsTable); |
| - | } |
| - | return (0); |
| - | } |
| - | return (-1); |
| - | } |
| - | |
| @@ -0,0 +1,121 @@ | |
| + | /* |
| + | * Mini swapon/swapoff implementation for busybox |
| + | * |
| + | * Copyright (C) 1998 by Erik Andersen <[email protected]> |
| + | * |
| + | * This program is free software; you can redistribute it and/or modify |
| + | * it under the terms of the GNU General Public License as published by |
| + | * the Free Software Foundation; either version 2 of the License, or |
| + | * (at your option) any later version. |
| + | * |
| + | * This program is distributed in the hope that it will be useful, |
| + | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| + | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| + | * General Public License for more details. |
| + | * |
| + | * You should have received a copy of the GNU General Public License |
| + | * along with this program; if not, write to the Free Software |
| + | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| + | * |
| + | */ |
| + | |
| + | #include "internal.h" |
| + | #include <stdio.h> |
| + | #include <sys/mount.h> |
| + | #include <sys/swap.h> |
| + | #include <mntent.h> |
| + | #include <dirent.h> |
| + | #include <fstab.h> |
| + | #include <errno.h> |
| + | |
| + | |
| + | static int whichApp; |
| + | static const char* appName; |
| + | |
| + | static const char swapoff_usage[] = |
| + | "Usage: swapoff device\n" |
| + | "\nStop swapping virtual memory pages on the given device.\n"; |
| + | static const char swapon_usage[] = |
| + | "Usage: swapon device\n" |
| + | "\nStart swapping virtual memory pages on the given device.\n"; |
| + | |
| + | |
| + | #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); |
| + | |
| + | if ( status != 0 ) { |
| + | perror(appName); |
| + | exit( FALSE); |
| + | } |
| + | } |
| + | |
| + | static void |
| + | do_em_all() |
| + | { |
| + | struct mntent *m; |
| + | char swapName[NAME_MAX]; |
| + | FILE *f = setmntent ("/etc/fstab", "r"); |
| + | |
| + | if (f == NULL) { |
| + | perror("/etc/fstab"); |
| + | exit( FALSE); |
| + | } |
| + | while ((m = getmntent (f)) != NULL) { |
| + | if (!strstr (m->mnt_type, "swap")) { |
| + | swap_enable_disable( swapName); |
| + | } |
| + | } |
| + | endmntent (f); |
| + | exit( TRUE); |
| + | } |
| + | |
| + | |
| + | 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: |
| + | goto usage_and_exit; |
| + | } |
| + | } |
| + | swap_enable_disable(*argv); |
| + | //exit( TRUE); |
| + | |
| + | usage_and_exit: |
| + | fprintf(stderr, "Usage: %s", (whichApp==SWAPON_APP)? swapon_usage : swapoff_usage); |
| + | exit(FALSE); |
| + | } |
| + | |
| @@ -0,0 +1,121 @@ | |
| + | /* |
| + | * Mini swapon/swapoff implementation for busybox |
| + | * |
| + | * Copyright (C) 1998 by Erik Andersen <[email protected]> |
| + | * |
| + | * This program is free software; you can redistribute it and/or modify |
| + | * it under the terms of the GNU General Public License as published by |
| + | * the Free Software Foundation; either version 2 of the License, or |
| + | * (at your option) any later version. |
| + | * |
| + | * This program is distributed in the hope that it will be useful, |
| + | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| + | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| + | * General Public License for more details. |
| + | * |
| + | * You should have received a copy of the GNU General Public License |
| + | * along with this program; if not, write to the Free Software |
| + | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| + | * |
| + | */ |
| + | |
| + | #include "internal.h" |
| + | #include <stdio.h> |
| + | #include <sys/mount.h> |
| + | #include <sys/swap.h> |
| + | #include <mntent.h> |
| + | #include <dirent.h> |
| + | #include <fstab.h> |
| + | #include <errno.h> |
| + | |
| + | |
| + | static int whichApp; |
| + | static const char* appName; |
| + | |
| + | static const char swapoff_usage[] = |
| + | "Usage: swapoff device\n" |
| + | "\nStop swapping virtual memory pages on the given device.\n"; |
| + | static const char swapon_usage[] = |
| + | "Usage: swapon device\n" |
| + | "\nStart swapping virtual memory pages on the given device.\n"; |
| + | |
| + | |
| + | #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); |
| + | |
| + | if ( status != 0 ) { |
| + | perror(appName); |
| + | exit( FALSE); |
| + | } |
| + | } |
| + | |
| + | static void |
| + | do_em_all() |
| + | { |
| + | struct mntent *m; |
| + | char swapName[NAME_MAX]; |
| + | FILE *f = setmntent ("/etc/fstab", "r"); |
| + | |
| + | if (f == NULL) { |
| + | perror("/etc/fstab"); |
| + | exit( FALSE); |
| + | } |
| + | while ((m = getmntent (f)) != NULL) { |
| + | if (!strstr (m->mnt_type, "swap")) { |
| + | swap_enable_disable( swapName); |
| + | } |
| + | } |
| + | endmntent (f); |
| + | exit( TRUE); |
| + | } |
| + | |
| + | |
| + | 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: |
| + | goto usage_and_exit; |
| + | } |
| + | } |
| + | swap_enable_disable(*argv); |
| + | //exit( TRUE); |
| + | |
| + | usage_and_exit: |
| + | fprintf(stderr, "Usage: %s", (whichApp==SWAPON_APP)? swapon_usage : swapoff_usage); |
| + | exit(FALSE); |
| + | } |
| + | |