--- getopt/trunk/getopt.c 2012/07/17 15:27:08 322 +++ getopt/trunk/getopt.c 2014/11/20 12:05:38 363 @@ -33,10 +33,12 @@ * Version 1.0.6: Tue Jun 27 2000 * No important changes * Version 1.1.0: Tue Jun 30 2000 - * Added NLS support (partly written by Arkadiusz Mikiewicz + * Added NLS support (partly written by Arkadiusz Miƛkiewicz * ) * Version 1.1.4: Mon Nov 7 2005 * Fixed a few type's in the manpage + * Version 1.1.5: Sun Aug 12 2012 + * Sync with util-linux-2.21, fixed build problems, many new translations */ /* Exit codes: @@ -63,6 +65,7 @@ #include "getopt.h" #endif +#include "util-linux-compat.h" #include "nls.h" #include "xalloc.h" @@ -117,7 +120,6 @@ if (!quote) { /* Just copy arg */ BUFFER = xmalloc(strlen(arg) + 1); - strcpy(BUFFER, arg); return BUFFER; } @@ -198,7 +200,7 @@ if (longopts[longindex].has_arg) printf(" %s", normalize(optarg ? optarg : "")); } else if (opt == NON_OPT) - printf(" %s", normalize(optarg)); + printf(" %s", normalize(optarg ? optarg : "")); else { printf(" -%c", opt); charptr = strchr(optstr, opt); @@ -223,8 +225,9 @@ static void __attribute__ ((__noreturn__)) parse_error(const char *message) { if (message) - fprintf(stderr, "getopt: %s\n", message); - fputs(_("Try `getopt --help' for more information.\n"), stderr); + fprintf(stderr, "%s: %s\n", program_invocation_short_name, message); + fprintf(stderr, _("Try `%s --help' for more information.\n"), + program_invocation_short_name); exit(PARAMETER_EXIT_CODE); } @@ -258,7 +261,7 @@ long_options[long_options_nr].flag = NULL; long_options[long_options_nr].val = 0; - if (long_options_nr) { + if (long_options_nr && name) { /* Not for init! */ long_options[long_options_nr - 1].has_arg = has_arg; long_options[long_options_nr - 1].flag = NULL; @@ -318,21 +321,27 @@ static void __attribute__ ((__noreturn__)) print_help(void) { - fputs(_("Usage: getopt optstring parameters\n"), stderr); - fputs(_(" getopt [options] [--] optstring parameters\n"), stderr); - fputs(_(" getopt [options] -o|--options optstring [options] [--]\n"), stderr); - fputs(_(" parameters\n"), stderr); + fputs(USAGE_HEADER, stderr); + fprintf(stderr, _( + " %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_OPTIONS, stderr); fputs(_(" -a, --alternative Allow long options starting with single -\n"), stderr); - fputs(_(" -h, --help This small usage guide\n"), stderr); - fputs(_(" -l, --longoptions=longopts Long options to be recognized\n"), stderr); - fputs(_(" -n, --name=progname The name under which errors are reported\n"), stderr); - fputs(_(" -o, --options=optstring Short options to be recognized\n"), stderr); + fputs(_(" -l, --longoptions Long options to be recognized\n"), stderr); + fputs(_(" -n, --name The name under which errors are reported\n"), stderr); + fputs(_(" -o, --options 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 shell quoting conventions\n"), stderr); + fputs(_(" -s, --shell Set shell quoting conventions\n"), stderr); fputs(_(" -T, --test Test for getopt(1) version\n"), stderr); - fputs(_(" -u, --unqote Do not quote the output\n"), stderr); - fputs(_(" -V, --version Output version information\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); } @@ -359,12 +368,9 @@ {"version", no_argument, NULL, 'V'}, {NULL, 0, NULL, 0} }; -#if WITHOUT_GETTEXT -#else setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); -#endif init_longopt(); getopt_long_fp = getopt_long; @@ -430,7 +436,7 @@ quote = 0; break; case 'V': - printf(_("getopt (enhanced) 1.1.4\n")); + printf(UTIL_LINUX_VERSION); return EXIT_SUCCESS; case '?': case ':':