1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-12-24 17:51:17 +03:00
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:
Ulrich Drepper
2003-10-02 22:55:10 +00:00
parent 134abcb5b9
commit f39941e412
7 changed files with 197 additions and 17 deletions

View File

@@ -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;
}