I personally think it would be better to use getopt() here. Regards
-- Iain Bucław *(p < e ? p++ : p) = (c & 0x0f) + '0';
diff -Naurp btrfs-tools-0.19.orig/btrfsck.c btrfs-tools-0.19/btrfsck.c --- btrfs-tools-0.19.orig/btrfsck.c 2009-06-11 17:56:15.000000000 +0100 +++ btrfs-tools-0.19/btrfsck.c 2010-02-14 20:53:21.000000000 +0000 @@ -21,6 +21,7 @@ #include <stdio.h> #include <stdlib.h> #include <fcntl.h> +#include <getopt.h> #include "kerncompat.h" #include "ctree.h" #include "disk-io.h" @@ -2441,16 +2442,38 @@ static void print_usage(void) exit(1); } +static char *btrfs_parseopts(int ac, char **av) +{ + int c; + + if (ac < 2) + print_usage(); + + while ((c = getopt (ac, av, "apy")) != EOF) + + switch (c) { + case 'a': + case 'p': + case 'y': + default: + break; + } + if (optind != ac - 1) + print_usage(); + + return (av[optind]); +} + int main(int ac, char **av) { struct btrfs_root *root; + char *file; int ret; - if (ac < 2) - print_usage(); + file = btrfs_parseopts(ac, av); radix_tree_init(); - root = open_ctree(av[1], 0, 0); + root = open_ctree(file, 0, 0); if (root == NULL) return 1;