diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-06-22 19:13:19 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-06-22 19:13:19 +0200 |
| commit | 88ab5a5273e13066ce3f496a690f10d20a278bb4 (patch) | |
| tree | d4587015207c4ed0d1872b14b737d0c42d881f33 /src/main.c | |
| parent | 86e8aeb5bb66ae5625002533b529752a7814e6c0 (diff) | |
| download | tar-88ab5a5273e13066ce3f496a690f10d20a278bb4.tar.gz tar-88ab5a5273e13066ce3f496a690f10d20a278bb4.tar.bz2 tar-88ab5a5273e13066ce3f496a690f10d20a278bb4.zip | |
Added better option handling
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 46 |
1 files changed, 11 insertions, 35 deletions
@@ -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; } |
