From 88ab5a5273e13066ce3f496a690f10d20a278bb4 Mon Sep 17 00:00:00 2001 From: Charles Date: Mon, 22 Jun 2020 19:13:19 +0200 Subject: Added better option handling --- src/main.c | 46 +++++++++++----------------------------------- 1 file changed, 11 insertions(+), 35 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index e536e93..4a7ce24 100644 --- a/src/main.c +++ b/src/main.c @@ -5,40 +5,16 @@ int main(int argc, char **argv) { - int opt; - char *archive_file_name = NULL; - bool create; + t_args args; + int archive_fd; + int ret; - while ((opt = getopt(argc, argv, "Oxcvtf:")) != -1) - { - switch (opt) - { - case 'c': - create = true; - break; - case 'x': - create = false; - break; - case 'f': - archive_file_name = optarg; - break; - case 'v': - break; - case 't': - break; - default: - return 1; - } - } - if (create) - { - if (archive_write(archive_file_name, argv + optind) == -1) - return 1; - } - else - { - if (archive_read(archive_file_name) == -1) - return 1; - } - return 0; + if (!args_parse(argc, argv, &args) || + (archive_fd = archive_get_fd(&args)) == -1) + return EXIT_FAILURE; + + ret = archive_dispatch_action(archive_fd, &args); + if (archive_fd != STDOUT_FILENO && archive_fd != STDIN_FILENO) + close(archive_fd); + return ret == -1 ? 1 : 0; } -- cgit