diff options
Diffstat (limited to 'util-linux')
-rw-r--r-- | util-linux/Makefile | 1 | ||||
-rw-r--r-- | util-linux/config.in | 1 | ||||
-rw-r--r-- | util-linux/losetup.c | 58 |
3 files changed, 60 insertions, 0 deletions
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; +} |