- } else {
- char dev[sizeof(LOOP_NAME"0")] = LOOP_NAME"0";
- char c;
- for (c = '0'; c <= '9'; ++c) {
- char *s;
- dev[sizeof(LOOP_NAME"0")-2] = c;
- s = query_loop(dev);
- if (s) {
- printf("%s: %s\n", dev, s);
- if (ENABLE_FEATURE_CLEAN_UP)
- free(s);
+ return EXIT_SUCCESS;
+ }
+
+ /* [-o OFS|-f] with no params */
+ n = 0;
+ while (1) {
+ char *s;
+ char dev[LOOP_NAMESIZE];
+
+ sprintf(dev, LOOP_FORMAT, n);
+ s = query_loop(dev);
+ n++;
+ if (!s) {
+ if (n > 9 && errno && errno != ENXIO)
+ return EXIT_SUCCESS;
+ if (opt == OPT_f) {
+ puts(dev);
+ return EXIT_SUCCESS;