[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
__const
From: |
Bruno Haible |
Subject: |
__const |
Date: |
Tue, 10 Jan 2006 14:21:41 +0100 |
User-agent: |
KMail/1.5.4 |
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 <address@hidden>
* 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 <address@hidden>.
--- 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 <address@hidden>.
***************
*** 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 <address@hidden>.
--- 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 <address@hidden>.
***************
*** 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 <address@hidden> & Paul Eggert <address@hidden>
--- 1,6 ----
/* glob_.h -- Find a path matching a pattern.
! Copyright (C) 2005-2006 Free Software Foundation, Inc.
Written by Derek Price <address@hidden> & Paul Eggert <address@hidden>
***************
*** 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