From 5e1a84ab74d5e97582427f016f291a8c11e66f99 Mon Sep 17 00:00:00 2001 From: jutteau Date: Fri, 11 May 2007 18:10:19 +0000 Subject: Completion du script de mise à jour de la pc-104 : * Ajout des sources de busybox dans ./conf/busybox/ * Ajout d'un fichier réclamé par les script dans ./conf/busybox.links --- i/pc104/initrd/conf/busybox/util-linux/swaponoff.c | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 i/pc104/initrd/conf/busybox/util-linux/swaponoff.c (limited to 'i/pc104/initrd/conf/busybox/util-linux/swaponoff.c') diff --git a/i/pc104/initrd/conf/busybox/util-linux/swaponoff.c b/i/pc104/initrd/conf/busybox/util-linux/swaponoff.c new file mode 100644 index 0000000..8930035 --- /dev/null +++ b/i/pc104/initrd/conf/busybox/util-linux/swaponoff.c @@ -0,0 +1,77 @@ +/* vi: set sw=4 ts=4: */ +/* + * Mini swapon/swapoff implementation for busybox + * + * Copyright (C) 1999-2004 by Erik Andersen + * + * Licensed under the GPL version 2, see the file LICENSE in this tarball. + */ + +#include "busybox.h" +#include +#include + +static int swap_enable_disable(char *device) +{ + int status; + struct stat st; + + xstat(device, &st); + +#if ENABLE_DESKTOP + /* test for holes */ + if (S_ISREG(st.st_mode)) + if (st.st_blocks * 512 < st.st_size) + bb_error_msg("warning: swap file has holes"); +#endif + + if (applet_name[5] == 'n') + status = swapon(device, 0); + else + status = swapoff(device); + + if (status != 0) { + bb_perror_msg("%s", device); + return 1; + } + + return 0; +} + +static int do_em_all(void) +{ + struct mntent *m; + FILE *f; + int err; + + f = setmntent("/etc/fstab", "r"); + if (f == NULL) + bb_perror_msg_and_die("/etc/fstab"); + + err = 0; + while ((m = getmntent(f)) != NULL) + if (strcmp(m->mnt_type, MNTTYPE_SWAP) == 0) + err += swap_enable_disable(m->mnt_fsname); + + endmntent(f); + + return err; +} + +int swap_on_off_main(int argc, char **argv); +int swap_on_off_main(int argc, char **argv) +{ + int ret; + + if (argc == 1) + bb_show_usage(); + + ret = getopt32(argc, argv, "a"); + if (ret) + return do_em_all(); + + /* ret = 0; redundant */ + while (*++argv) + ret += swap_enable_disable(*argv); + return ret; +} -- cgit v1.2.3