X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=btrfs-crc.c;h=c3e4774766b7ab5937a3812766ed86d845487ebc;hb=9aa0c422b82c15fee1ac5cd3b0fae2ebe358d64a;hp=6e21a0ec3e28d69e157d6d9e3f9bc588a8ef6095;hpb=08fecd7658610d8572b04280d6708960a3265a88;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/btrfs-crc.c b/btrfs-crc.c index 6e21a0e..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; @@ -49,38 +52,41 @@ int main(int argc, char **argv) length = atol(optarg); break; case 'c': - checksum = atol(optarg); + sscanf(optarg, "%li", &checksum); 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); }