flock, getopt: write --help to stdout and return 0

... and use errtryhelp() instead of usage().

Note in past "getopt --help" returned 2. But it is otherwise
documented and was just a mistake IMO. See the unreachable exit(0)
which was removed here: d1d03b54

Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
This commit is contained in:
Ruediger Meier 2017-06-19 00:02:44 +02:00
parent a3c29314f1
commit 6d7bee26bc
6 changed files with 52 additions and 52 deletions

View File

@ -243,9 +243,7 @@ static void __attribute__ ((__noreturn__)) parse_error(const char *message)
{
if (message)
warnx("%s", message);
fprintf(stderr, _("Try `%s --help' for more information.\n"),
program_invocation_short_name);
exit(PARAMETER_EXIT_CODE);
errtryhelp(PARAMETER_EXIT_CODE);
}
@ -325,33 +323,33 @@ static shell_t shell_type(const char *new_shell)
parse_error(_("unknown shell after -s or --shell argument"));
}
static void __attribute__ ((__noreturn__)) print_help(void)
static void __attribute__((__noreturn__)) usage(void)
{
fputs(USAGE_HEADER, stderr);
fprintf(stderr, _(
fputs(USAGE_HEADER, stdout);
printf(_(
" %1$s <optstring> <parameters>\n"
" %1$s [options] [--] <optstring> <parameters>\n"
" %1$s [options] -o|--options <optstring> [options] [--] <parameters>\n"),
program_invocation_short_name);
fputs(USAGE_SEPARATOR, stderr);
fputs(_("Parse command options.\n"), stderr);
fputs(USAGE_SEPARATOR, stdout);
fputs(_("Parse command options.\n"), stdout);
fputs(USAGE_OPTIONS, stderr);
fputs(_(" -a, --alternative allow long options starting with single -\n"), stderr);
fputs(_(" -l, --longoptions <longopts> the long options to be recognized\n"), stderr);
fputs(_(" -n, --name <progname> the name under which errors are reported\n"), stderr);
fputs(_(" -o, --options <optstring> the short options to be recognized\n"), stderr);
fputs(_(" -q, --quiet disable error reporting by getopt(3)\n"), stderr);
fputs(_(" -Q, --quiet-output no normal output\n"), stderr);
fputs(_(" -s, --shell <shell> set quoting conventions to those of <shell>\n"), stderr);
fputs(_(" -T, --test test for getopt(1) version\n"), stderr);
fputs(_(" -u, --unquoted do not quote the output\n"), stderr);
fputs(USAGE_SEPARATOR, stderr);
fputs(USAGE_HELP, stderr);
fputs(USAGE_VERSION, stderr);
fprintf(stderr, USAGE_MAN_TAIL("getopt(1)"));
exit(PARAMETER_EXIT_CODE);
fputs(USAGE_OPTIONS, stdout);
fputs(_(" -a, --alternative allow long options starting with single -\n"), stdout);
fputs(_(" -l, --longoptions <longopts> the long options to be recognized\n"), stdout);
fputs(_(" -n, --name <progname> the name under which errors are reported\n"), stdout);
fputs(_(" -o, --options <optstring> the short options to be recognized\n"), stdout);
fputs(_(" -q, --quiet disable error reporting by getopt(3)\n"), stdout);
fputs(_(" -Q, --quiet-output no normal output\n"), stdout);
fputs(_(" -s, --shell <shell> set quoting conventions to those of <shell>\n"), stdout);
fputs(_(" -T, --test test for getopt(1) version\n"), stdout);
fputs(_(" -u, --unquoted do not quote the output\n"), stdout);
fputs(USAGE_SEPARATOR, stdout);
fputs(USAGE_HELP, stdout);
fputs(USAGE_VERSION, stdout);
printf(USAGE_MAN_TAIL("getopt(1)"));
exit(EXIT_SUCCESS);
}
int main(int argc, char *argv[])
@ -417,7 +415,7 @@ int main(int argc, char *argv[])
getopt_long_fp = getopt_long_only;
break;
case 'h':
print_help();
usage();
case 'o':
free(ctl.optstr);
ctl.optstr = xstrdup(optarg);

View File

@ -46,34 +46,34 @@
#include "monotonic.h"
#include "timer.h"
static void __attribute__((__noreturn__)) usage(int ex)
static void __attribute__((__noreturn__)) usage(void)
{
fprintf(stderr, USAGE_HEADER);
fprintf(stderr,
fputs(USAGE_HEADER, stdout);
printf(
_(" %1$s [options] <file>|<directory> <command> [<argument>...]\n"
" %1$s [options] <file>|<directory> -c <command>\n"
" %1$s [options] <file descriptor number>\n"),
program_invocation_short_name);
fputs(USAGE_SEPARATOR, stderr);
fputs(_("Manage file locks from shell scripts.\n"), stderr);
fputs(USAGE_SEPARATOR, stdout);
fputs(_("Manage file locks from shell scripts.\n"), stdout);
fputs(USAGE_OPTIONS, stderr);
fputs(_( " -s, --shared get a shared lock\n"), stderr);
fputs(_( " -x, --exclusive get an exclusive lock (default)\n"), stderr);
fputs(_( " -u, --unlock remove a lock\n"), stderr);
fputs(_( " -n, --nonblock fail rather than wait\n"), stderr);
fputs(_( " -w, --timeout <secs> wait for a limited amount of time\n"), stderr);
fputs(_( " -E, --conflict-exit-code <number> exit code after conflict or timeout\n"), stderr);
fputs(_( " -o, --close close file descriptor before running command\n"), stderr);
fputs(_( " -c, --command <command> run a single command string through the shell\n"), stderr);
fputs(_( " -F, --no-fork execute command without forking\n"), stderr);
fputs(_( " --verbose increase verbosity\n"), stderr);
fprintf(stderr, USAGE_SEPARATOR);
fprintf(stderr, USAGE_HELP);
fprintf(stderr, USAGE_VERSION);
fprintf(stderr, USAGE_MAN_TAIL("flock(1)"));
exit(ex);
fputs(USAGE_OPTIONS, stdout);
fputs(_( " -s, --shared get a shared lock\n"), stdout);
fputs(_( " -x, --exclusive get an exclusive lock (default)\n"), stdout);
fputs(_( " -u, --unlock remove a lock\n"), stdout);
fputs(_( " -n, --nonblock fail rather than wait\n"), stdout);
fputs(_( " -w, --timeout <secs> wait for a limited amount of time\n"), stdout);
fputs(_( " -E, --conflict-exit-code <number> exit code after conflict or timeout\n"), stdout);
fputs(_( " -o, --close close file descriptor before running command\n"), stdout);
fputs(_( " -c, --command <command> run a single command string through the shell\n"), stdout);
fputs(_( " -F, --no-fork execute command without forking\n"), stdout);
fputs(_( " --verbose increase verbosity\n"), stdout);
fputs(USAGE_SEPARATOR, stdout);
fputs(USAGE_HELP, stdout);
fputs(USAGE_VERSION, stdout);
printf(USAGE_MAN_TAIL("flock(1)"));
exit(EXIT_SUCCESS);
}
static sig_atomic_t timeout_expired = 0;
@ -172,8 +172,10 @@ int main(int argc, char *argv[])
strutils_set_exitcode(EX_USAGE);
if (argc < 2)
usage(EX_USAGE);
if (argc < 2) {
warnx(_("not enough arguments"));
errtryhelp(EX_USAGE);
}
memset(&timeout, 0, sizeof timeout);
@ -217,7 +219,7 @@ int main(int argc, char *argv[])
printf(UTIL_LINUX_VERSION);
exit(EX_OK);
case 'h':
usage(0);
usage();
default:
errtryhelp(EX_USAGE);
}

View File

@ -1,5 +1,5 @@
getopt: missing optstring argument
Try `getopt --help' for more information.
Try 'getopt --help' for more information.
exit value: 2
--
exit value: 0

View File

@ -1,3 +1,3 @@
getopt: invalid option -- 'b'
Try `getopt --help' for more information.
Try 'getopt --help' for more information.
exit value: 2

View File

@ -1,3 +1,3 @@
getopt: missing optstring argument
Try `getopt --help' for more information.
Try 'getopt --help' for more information.
exit value: 2

View File

@ -1,3 +1,3 @@
getopt: missing optstring argument
Try `getopt --help' for more information.
Try 'getopt --help' for more information.
exit value: 2