diff options
| author | Ulrich Drepper <drepper@redhat.com> | 1997-02-22 01:20:46 +0000 |
|---|---|---|
| committer | Ulrich Drepper <drepper@redhat.com> | 1997-02-22 01:20:46 +0000 |
| commit | 5a97622d5e053e935af0a9715ddd941fdaafcaf9 (patch) | |
| tree | 9f703f1a0c1c4ca0ed023acd33f09d152c923426 | |
| parent | 1fb05e3db1891142410bc58c320dfe281749fffe (diff) | |
| download | glibc-cvs/libc-970223.tar.xz glibc-cvs/libc-970223.zip | |
update from main archive 970221cvs/libc-970223cvs/libc-970222
1997-02-22 00:17 Ulrich Drepper <drepper@cygnus.com>
* catgets/gencat.c: Change to use argp.
* db/makedb: Likewise.
* locale/programs/localedef.c: Likewise.
* locale/programs/locale.c: Little adjustment for better usage of
argp.
1997-02-20 20:07 Greg McGary <gkm@eng.ascend.com>
* Makeconfig: Add rules for libc with bounded pointers.
* Makerules: Likewise.
* config.make.in: Likewise.
* configure.in: Likewise.
1997-02-21 10:41 Miles Bader <miles@gnu.ai.mit.edu>
* argp.h (OPTION_NO_USAGE): New macro.
* argp-help.c (usage_long_opt, usage_argful_short_opt,
add_argless_short_opt): Implement OPTION_NO_USAGE.
1997-02-20 16:41 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* malloc/obstack.h: Fix typo.
1997-02-20 15:56 Miles Bader <miles@gnu.ai.mit.edu>
* argp-fmtstream.c (__argp_fmtstream_update): Account for case
where NEXTLINE points one past the end of the active buffer.
* argp-help.c <stddef.h>: New include.
(__argp_failure): Only exit if STATE says it's ok.
(print_header, hol_entry_help): Use UPARAMS fields rather than
constants.
(_help): Call fill_in_uparams if necessary.
(struct hol_help_state): New type.
(struct pentry_state): Add hhstate field. Remove prev_entry &
sep_groups fields.
(hol_entry_help): Add HHSTATE parameter. Remove prev_entry &
sep_groups parameters.
Suppress duplicate arguments if requested, and note the fact.
(print_header, comma): Use PEST->hhstate fields.
(hol_help): Add HHSTATE variable & pass to hol_entry_help.
Remove LAST_ENTRY & SEP_GROUPS variables.
If any suplicate arguments were suppressed, print explanatory note.
(filter_doc): Replace PEST parameter with STATE.
(struct uparams): New type.
(uparams): New variable.
(struct uparam_name): New type.
(uparam_names): New variable.
(fill_in_uparams): New function.
(__argp_failure, __argp_error, __argp_state_help): Make STATE
parameter const.
* argp.h (argp_state_help, __argp_state_help, argp_usage,
__argp_usage, argp_error, __argp_error, argp_failure,
__argp_failure): Make STATE parameter const.
(ARGP_KEY_HELP_DUP_ARGS_NOTE): New macro.
* argp.h (argp_program_bug_address): Make const.
1997-02-20 19:20 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/mman/syscalls.list: Explain msync interface.
1997-02-19 01:37 Erik Troan <ewt@redhat.com>
* shadow/sgetspent_r.c: Accept empty third, fourth and fifth fields.
1997-02-20 14:44 Andreas Jaeger <aj@arthur.pfalz.de>
* stdio-common/test-fseek.c: Remove temporary file, add
copyright.
1997-02-20 17:51 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/generic/netinet/in.h: Protect contents using
__BEGIN/END_DECLS. Reported by a sun <asun@zoology.washington.edu>.
* inet/net/ethernet.h: Move to sysdeps/unix/sysv/linux/net.
* inet/Makefile (headers): Remove net/ethernet.h.
* sysdeps/unix/sysv/linux/Makefile: Install net/ethernet.h.
* sysdeps/unix/sysv/linux/Dist: Distribute net/ethernet.h.
1997-02-20 15:23 Thorsten Kukuk <kukuk@weber.uni-paderborn.de>
* nss/nsswitch.c (__nss_configure_lookup): Use correct test when
searching in sorted array.
1997-02-20 01:24 Philip Blundell <pjb27@cam.ac.uk>
* inet/getnameinfo.c: Change to use reentrant getXXbyYY functions
and protect modification of global data.
1997-02-19 18:48 Miles Bader <miles@gnu.ai.mit.edu>
* argp-parse.c (argp_default_parser): Set STATE->name for OPT_PROGNAME.
(parser_init): Use the basename for PARSER->state.name.
* argp-help.c (__argp_error, __argp_failure, __argp_state_help):
Use PROGRAM_INVOCATION_SHORT_NAME instead of PROGRAM_INVOCATION_NAME.
* argp-parse.c (parser_init): Set PARSER->state.flags.
Make check whether PARSER has the prog name in argv[0] at the
proper place.
1997-02-19 23:34 Ulrich Drepper <drepper@cygnus.com>
* locale/programs/ld-time.c (time_finish): t_fmt_ampm is optional.
Use default value instead of printing a warning.
* nss/XXX-lookup.c: Add misssing explanation.
1997-02-19 19:14 Andreas Jaeger <aj@arthur.pfalz.de>
* inet/in6_addr.c: Add missing braces.
* inet/getnameinfo.c: Include <arpa/inet.h>.
* sysdeps/posix/getaddrinfo.c: Include <arpa/inet.h>.
1997-02-19 11:46 Ulrich Drepper <drepper@cygnus.com>
* string/strxfrm.c (STRCOLL): Correct handling of `position'
levels with no non-IGNOREd element and handling of NUL byte.
* string/strcoll.c (STRXFRM): Likewise.
* locale/weight.h: Likewise.
* shadow/sgetspent_r.c (LINE_PARSER): Add missing ')'.
33 files changed, 1112 insertions, 551 deletions
@@ -1,3 +1,132 @@ +1997-02-22 00:17 Ulrich Drepper <drepper@cygnus.com> + + * catgets/gencat.c: Change to use argp. + * db/makedb: Likewise. + * locale/programs/localedef.c: Likewise. + + * locale/programs/locale.c: Little adjustment for better usage of + argp. + +1997-02-20 20:07 Greg McGary <gkm@eng.ascend.com> + + * Makeconfig: Add rules for libc with bounded pointers. + * Makerules: Likewise. + * config.make.in: Likewise. + * configure.in: Likewise. + +1997-02-21 10:41 Miles Bader <miles@gnu.ai.mit.edu> + + * argp.h (OPTION_NO_USAGE): New macro. + * argp-help.c (usage_long_opt, usage_argful_short_opt, + add_argless_short_opt): Implement OPTION_NO_USAGE. + +1997-02-20 16:41 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * malloc/obstack.h: Fix typo. + +1997-02-20 15:56 Miles Bader <miles@gnu.ai.mit.edu> + + * argp-fmtstream.c (__argp_fmtstream_update): Account for case + where NEXTLINE points one past the end of the active buffer. + + * argp-help.c <stddef.h>: New include. + (__argp_failure): Only exit if STATE says it's ok. + (print_header, hol_entry_help): Use UPARAMS fields rather than + constants. + (_help): Call fill_in_uparams if necessary. + (struct hol_help_state): New type. + (struct pentry_state): Add hhstate field. Remove prev_entry & + sep_groups fields. + (hol_entry_help): Add HHSTATE parameter. Remove prev_entry & + sep_groups parameters. + Suppress duplicate arguments if requested, and note the fact. + (print_header, comma): Use PEST->hhstate fields. + (hol_help): Add HHSTATE variable & pass to hol_entry_help. + Remove LAST_ENTRY & SEP_GROUPS variables. + If any suplicate arguments were suppressed, print explanatory note. + (filter_doc): Replace PEST parameter with STATE. + (struct uparams): New type. + (uparams): New variable. + (struct uparam_name): New type. + (uparam_names): New variable. + (fill_in_uparams): New function. + (__argp_failure, __argp_error, __argp_state_help): Make STATE + parameter const. + * argp.h (argp_state_help, __argp_state_help, argp_usage, + __argp_usage, argp_error, __argp_error, argp_failure, + __argp_failure): Make STATE parameter const. + (ARGP_KEY_HELP_DUP_ARGS_NOTE): New macro. + + * argp.h (argp_program_bug_address): Make const. + +1997-02-20 19:20 Ulrich Drepper <drepper@cygnus.com> + + * sysdeps/unix/mman/syscalls.list: Explain msync interface. + +1997-02-19 01:37 Erik Troan <ewt@redhat.com> + + * shadow/sgetspent_r.c: Accept empty third, fourth and fifth fields. + +1997-02-20 14:44 Andreas Jaeger <aj@arthur.pfalz.de> + + * stdio-common/test-fseek.c: Remove temporary file, add + copyright. + +1997-02-20 17:51 Ulrich Drepper <drepper@cygnus.com> + + * sysdeps/generic/netinet/in.h: Protect contents using + __BEGIN/END_DECLS. Reported by a sun <asun@zoology.washington.edu>. + + * inet/net/ethernet.h: Move to sysdeps/unix/sysv/linux/net. + * inet/Makefile (headers): Remove net/ethernet.h. + * sysdeps/unix/sysv/linux/Makefile: Install net/ethernet.h. + * sysdeps/unix/sysv/linux/Dist: Distribute net/ethernet.h. + +1997-02-20 15:23 Thorsten Kukuk <kukuk@weber.uni-paderborn.de> + + * nss/nsswitch.c (__nss_configure_lookup): Use correct test when + searching in sorted array. + +1997-02-20 01:24 Philip Blundell <pjb27@cam.ac.uk> + + * inet/getnameinfo.c: Change to use reentrant getXXbyYY functions + and protect modification of global data. + +1997-02-19 18:48 Miles Bader <miles@gnu.ai.mit.edu> + + * argp-parse.c (argp_default_parser): Set STATE->name for OPT_PROGNAME. + (parser_init): Use the basename for PARSER->state.name. + * argp-help.c (__argp_error, __argp_failure, __argp_state_help): + Use PROGRAM_INVOCATION_SHORT_NAME instead of PROGRAM_INVOCATION_NAME. + + * argp-parse.c (parser_init): Set PARSER->state.flags. + Make check whether PARSER has the prog name in argv[0] at the + proper place. + +1997-02-19 23:34 Ulrich Drepper <drepper@cygnus.com> + + * locale/programs/ld-time.c (time_finish): t_fmt_ampm is optional. + Use default value instead of printing a warning. + + * nss/XXX-lookup.c: Add misssing explanation. + +1997-02-19 19:14 Andreas Jaeger <aj@arthur.pfalz.de> + + * inet/in6_addr.c: Add missing braces. + + * inet/getnameinfo.c: Include <arpa/inet.h>. + + * sysdeps/posix/getaddrinfo.c: Include <arpa/inet.h>. + +1997-02-19 11:46 Ulrich Drepper <drepper@cygnus.com> + + * string/strxfrm.c (STRCOLL): Correct handling of `position' + levels with no non-IGNOREd element and handling of NUL byte. + * string/strcoll.c (STRXFRM): Likewise. + * locale/weight.h: Likewise. + + * shadow/sgetspent_r.c (LINE_PARSER): Add missing ')'. + 1997-02-19 03:28 Miles Bader <miles@gnu.ai.mit.edu> * argp/argp-help.c: Add support for user provided filter of help @@ -568,12 +568,6 @@ something like this: GROUP ( libc.so.6 ld.so.1 libc.a ) -{UD} The Linux ldconfig file probably generates a link libc.so -> -libc.so.6 in /lib. This is not correct. There must not be such a -link. The linker script with the above contents is placed in -/usr/lib which is enough for the linker. - - ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [Q18] ``The prototypes for `connect', `accept', `getsockopt', `setsockopt', `getsockname', `getpeername', `send', diff --git a/Makeconfig b/Makeconfig index 2feb2b7088..811392b13e 100644 --- a/Makeconfig +++ b/Makeconfig @@ -509,6 +509,14 @@ CFLAGS-.o = -g0 -O99 -fomit-frame-pointer CFLAGS-.so += $(CFLAGS-.o) libtype.go = lib%_g.a endif +ifeq (yes,$(build-bounded)) +# Under --enable-bounded, we build the library with `-fbounded-pointers -g' +# to runtime bounds checking. The bounded-pointer objects are named foo.bo. +object-suffixes += .bo +CPPFLAGS-.bo = -DBOUNDED_POINTERS +CFLAGS-.bo = -g -fbounded-pointers +libtype.bo = lib%_b.a +endif +gnu-stabs = $(shell echo>&2 '*** BARF ON ME') @@ -171,16 +171,19 @@ $(objpfx)%.o: %.S $(before-compile); $(compile-command.S) $(objpfx)%.so: %.S $(before-compile); $(compile-command.S) $(objpfx)%.po: %.S $(before-compile); $(compile-command.S) $(objpfx)%.go: %.S $(before-compile); $(compile-command.S) +$(objpfx)%.bo: %.S $(before-compile); $(compile-command.S) $(objpfx)%.d: %.S $(before-compile); $(+make-deps) $(objpfx)%.o: %.s $(before-compile); $(compile-command.s) $(objpfx)%.so: %.s $(before-compile); $(compile-command.s) $(objpfx)%.po: %.s $(before-compile); $(compile-command.s) $(objpfx)%.go: %.s $(before-compile); $(compile-command.s) +$(objpfx)%.bo: %.s $(before-compile); $(compile-command.s) $(objpfx)%.d: %.s $(common-objpfx)dummy.d; $(make-dummy-dep) $(objpfx)%.o: %.c $(before-compile); $(compile-command.c) $(objpfx)%.so: %.c $(before-compile); $(compile-command.c) $(objpfx)%.po: %.c $(before-compile); $(compile-command.c) $(objpfx)%.go: %.c $(before-compile); $(compile-command.c) +$(objpfx)%.bo: %.c $(before-compile); $(compile-command.c) $(objpfx)%.d: %.c $(before-compile); $(+make-deps) # Omit the objpfx rules when building in the source tree, because @@ -192,16 +195,19 @@ $(objpfx)%.o: $(objpfx)%.S $(before-compile); $(compile-command.S) $(objpfx)%.so: $(objpfx)%.S $(before-compile); $(compile-command.S) $(objpfx)%.po: $(objpfx)%.S $(before-compile); $(compile-command.S) $(objpfx)%.go: $(objpfx)%.S $(before-compile); $(compile-command.S) +$(objpfx)%.bo: $(objpfx)%.S $(before-compile); $(compile-command.S) $(objpfx)%.d: $(objpfx)%.S $(before-compile); $(+make-deps) $(objpfx)%.o: $(objpfx)%.s $(before-compile); $(compile-command.s) $(objpfx)%.so: $(objpfx)%.s $(before-compile); $(compile-command.s) $(objpfx)%.po: $(objpfx)%.s $(before-compile); $(compile-command.s) $(objpfx)%.go: $(objpfx)%.s $(before-compile); $(compile-command.s) +$(objpfx)%.bo: $(objpfx)%.s $(before-compile); $(compile-command.s) $(objpfx)%.d: $(objpfx)%.s $(common-objpfx)dummy.d; $(make-dummy-dep) $(objpfx)%.o: $(objpfx)%.c $(before-compile); $(compile-command.c) $(objpfx)%.so: $(objpfx)%.c $(before-compile); $(compile-command.c) $(objpfx)%.po: $(objpfx)%.c $(before-compile); $(compile-command.c) $(objpfx)%.go: $(objpfx)%.c $(before-compile); $(compile-command.c) +$(objpfx)%.bo: $(objpfx)%.c $(before-compile); $(compile-command.c) $(objpfx)%.d: $(objpfx)%.c $(before-compile); $(+make-deps) endif diff --git a/argp/argp-fmtstream.c b/argp/argp-fmtstream.c index c7203deac6..ab2e870af8 100644 --- a/argp/argp-fmtstream.c +++ b/argp/argp-fmtstream.c @@ -240,7 +240,14 @@ __argp_fmtstream_update (argp_fmtstream_t fs) nextline = p; } - if (nextline - (nl + 1) < fs->wmargin) + /* Note: There are a bunch of tests below for + NEXTLINE == BUF + LEN + 1; this case is where NL happens to fall + at the end of the buffer, and NEXTLINE is in fact empty (and so + we need not be careful to maintain its contents). */ + + if (nextline == buf + len + 1 + ? fs->end - nl < fs->wmargin + 1 + : nextline - (nl + 1) < fs->wmargin) /* The margin needs more blanks than we removed. */ if (fs->end - fs->p > fs->wmargin + 1) /* Make some space for them. */ @@ -265,7 +272,8 @@ __argp_fmtstream_update (argp_fmtstream_t fs) the next word. */ *nl++ = '\n'; - if (nextline - nl >= fs->wmargin) + if (nextline - nl >= fs->wmargin + || (nextline == buf + len + 1 && fs->end - nextline >= fs->wmargin)) /* Add blanks up to the wrap margin column. */ for (i = 0; i < fs->wmargin; ++i) *nl++ = ' '; @@ -275,7 +283,7 @@ __argp_fmtstream_update (argp_fmtstream_t fs) /* Copy the tail of the original buffer into the current buffer position. */ - if (nl != nextline) + if (nl < nextline) memmove (nl, nextline, buf + len - nextline); len -= nextline - buf; diff --git a/argp/argp-help.c b/argp/argp-help.c index 84f9ca51c9..e954beb5a9 100644 --- a/argp/argp-help.c +++ b/argp/argp-help.c @@ -22,6 +22,7 @@ #include <config.h> #endif +#include <stddef.h> #include <stdlib.h> #include <string.h> #include <assert.h> @@ -44,7 +45,17 @@ #include "argp.h" #include "argp-fmtstream.h" #include "argp-namefrob.h" + +/* User-selectable (using an environment variable) formatting parameters. + + These may be specified in an environment variable called `ARGP_HELP_FMT', + with a contents like: VAR1=VAL1,VAR2=VAL2,BOOLVAR2,no-BOOLVAR2 + Where VALn must be a positive integer. The list of variables is in the + UPARAM_NAMES vector, below. */ +/* Default parameters. */ +#define DUP_ARGS 0 /* True if option argument can be duplicated. */ +#define DUP_ARGS_NOTE 1 /* True to print a note about duplicate args. */ #define SHORT_OPT_COL 2 /* column in which short options start */ #define LONG_OPT_COL 6 /* column in which long options start */ #define DOC_OPT_COL 2 /* column in which doc options start */ @@ -53,6 +64,146 @@ #define USAGE_INDENT 12 /* indentation of wrapped usage lines */ #define RMARGIN 79 /* right margin used for wrapping */ +/* User-selectable (using an environment variable) formatting parameters. + They must all be of type `int' for the parsing code to work. */ +struct uparams +{ + /* If true, arguments for an option are shown with both short and long + options, even when a given option has both, e.g. `-x ARG, --longx=ARG'. + If false, then if an option has both, the argument is only shown with + the long one, e.g., `-x, --longx=ARG', and a message indicating that + this really means both is printed below the options. */ + int dup_args; + + /* This is true if when DUP_ARGS is false, and some duplicate arguments have + been suppressed, an explanatory message should be printed. */ + int dup_args_note; + + /* Various output columns. */ + int short_opt_col; + int long_opt_col; + int doc_opt_col; + int opt_doc_col; + int header_col; + int usage_indent; + int rmargin; + + int valid; /* True when the values in here are valid. */ +}; + +/* This is a global variable, as user options are only ever read once. */ +static struct uparams uparams = { + DUP_ARGS, DUP_ARGS_NOTE, + SHORT_OPT_COL, LONG_OPT_COL, DOC_OPT_COL, OPT_DOC_COL, HEADER_COL, + USAGE_INDENT, RMARGIN, + 0 +}; + +/* A particular uparam, and what the user name is. */ +struct uparam_name +{ + const char *name; /* User name. */ + int is_bool; /* Whether it's `boolean'. */ + size_t uparams_offs; /* Location of the (int) field in UPARAMS. */ +}; + +/* The name-field mappings we know about. */ +static const struct uparam_name uparam_names[] = +{ + { "dup-args", 1, offsetof (struct uparams, dup_args) }, + { "dup-args-note", 1, offsetof (struct uparams, dup_args_note) }, + { "short-opt-col", 0, offsetof (struct uparams, short_opt_col) }, + { "long-opt-col", 0, offsetof (struct uparams, long_opt_col) }, + { "doc-opt-col", 0, offsetof (struct uparams, doc_opt_col) }, + { "opt-doc-col", 0, offsetof (struct uparams, opt_doc_col) }, + { "header-col", 0, offsetof (struct uparams, header_col) }, + { "usage-indent", 0, offsetof (struct uparams, usage_indent) }, + { "rmargin", 0, offsetof (struct uparams, rmargin) }, + { 0 } +}; + +/* Read user options from the environment, and fill in UPARAMS appropiately. */ +static void +fill_in_uparams (const struct argp_state *state) +{ + const char *var = getenv ("ARGP_HELP_FMT"); + +#define SKIPWS(p) do { while (isspace (*p)) p++; } while (0); + + if (var) + /* Parse var. */ + while (*var) + { + SKIPWS (var); + + if (isalpha (*var)) + { + size_t var_len; + const struct uparam_name *un; + int unspec = 0, |
