]> err.no Git - util-linux/commitdiff
losetup: use stdout and return 0 for --help
authorKarel Zak <kzak@redhat.com>
Wed, 4 Aug 2010 09:52:41 +0000 (11:52 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 4 Aug 2010 09:54:19 +0000 (11:54 +0200)
Reported-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
mount/lomount.c

index 6130be1dd58c1d2dd3d7ad6d39d2e02562d92ec4..54b9f8e9aad075c7bbf821d1ffa5b557bbe326fb 100644 (file)
@@ -884,8 +884,8 @@ find_unused_loop_device (void) {
 #include "strtosize.h"
 
 static void
-usage(void) {
-       fprintf(stderr, _("\nUsage:\n"
+usage(FILE *f) {
+       fprintf(f, _("\nUsage:\n"
   " %1$s loop_device                             give info\n"
   " %1$s -a | --all                              list all used\n"
   " %1$s -d | --detach <loopdev> [<loopdev> ...] delete\n"
@@ -895,7 +895,7 @@ usage(void) {
   " %1$s [ options ] {-f|--find|loopdev} <file>  setup\n"),
                progname);
 
-       fprintf(stderr, _("\nOptions:\n"
+       fprintf(f, _("\nOptions:\n"
   " -e | --encryption <type> enable data encryption with specified <name/num>\n"
   " -h | --help              this help\n"
   " -o | --offset <num>      start at offset <num> into file\n"
@@ -904,7 +904,8 @@ usage(void) {
   " -r | --read-only         setup read-only loop device\n"
   "      --show              print device name (with -f <file>)\n"
   " -v | --verbose           verbose mode\n\n"));
-       exit(1);
+
+       exit(f == stderr ? EXIT_FAILURE : EXIT_SUCCESS);
  }
 
 int
@@ -966,6 +967,9 @@ main(int argc, char **argv) {
                case 'f':
                        find = 1;
                        break;
+               case 'h':
+                       usage(stdout);
+                       break;
                case 'j':
                        assoc = optarg;
                        break;
@@ -987,42 +991,42 @@ main(int argc, char **argv) {
                         break;
 
                default:
-                       usage();
+                       usage(stderr);
                }
        }
 
        if (argc == 1) {
-               usage();
+               usage(stderr);
        } else if (delete) {
                if (argc < optind+1 || encryption || offset || sizelimit ||
                    capacity || find || all || showdev || assoc || ro)
-                       usage();
+                       usage(stderr);
        } else if (find) {
                if (capacity || all || assoc || argc < optind || argc > optind+1)
-                       usage();
+                       usage(stderr);
        } else if (all) {
                if (argc > 2)
-                       usage();
+                       usage(stderr);
        } else if (assoc) {
                if (capacity || encryption || showdev || passfd || ro)
-                       usage();
+                       usage(stderr);
        } else if (capacity) {
                if (argc != optind + 1 || encryption || offset || sizelimit ||
                    showdev || ro)
-                       usage();
+                       usage(stderr);
        } else {
                if (argc < optind+1 || argc > optind+2)
-                       usage();
+                       usage(stderr);
        }
 
        if (offset && strtosize(offset, &off)) {
                error(_("%s: invalid offset '%s' specified"), progname, offset);
-               usage();
+               usage(stderr);
        }
        if (sizelimit && strtosize(sizelimit, &slimit)) {
                error(_("%s: invalid sizelimit '%s' specified"),
                                        progname, sizelimit);
-               usage();
+               usage(stderr);
        }
 
        if (all)
@@ -1057,7 +1061,7 @@ main(int argc, char **argv) {
                res = show_loop(device);
        else {
                if (passfd && sscanf(passfd, "%d", &pfd) != 1)
-                       usage();
+                       usage(stderr);
                do {
                        res = set_loop(device, file, off, slimit, encryption, pfd, &ro);
                        if (res == 2 && find) {