From 83c09c4f0b694d754f05ddd1f34dd0c9770e47fe Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Mon, 8 Sep 2025 16:24:10 +0200 Subject: [PATCH] change read parameter into main --- src/discspan.c | 81 +++++++++++++++++++++----------------------------- 1 file changed, 34 insertions(+), 47 deletions(-) diff --git a/src/discspan.c b/src/discspan.c index fdfb8d3..0441af9 100644 --- a/src/discspan.c +++ b/src/discspan.c @@ -13,45 +13,60 @@ #define DVD5 4700000000 #define CD 734003200 -typedef struct { - char *input; - char *output; - uint64_t split; -} param_t; - void show_version() { printf("discspan %s\n", DISCSPAN_VERSION); printf("libspandisc %s\n", get_version()); } -param_t read_argument(int argc, char *argv[]) +void print_human_read_size(const char *output, medium_t* medium) { - param_t parameter = { NULL, NULL, 0 }; + uint64_t humanread; + char einheit[6] = {'B', 'K', 'M', 'G', 'T', 'P'}; + uint8_t i = 0; + + humanread = medium->freespace; + while (humanread >= 1024) { + humanread /= 1024; + i++; + } + + if (i > sizeof(einheit)/sizeof(einheit[0])) + i = 0; + + fprintf(stdout, "free space on %s: %ld bytes (%ld %c)\n", output, + medium->freespace, humanread, einheit[i]); +} + +int main(int argc, char *argv[]) +{ + char* input = NULL; + char* output = NULL; + uint64_t split = 0; uint32_t c = 0; while ((c = getopt(argc, argv, ":59bcf:hi:o:v")) != -1) { switch (c) { case 'i': - parameter.input = optarg; + input = optarg; break; case 'o': - parameter.output = optarg; + output = optarg; break; case '5': - parameter.split = DVD5; + split = DVD5; break; case '9': - parameter.split = DVD9; + split = DVD9; break; case 'b': - parameter.split = BLURAY; + split = BLURAY; break; case 'c': - parameter.split = CD; + split = CD; break; case 'f': - parameter.split = atoll(optarg); + split = atoll(optarg); break; case 'h': show_version(); @@ -68,46 +83,18 @@ param_t read_argument(int argc, char *argv[]) } } - return parameter; -} - -void print_human_read_size(const char *output, medium_t* medium) -{ - uint64_t humanread; - char einheit[6] = {'B', 'K', 'M', 'G', 'T', 'P'}; - uint8_t i = 0; - - humanread = medium->freespace; - while (humanread >= 1024) { - humanread /= 1024; - i++; - } - - if (i > sizeof(einheit)/sizeof(einheit[0])) - i = 0; - - fprintf(stdout, "free space on %s: %ld bytes (%ld %c)\n", output, - medium->freespace, humanread, einheit[i]); -} - -int main(int argc, char *argv[]) -{ - param_t parameter = read_argument(argc, argv); - - if (parameter.input == NULL - || parameter.output == NULL - || parameter.split < 2048) { + if (input == NULL || output == NULL || split < 2048) { fprintf(stderr, "ERROR: missing arguments\n"); return 1; } - if (access(parameter.input, F_OK) < 0) { - fprintf(stderr, "ERROR: %s file does not exists\n", parameter.input); + if (access(input, F_OK) < 0) { + fprintf(stderr, "ERROR: %s file does not exists\n", input); return 1; } status_print = print_human_read_size; - span(parameter.input, parameter.output, parameter.split); + span(input, output, split); return 0; } -- 2.47.3