X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=btrfs-crc.c;h=c3e4774766b7ab5937a3812766ed86d845487ebc;hb=a5ef445f05fb077736d47624e31b9f6c7bbb0f1b;hp=e4cda431270067d0ecc0137cabe75b8d03d0070a;hpb=b0d43ad859afbc708fafaa47197fb746400e4eaa;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/btrfs-crc.c b/btrfs-crc.c index e4cda43..c3e4774 100644 --- a/btrfs-crc.c +++ b/btrfs-crc.c @@ -20,26 +20,29 @@ #include #include #include "crc32c.h" +#include "utils.h" -void usage(void) +void print_usage(int status) { printf("usage: btrfs-crc filename\n"); printf(" print out the btrfs crc for \"filename\"\n"); - printf("usage: btrfs-crc filename -c crc [-s seed] [-l length]\n"); + printf("usage: btrfs-crc -c crc [-s seed] [-l length]\n"); printf(" brute force search for file names with the given crc\n"); printf(" -s seed the random seed (default: random)\n"); printf(" -l length the length of the file names (default: 10)\n"); - exit(1); + printf("usage: btrfs-crc -h\n"); + printf(" print this message\n"); + exit(status); } int main(int argc, char **argv) { - char c; + int c; unsigned long checksum = 0; char *str; char *buf; int length = 10; - int seed = getpid() ^ getppid(); + u64 seed = 0; int loop = 0; int i; @@ -53,34 +56,37 @@ int main(int argc, char **argv) loop = 1; break; case 's': - seed = atol(optarg); + seed = atoll(optarg); break; case 'h': - usage(); + print_usage(1); case '?': - return 255; + print_usage(255); } } + set_argv0(argv); str = argv[optind]; if (!loop) { - if (optind >= argc) { - fprintf(stderr, "not enough arguments\n"); - return 255; - } + if (check_argc_exact(argc - optind, 1)) + print_usage(255); + printf("%12u - %s\n", crc32c(~1, str, strlen(str)), str); return 0; } + if (check_argc_exact(argc - optind, 0)) + print_usage(255); buf = malloc(length); if (!buf) return -ENOMEM; - srand(seed); + if (seed) + init_rand_seed(seed); while (1) { for (i = 0; i < length; i++) - buf[i] = rand() % 94 + 33; + buf[i] = rand_range(94) + 33; if (crc32c(~1, buf, length) == checksum) printf("%12lu - %.*s\n", checksum, length, buf); }