aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2016-12-28 21:32:25 -0500
committerMike Frysinger <vapier@gentoo.org>2016-12-28 21:32:25 -0500
commitdd9b8dfe0752fd9422782312ba85b4229ee54722 (patch)
tree7b31f8ea28f5aa32281390f893b4c286991fa24b /qtbz2.c
parentcache: add sanity check on malformed cache files (diff)
downloadportage-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.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/qtbz2.c b/qtbz2.c
index 3c2e9f04..2161f999 100644
--- a/qtbz2.c
+++ b/qtbz2.c
@@ -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 */