diff options
author | Mike Frysinger <vapier@gentoo.org> | 2016-12-28 21:32:25 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2016-12-28 21:32:25 -0500 |
commit | dd9b8dfe0752fd9422782312ba85b4229ee54722 (patch) | |
tree | 7b31f8ea28f5aa32281390f893b4c286991fa24b /qtbz2.c | |
parent | cache: add sanity check on malformed cache files (diff) | |
download | portage-utils-dd9b8dfe0752fd9422782312ba85b4229ee54722.tar.gz portage-utils-dd9b8dfe0752fd9422782312ba85b4229ee54722.tar.bz2 portage-utils-dd9b8dfe0752fd9422782312ba85b4229ee54722.zip |
qtbz2: improve cli a bit
Make -t/-x options autoselect the split action.
Allow -d to be specified more than once.
When given a bad -d path, diagnose it immediately.
When we can't autodetect actions, show a specific error message.
Diffstat (limited to 'qtbz2.c')
-rw-r--r-- | qtbz2.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -252,13 +252,15 @@ int qtbz2_main(int argc, char **argv) COMMON_GETOPTS_CASES(qtbz2) case 'j': action = TBZ2_ACT_JOIN; break; case 's': action = TBZ2_ACT_SPLIT; break; - case 't': split_xpak = 0; break; - case 'x': split_tarbz2 = 0; break; + case 't': action = TBZ2_ACT_SPLIT; split_xpak = 0; break; + case 'x': action = TBZ2_ACT_SPLIT; split_tarbz2 = 0; break; case 'O': tbz2_stdout = 1; break; case 'd': if (dir_fd != AT_FDCWD) - err("Only use -d once"); + close(dir_fd); dir_fd = open(optarg, O_RDONLY|O_CLOEXEC|O_PATH); + if (unlikely(dir_fd == -1)) + errp("could not open dir: %s", optarg); break; } } @@ -279,7 +281,8 @@ int qtbz2_main(int argc, char **argv) else if (strstr(argv[optind], ".tbz2") != NULL) action = TBZ2_ACT_SPLIT; else - qtbz2_usage(EXIT_FAILURE); + err("%s: need to use -j or -s, or file must end in .tar.bz2 or .tbz2 to autodetect", + argv[optind]); } /* tbz2tool join .tar.bz2 .xpak .tbz2 */ |