losetup: with no arguments lists all /dev/loopN. Corrected help text.
authorDenis Vlasenko <vda.linux@googlemail.com>
Wed, 27 Sep 2006 14:51:27 +0000 (14:51 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Wed, 27 Sep 2006 14:51:27 +0000 (14:51 -0000)
(patch by Vladimir Dronnikov <dronnikov@gmail.ru>)

include/usage.h
util-linux/losetup.c

index 8b8d64e84a4da8468255ec8a1dc424469aa4eb9b..36739c7129220d3609e90bed20d572e71f02d734 100644 (file)
@@ -1623,13 +1623,14 @@ USE_FEATURE_DATE_ISOFMT( \
        "\t-f\t\toutput data as the log grows"
 
 #define losetup_trivial_usage \
-       "[-od] LOOPDEVICE [FILE]"
+       "[-o OFFSET] [-d] LOOPDEVICE [FILE]]"
 #define losetup_full_usage \
-       "Associate LOOPDEVICE with FILE, or display current association.\n\n" \
+       "(Dis)associate LOOPDEVICE with FILE, or display current associations.\n\n" \
        "Options:\n" \
        "\t-d\t\tDisassociate LOOPDEVICE\n" \
        "\t-o OFFSET\tStart OFFSET bytes into FILE"
 #define losetup_notes_usage \
+       "No arguments will display all current associations.\n" \
        "One argument (losetup /dev/loop1) will display the current association\n" \
        "(if any), or disassociate it (with -d).  The display shows the offset\n" \
        "and filename of the file the loop device is currently bound to.\n\n" \
index af0b03a5326f74d0fb3f64e78b210db5e41c147c..6b9a810f283bc338b1f70178db36c9a34b41ca6d 100644 (file)
@@ -22,7 +22,8 @@ int losetup_main(int argc, char **argv)
        argc -= optind;
        argv += optind;
 
-       if (opt == 0x3) bb_show_usage(); // -d and -o (illegal)
+       if (opt == 0x3) // -d + -o (illegal)
+               bb_show_usage();
 
        if (opt == 0x1) { // -d
                /* detach takes exactly one argument */
@@ -46,7 +47,18 @@ int losetup_main(int argc, char **argv)
                if (!s) bb_perror_nomsg_and_die();
                printf("%s: %s\n", argv[0], s);
                if (ENABLE_FEATURE_CLEAN_UP) free(s);
-       } else
-               bb_show_usage();
+       } else {
+               char dev[11] = "/dev/loop0";
+               char c;
+               for (c = '0'; c <= '9'; ++c) {
+                       char *s;
+                       dev[9] = c;
+                       s = query_loop(dev);
+                       if (s) {
+                               printf("%s: %s\n", dev, s);
+                               if (ENABLE_FEATURE_CLEAN_UP) free(s);
+                       }
+               }
+       }
        return EXIT_SUCCESS;
 }