diff options
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; } |
