mirror of
https://sourceware.org/git/glibc.git
synced 2025-12-24 17:51:17 +03:00
Update.
2003-08-22 Simon Josefsson <jas@extundo.com> * argp/argp-fmtstream.h [!__attribute__]: Define to nothing. * argp/argp-help.c: Don't include malloc.h, some platforms complain and it doesn't appear to be used. [!_LIBC && HAVE_STRERROR_R && !HAVE_DECL_STRERROR_R]: Declare strerror_r. [!_LIBC && !HAVE_STRERROR_R && !HAVE_DECL_STRERROR]: Declare strerror. (hol_entry_long_iterate): Change __attribute to __attribute__. (_help, __argp_error, __argp_failure) [!_LIBC && (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE)]: Protect call to flockfile and funlockfile. (__argp_basename) [!_LIBC]: New. Taken from LSH, by Niels Mller, modifed after comments from Ulrich Drepper. (__argp_short_program_name): Ditto. (__argp_state_help, __argp_error, __argp_failure): Use it. (__argp_failure): Use strerror when necessary. * argp/argp-namefrob.h (__flockfile, __funlockfile, __mempcpy) (__strchrnul, __strerror_r, __strndup) [!_LIBC]: Remove __-prefix. (clearerr_unlocked, feof_unlocked, ferror_unlocked) (fflush_unlocked, fgets_unlocked, fputc_unlocked, fputs_unlocked) (fread_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked) (putc_unlocked, putchar_unlocked) [!_LIBC && !HAVE_DECL_*]: Map to non-unlocked functions. [!_LIBC]: Add prototypes for __argp_basename and __argp_short_program_name. * argp/argp-parse.c (argp_default_parser): Only use program_invocation{_short,}_name if declared. (parser_init): Use __argp_short_program_name. * argp/argp-xinl.c [_LIBC || HAVE_FEATURES_H]: Add CPP check for '#include features.h'. * argp/argp.h [!__attribute__]: Define to nothing.
This commit is contained in:
@@ -119,24 +119,28 @@ argp_default_parser (int key, char *arg, struct argp_state *state)
|
||||
break;
|
||||
|
||||
case OPT_PROGNAME: /* Set the program name. */
|
||||
#if defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_NAME
|
||||
program_invocation_name = arg;
|
||||
|
||||
#endif
|
||||
/* [Note that some systems only have PROGRAM_INVOCATION_SHORT_NAME (aka
|
||||
__PROGNAME), in which case, PROGRAM_INVOCATION_NAME is just defined
|
||||
to be that, so we have to be a bit careful here.] */
|
||||
arg = strrchr (arg, '/');
|
||||
if (arg)
|
||||
program_invocation_short_name = arg + 1;
|
||||
else
|
||||
program_invocation_short_name = program_invocation_name;
|
||||
|
||||
/* Update what we use for messages. */
|
||||
state->name = program_invocation_short_name;
|
||||
state->name = strrchr (arg, '/');
|
||||
if (state->name)
|
||||
state->name++;
|
||||
else
|
||||
state->name = arg;
|
||||
|
||||
#if defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
|
||||
program_invocation_short_name = state->name;
|
||||
#endif
|
||||
|
||||
if ((state->flags & (ARGP_PARSE_ARGV0 | ARGP_NO_ERRS))
|
||||
== ARGP_PARSE_ARGV0)
|
||||
/* Update what getopt uses too. */
|
||||
state->argv[0] = program_invocation_name;
|
||||
state->argv[0] = arg;
|
||||
|
||||
break;
|
||||
|
||||
@@ -599,7 +603,7 @@ parser_init (struct parser *parser, const struct argp *argp,
|
||||
parser->state.name = short_name ? short_name + 1 : argv[0];
|
||||
}
|
||||
else
|
||||
parser->state.name = program_invocation_short_name;
|
||||
parser->state.name = __argp_short_program_name ();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user