Hi, I think it's time to get rid of __const. gnulib assumes an ANSI C compiler, glibc does as well. The following glibc public header files already assume an ANSI C compiler that groks 'const':
/usr/include/argp.h /usr/include/assert.h /usr/include/error.h /usr/include/fstab.h /usr/include/fts.h /usr/include/gconv.h /usr/include/getopt.h /usr/include/libio.h /usr/include/link.h /usr/include/netdb.h /usr/include/obstack.h /usr/include/regex.h /usr/include/regexp.h /usr/include/resolv.h /usr/include/spawn.h /usr/include/thread_db.h /usr/include/xlocale.h Therefore I propose this patch. 2006-01-07 Bruno Haible <[EMAIL PROTECTED]> * argp.h (__const): Remove macro. Use const instead. * argp-fmtstream.h (__const): Likewise. * glob_.h (__const): Remove macro. * glob-libc.h: Use const instead of __const. *** argp.h.bak 2005-07-04 13:16:19.000000000 +0200 --- argp.h 2006-01-07 18:33:51.000000000 +0100 *************** *** 1,5 **** /* Hierarchial argument parsing, layered over getopt. ! Copyright (C) 1995-1999,2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Miles Bader <[EMAIL PROTECTED]>. --- 1,5 ---- /* Hierarchial argument parsing, layered over getopt. ! Copyright (C) 1995-1999,2003-2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Miles Bader <[EMAIL PROTECTED]>. *************** *** 28,37 **** #define __need_error_t #include <errno.h> - #ifndef __const - # define __const const - #endif - #ifndef __THROW # define __THROW #endif --- 28,33 ---- *************** *** 82,88 **** { /* The long option name. For more than one name for the same option, you can use following options with the OPTION_ALIAS flag set. */ ! __const char *name; /* What key is returned for this option. If > 0 and printable, then it's also accepted as a short option. */ --- 78,84 ---- { /* The long option name. For more than one name for the same option, you can use following options with the OPTION_ALIAS flag set. */ ! const char *name; /* What key is returned for this option. If > 0 and printable, then it's also accepted as a short option. */ *************** *** 90,96 **** /* If non-NULL, this is the name of the argument associated with this option, which is required unless the OPTION_ARG_OPTIONAL flag is set. */ ! __const char *arg; /* OPTION_ flags. */ int flags; --- 86,92 ---- /* If non-NULL, this is the name of the argument associated with this option, which is required unless the OPTION_ARG_OPTIONAL flag is set. */ ! const char *arg; /* OPTION_ flags. */ int flags; *************** *** 99,105 **** will be printed outdented from the normal option column, making it useful as a group header (it will be the first thing printed in its group); in this usage, it's conventional to end the string with a `:'. */ ! __const char *doc; /* The group this option is in. In a long help message, options are sorted alphabetically within each group, and the groups presented in the order --- 95,101 ---- will be printed outdented from the normal option column, making it useful as a group header (it will be the first thing printed in its group); in this usage, it's conventional to end the string with a `:'. */ ! const char *doc; /* The group this option is in. In a long help message, options are sorted alphabetically within each group, and the groups presented in the order *************** *** 227,233 **** { /* An array of argp_option structures, terminated by an entry with both NAME and KEY having a value of 0. */ ! __const struct argp_option *options; /* What to do with an option from this structure. KEY is the key associated with the option, and ARG is any associated argument (NULL if --- 223,229 ---- { /* An array of argp_option structures, terminated by an entry with both NAME and KEY having a value of 0. */ ! const struct argp_option *options; /* What to do with an option from this structure. KEY is the key associated with the option, and ARG is any associated argument (NULL if *************** *** 243,254 **** contains newlines, the strings separated by them are considered alternative usage patterns, and printed on separate lines (lines after the first are prefix by ` or: ' instead of `Usage:'). */ ! __const char *args_doc; /* If non-NULL, a string containing extra text to be printed before and after the options in a long help message (separated by a vertical tab `\v' character). */ ! __const char *doc; /* A vector of argp_children structures, terminated by a member with a 0 argp field, pointing to child argps should be parsed with this one. Any --- 239,250 ---- contains newlines, the strings separated by them are considered alternative usage patterns, and printed on separate lines (lines after the first are prefix by ` or: ' instead of `Usage:'). */ ! const char *args_doc; /* If non-NULL, a string containing extra text to be printed before and after the options in a long help message (separated by a vertical tab `\v' character). */ ! const char *doc; /* A vector of argp_children structures, terminated by a member with a 0 argp field, pointing to child argps should be parsed with this one. Any *************** *** 256,262 **** CHILDREN list. This field is useful if you use libraries that supply their own argp structure, which you want to use in conjunction with your own. */ ! __const struct argp_child *children; /* If non-zero, this should be a function to filter the output of help messages. KEY is either a key from an option, in which case TEXT is --- 252,258 ---- CHILDREN list. This field is useful if you use libraries that supply their own argp structure, which you want to use in conjunction with your own. */ ! const struct argp_child *children; /* If non-zero, this should be a function to filter the output of help messages. KEY is either a key from an option, in which case TEXT is *************** *** 268,274 **** has been done, so if any of the replacement text also needs translation, that should be done by the filter function. INPUT is either the input supplied to argp_parse, or NULL, if argp_help was called directly. */ ! char *(*help_filter) (int __key, __const char *__text, void *__input); /* If non-zero the strings used in the argp library are translated using the domain described by this string. Otherwise the currently installed --- 264,270 ---- has been done, so if any of the replacement text also needs translation, that should be done by the filter function. INPUT is either the input supplied to argp_parse, or NULL, if argp_help was called directly. */ ! char *(*help_filter) (int __key, const char *__text, void *__input); /* If non-zero the strings used in the argp library are translated using the domain described by this string. Otherwise the currently installed *************** *** 292,298 **** struct argp_child { /* The child parser. */ ! __const struct argp *argp; /* Flags for this child. */ int flags; --- 288,294 ---- struct argp_child { /* The child parser. */ ! const struct argp *argp; /* Flags for this child. */ int flags; *************** *** 301,307 **** child options. As a side-effect, a non-zero value forces the child options to be grouped together; to achieve this effect without actually printing a header string, use a value of "". */ ! __const char *header; /* Where to group the child options relative to the other (`consolidated') options in the parent argp; the values are the same as the GROUP field --- 297,303 ---- child options. As a side-effect, a non-zero value forces the child options to be grouped together; to achieve this effect without actually printing a header string, use a value of "". */ ! const char *header; /* Where to group the child options relative to the other (`consolidated') options in the parent argp; the values are the same as the GROUP field *************** *** 317,323 **** struct argp_state { /* The top level ARGP being parsed. */ ! __const struct argp *root_argp; /* The argument vector being parsed. May be modified. */ int argc; --- 313,319 ---- struct argp_state { /* The top level ARGP being parsed. */ ! const struct argp *root_argp; /* The argument vector being parsed. May be modified. */ int argc; *************** *** 411,421 **** routine returned a non-zero value, it is returned; otherwise 0 is returned. This function may also call exit unless the ARGP_NO_HELP flag is set. INPUT is a pointer to a value to be passed in to the parser. */ ! extern error_t argp_parse (__const struct argp *__restrict __argp, int __argc, char **__restrict __argv, unsigned __flags, int *__restrict __arg_index, void *__restrict __input); ! extern error_t __argp_parse (__const struct argp *__restrict __argp, int __argc, char **__restrict __argv, unsigned __flags, int *__restrict __arg_index, void *__restrict __input); --- 407,417 ---- routine returned a non-zero value, it is returned; otherwise 0 is returned. This function may also call exit unless the ARGP_NO_HELP flag is set. INPUT is a pointer to a value to be passed in to the parser. */ ! extern error_t argp_parse (const struct argp *__restrict __argp, int __argc, char **__restrict __argv, unsigned __flags, int *__restrict __arg_index, void *__restrict __input); ! extern error_t __argp_parse (const struct argp *__restrict __argp, int __argc, char **__restrict __argv, unsigned __flags, int *__restrict __arg_index, void *__restrict __input); *************** *** 426,432 **** option --version is added (unless the ARGP_NO_HELP flag is used), which will print this string followed by a newline and exit (unless the ARGP_NO_EXIT flag is used). Overridden by ARGP_PROGRAM_VERSION_HOOK. */ ! extern __const char *argp_program_version; /* If defined or set by the user program to a non-zero value, then a default option --version is added (unless the ARGP_NO_HELP flag is used), which --- 422,428 ---- option --version is added (unless the ARGP_NO_HELP flag is used), which will print this string followed by a newline and exit (unless the ARGP_NO_EXIT flag is used). Overridden by ARGP_PROGRAM_VERSION_HOOK. */ ! extern const char *argp_program_version; /* If defined or set by the user program to a non-zero value, then a default option --version is added (unless the ARGP_NO_HELP flag is used), which *************** *** 442,448 **** argp_help if the ARGP_HELP_BUG_ADDR flag is set (as it is by various standard help messages), embedded in a sentence that says something like `Report bugs to ADDR.'. */ ! extern __const char *argp_program_bug_address; /* The exit status that argp will use when exiting due to a parsing error. If not defined or set by the user program, this defaults to EX_USAGE from --- 438,444 ---- argp_help if the ARGP_HELP_BUG_ADDR flag is set (as it is by various standard help messages), embedded in a sentence that says something like `Report bugs to ADDR.'. */ ! extern const char *argp_program_bug_address; /* The exit status that argp will use when exiting due to a parsing error. If not defined or set by the user program, this defaults to EX_USAGE from *************** *** 480,489 **** /* Output a usage message for ARGP to STREAM. FLAGS are from the set ARGP_HELP_*. */ ! extern void argp_help (__const struct argp *__restrict __argp, FILE *__restrict __stream, unsigned __flags, char *__restrict __name); ! extern void __argp_help (__const struct argp *__restrict __argp, FILE *__restrict __stream, unsigned __flags, char *__name); --- 476,485 ---- /* Output a usage message for ARGP to STREAM. FLAGS are from the set ARGP_HELP_*. */ ! extern void argp_help (const struct argp *__restrict __argp, FILE *__restrict __stream, unsigned __flags, char *__restrict __name); ! extern void __argp_help (const struct argp *__restrict __argp, FILE *__restrict __stream, unsigned __flags, char *__name); *************** *** 497,521 **** /* Output, if appropriate, a usage message for STATE to STREAM. FLAGS are from the set ARGP_HELP_*. */ ! extern void argp_state_help (__const struct argp_state *__restrict __state, FILE *__restrict __stream, unsigned int __flags); ! extern void __argp_state_help (__const struct argp_state *__restrict __state, FILE *__restrict __stream, unsigned int __flags); /* Possibly output the standard usage message for ARGP to stderr and exit. */ ! extern void argp_usage (__const struct argp_state *__state); ! extern void __argp_usage (__const struct argp_state *__state); /* If appropriate, print the printf string FMT and following args, preceded by the program name and `:', to stderr, and followed by a `Try ... --help' message, then exit (1). */ ! extern void argp_error (__const struct argp_state *__restrict __state, ! __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); ! extern void __argp_error (__const struct argp_state *__restrict __state, ! __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); /* Similar to the standard gnu error-reporting function error(), but will --- 493,517 ---- /* Output, if appropriate, a usage message for STATE to STREAM. FLAGS are from the set ARGP_HELP_*. */ ! extern void argp_state_help (const struct argp_state *__restrict __state, FILE *__restrict __stream, unsigned int __flags); ! extern void __argp_state_help (const struct argp_state *__restrict __state, FILE *__restrict __stream, unsigned int __flags); /* Possibly output the standard usage message for ARGP to stderr and exit. */ ! extern void argp_usage (const struct argp_state *__state); ! extern void __argp_usage (const struct argp_state *__state); /* If appropriate, print the printf string FMT and following args, preceded by the program name and `:', to stderr, and followed by a `Try ... --help' message, then exit (1). */ ! extern void argp_error (const struct argp_state *__restrict __state, ! const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); ! extern void __argp_error (const struct argp_state *__restrict __state, ! const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); /* Similar to the standard gnu error-reporting function error(), but will *************** *** 526,556 **** difference between this function and argp_error is that the latter is for *parsing errors*, and the former is for other problems that occur during parsing but don't reflect a (syntactic) problem with the input. */ ! extern void argp_failure (__const struct argp_state *__restrict __state, int __status, int __errnum, ! __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 4, 5))); ! extern void __argp_failure (__const struct argp_state *__restrict __state, int __status, int __errnum, ! __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 4, 5))); /* Returns true if the option OPT is a valid short option. */ ! extern int _option_is_short (__const struct argp_option *__opt) __THROW; ! extern int __option_is_short (__const struct argp_option *__opt) __THROW; /* Returns true if the option OPT is in fact the last (unused) entry in an options array. */ ! extern int _option_is_end (__const struct argp_option *__opt) __THROW; ! extern int __option_is_end (__const struct argp_option *__opt) __THROW; /* Return the input field for ARGP in the parser corresponding to STATE; used by the help routines. */ ! extern void *_argp_input (__const struct argp *__restrict __argp, ! __const struct argp_state *__restrict __state) __THROW; ! extern void *__argp_input (__const struct argp *__restrict __argp, ! __const struct argp_state *__restrict __state) __THROW; #ifdef __USE_EXTERN_INLINES --- 522,552 ---- difference between this function and argp_error is that the latter is for *parsing errors*, and the former is for other problems that occur during parsing but don't reflect a (syntactic) problem with the input. */ ! extern void argp_failure (const struct argp_state *__restrict __state, int __status, int __errnum, ! const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 4, 5))); ! extern void __argp_failure (const struct argp_state *__restrict __state, int __status, int __errnum, ! const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 4, 5))); /* Returns true if the option OPT is a valid short option. */ ! extern int _option_is_short (const struct argp_option *__opt) __THROW; ! extern int __option_is_short (const struct argp_option *__opt) __THROW; /* Returns true if the option OPT is in fact the last (unused) entry in an options array. */ ! extern int _option_is_end (const struct argp_option *__opt) __THROW; ! extern int __option_is_end (const struct argp_option *__opt) __THROW; /* Return the input field for ARGP in the parser corresponding to STATE; used by the help routines. */ ! extern void *_argp_input (const struct argp *__restrict __argp, ! const struct argp_state *__restrict __state) __THROW; ! extern void *__argp_input (const struct argp *__restrict __argp, ! const struct argp_state *__restrict __state) __THROW; #ifdef __USE_EXTERN_INLINES *************** *** 567,579 **** # endif ARGP_EI void ! __NTH (__argp_usage (__const struct argp_state *__state)) { __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE); } ARGP_EI int ! __NTH (__option_is_short (__const struct argp_option *__opt)) { if (__opt->flags & OPTION_DOC) return 0; --- 563,575 ---- # endif ARGP_EI void ! __NTH (__argp_usage (const struct argp_state *__state)) { __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE); } ARGP_EI int ! __NTH (__option_is_short (const struct argp_option *__opt)) { if (__opt->flags & OPTION_DOC) return 0; *************** *** 585,591 **** } ARGP_EI int ! __NTH (__option_is_end (__const struct argp_option *__opt)) { return !__opt->key && !__opt->name && !__opt->doc && !__opt->group; } --- 581,587 ---- } ARGP_EI int ! __NTH (__option_is_end (const struct argp_option *__opt)) { return !__opt->key && !__opt->name && !__opt->doc && !__opt->group; } *** argp-fmtstream.h.bak 2005-10-05 17:53:30.000000000 +0200 --- argp-fmtstream.h 2006-01-07 18:35:26.000000000 +0100 *************** *** 1,5 **** /* Word-wrapping and line-truncating streams. ! Copyright (C) 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Miles Bader <[EMAIL PROTECTED]>. --- 1,5 ---- /* Word-wrapping and line-truncating streams. ! Copyright (C) 1997, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Miles Bader <[EMAIL PROTECTED]>. *************** *** 89,98 **** #else /* !ARGP_FMTSTREAM_USE_LINEWRAP */ /* Guess we have to define our own version. */ - - #ifndef __const - #define __const const - #endif struct argp_fmtstream { --- 89,94 ---- *************** *** 133,154 **** extern void argp_fmtstream_free (argp_fmtstream_t __fs); extern ssize_t __argp_fmtstream_printf (argp_fmtstream_t __fs, ! __const char *__fmt, ...) __attribute__ ((__format__ (printf, 2, 3))); extern ssize_t argp_fmtstream_printf (argp_fmtstream_t __fs, ! __const char *__fmt, ...) __attribute__ ((__format__ (printf, 2, 3))); extern int __argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch); extern int argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch); ! extern int __argp_fmtstream_puts (argp_fmtstream_t __fs, __const char *__str); ! extern int argp_fmtstream_puts (argp_fmtstream_t __fs, __const char *__str); extern size_t __argp_fmtstream_write (argp_fmtstream_t __fs, ! __const char *__str, size_t __len); extern size_t argp_fmtstream_write (argp_fmtstream_t __fs, ! __const char *__str, size_t __len); /* Access macros for various bits of state. */ #define argp_fmtstream_lmargin(__fs) ((__fs)->lmargin) --- 129,150 ---- extern void argp_fmtstream_free (argp_fmtstream_t __fs); extern ssize_t __argp_fmtstream_printf (argp_fmtstream_t __fs, ! const char *__fmt, ...) __attribute__ ((__format__ (printf, 2, 3))); extern ssize_t argp_fmtstream_printf (argp_fmtstream_t __fs, ! const char *__fmt, ...) __attribute__ ((__format__ (printf, 2, 3))); extern int __argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch); extern int argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch); ! extern int __argp_fmtstream_puts (argp_fmtstream_t __fs, const char *__str); ! extern int argp_fmtstream_puts (argp_fmtstream_t __fs, const char *__str); extern size_t __argp_fmtstream_write (argp_fmtstream_t __fs, ! const char *__str, size_t __len); extern size_t argp_fmtstream_write (argp_fmtstream_t __fs, ! const char *__str, size_t __len); /* Access macros for various bits of state. */ #define argp_fmtstream_lmargin(__fs) ((__fs)->lmargin) *************** *** 207,213 **** ARGP_FS_EI size_t __argp_fmtstream_write (argp_fmtstream_t __fs, ! __const char *__str, size_t __len) { if (__fs->p + __len <= __fs->end || __argp_fmtstream_ensure (__fs, __len)) { --- 203,209 ---- ARGP_FS_EI size_t __argp_fmtstream_write (argp_fmtstream_t __fs, ! const char *__str, size_t __len) { if (__fs->p + __len <= __fs->end || __argp_fmtstream_ensure (__fs, __len)) { *************** *** 220,226 **** } ARGP_FS_EI int ! __argp_fmtstream_puts (argp_fmtstream_t __fs, __const char *__str) { size_t __len = strlen (__str); if (__len) --- 216,222 ---- } ARGP_FS_EI int ! __argp_fmtstream_puts (argp_fmtstream_t __fs, const char *__str) { size_t __len = strlen (__str); if (__len) *** glob_.h.bak 2005-09-15 22:36:08.000000000 +0200 --- glob_.h 2006-01-07 18:30:09.000000000 +0100 *************** *** 1,6 **** /* glob_.h -- Find a path matching a pattern. ! Copyright (C) 2005 Free Software Foundation, Inc. Written by Derek Price <[EMAIL PROTECTED]> & Paul Eggert <[EMAIL PROTECTED]> --- 1,6 ---- /* glob_.h -- Find a path matching a pattern. ! Copyright (C) 2005-2006 Free Software Foundation, Inc. Written by Derek Price <[EMAIL PROTECTED]> & Paul Eggert <[EMAIL PROTECTED]> *************** *** 38,46 **** #ifndef __size_t # define __size_t size_t #endif - #ifndef __const - # define __const const - #endif #ifndef __restrict # define __restrict restrict #endif --- 38,43 ---- *** glob-libc.h.bak 2005-09-13 05:47:44.000000000 +0200 --- glob-libc.h 2006-01-07 18:31:54.000000000 +0100 *************** *** 1,4 **** ! /* Copyright (C) 1991,92,95-98,2000,2001,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or --- 1,4 ---- ! /* Copyright (C) 1991,92,95-98,2000,2001,2004-2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or *************** *** 104,116 **** #else void *(*gl_readdir) (void *); #endif ! void *(*gl_opendir) (__const char *); #ifdef __USE_GNU ! int (*gl_lstat) (__const char *__restrict, struct stat *__restrict); ! int (*gl_stat) (__const char *__restrict, struct stat *__restrict); #else ! int (*gl_lstat) (__const char *__restrict, void *__restrict); ! int (*gl_stat) (__const char *__restrict, void *__restrict); #endif } glob_t; --- 104,116 ---- #else void *(*gl_readdir) (void *); #endif ! void *(*gl_opendir) (const char *); #ifdef __USE_GNU ! int (*gl_lstat) (const char *__restrict, struct stat *__restrict); ! int (*gl_stat) (const char *__restrict, struct stat *__restrict); #else ! int (*gl_lstat) (const char *__restrict, void *__restrict); ! int (*gl_stat) (const char *__restrict, void *__restrict); #endif } glob_t; *************** *** 133,145 **** # else void *(*gl_readdir) (void *); # endif ! void *(*gl_opendir) (__const char *); # ifdef __USE_GNU ! int (*gl_lstat) (__const char *__restrict, struct stat64 *__restrict); ! int (*gl_stat) (__const char *__restrict, struct stat64 *__restrict); # else ! int (*gl_lstat) (__const char *__restrict, void *__restrict); ! int (*gl_stat) (__const char *__restrict, void *__restrict); # endif } glob64_t; #endif --- 133,145 ---- # else void *(*gl_readdir) (void *); # endif ! void *(*gl_opendir) (const char *); # ifdef __USE_GNU ! int (*gl_lstat) (const char *__restrict, struct stat64 *__restrict); ! int (*gl_stat) (const char *__restrict, struct stat64 *__restrict); # else ! int (*gl_lstat) (const char *__restrict, void *__restrict); ! int (*gl_stat) (const char *__restrict, void *__restrict); # endif } glob64_t; #endif *************** *** 158,181 **** If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. Otherwise, `glob' returns zero. */ #if !defined __USE_FILE_OFFSET64 || __GNUC__ < 2 || defined __GLOB_GNULIB ! extern int glob (__const char *__restrict __pattern, int __flags, ! int (*__errfunc) (__const char *, int), glob_t *__restrict __pglob) __THROW; /* Free storage allocated in PGLOB by a previous `glob' call. */ extern void globfree (glob_t *__pglob) __THROW; #else ! extern int __REDIRECT_NTH (glob, (__const char *__restrict __pattern, int __flags, ! int (*__errfunc) (__const char *, int), glob_t *__restrict __pglob), glob64); extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64); #endif #if defined __USE_LARGEFILE64 && !defined __GLOB_GNULIB ! extern int glob64 (__const char *__restrict __pattern, int __flags, ! int (*__errfunc) (__const char *, int), glob64_t *__restrict __pglob) __THROW; extern void globfree64 (glob64_t *__pglob) __THROW; --- 158,181 ---- If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. Otherwise, `glob' returns zero. */ #if !defined __USE_FILE_OFFSET64 || __GNUC__ < 2 || defined __GLOB_GNULIB ! extern int glob (const char *__restrict __pattern, int __flags, ! int (*__errfunc) (const char *, int), glob_t *__restrict __pglob) __THROW; /* Free storage allocated in PGLOB by a previous `glob' call. */ extern void globfree (glob_t *__pglob) __THROW; #else ! extern int __REDIRECT_NTH (glob, (const char *__restrict __pattern, int __flags, ! int (*__errfunc) (const char *, int), glob_t *__restrict __pglob), glob64); extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64); #endif #if defined __USE_LARGEFILE64 && !defined __GLOB_GNULIB ! extern int glob64 (const char *__restrict __pattern, int __flags, ! int (*__errfunc) (const char *, int), glob64_t *__restrict __pglob) __THROW; extern void globfree64 (glob64_t *__pglob) __THROW; *************** *** 188,194 **** This function is not part of the interface specified by POSIX.2 but several programs want to use it. */ ! extern int glob_pattern_p (__const char *__pattern, int __quote) __THROW; #endif __END_DECLS --- 188,194 ---- This function is not part of the interface specified by POSIX.2 but several programs want to use it. */ ! extern int glob_pattern_p (const char *__pattern, int __quote) __THROW; #endif __END_DECLS _______________________________________________ bug-gnulib mailing list bug-gnulib@gnu.org http://lists.gnu.org/mailman/listinfo/bug-gnulib