about summary refs log tree commit homepage
path: root/fadvise.c
diff options
context:
space:
mode:
Diffstat (limited to 'fadvise.c')
-rw-r--r--fadvise.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/fadvise.c b/fadvise.c
index 349ac42..0b58b3f 100644
--- a/fadvise.c
+++ b/fadvise.c
@@ -12,6 +12,20 @@ static struct fa_advice {
         { "dontneed" , POSIX_FADV_DONTNEED }
 };
 
+static int usage(const char * argv0)
+{
+        int i;
+
+        fprintf(stderr,
+                "Usage: %s [-a advice] [-o offset] "
+                "[-l length] FILE...\n", argv0);
+        fprintf(stderr, "\nPossible values for advice:\n");
+        for (i = 0; i < ARRAY_SIZE(advice_table); ++i)
+                fprintf(stderr, "\t%s\n", advice_table[i].name);
+
+        return 1;
+}
+
 static void apply_fadvise(const char *path, off_t offset, off_t len, int advice)
 {
         int fd;
@@ -54,7 +68,7 @@ int main(int argc, char * const argv[])
         int opt;
         int argi = 1;
 
-        while ((opt = getopt(argc, argv, "o:l:a:")) != -1) {
+        while ((opt = getopt(argc, argv, "o:l:a:h")) != -1) {
                 int i;
                 char *err;
 
@@ -86,16 +100,13 @@ int main(int argc, char * const argv[])
                         fprintf(stderr, "advice '%s' not understood\n", optarg);
                         /* fall-through */
                 default:
-                        fprintf(stderr,
-                                "Usage: %s [-a advice] [-o offset] "
-                                "[-l length] <files>\n", argv[0]);
-                        fprintf(stderr, "\nPossible values for advice:\n");
-                        for (i = 0; i < ARRAY_SIZE(advice_table); ++i)
-                                fprintf(stderr, "\t%s\n", advice_table[i].name);
-                        return 1;
+                        return usage(argv[0]);
                 }
         }
 
+        if (argi >= argc)
+                return usage(argv[0]);
+
         for (; argi < argc; ++argi)
                 apply_fadvise(argv[argi], offset, len, advice);
         return 0;