1 /* vi: set sw=4 ts=4: */
3 * Mini losetup implementation for busybox
5 * Copyright (C) 2002 Matt Kraai.
7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
12 int losetup_main(int argc
, char **argv
) MAIN_EXTERNALLY_VISIBLE
;
13 int losetup_main(int argc
, char **argv
)
15 char dev
[] = LOOP_NAME
"0";
19 unsigned long long offset
= 0;
21 /* max 2 args, all opts are mutually exclusive */
22 opt_complementary
= "?2:d--of:o--df:f-do";
23 opt
= getopt32(argv
, "do:f", &opt_o
);
28 offset
= xatoull(opt_o
);
30 if (opt
== 0x4 && argc
) // -f does not take any argument
33 if (opt
== 0x1) { // -d
34 /* detach takes exactly one argument */
37 if (del_loop(argv
[0]))
38 bb_simple_perror_msg_and_die(argv
[0]);
44 if (set_loop(&argv
[0], argv
[1], offset
) < 0)
45 bb_simple_perror_msg_and_die(argv
[0]);
51 s
= query_loop(argv
[0]);
53 bb_simple_perror_msg_and_die(argv
[0]);
54 printf("%s: %s\n", argv
[0], s
);
55 if (ENABLE_FEATURE_CLEAN_UP
)
60 /* -o, -f or no option */
70 printf("%s: %s\n", dev
, s
);
71 if (ENABLE_FEATURE_CLEAN_UP
)
75 if (++dev
[sizeof(dev
) - 2] > '9')