bug-gnulib
[Top][All Lists]
Advanced

[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






reply via email to

[Prev in Thread] Current Thread [Next in Thread]