diff --git a/bin/xbps-alternatives/main.c b/bin/xbps-alternatives/main.c
index 1fa28190..e3aec59e 100644
--- a/bin/xbps-alternatives/main.c
+++ b/bin/xbps-alternatives/main.c
@@ -44,13 +44,13 @@ usage(bool fail)
" -C --config
Path to confdir (xbps.d)\n"
" -d --debug Debug mode shown to stderr\n"
" -g --group Group of alternatives to match\n"
- " -h --help Print usage help\n"
+ " -h --help Show usage\n"
" -r --rootdir Full path to rootdir\n"
" -v --verbose Verbose messages\n"
" -V --version Show XBPS version\n"
"MODE\n"
" -l --list [PKG] List all alternatives or from PKG\n"
- " -s --set PKG Set alternatives for PKG\n\n");
+ " -s --set PKG Set alternatives for PKG\n");
exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
}
diff --git a/bin/xbps-checkvers/main.c b/bin/xbps-checkvers/main.c
index c4f8d18f..e46875ec 100644
--- a/bin/xbps-checkvers/main.c
+++ b/bin/xbps-checkvers/main.c
@@ -73,29 +73,28 @@ xstrdup(const char *src)
}
static int
-show_usage(const char *prog)
+show_usage(const char *prog, bool fail)
{
fprintf(stderr,
"Usage: %s [OPTIONS] [FILES...]\n\n"
"OPTIONS:\n"
-" -h --help Show this helpful help-message for help.\n"
-" -C --config Set path to xbps.d\n"
-" -D --distdir Set (or override) the path to void-packages\n"
-" (defaults to ~/void-packages).\n"
-" -d --debug Enable debug output to stderr.\n"
-" -e --removed List packages present in repos, but not in distdir.\n"
-" -f --format Output format.\n"
-" -I --installed Check for outdated packages in rootdir, rather\n"
-" than in the XBPS repositories.\n"
-" -i --ignore-conf-repos Ignore repositories defined in xbps.d.\n"
-" -m --manual Only process listed files.\n"
-" -R --repository= Append repository to the head of repository list.\n"
-" -r --rootdir Set root directory (defaults to /).\n"
-" -s --show-all List all packages, in the format 'pkgname repover srcver'.\n"
-"\n [FILES...] Extra packages to process with the outdated\n"
-" ones (only processed if missing).\n\n",
-prog);
- return EXIT_FAILURE;
+" -h, --help Show usage\n"
+" -C, --config Set path to xbps.d\n"
+" -D, --distdir Set (or override) the path to void-packages\n"
+" (defaults to ~/void-packages)\n"
+" -d, --debug Enable debug output to stderr\n"
+" -e, --removed List packages present in repos, but not in distdir\n"
+" -f, --format Output format\n"
+" -I, --installed Check for outdated packages in rootdir, rather\n"
+" than in the XBPS repositories\n"
+" -i, --ignore-conf-repos Ignore repositories defined in xbps.d\n"
+" -m, --manual Only process listed files\n"
+" -R, --repository= Append repository to the head of repository list\n"
+" -r, --rootdir Set root directory (defaults to /)\n"
+" -s, --show-all List all packages, in the format 'pkgname repover srcver'\n"
+"\n [FILES...] Extra packages to process with the outdated\n"
+" ones (only processed if missing).\n", prog);
+ return fail ? EXIT_FAILURE: EXIT_SUCCESS;
}
static void
@@ -728,7 +727,7 @@ main(int argc, char **argv)
while ((c = getopt_long(argc, argv, sopts, lopts, NULL)) != -1) {
switch (c) {
case 'h':
- return show_usage(prog);
+ return show_usage(prog, false);
case 'C':
rcv.xbps_conf = xstrdup(optarg);
break;
@@ -765,8 +764,9 @@ main(int argc, char **argv)
case 'V':
printf("%s\n", XBPS_RELVER);
exit(EXIT_SUCCESS);
+ case '?':
default:
- return show_usage(prog);
+ return show_usage(prog, true);
}
}
/*
diff --git a/bin/xbps-create/main.c b/bin/xbps-create/main.c
index 373e7441..1ff0640c 100644
--- a/bin/xbps-create/main.c
+++ b/bin/xbps-create/main.c
@@ -68,54 +68,49 @@ static xbps_dictionary_t pkg_propsd, pkg_filesd, all_filesd;
static const char *destdir;
static void __attribute__((noreturn))
-usage(void)
+usage(bool fail)
{
fprintf(stdout,
"Usage: %s [OPTIONS] -A -n -s \"\" destdir\n\n"
"OPTIONS\n"
- " -A --architecture Package architecture (e.g: noarch, i686, etc).\n"
- " -B --built-with Package builder string (e.g: xbps-src-30).\n"
- " -C --conflicts Conflicts (blank separated list,\n"
- " e.g: 'foo>=2.0 blah<=2.0').\n"
- " -c --changelog Changelog URL.\n"
- " -D --dependencies Dependencies (blank separated list,\n"
- " e.g: 'foo>=1.0_1 blah<2.1').\n"
- " -F --config-files Configuration files (blank separated list,\n"
- " e.g '/etc/foo.conf /etc/foo-blah.conf').\n"
- " -H --homepage Homepage.\n"
- " -h --help Show help.\n"
- " -l --license License.\n"
- " -M --mutable-files Mutable files list (blank separated list,\n"
- " e.g: '/usr/lib/foo /usr/bin/blah').\n"
- " -m --maintainer Maintainer.\n"
- " -n --pkgver Package name/version tuple (e.g `foo-1.0_1').\n"
- " -P --provides Provides (blank separated list,\n"
- " e.g: 'foo-9999 blah-1.0').\n"
- " -p --preserve Enable package preserve boolean.\n"
- " -q --quiet Work silently.\n"
- " -R --replaces Replaces (blank separated list,\n"
- " e.g: 'foo>=1.0 blah<2.0').\n"
- " -r --reverts Reverts (blank separated list,\n"
- " e.g: '1.0_1 2.0_3').\n"
- " -S --long-desc Long description (80 cols per line).\n"
- " -s --desc Short description (max 80 characters).\n"
- " -t --tags A list of tags/categories (blank separated list).\n"
- " -V --version Prints XBPS release version.\n"
- " --alternatives List of available alternatives this pkg provides.\n"
- " This expects a blank separated list of ::, e.g\n"
- " 'vi:/usr/bin/vi:/usr/bin/vim foo:/usr/bin/foo:/usr/bin/blah'.\n"
- " --build-options A string with the used build options.\n"
- " --compression Compression format: none, gzip, bzip2, lz4, xz, zstd (default).\n"
- " --shlib-provides List of provided shared libraries (blank separated list,\n"
- " e.g 'libfoo.so.1 libblah.so.2').\n"
- " --shlib-requires List of required shared libraries (blank separated list,\n"
- " e.g 'libfoo.so.1 libblah.so.2').\n\n"
+ " -A, --architecture Package architecture (e.g: noarch, i686, etc)\n"
+ " -B, --built-with Package builder string (e.g: xbps-src-30)\n"
+ " -C, --conflicts Conflicts (blank separated list, e.g: 'foo>=2.0 blah<=2.0')\n"
+ " -c, --changelog Changelog URL\n"
+ " -D, --dependencies Dependencies (blank separated list, e.g: 'foo>=1.0_1 blah<2.1')\n"
+ " -F, --config-files Configuration files (blank separated list,\n"
+ " e.g '/etc/foo.conf /etc/foo-blah.conf')\n"
+ " -H, --homepage Homepage\n"
+ " -h, --help Show usage\n"
+ " -l, --license License\n"
+ " -M, --mutable-files Mutable files list (blank separated list,\n"
+ " e.g: '/usr/lib/foo /usr/bin/blah')\n"
+ " -m, --maintainer Maintainer\n"
+ " -n, --pkgver Package name/version tuple (e.g `foo-1.0_1')\n"
+ " -P, --provides Provides (blank separated list, e.g: 'foo-9999 blah-1.0')\n"
+ " -p, --preserve Enable package preserve boolean\n"
+ " -q, --quiet Work silently\n"
+ " -R, --replaces Replaces (blank separated list, e.g: 'foo>=1.0 blah<2.0')\n"
+ " -r, --reverts Reverts (blank separated list, e.g: '1.0_1 2.0_3')\n"
+ " -S, --long-desc Long description (80 cols per line)\n"
+ " -s, --desc Short description (max 80 characters)\n"
+ " -t, --tags A list of tags/categories (blank separated list)\n"
+ " -V, --version Show XBPS version\n"
+ " --alternatives List of available alternatives this pkg provides\n"
+ " This expects a blank separated list of ::, e.g\n"
+ " 'vi:/usr/bin/vi:/usr/bin/vim foo:/usr/bin/foo:/usr/bin/blah'\n"
+ " --build-options A string with the used build options\n"
+ " --compression Compression format: none, gzip, bzip2, lz4, xz, zstd (default)\n"
+ " --shlib-provides List of provided shared libraries (blank separated list,\n"
+ " e.g 'libfoo.so.1 libblah.so.2')\n"
+ " --shlib-requires List of required shared libraries (blank separated list,\n"
+ " e.g 'libfoo.so.1 libblah.so.2')\n\n"
"NOTE:\n"
" At least three flags are required: architecture, pkgver and desc.\n\n"
"EXAMPLE:\n"
" $ %s -A noarch -n foo-1.0_1 -s \"foo pkg\" destdir\n",
_PROGNAME, _PROGNAME);
- exit(EXIT_FAILURE);
+ exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
}
static void __attribute__((noreturn))
@@ -866,7 +861,7 @@ main(int argc, char **argv)
srcrevs = optarg;
break;
case 'h':
- usage();
+ usage(false);
break;
case 'H':
homepage = optarg;
@@ -927,11 +922,14 @@ main(int argc, char **argv)
break;
case '?':
default:
- usage();
+ usage(true);
+ /* NOTREACHED */
}
}
- if (argc == optind)
- usage();
+ if (argc == optind) {
+ usage(true);
+ /* NOTREACHED */
+ }
destdir = argv[optind];
diff --git a/bin/xbps-dgraph/main.c b/bin/xbps-dgraph/main.c
index 8c3c1ccf..d8a6d548 100644
--- a/bin/xbps-dgraph/main.c
+++ b/bin/xbps-dgraph/main.c
@@ -110,25 +110,25 @@ die(const char *fmt, ...)
}
static void __attribute__((noreturn))
-usage(void)
+usage(bool fail)
{
fprintf(stdout,
"Usage: xbps-dgraph [OPTIONS] [MODE] \n\n"
"OPTIONS\n"
- " -C --config Path to confdir (xbps.d)\n"
- " -c --graph-config Path to the graph configuration file\n"
- " -d --debug Debug mode shown to stderr\n"
- " -h --help Print help usage\n"
- " -M --memory-sync Remote repository data is fetched and stored\n"
- " in memory, ignoring on-disk repodata archives.\n"
- " -r --rootdir Full path to rootdir\n"
- " -R --repository Enable repository mode. This mode explicitly\n"
- " looks for packages in repositories.\n"
+ " -C, --config Path to confdir (xbps.d)\n"
+ " -c, --graph-config Path to the graph configuration file\n"
+ " -d, --debug Debug mode shown to stderr\n"
+ " -h, --help Show usage\n"
+ " -M, --memory-sync Remote repository data is fetched and stored\n"
+ " in memory, ignoring on-disk repodata archives.\n"
+ " -r, --rootdir Full path to rootdir\n"
+ " -R, --repository Enable repository mode. This mode explicitly\n"
+ " looks for packages in repositories.\n"
"MODE\n"
- " -g --gen-config Generate a configuration file\n"
- " -f --fulldeptree Generate a dependency graph\n"
- " -m --metadata Generate a metadata graph (default mode)\n\n");
- exit(EXIT_FAILURE);
+ " -g, --gen-config Generate a configuration file\n"
+ " -f, --fulldeptree Generate a dependency graph\n"
+ " -m, --metadata Generate a metadata graph (default mode)\n");
+ exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
}
static const char *
@@ -558,6 +558,9 @@ main(int argc, char **argv)
/* Generate conf file. */
generate_conf_file();
exit(EXIT_SUCCESS);
+ case 'h':
+ usage(false);
+ /* NOTREACHED */
case 'M':
flags |= XBPS_FLAG_REPOS_MEMSYNC;
break;
@@ -578,7 +581,8 @@ main(int argc, char **argv)
exit(EXIT_SUCCESS);
case '?':
default:
- usage();
+ usage(true);
+ /* NOTREACHED */
}
}
@@ -586,7 +590,8 @@ main(int argc, char **argv)
argv += optind;
if (!argc && !opmode) {
- usage();
+ usage(true);
+ /* NOTREACHED */
}
pkg = *argv;
diff --git a/bin/xbps-digest/main.c b/bin/xbps-digest/main.c
index 093e42e5..37b36f1c 100644
--- a/bin/xbps-digest/main.c
+++ b/bin/xbps-digest/main.c
@@ -34,19 +34,18 @@
#include
static void __attribute__((noreturn))
-usage(void)
+usage(bool fail)
{
fprintf(stdout,
"Usage: xbps-digest [options] [file] [file+N]\n"
"\n"
- "OPTIONS:\n"
- " -h\t\tShow usage()\n"
- " -m \tSelects the digest mode, sha256 (default)\n"
- " -V\t\tPrints the xbps release version\n"
- "\n"
- "NOTES\n"
- " If [file] not set, reads from stdin.\n");
- exit(EXIT_FAILURE);
+ "OPTIONS\n"
+ " -h, --help Show usage\n"
+ " -m, --mode Selects the digest mode, sha256 (default)\n"
+ " -V, --version Show XBPS version\n"
+ "\nNOTES\n"
+ " If [file] not set, reads from stdin\n");
+ exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
}
int
@@ -56,11 +55,17 @@ main(int argc, char **argv)
char sha256[XBPS_SHA256_SIZE];
const char *mode = NULL, *progname = argv[0];
const struct option longopts[] = {
+ { "mode", required_argument, NULL, 'm' },
+ { "help", no_argument, NULL, 'h' },
+ { "version", no_argument, NULL, 'V' },
{ NULL, 0, NULL, 0 }
};
while ((c = getopt_long(argc, argv, "m:hV", longopts, NULL)) != -1) {
switch (c) {
+ case 'h':
+ usage(false);
+ /* NOTREACHED */
case 'm':
mode = optarg;
break;
@@ -68,9 +73,9 @@ main(int argc, char **argv)
printf("%s\n", XBPS_RELVER);
exit(EXIT_SUCCESS);
case '?':
- case 'h':
default:
- usage();
+ usage(true);
+ /* NOTREACHED */
}
}
diff --git a/bin/xbps-fbulk/main.c b/bin/xbps-fbulk/main.c
index 120977e2..d1585d26 100644
--- a/bin/xbps-fbulk/main.c
+++ b/bin/xbps-fbulk/main.c
@@ -132,7 +132,7 @@ addItem(const char *pkgn)
}
static void __attribute__((noreturn))
-usage(const char *progname)
+usage(const char *progname, bool fail)
{
fprintf(stderr, "Usage: %s [OPTIONS] /path/to/void-packages [pkg pkg+N]\n\n"
"OPTIONS\n"
@@ -142,7 +142,7 @@ usage(const char *progname)
" -V, --verbose Enable verbose mode\n"
" -v, --version Show XBPS version\n"
" -h, --help Show usage\n", progname);
- exit(EXIT_FAILURE);
+ exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
}
/*
@@ -577,6 +577,9 @@ main(int argc, char **argv)
while ((ch = getopt_long(argc, argv, "hj:l:svV", longopts, NULL)) != -1) {
switch (ch) {
+ case 'h':
+ usage(progname, false);
+ /* NOTREACHED */
case 's':
RebuildSystem = true;
break;
@@ -592,18 +595,18 @@ main(int argc, char **argv)
case 'V':
printf("%s\n", XBPS_RELVER);
exit(EXIT_SUCCESS);
- case 'h':
+ case '?':
default:
- usage(progname);
- /* NOT REACHED */
+ usage(progname, true);
+ /* NOTREACHED */
}
}
argc -= optind;
argv += optind;
if (argc < 1) {
- usage(progname);
- /* NOT REACHED */
+ usage(progname, true);
+ /* NOTREACHED */
}
/*
diff --git a/bin/xbps-fetch/main.c b/bin/xbps-fetch/main.c
index 617202be..0411f656 100644
--- a/bin/xbps-fetch/main.c
+++ b/bin/xbps-fetch/main.c
@@ -37,18 +37,18 @@
#include "../xbps-install/defs.h"
static void __attribute__((noreturn))
-usage(void)
+usage(bool fail)
{
fprintf(stdout,
"Usage: xbps-fetch [options] \n\n"
- "OPTIONS:\n"
- " -d\t\tEnable debug messages to stderr\n"
- " -h\t\tShow usage()\n"
- " -o \tRename downloaded file to \n"
- " -s\t\tOutput sha256sums of the files\n"
- " -v\t\tEnable verbose output\n"
- " -V\t\tPrints the xbps release version\n");
- exit(EXIT_FAILURE);
+ "OPTIONS\n"
+ " -d, --debug Enable debug messages to stderr\n"
+ " -h, --help Show usage\n"
+ " -o, --out Rename downloaded file to \n"
+ " -s, --sha256 Output sha256sums of the files\n"
+ " -v, --verbose Enable verbose output\n"
+ " -V, --version Show XBPS version\n");
+ exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
}
static char *
@@ -92,11 +92,20 @@ main(int argc, char **argv)
struct xferstat xfer = {};
const char *filename = NULL, *progname = argv[0];
const struct option longopts[] = {
+ { "out", required_argument, NULL, 'o' },
+ { "debug", no_argument, NULL, 'd' },
+ { "help", no_argument, NULL, 'h' },
+ { "sha256", no_argument, NULL, 's' },
+ { "version", no_argument, NULL, 'V' },
+ { "verbose", no_argument, NULL, 'v' },
{ NULL, 0, NULL, 0 }
};
while ((c = getopt_long(argc, argv, "o:dhsVv", longopts, NULL)) != -1) {
switch (c) {
+ case 'h':
+ usage(false);
+ /* NOTREACHED */
case 'o':
filename = optarg;
break;
@@ -113,17 +122,19 @@ main(int argc, char **argv)
printf("%s\n", XBPS_RELVER);
exit(EXIT_SUCCESS);
case '?':
- case 'h':
default:
- usage();
+ usage(true);
+ /* NOTREACHED */
}
}
argc -= optind;
argv += optind;
- if (!argc)
- usage();
+ if (!argc) {
+ usage(true);
+ /* NOTREACHED */
+ }
/*
* Initialize libxbps.
diff --git a/bin/xbps-install/main.c b/bin/xbps-install/main.c
index adc83889..d7c3e6c4 100644
--- a/bin/xbps-install/main.c
+++ b/bin/xbps-install/main.c
@@ -43,29 +43,29 @@ usage(bool fail)
fprintf(stdout,
"Usage: xbps-install [OPTIONS] [PKGNAME...]\n\n"
"OPTIONS\n"
- " -A --automatic Set automatic installation mode\n"
- " -C --config Path to confdir (xbps.d)\n"
- " -c --cachedir Path to cachedir\n"
- " -d --debug Debug mode shown to stderr\n"
- " -D --download-only Download packages and check integrity, nothing else\n"
- " -f --force Force package re-installation\n"
- " If specified twice, all files will be overwritten.\n"
- " -h --help Print help usage\n"
- " -i --ignore-conf-repos Ignore repositories defined in xbps.d\n"
- " -I --ignore-file-conflicts Ignore detected file conflicts\n"
- " -U --unpack-only Unpack packages in transaction, do not configure them\n"
- " -M --memory-sync Remote repository data is fetched and stored\n"
- " in memory, ignoring on-disk repodata archives\n"
- " -n --dry-run Dry-run mode\n"
- " -R,--repository Add repository to the top of the list\n"
- " This option can be specified multiple times\n"
- " -r --rootdir Full path to rootdir\n"
- " --reproducible Enable reproducible mode in pkgdb\n"
- " -S --sync Sync remote repository index\n"
- " -u --update Update target package(s)\n"
- " -v --verbose Verbose messages\n"
- " -y --yes Assume yes to all questions\n"
- " -V --version Show XBPS version\n");
+ " -A, --automatic Set automatic installation mode\n"
+ " -C, --config Path to confdir (xbps.d)\n"
+ " -c, --cachedir Path to cachedir\n"
+ " -d, --debug Debug mode shown to stderr\n"
+ " -D, --download-only Download packages and check integrity, nothing else\n"
+ " -f, --force Force package re-installation\n"
+ " If specified twice, all files will be overwritten.\n"
+ " -h, --help Show usage\n"
+ " -i, --ignore-conf-repos Ignore repositories defined in xbps.d\n"
+ " -I, --ignore-file-conflicts Ignore detected file conflicts\n"
+ " -U, --unpack-only Unpack packages in transaction, do not configure them\n"
+ " -M, --memory-sync Remote repository data is fetched and stored\n"
+ " in memory, ignoring on-disk repodata archives\n"
+ " -n, --dry-run Dry-run mode\n"
+ " -R, --repository Add repository to the top of the list\n"
+ " This option can be specified multiple times\n"
+ " -r, --rootdir Full path to rootdir\n"
+ " --reproducible Enable reproducible mode in pkgdb\n"
+ " -S, --sync Sync remote repository index\n"
+ " -u, --update Update target package(s)\n"
+ " -v, --verbose Verbose messages\n"
+ " -y, --yes Assume yes to all questions\n"
+ " -V, --version Show XBPS version\n");
exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
}
diff --git a/bin/xbps-pkgdb/main.c b/bin/xbps-pkgdb/main.c
index 4f1061ac..96e5cc9b 100644
--- a/bin/xbps-pkgdb/main.c
+++ b/bin/xbps-pkgdb/main.c
@@ -40,16 +40,16 @@ usage(bool fail)
fprintf(stdout,
"Usage: xbps-pkgdb [OPTIONS] [PKGNAME...]\n\n"
"OPTIONS\n"
- " -a --all Process all packages\n"
- " -C --config Path to confdir (xbps.d)\n"
- " -d --debug Debug mode shown to stderr\n"
- " -h --help Print usage help\n"
- " -m --mode \n"
- " Change PKGNAME to this mode\n"
- " -r --rootdir Full path to rootdir\n"
- " -u --update Update pkgdb to the latest format\n"
- " -v --verbose Verbose messages\n"
- " -V --version Show XBPS version\n");
+ " -a, --all Process all packages\n"
+ " -C, --config Path to confdir (xbps.d)\n"
+ " -d, --debug Debug mode shown to stderr\n"
+ " -h, --help Show usage\n"
+ " -m, --mode \n"
+ " Change PKGNAME to this mode\n"
+ " -r, --rootdir Full path to rootdir\n"
+ " -u, --update Update pkgdb to the latest format\n"
+ " -v, --verbose Verbose messages\n"
+ " -V, --version Show XBPS version\n");
exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
}
@@ -136,8 +136,10 @@ main(int argc, char **argv)
/* NOTREACHED */
}
}
- if (!update_format && !all && (argc == optind))
+ if (!update_format && !all && (argc == optind)) {
usage(true);
+ /* NOTREACHED */
+ }
memset(&xh, 0, sizeof(xh));
if (rootdir)
diff --git a/bin/xbps-query/main.c b/bin/xbps-query/main.c
index 17ee498b..b893cadd 100644
--- a/bin/xbps-query/main.c
+++ b/bin/xbps-query/main.c
@@ -38,38 +38,38 @@ usage(bool fail)
fprintf(stdout,
"Usage: xbps-query [OPTIONS] MODE [ARGUMENTS]\n"
"\nOPTIONS\n"
- " -C --config Path to confdir (xbps.d)\n"
- " -c --cachedir Path to cachedir\n"
- " -d --debug Debug mode shown to stderr\n"
- " -h --help Print help usage\n"
- " -i --ignore-conf-repos Ignore repositories defined in xbps.d\n"
- " -M --memory-sync Remote repository data is fetched and stored\n"
- " in memory, ignoring on-disk repodata archives.\n"
- " -p --property PROP[,...] Show properties for PKGNAME\n"
- " -R --repository Enable repository mode. This mode explicitly\n"
- " looks for packages in repositories.\n"
- " --repository= Enable repository mode and add repository\n"
- " to the top of the list. This option can be\n"
- " specified multiple times.\n"
- " --regex Use Extended Regular Expressions to match\n"
- " --fulldeptree Full dependency tree for -x/--deps\n"
- " -r --rootdir Full path to rootdir\n"
- " -V --version Show XBPS version\n"
- " -v --verbose Verbose messages\n"
+ " -C, --config Path to confdir (xbps.d)\n"
+ " -c, --cachedir Path to cachedir\n"
+ " -d, --debug Debug mode shown to stderr\n"
+ " -h, --help Show usage\n"
+ " -i, --ignore-conf-repos Ignore repositories defined in xbps.d\n"
+ " -M, --memory-sync Remote repository data is fetched and stored\n"
+ " in memory, ignoring on-disk repodata archives\n"
+ " -p, --property PROP[,...] Show properties for PKGNAME\n"
+ " -R, --repository Enable repository mode. This mode explicitly\n"
+ " looks for packages in repositories\n"
+ " --repository= Enable repository mode and add repository\n"
+ " to the top of the list. This option can be\n"
+ " specified multiple times\n"
+ " --regex Use Extended Regular Expressions to match\n"
+ " --fulldeptree Full dependency tree for -x/--deps\n"
+ " -r, --rootdir Full path to rootdir\n"
+ " -V, --version Show XBPS version\n"
+ " -v, --verbose Verbose messages\n"
"\nMODE\n"
- " -l --list-pkgs List installed packages\n"
- " -L --list-repos List registered repositories\n"
- " -H --list-hold-pkgs List packages on hold state\n"
- " --list-repolock-pkgs List repolocked packages\n"
- " -m --list-manual-pkgs List packages installed explicitly\n"
- " -O --list-orphans List package orphans\n"
- " -o --ownedby FILE Search for package files by matching STRING or REGEX\n"
- " -S --show PKG Show information for PKG [default mode]\n"
- " -s --search PKG Search for packages by matching PKG, STRING or REGEX\n"
- " --cat=FILE PKG Print FILE from PKG binpkg to stdout\n"
- " -f --files PKG Show package files for PKG\n"
- " -x --deps PKG Show dependencies for PKG\n"
- " -X --revdeps PKG Show reverse dependencies for PKG\n");
+ " -l, --list-pkgs List installed packages\n"
+ " -L, --list-repos List registered repositories\n"
+ " -H, --list-hold-pkgs List packages on hold state\n"
+ " --list-repolock-pkgs List repolocked packages\n"
+ " -m, --list-manual-pkgs List packages installed explicitly\n"
+ " -O, --list-orphans List package orphans\n"
+ " -o, --ownedby FILE Search for package files by matching STRING or REGEX\n"
+ " -S, --show PKG Show information for PKG [default mode]\n"
+ " -s, --search PKG Search for packages by matching PKG, STRING or REGEX\n"
+ " --cat=FILE PKG Print FILE from PKG binpkg to stdout\n"
+ " -f, --files PKG Show package files for PKG\n"
+ " -x, --deps PKG Show dependencies for PKG\n"
+ " -X, --revdeps PKG Show reverse dependencies for PKG\n");
exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
}
@@ -214,6 +214,7 @@ main(int argc, char **argv)
list_repolock = opmode = true;
break;
case '?':
+ default:
usage(true);
/* NOTREACHED */
}
@@ -223,6 +224,7 @@ main(int argc, char **argv)
if (!argc && !opmode) {
usage(true);
+ /* NOTREACHED */
} else if (!opmode) {
/* show mode by default */
show = opmode = true;
@@ -232,6 +234,7 @@ main(int argc, char **argv)
if (argc) {
/* trailing parameters */
usage(true);
+ /* NOTREACHED */
}
/*
* Initialize libxbps.
diff --git a/bin/xbps-reconfigure/main.c b/bin/xbps-reconfigure/main.c
index 869f972c..2cd41d58 100644
--- a/bin/xbps-reconfigure/main.c
+++ b/bin/xbps-reconfigure/main.c
@@ -39,15 +39,15 @@ usage(bool fail)
fprintf(stdout,
"Usage: xbps-reconfigure [OPTIONS] [PKGNAME...]\n\n"
"OPTIONS\n"
- " -a --all Process all packages\n"
- " -C --config Path to confdir (xbps.d)\n"
- " -d --debug Debug mode shown to stderr\n"
- " -f --force Force reconfiguration\n"
- " -h --help Print usage help\n"
- " -i --ignore PKG Ignore PKG with -a/--all\n"
- " -r --rootdir Full path to rootdir\n"
- " -v --verbose Verbose messages\n"
- " -V --version Show XBPS version\n");
+ " -a, --all Process all packages\n"
+ " -C, --config Path to confdir (xbps.d)\n"
+ " -d, --debug Debug mode shown to stderr\n"
+ " -f, --force Force reconfiguration\n"
+ " -h, --help Show usage\n"
+ " -i, --ignore PKG Ignore PKG with -a/--all\n"
+ " -r, --rootdir Full path to rootdir\n"
+ " -v, --verbose Verbose messages\n"
+ " -V, --version Show XBPS version\n");
exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
}
@@ -147,8 +147,10 @@ main(int argc, char **argv)
/* NOTREACHED */
}
}
- if (!all && (argc == optind))
+ if (!all && (argc == optind)) {
usage(true);
+ /* NOTREACHED */
+ }
memset(&xh, 0, sizeof(xh));
xh.state_cb = state_cb;
diff --git a/bin/xbps-remove/main.c b/bin/xbps-remove/main.c
index 4ff943c0..02edb97b 100644
--- a/bin/xbps-remove/main.c
+++ b/bin/xbps-remove/main.c
@@ -45,21 +45,21 @@ usage(bool fail)
fprintf(stdout,
"Usage: xbps-remove [OPTIONS] [PKGNAME...]\n\n"
"OPTIONS\n"
- " -C --config Path to confdir (xbps.d)\n"
- " -c --cachedir Path to cachedir\n"
- " -d --debug Debug mode shown to stderr\n"
- " -F --force-revdeps Force package removal even with revdeps or\n"
- " unresolved shared libraries\n"
- " -f --force Force package files removal\n"
- " -h --help Print help usage\n"
- " -n --dry-run Dry-run mode\n"
- " -O --clean-cache Remove obsolete packages in cachedir\n"
- " -o --remove-orphans Remove package orphans\n"
- " -R --recursive Recursively remove dependencies\n"
- " -r --rootdir Full path to rootdir\n"
- " -v --verbose Verbose messages\n"
- " -y --yes Assume yes to all questions\n"
- " -V --version Show XBPS version\n");
+ " -C, --config Path to confdir (xbps.d)\n"
+ " -c, --cachedir Path to cachedir\n"
+ " -d, --debug Debug mode shown to stderr\n"
+ " -F, --force-revdeps Force package removal even with revdeps or\n"
+ " unresolved shared libraries\n"
+ " -f, --force Force package files removal\n"
+ " -h, --help Show usage\n"
+ " -n, --dry-run Dry-run mode\n"
+ " -O, --clean-cache Remove obsolete packages in cachedir\n"
+ " -o, --remove-orphans Remove package orphans\n"
+ " -R, --recursive Recursively remove dependencies\n"
+ " -r, --rootdir Full path to rootdir\n"
+ " -v, --verbose Verbose messages\n"
+ " -y, --yes Assume yes to all questions\n"
+ " -V, --version Show XBPS version\n");
exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
}
@@ -236,8 +236,10 @@ main(int argc, char **argv)
/* NOTREACHED */
}
}
- if (!clean_cache && !orphans && (argc == optind))
+ if (!clean_cache && !orphans && (argc == optind)) {
usage(true);
+ /* NOTREACHED */
+ }
/*
* Initialize libxbps.
diff --git a/bin/xbps-rindex/main.c b/bin/xbps-rindex/main.c
index 8e3d766b..a796094c 100644
--- a/bin/xbps-rindex/main.c
+++ b/bin/xbps-rindex/main.c
@@ -37,21 +37,21 @@ usage(bool fail)
fprintf(stdout,
"Usage: xbps-rindex [OPTIONS] MODE ARGUMENTS\n\n"
"OPTIONS\n"
- " -d --debug Debug mode shown to stderr\n"
- " -f --force Force mode to overwrite entry in add mode\n"
- " -h --help Show help usage\n"
- " -v --verbose Verbose messages\n"
- " -V --version Show XBPS version\n"
- " -C --hashcheck Consider file hashes for cleaning up packages\n"
- " --compression Compression format: none, gzip, bzip2, lz4, xz, zstd (default).\n"
- " --privkey Path to the private key for signing\n"
- " --signedby Signature details, i.e \"name \"\n\n"
+ " -d, --debug Debug mode shown to stderr\n"
+ " -f, --force Force mode to overwrite entry in add mode\n"
+ " -h, --help Show usage\n"
+ " -v, --verbose Verbose messages\n"
+ " -V, --version Show XBPS version\n"
+ " -C, --hashcheck Consider file hashes for cleaning up packages\n"
+ " --compression Compression format: none, gzip, bzip2, lz4, xz, zstd (default)\n"
+ " --privkey Path to the private key for signing\n"
+ " --signedby Signature details, i.e \"name \"\n\n"
"MODE\n"
- " -a --add ... Add package(s) to repository index\n"
- " -c --clean Clean repository index\n"
- " -r --remove-obsoletes Removes obsolete packages from repository\n"
- " -s --sign Initialize repository metadata signature\n"
- " -S --sign-pkg archive.xbps ... Sign binary package archive\n\n");
+ " -a, --add ... Add package(s) to repository index\n"
+ " -c, --clean Clean repository index\n"
+ " -r, --remove-obsoletes Removes obsolete packages from repository\n"
+ " -s, --sign Initialize repository metadata signature\n"
+ " -S, --sign-pkg ... Sign binary package archive\n");
exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
}
@@ -130,11 +130,16 @@ main(int argc, char **argv)
case 'V':
printf("%s\n", XBPS_RELVER);
exit(EXIT_SUCCESS);
+ case '?':
+ default:
+ usage(true);
+ /* NOTREACHED */
}
}
if ((argc == optind) ||
(!add_mode && !clean_mode && !rm_mode && !sign_mode && !sign_pkg_mode)) {
usage(true);
+ /* NOTREACHED */
} else if ((add_mode && (clean_mode || rm_mode || sign_mode || sign_pkg_mode)) ||
(clean_mode && (add_mode || rm_mode || sign_mode || sign_pkg_mode)) ||
(rm_mode && (add_mode || clean_mode || sign_mode || sign_pkg_mode)) ||
diff --git a/bin/xbps-uchroot/main.c b/bin/xbps-uchroot/main.c
index f6617a54..db93e288 100644
--- a/bin/xbps-uchroot/main.c
+++ b/bin/xbps-uchroot/main.c
@@ -87,7 +87,7 @@ static SIMPLEQ_HEAD(bindmnt_head, bindmnt) bindmnt_queue =
SIMPLEQ_HEAD_INITIALIZER(bindmnt_queue);
static void __attribute__((noreturn))
-usage(const char *p)
+usage(const char *p, bool fail)
{
printf("Usage: %s [OPTIONS] [--] []\n\n"
"-B, --bind-ro Bind mounts into / (read-only)\n"
@@ -96,8 +96,8 @@ usage(const char *p)
"-t, --tmpfs Creates a tempdir and mounts on tmpfs (for use with -O)\n"
"-o, --options Options to be passed to the tmpfs mount (for use with -t)\n"
"-V, --version Show XBPS version\n"
- "-h, --help Show usage\n\n", p);
- exit(EXIT_FAILURE);
+ "-h, --help Show usage\n", p);
+ exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
}
static void __attribute__((noreturn))
@@ -369,16 +369,21 @@ main(int argc, char **argv)
printf("%s\n", XBPS_RELVER);
exit(EXIT_SUCCESS);
case 'h':
+ usage(argv0, false);
+ /* NOTREACHED */
case '?':
default:
- usage(argv0);
+ usage(argv0, true);
+ /* NOTREACHED */
}
}
argc -= optind;
argv += optind;
- if (argc < 2)
- usage(argv0);
+ if (argc < 2) {
+ usage(argv0, true);
+ /* NOTREACHED */
+ }
rootdir = argv[0];
cmd = argv[1];
diff --git a/bin/xbps-uunshare/main.c b/bin/xbps-uunshare/main.c
index 00040963..ac257d38 100644
--- a/bin/xbps-uunshare/main.c
+++ b/bin/xbps-uunshare/main.c
@@ -74,11 +74,14 @@ die(const char *fmt, ...)
}
static void __attribute__((noreturn))
-usage(const char *p)
+usage(const char *p, bool fail)
{
- printf("Usage: %s [-b src:dest] [--] []\n\n"
- "-b src:dest Bind mounts into / (may be specified multiple times)\n\n", p);
- exit(EXIT_FAILURE);
+ printf("Usage: %s [OPTIONS] [--] []\n\n"
+ "OPTIONS\n"
+ " -b, --bind-rw Bind mounts into / (read-write)\n"
+ " -h, --help Show usage\n"
+ " -V, --version Show XBPS version\n", p);
+ exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
}
static void
@@ -130,13 +133,16 @@ main(int argc, char **argv)
char **cmdargs, buf[32];
int c, fd;
const struct option longopts[] = {
+ { "bind-rw", required_argument, NULL, 'b' },
+ { "version", no_argument, NULL, 'V' },
+ { "help", no_argument, NULL, 'h' },
{ NULL, 0, NULL, 0 }
};
chrootdir = cmd = NULL;
argv0 = argv[0];
- while ((c = getopt_long(argc, argv, "b:V", longopts, NULL)) != -1) {
+ while ((c = getopt_long(argc, argv, "b:hV", longopts, NULL)) != -1) {
switch (c) {
case 'b':
if (optarg == NULL || *optarg == '\0')
@@ -146,16 +152,22 @@ main(int argc, char **argv)
case 'V':
printf("%s\n", XBPS_RELVER);
exit(EXIT_SUCCESS);
+ case 'h':
+ usage(argv0, false);
+ /* NOTREACHED */
case '?':
default:
- usage(argv0);
+ usage(argv0, true);
+ /* NOTREACHED */
}
}
argc -= optind;
argv += optind;
- if (argc < 2)
- usage(argv0);
+ if (argc < 2) {
+ usage(argv0, true);
+ /* NOTREACHED */
+ }
chrootdir = argv[0];
cmd = argv[1];