diff options
-rw-r--r-- | include/applets.h | 3 | ||||
-rw-r--r-- | include/usage.h | 9 | ||||
-rw-r--r-- | util-linux/Makefile | 1 | ||||
-rw-r--r-- | util-linux/config.in | 1 | ||||
-rw-r--r-- | util-linux/losetup.c | 58 |
5 files changed, 72 insertions, 0 deletions
diff --git a/include/applets.h b/include/applets.h index 0d310bd..6760fc5 100644 --- a/include/applets.h +++ b/include/applets.h @@ -269,6 +269,9 @@ #ifdef CONFIG_LOGREAD APPLET(logread, logread_main, _BB_DIR_SBIN) #endif +#ifdef CONFIG_LOSETUP + APPLET(losetup, losetup_main, _BB_DIR_SBIN) +#endif #ifdef CONFIG_LS APPLET(ls, ls_main, _BB_DIR_BIN) #endif diff --git a/include/usage.h b/include/usage.h index c4ad044..6692aa5 100644 --- a/include/usage.h +++ b/include/usage.h @@ -989,6 +989,15 @@ #define logread_full_usage \ "Shows the messages from syslogd (using circular buffer)." +#define losetup_trivial_usage \ + "[OPTION]... LOOPDEVICE FILE\n" \ + "or: losetup [OPTION]... -d LOOPDEVICE" +#define losetup_full_usage \ + "Associate LOOPDEVICE with FILE.\n\n" \ + "Options:\n" \ + "\t-d\t\tDisassociate LOOPDEVICE.\n" \ + "\t-o OFFSET\tStart OFFSET bytes into FILE.\n" + #ifdef CONFIG_FEATURE_LS_TIMESTAMPS #define USAGE_LS_TIMESTAMPS(a) a #else diff --git a/util-linux/Makefile b/util-linux/Makefile index 0971aca..9cd1486 100644 --- a/util-linux/Makefile +++ b/util-linux/Makefile @@ -31,6 +31,7 @@ obj-$(CONFIG_FREERAMDISK) += freeramdisk.o obj-$(CONFIG_FSCK_MINIX) += fsck_minix.o obj-$(CONFIG_GETOPT) += getopt.o obj-$(CONFIG_HEXDUMP) += hexdump.o +obj-$(CONFIG_LOSETUP) += losetup.o obj-$(CONFIG_MKFS_MINIX) += mkfs_minix.o obj-$(CONFIG_MKSWAP) += mkswap.o obj-$(CONFIG_MORE) += more.o diff --git a/util-linux/config.in b/util-linux/config.in index 6058944..f96fa18 100644 --- a/util-linux/config.in +++ b/util-linux/config.in @@ -23,6 +23,7 @@ if [ "$CONFIG_FSCK_MINIX" = "y" -o "$CONFIG_MKFS_MINIX" = "y" ]; then fi bool 'getopt' CONFIG_GETOPT bool 'hexdump' CONFIG_HEXDUMP +bool 'losetup' CONFIG_LOSETUP bool 'mkswap' CONFIG_MKSWAP bool 'more' CONFIG_MORE if [ "$CONFIG_MORE" = "y" ]; then diff --git a/util-linux/losetup.c b/util-linux/losetup.c new file mode 100644 index 0000000..bfeb6b2 --- /dev/null +++ b/util-linux/losetup.c @@ -0,0 +1,58 @@ +/* + * Mini losetup implementation for busybox + * + * Copyright (C) 2002 Matt Kraai. + * + * 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 <getopt.h> +#include <stdlib.h> + +#include "busybox.h" + +int +losetup_main (int argc, char **argv) +{ + int delete = 0; + int offset = 0; + int opt; + + while ((opt = getopt (argc, argv, "do:")) != -1) + switch (opt) + { + case 'd': + delete = 1; + break; + + case 'o': + offset = parse_number (optarg, NULL); + break; + + default: + show_usage (); + } + + if ((delete && (offset || optind + 1 != argc)) + || (!delete && optind + 2 != argc)) + show_usage (); + + if (delete) + return del_loop (argv[optind]) ? EXIT_SUCCESS : EXIT_FAILURE; + else + return set_loop (argv[optind], argv[optind + 1], offset, &opt) + ? EXIT_FAILURE : EXIT_SUCCESS; +} |