mirror of
https://github.com/moparisthebest/pacman
synced 2024-08-13 17:03:46 -04:00
CLI args: update --help and manpage
The three parts (help, manpage and code) are now organized in the same way and much easier to compare : - specific options - install/upgrade options for -S and -U - transaction options for -S -R and -U - global options After this re-organization, it was easy to update and sync the three components together. Duplication is also avoided. Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
d0d8f605d5
commit
c78f5fb99a
110
doc/pacman.8.txt
110
doc/pacman.8.txt
@ -107,35 +107,12 @@ version comparison and force an upgrade.
|
||||
|
||||
Options
|
||||
-------
|
||||
*\--asdeps*::
|
||||
Install packages non-explicitly; in other words, fake their install reason
|
||||
to be installed as a dependency. This is useful for makepkg and other
|
||||
build from source tools that need to install dependencies before building
|
||||
the package.
|
||||
|
||||
*\--asexplicit*::
|
||||
Install packages explicitly; in other words, fake their install reason to
|
||||
be explicitly installed. This is useful if you want to mark a dependency
|
||||
as explicitly installed so it will not be removed by the '\--recursive'
|
||||
remove operation.
|
||||
|
||||
*-b, \--dbpath* <'path'>::
|
||||
Specify an alternative database location (a typical default is
|
||||
``{localstatedir}/lib/pacman''). This should not be used unless you know what you are
|
||||
doing. *NOTE*: if specified, this is an absolute path and the root path is
|
||||
not automatically prepended.
|
||||
|
||||
*-d, \--nodeps*::
|
||||
Skips all dependency checks. Normally, pacman will always check a
|
||||
package's dependency fields to ensure that all dependencies are
|
||||
installed and there are no package conflicts in the system.
|
||||
|
||||
*-f, \--force*::
|
||||
Bypass file conflict checks and overwrite conflicting files. If the
|
||||
package that is about to be installed contains files that are already
|
||||
installed, this option will cause all those files to be overwritten.
|
||||
This option should be used with care, ideally not at all.
|
||||
|
||||
*-r, \--root* <'path'>::
|
||||
Specify an alternative installation root (default is ``/''). This should
|
||||
not be used as a way to install software into ``/usr/local'' instead of
|
||||
@ -148,9 +125,8 @@ Options
|
||||
*-v, \--verbose*::
|
||||
Output paths such as as the Root, Conf File, DB Path, Cache Dirs, etc.
|
||||
|
||||
*\--debug*::
|
||||
Display debug messages. When reporting bugs, this option is recommended
|
||||
to be used.
|
||||
*\--arch* <'arch'>::
|
||||
Specify an alternate architecture.
|
||||
|
||||
*\--cachedir* <'dir'>::
|
||||
Specify an alternative package cache location (a typical default is
|
||||
@ -161,15 +137,9 @@ Options
|
||||
*\--config* <'file'>::
|
||||
Specify an alternate configuration file.
|
||||
|
||||
*\--ignore* <'package'>::
|
||||
Directs pacman to ignore upgrades of package even if there is one
|
||||
available. Multiple packages can be specified by separating them
|
||||
with a comma.
|
||||
|
||||
*\--ignoregroup* <'group'>::
|
||||
Directs pacman to ignore upgrades of all packages in 'group' even if
|
||||
there is one available. Multiple groups can be specified by
|
||||
separating them with a comma.
|
||||
*\--debug*::
|
||||
Display debug messages. When reporting bugs, this option is recommended
|
||||
to be used.
|
||||
|
||||
*\--logfile* <'file'>::
|
||||
Specify an alternate log file. This is an absolute path, regardless of
|
||||
@ -179,6 +149,18 @@ Options
|
||||
Bypass any and all ``Are you sure?'' messages. It's not a good idea to do
|
||||
this unless you want to run pacman from a script.
|
||||
|
||||
Transaction Options (apply to '-S', '-R' and '-U')
|
||||
--------------------------------------------------
|
||||
*-d, \--nodeps*::
|
||||
Skips all dependency checks. Normally, pacman will always check a
|
||||
package's dependency fields to ensure that all dependencies are
|
||||
installed and there are no package conflicts in the system.
|
||||
|
||||
*-k, \--dbonly*::
|
||||
Adds/Removes the database entry only, leaves all files in place.
|
||||
On an upgrade operation, the existing package and all files
|
||||
will be removed and the database entry for the new package will be added.
|
||||
|
||||
*\--noprogressbar*::
|
||||
Do not show a progress bar when downloading files. This can be useful
|
||||
for scripts that call pacman and capture the output.
|
||||
@ -187,19 +169,46 @@ Options
|
||||
If an install scriptlet exists, do not execute it. Do not use this
|
||||
unless you know what you are doing.
|
||||
|
||||
*\--arch* <'arch'>::
|
||||
Specify an alternate architecture.
|
||||
|
||||
*-p, \--print*::
|
||||
Only print the targets instead of performing the actual operation (sync,
|
||||
remove or upgrade). Use '\--print-format' to specify how targets are
|
||||
displayed. The default format string is "%l", which displays url with '-S',
|
||||
filename with '-U' and pkgname-pkgver with '-R'.
|
||||
remove or upgrade). Use '\--print-format' to specify how targets are
|
||||
displayed. The default format string is "%l", which displays url with
|
||||
'-S', filename with '-U' and pkgname-pkgver with '-R'.
|
||||
|
||||
*\--print-format* <'format'>::
|
||||
Specify a printf-like format to control the output of the '\--print'
|
||||
operation. The possible are attributes are : %n for pkgname, %v for pkgver, %l
|
||||
for location, %r for repo and %s for size.
|
||||
operation. The possible are attributes are : %n for pkgname, %v for pkgver,
|
||||
%l for location, %r for repo and %s for size.
|
||||
|
||||
Upgrade Options (apply to 'S' and 'U')[[UO]]
|
||||
--------------------------------------------
|
||||
*-f, \--force*::
|
||||
Bypass file conflict checks and overwrite conflicting files. If the
|
||||
package that is about to be installed contains files that are already
|
||||
installed, this option will cause all those files to be overwritten.
|
||||
This option should be used with care, ideally not at all.
|
||||
|
||||
*\--asdeps*::
|
||||
Install packages non-explicitly; in other words, fake their install reason
|
||||
to be installed as a dependency. This is useful for makepkg and other
|
||||
build from source tools that need to install dependencies before building
|
||||
the package.
|
||||
|
||||
*\--asexplicit*::
|
||||
Install packages explicitly; in other words, fake their install reason to
|
||||
be explicitly installed. This is useful if you want to mark a dependency
|
||||
as explicitly installed so it will not be removed by the '\--recursive'
|
||||
remove operation.
|
||||
|
||||
*\--ignore* <'package'>::
|
||||
Directs pacman to ignore upgrades of package even if there is one
|
||||
available. Multiple packages can be specified by separating them
|
||||
with a comma.
|
||||
|
||||
*\--ignoregroup* <'group'>::
|
||||
Directs pacman to ignore upgrades of all packages in 'group' even if
|
||||
there is one available. Multiple groups can be specified by
|
||||
separating them with a comma.
|
||||
|
||||
Query Options[[QO]]
|
||||
-------------------
|
||||
@ -287,9 +296,6 @@ Remove Options[[RO]]
|
||||
or more target packages. This operation is recursive, and must be used
|
||||
with care since it can remove many potentially needed packages.
|
||||
|
||||
*-k, \--dbonly*::
|
||||
Removes the database entry only. Leaves all files in place.
|
||||
|
||||
*-n, \--nosave*::
|
||||
Instructs pacman to ignore file backup designations. Normally, when a
|
||||
file is removed from the system the database is checked to see if the
|
||||
@ -334,10 +340,6 @@ linkman:pacman.conf[5].
|
||||
or '-i' flags will also display those packages in all repositories that
|
||||
depend on this package.
|
||||
|
||||
*-k, \--dbonly*::
|
||||
Adds the database entries for the specified packages but does not install any
|
||||
of the files.
|
||||
|
||||
*-l, \--list*::
|
||||
List all packages in the specified repositories. Multiple repositories
|
||||
can be specified on the command line.
|
||||
@ -383,14 +385,6 @@ linkman:pacman.conf[5].
|
||||
Don't reinstall the targets that are already up-to-date.
|
||||
|
||||
|
||||
Upgrade Options[[UO]]
|
||||
--------------------
|
||||
*-k, \--dbonly*::
|
||||
Adds the database entries for the specified packages but does not install any
|
||||
of the files. On an upgrade operation, the existing package and all files
|
||||
will be removed and the database entry for the new package will be added.
|
||||
|
||||
|
||||
Handling Config Files[[HCF]]
|
||||
----------------------------
|
||||
Pacman uses the same logic as rpm to determine action against files that are
|
||||
|
@ -91,26 +91,14 @@ static void usage(int op, const char * const myname)
|
||||
printf("%s: %s {-R --remove} [%s] <%s>\n", str_usg, myname, str_opt, str_pkg);
|
||||
printf("%s:\n", str_opt);
|
||||
printf(_(" -c, --cascade remove packages and all packages that depend on them\n"));
|
||||
printf(_(" -d, --nodeps skip dependency checks\n"));
|
||||
printf(_(" -k, --dbonly only remove database entries, do not remove files\n"));
|
||||
printf(_(" -n, --nosave remove configuration files as well\n"));
|
||||
printf(_(" -s, --recursive remove dependencies also (that won't break packages)\n"
|
||||
" (-ss includes explicitly installed dependencies too)\n"));
|
||||
printf(_(" -u, --unneeded remove unneeded packages (that won't break packages)\n"));
|
||||
printf(_(" --print only print the targets instead of performing the operation\n"));
|
||||
printf(_(" --print-format <string>\n"
|
||||
" specify how the targets should be printed\n"));
|
||||
} else if(op == PM_OP_UPGRADE) {
|
||||
printf("%s: %s {-U --upgrade} [%s] <%s>\n", str_usg, myname, str_opt, str_file);
|
||||
printf("%s:\n", str_opt);
|
||||
printf(_(" --asdeps install packages as non-explicitly installed\n"));
|
||||
printf(_(" --asexplicit install packages as explicitly installed\n"));
|
||||
printf(_(" -d, --nodeps skip dependency checks\n"));
|
||||
printf(_(" -f, --force force install, overwrite conflicting files\n"));
|
||||
printf(_(" -k, --dbonly add database entries, do not install or keep existing files\n"));
|
||||
printf(_(" --print only print the targets instead of performing the operation\n"));
|
||||
printf(_(" --print-format <string>\n"
|
||||
" specify how the targets should be printed\n"));
|
||||
} else if(op == PM_OP_QUERY) {
|
||||
printf("%s: %s {-Q --query} [%s] [%s]\n", str_usg, myname, str_opt, str_pkg);
|
||||
printf("%s:\n", str_opt);
|
||||
@ -124,50 +112,59 @@ static void usage(int op, const char * const myname)
|
||||
printf(_(" -m, --foreign list installed packages not found in sync db(s) [filter]\n"));
|
||||
printf(_(" -o, --owns <file> query the package that owns <file>\n"));
|
||||
printf(_(" -p, --file <package> query a package file instead of the database\n"));
|
||||
printf(_(" -q, --quiet show less information for query and search\n"));
|
||||
printf(_(" -s, --search <regex> search locally-installed packages for matching strings\n"));
|
||||
printf(_(" -t, --unrequired list packages not required by any package [filter]\n"));
|
||||
printf(_(" -u, --upgrades list outdated packages [filter]\n"));
|
||||
printf(_(" -q, --quiet show less information for query and search\n"));
|
||||
} else if(op == PM_OP_SYNC) {
|
||||
printf("%s: %s {-S --sync} [%s] [%s]\n", str_usg, myname, str_opt, str_pkg);
|
||||
printf("%s:\n", str_opt);
|
||||
printf(_(" --asdeps install packages as non-explicitly installed\n"));
|
||||
printf(_(" --asexplicit install packages as explicitly installed\n"));
|
||||
printf(_(" -c, --clean remove old packages from cache directory (-cc for all)\n"));
|
||||
printf(_(" -d, --nodeps skip dependency checks\n"));
|
||||
printf(_(" -f, --force force install, overwrite conflicting files\n"));
|
||||
printf(_(" -g, --groups view all members of a package group\n"));
|
||||
printf(_(" -i, --info view package information\n"));
|
||||
printf(_(" -l, --list <repo> view a list of packages in a repo\n"));
|
||||
printf(_(" -q, --quiet show less information for query and search\n"));
|
||||
printf(_(" -s, --search <regex> search remote repositories for matching strings\n"));
|
||||
printf(_(" -u, --sysupgrade upgrade installed packages (-uu allows downgrade)\n"));
|
||||
printf(_(" -w, --downloadonly download packages but do not install/upgrade anything\n"));
|
||||
printf(_(" -y, --refresh download fresh package databases from the server\n"));
|
||||
printf(_(" --needed don't reinstall up to date packages\n"));
|
||||
printf(_(" --ignore <pkg> ignore a package upgrade (can be used more than once)\n"));
|
||||
printf(_(" --ignoregroup <grp>\n"
|
||||
" ignore a group upgrade (can be used more than once)\n"));
|
||||
printf(_(" --print only print the targets instead of performing the operation\n"));
|
||||
printf(_(" --print-format <string>\n"
|
||||
" specify how the targets should be printed\n"));
|
||||
printf(_(" -q, --quiet show less information for query and search\n"));
|
||||
} else if (op == PM_OP_DATABASE) {
|
||||
printf("%s: %s {-D --database} <%s> <%s>\n", str_usg, myname, str_opt, str_pkg);
|
||||
printf("%s:\n", str_opt);
|
||||
printf(_(" --asdeps mark packages as non-explicitly installed\n"));
|
||||
printf(_(" --asexplicit mark packages as explicitly installed\n"));
|
||||
}
|
||||
switch(op) {
|
||||
case PM_OP_SYNC:
|
||||
case PM_OP_UPGRADE:
|
||||
printf(_(" -f, --force force install, overwrite conflicting files\n"));
|
||||
printf(_(" -k, --dbonly add database entries, do not install or keep existing files\n"));
|
||||
printf(_(" --asdeps install packages as non-explicitly installed\n"));
|
||||
printf(_(" --asexplicit install packages as explicitly installed\n"));
|
||||
printf(_(" --ignore <pkg> ignore a package upgrade (can be used more than once)\n"));
|
||||
printf(_(" --ignoregroup <grp>\n"
|
||||
" ignore a group upgrade (can be used more than once)\n"));
|
||||
/* pass through */
|
||||
case PM_OP_REMOVE:
|
||||
printf(_(" -d, --nodeps skip dependency checks\n"));
|
||||
printf(_(" --noprogressbar do not show a progress bar when downloading files\n"));
|
||||
printf(_(" --noscriptlet do not execute the install scriptlet if one exists\n"));
|
||||
printf(_(" --print only print the targets instead of performing the operation\n"));
|
||||
printf(_(" --print-format <string>\n"
|
||||
" specify how the targets should be printed\n"));
|
||||
break;
|
||||
}
|
||||
|
||||
printf(_(" -b, --dbpath <path> set an alternate database location\n"));
|
||||
printf(_(" -r, --root <path> set an alternate installation root\n"));
|
||||
printf(_(" -v, --verbose be verbose\n"));
|
||||
printf(_(" --arch <arch> set an alternate architecture\n"));
|
||||
printf(_(" --cachedir <dir> set an alternate package cache location\n"));
|
||||
printf(_(" --config <path> set an alternate configuration file\n"));
|
||||
printf(_(" --debug display debug messages\n"));
|
||||
printf(_(" --logfile <path> set an alternate log file\n"));
|
||||
printf(_(" --noconfirm do not ask for any confirmation\n"));
|
||||
printf(_(" --noprogressbar do not show a progress bar when downloading files\n"));
|
||||
printf(_(" --noscriptlet do not execute the install scriptlet if one exists\n"));
|
||||
printf(_(" -v, --verbose be verbose\n"));
|
||||
printf(_(" --debug display debug messages\n"));
|
||||
printf(_(" -r, --root <path> set an alternate installation root\n"));
|
||||
printf(_(" -b, --dbpath <path> set an alternate database location\n"));
|
||||
printf(_(" --cachedir <dir> set an alternate package cache location\n"));
|
||||
printf(_(" --arch <arch> set an alternate architecture\n"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -506,17 +503,31 @@ static int parsearg_query(int opt)
|
||||
return(0);
|
||||
}
|
||||
|
||||
static int parsearg_remove(int opt)
|
||||
/* options common to -S -R -U */
|
||||
static int parsearg_trans(int opt)
|
||||
{
|
||||
switch(opt) {
|
||||
case OP_NOPROGRESSBAR: config->noprogressbar = 1; break;
|
||||
case OP_NOSCRIPTLET: config->flags |= PM_TRANS_FLAG_NOSCRIPTLET; break;
|
||||
case OP_PRINTFORMAT: check_optarg(); config->print_format = strdup(optarg); break;
|
||||
case 'c': config->flags |= PM_TRANS_FLAG_CASCADE; break;
|
||||
case 'd': config->flags |= PM_TRANS_FLAG_NODEPS; break;
|
||||
case 'k': config->flags |= PM_TRANS_FLAG_DBONLY; break;
|
||||
case 'n': config->flags |= PM_TRANS_FLAG_NOSAVE; break;
|
||||
case OP_NOPROGRESSBAR: config->noprogressbar = 1; break;
|
||||
case OP_NOSCRIPTLET: config->flags |= PM_TRANS_FLAG_NOSCRIPTLET; break;
|
||||
case 'p': config->print = 1; break;
|
||||
case OP_PRINTFORMAT:
|
||||
check_optarg();
|
||||
config->print_format = strdup(optarg);
|
||||
break;
|
||||
default: return(1);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
static int parsearg_remove(int opt)
|
||||
{
|
||||
if (parsearg_trans(opt) == 0)
|
||||
return(0);
|
||||
switch(opt) {
|
||||
case 'c': config->flags |= PM_TRANS_FLAG_CASCADE; break;
|
||||
case 'n': config->flags |= PM_TRANS_FLAG_NOSAVE; break;
|
||||
case 's':
|
||||
if(config->flags & PM_TRANS_FLAG_RECURSE) {
|
||||
config->flags |= PM_TRANS_FLAG_RECURSEALL;
|
||||
@ -530,25 +541,36 @@ static int parsearg_remove(int opt)
|
||||
return(0);
|
||||
}
|
||||
|
||||
static int parsearg_sync(int opt)
|
||||
/* options common to -S -U */
|
||||
static int parsearg_upgrade(int opt)
|
||||
{
|
||||
if (parsearg_trans(opt) == 0)
|
||||
return(0);
|
||||
switch(opt) {
|
||||
case 'f': config->flags |= PM_TRANS_FLAG_FORCE; break;
|
||||
case OP_ASDEPS: config->flags |= PM_TRANS_FLAG_ALLDEPS; break;
|
||||
case OP_ASEXPLICIT: config->flags |= PM_TRANS_FLAG_ALLEXPLICIT; break;
|
||||
case OP_IGNORE: parsearg_util_addlist(alpm_option_add_ignorepkg); break;
|
||||
case OP_IGNOREGROUP: parsearg_util_addlist(alpm_option_add_ignoregrp); break;
|
||||
case OP_IGNORE:
|
||||
parsearg_util_addlist(alpm_option_add_ignorepkg);
|
||||
break;
|
||||
case OP_IGNOREGROUP:
|
||||
parsearg_util_addlist(alpm_option_add_ignoregrp);
|
||||
break;
|
||||
default: return(1);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
static int parsearg_sync(int opt)
|
||||
{
|
||||
if (parsearg_upgrade(opt) == 0)
|
||||
return(0);
|
||||
switch(opt) {
|
||||
case OP_NEEDED: config->flags |= PM_TRANS_FLAG_NEEDED; break;
|
||||
case OP_NOPROGRESSBAR: config->noprogressbar = 1; break;
|
||||
case OP_NOSCRIPTLET: config->flags |= PM_TRANS_FLAG_NOSCRIPTLET; break;
|
||||
case OP_PRINTFORMAT: check_optarg(); config->print_format = strdup(optarg); break;
|
||||
case 'c': (config->op_s_clean)++; break;
|
||||
case 'd': config->flags |= PM_TRANS_FLAG_NODEPS; break;
|
||||
case 'f': config->flags |= PM_TRANS_FLAG_FORCE; break;
|
||||
case 'g': (config->group)++; break;
|
||||
case 'i': (config->op_s_info)++; break;
|
||||
case 'l': config->op_q_list = 1; break;
|
||||
case 'k': config->flags |= PM_TRANS_FLAG_DBONLY; break;
|
||||
case 'p': config->print = 1; break;
|
||||
case 'q': config->quiet = 1; break;
|
||||
case 's': config->op_s_search = 1; break;
|
||||
case 'u': (config->op_s_upgrade)++; break;
|
||||
@ -563,33 +585,6 @@ static int parsearg_sync(int opt)
|
||||
return(0);
|
||||
}
|
||||
|
||||
static int parsearg_deptest(int opt)
|
||||
{
|
||||
switch(opt) {
|
||||
default: return(1);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
static int parsearg_upgrade(int opt)
|
||||
{
|
||||
switch(opt) {
|
||||
case OP_ASDEPS: config->flags |= PM_TRANS_FLAG_ALLDEPS; break;
|
||||
case OP_ASEXPLICIT: config->flags |= PM_TRANS_FLAG_ALLEXPLICIT; break;
|
||||
case OP_IGNORE: parsearg_util_addlist(alpm_option_add_ignorepkg); break;
|
||||
case OP_IGNOREGROUP: parsearg_util_addlist(alpm_option_add_ignoregrp); break;
|
||||
case OP_NOPROGRESSBAR: config->noprogressbar = 1; break;
|
||||
case OP_NOSCRIPTLET: config->flags |= PM_TRANS_FLAG_NOSCRIPTLET; break;
|
||||
case OP_PRINTFORMAT: check_optarg(); config->print_format = strdup(optarg); break;
|
||||
case 'd': config->flags |= PM_TRANS_FLAG_NODEPS; break;
|
||||
case 'f': config->flags |= PM_TRANS_FLAG_FORCE; break;
|
||||
case 'k': config->flags |= PM_TRANS_FLAG_DBONLY; break;
|
||||
case 'p': config->print = 1; break;
|
||||
default: return(1);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
/** Parse command-line arguments for each operation.
|
||||
* @param argc argc
|
||||
* @param argv argv
|
||||
@ -665,6 +660,7 @@ static int parseargs(int argc, char *argv[])
|
||||
} else if(opt == 0) {
|
||||
continue;
|
||||
} else if(opt == '?') {
|
||||
/* unknown option, getopt printed an error */
|
||||
return(1);
|
||||
}
|
||||
parsearg_op(opt, 0);
|
||||
@ -686,12 +682,12 @@ static int parseargs(int argc, char *argv[])
|
||||
/* parse all other options */
|
||||
optind = 1;
|
||||
while((opt = getopt_long(argc, argv, optstring, opts, &option_index))) {
|
||||
|
||||
if(opt < 0) {
|
||||
break;
|
||||
} else if(opt == 0) {
|
||||
continue;
|
||||
} else if(opt == '?') {
|
||||
/* this should have failed during first pass already */
|
||||
return(1);
|
||||
} else if(parsearg_op(opt, 1) == 0) { /* opt is an operation */
|
||||
continue;
|
||||
@ -711,22 +707,24 @@ static int parseargs(int argc, char *argv[])
|
||||
result = parsearg_sync(opt);
|
||||
break;
|
||||
case PM_OP_DEPTEST:
|
||||
result = parsearg_deptest(opt);
|
||||
result = 1;
|
||||
break;
|
||||
case PM_OP_UPGRADE:
|
||||
result = parsearg_upgrade(opt);
|
||||
break;
|
||||
default:
|
||||
pm_printf(PM_LOG_ERROR, _("no operation specified (use -h for help)\n"));
|
||||
return(1);
|
||||
}
|
||||
if (result == 0)
|
||||
continue;
|
||||
|
||||
/* fall back to global options */
|
||||
result = parsearg_global(opt);
|
||||
if(result != 0) {
|
||||
/* operation-specific option parsing failed, fall back to global options */
|
||||
result = parsearg_global(opt);
|
||||
if(result != 0) {
|
||||
/* global option parsing failed, abort */
|
||||
pm_printf(PM_LOG_ERROR, _("invalid option\n"));
|
||||
return(result);
|
||||
}
|
||||
/* global option parsing failed, abort */
|
||||
pm_printf(PM_LOG_ERROR, _("invalid option\n"));
|
||||
return(result);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user