From: Bastian Dehn Date: Sun, 8 Aug 2021 07:07:18 +0000 (+0200) Subject: add: check input parameter X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=b567113037bd294d35a274e75655e2a90e69a0df;p=discspan.git add: check input parameter --- diff --git a/discspan.c b/discspan.c index a5619d6..19e8afd 100644 --- a/discspan.c +++ b/discspan.c @@ -12,9 +12,15 @@ extern void run(const char *input, const char *output, unsigned long long split); -const unsigned long long readArgument(int argc, char *argv[]) +typedef struct { + char *input; + char *output; + unsigned long long split; +} param_t; + +param_t readArgument(int argc, char *argv[]) { - unsigned long long split = 0; + param_t parameter = { NULL, NULL, 0 }; // Medien groessen const unsigned long long bluray = 24159191040; @@ -23,30 +29,37 @@ const unsigned long long readArgument(int argc, char *argv[]) const unsigned long long cd = 734003200; int c = 0; - while ((c = getopt(argc, argv, ":59bcf:")) != -1) { + while ((c = getopt(argc, argv, ":59bcf:i:o:")) != -1) { switch (c) { + case 'i': + parameter.input = optarg; + break; + case 'o': + parameter.output = optarg; + break; case '5': - split = dvd5; + parameter.split = dvd5; break; case '9': - split = dvd9; + parameter.split = dvd9; break; case 'b': - split = bluray; + parameter.split = bluray; break; case 'c': - split = cd; + parameter.split = cd; break; case 'f': - split = atoll(optarg); + parameter.split = atoll(optarg); break; case 'h': + default: usage(); break; } } - return split; + return parameter; } void print_human_read_size(const char *output, medium_t medium) @@ -70,17 +83,22 @@ void print_human_read_size(const char *output, medium_t medium) int main(int argc, char *argv[]) { - if (argc <= 3) { + param_t parameter = readArgument(argc, argv); + + if (parameter.input == NULL + || parameter.output == NULL + || parameter.split < 2048) { usage(); - return 1; + exit(1); } - const char *input = argv[1]; - const char *output = argv[2]; - const unsigned long long split = readArgument(argc, argv); + if (access(parameter.input, F_OK) < 0) { + printf("ERROR: %s existiert nicht!\n", parameter.input); + exit(1); + } status_print = print_human_read_size; - run(input, output, split); + run(parameter.input, parameter.output, parameter.split); return 0; } diff --git a/help.c b/help.c index 661e758..f1f3c95 100644 --- a/help.c +++ b/help.c @@ -3,18 +3,20 @@ void usage() { - printf("\nUsage: discspan