Print this page
1097 glob(3c) needs to support non-POSIX options

Split Close
Expand all
Collapse all
          --- old/usr/src/head/glob.h
          +++ new/usr/src/head/glob.h
↓ open down ↓ 11 lines elided ↑ open up ↑
  12   12   * and limitations under the License.
  13   13   *
  14   14   * When distributing Covered Code, include this CDDL HEADER in each
  15   15   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16   16   * If applicable, add the following below this CDDL HEADER, with the
  17   17   * fields enclosed by brackets "[]" replaced with your own identifying
  18   18   * information: Portions Copyright [yyyy] [name of copyright owner]
  19   19   *
  20   20   * CDDL HEADER END
  21   21   */
       22 +
  22   23  /*
       24 + * Copyright (c) 1989, 1993
       25 + *      The Regents of the University of California.  All rights reserved.
       26 + *
       27 + * This code is derived from software contributed to Berkeley by
       28 + * Guido van Rossum.
       29 + *
       30 + * Redistribution and use in source and binary forms, with or without
       31 + * modification, are permitted provided that the following conditions
       32 + * are met:
       33 + * 1. Redistributions of source code must retain the above copyright
       34 + *    notice, this list of conditions and the following disclaimer.
       35 + * 2. Redistributions in binary form must reproduce the above copyright
       36 + *    notice, this list of conditions and the following disclaimer in the
       37 + *    documentation and/or other materials provided with the distribution.
       38 + * 3. Neither the name of the University nor the names of its contributors
       39 + *    may be used to endorse or promote products derived from this software
       40 + *    without specific prior written permission.
       41 + *
       42 + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
       43 + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       44 + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
       45 + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
       46 + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
       47 + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
       48 + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
       49 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
       50 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
       51 + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
       52 + * SUCH DAMAGE.
       53 + *
       54 + *      @(#)glob.h      8.1 (Berkeley) 6/2/93
       55 + */
       56 +
       57 +/*
  23   58   * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
  24   59   * Use is subject to license terms.
       60 + * Copyright (c) 2012 Gary Mills
  25   61   */
  26   62  
  27   63  /*
  28   64   * Copyright 1985, 1992 by Mortice Kern Systems Inc.  All rights reserved.
  29   65   */
  30   66  
  31   67  #ifndef _GLOB_H
  32   68  #define _GLOB_H
  33   69  
  34      -#pragma ident   "%Z%%M% %I%     %E% SMI"
  35      -
  36   70  #include <sys/feature_tests.h>
  37   71  #include <sys/types.h>
       72 +#include <sys/stat.h>
       73 +#include <dirent.h>
  38   74  
  39   75  #ifdef  __cplusplus
  40   76  extern "C" {
  41   77  #endif
  42   78  
       79 +struct stat;
       80 +
  43   81  typedef struct  glob_t  {
  44      -        size_t  gl_pathc;               /* Count of paths matched by pattern */
  45      -        char    **gl_pathv;             /* List of matched pathnames */
  46      -        size_t  gl_offs;                /* # of slots reserved in gl_pathv */
  47      -        /* following are internal to the implementation */
  48      -        char    **gl_pathp;             /* gl_pathv + gl_offs */
  49      -        int     gl_pathn;               /* # of elements allocated */
       82 +        /* Members required by POSIX */
       83 +        size_t  gl_pathc;       /* Total count of paths matched by pattern */
       84 +        char    **gl_pathv;     /* List of matched pathnames */
       85 +        size_t  gl_offs;        /* # of slots reserved in gl_pathv */
       86 +        /* Non-POSIX extensions, from Openbsd */
       87 +        int gl_matchc;          /* Count of paths matching pattern. */
       88 +        int gl_flags;           /* Copy of flags parameter to glob. */
       89 +        /* Members only accessed when Non-POSIX flags are specified. */
       90 +        struct stat **gl_statv; /* Stat entries corresponding to gl_pathv */
       91 +        /*
       92 +         * Alternate filesystem access methods for glob; replacement
       93 +         * versions of closedir(3), readdir(3), opendir(3), stat(2)
       94 +         * and lstat(2).
       95 +         */
       96 +        int (*gl_closedir)(DIR *);
       97 +        struct dirent *(*gl_readdir)(DIR *);
       98 +        DIR *(*gl_opendir)(const char *);
       99 +        int (*gl_lstat)(const char *, struct stat *);
      100 +        int (*gl_stat)(const char *, struct stat *);
  50  101  }       glob_t;
  51  102  
  52  103  /*
  53      - * "flags" argument to glob function.
      104 + * POSIX "flags" argument to glob function.
  54  105   */
  55  106  #define GLOB_ERR        0x0001          /* Don't continue on directory error */
  56  107  #define GLOB_MARK       0x0002          /* Mark directories with trailing / */
  57  108  #define GLOB_NOSORT     0x0004          /* Don't sort pathnames */
  58  109  #define GLOB_NOCHECK    0x0008          /* Return unquoted arg if no match */
  59  110  #define GLOB_DOOFFS     0x0010          /* Ignore gl_offs unless set */
  60  111  #define GLOB_APPEND     0x0020          /* Append to previous glob_t */
  61  112  #define GLOB_NOESCAPE   0x0040          /* Backslashes do not quote M-chars */
  62  113  
  63  114  /*
      115 + * Non-POSIX "flags" argument to glob function, from Openbsd.
      116 + */
      117 +#define GLOB_BRACE      0x0080  /* Expand braces ala csh. */
      118 +#define GLOB_MAGCHAR    0x0100  /* Pattern had globbing characters. */
      119 +#define GLOB_NOMAGIC    0x0200  /* GLOB_NOCHECK without magic chars (csh). */
      120 +#define GLOB_QUOTE      0x0400  /* Quote special chars with \. */
      121 +#define GLOB_TILDE      0x0800  /* Expand tilde names from the passwd file. */
      122 +#define GLOB_LIMIT      0x2000  /* Limit pattern match output to ARG_MAX */
      123 +#define GLOB_KEEPSTAT   0x4000  /* Retain stat data for paths in gl_statv. */
      124 +#define GLOB_ALTDIRFUNC 0x8000  /* Use alternately specified directory funcs. */
      125 +
      126 +/*
  64  127   * Error returns from "glob"
  65  128   */
  66  129  #define GLOB_NOSYS      (-4)            /* function not supported (XPG4) */
  67  130  #define GLOB_NOMATCH    (-3)            /* Pattern does not match */
  68  131  #define GLOB_NOSPACE    (-2)            /* Not enough memory */
  69  132  #define GLOB_ABORTED    (-1)            /* GLOB_ERR set or errfunc return!=0 */
      133 +#define GLOB_ABEND      GLOB_ABORTED    /* backward compatibility */
  70  134  
  71  135  #if defined(__STDC__)
  72  136  extern int glob(const char *_RESTRICT_KYWD, int, int(*)(const char *, int),
  73  137                  glob_t *_RESTRICT_KYWD);
  74  138  extern void globfree(glob_t *);
  75  139  #else
  76  140  extern int glob();
  77  141  extern void globfree();
  78  142  #endif
  79  143  
  80  144  #ifdef  __cplusplus
  81  145  }
  82  146  #endif
  83  147  
  84  148  #endif  /* _GLOB_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX