diff options
Diffstat (limited to 'fadvise.c')
-rw-r--r-- | fadvise.c | 27 |
1 files changed, 19 insertions, 8 deletions
@@ -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; |