Blame lib/glob-libc.h

Packit 8f70b4
/* Copyright (C) 1991-2018 Free Software Foundation, Inc.
Packit 8f70b4
   This file is part of the GNU C Library.
Packit 8f70b4
Packit 8f70b4
   The GNU C Library is free software; you can redistribute it and/or
Packit 8f70b4
   modify it under the terms of the GNU General Public
Packit 8f70b4
   License as published by the Free Software Foundation; either
Packit 8f70b4
   version 3 of the License, or (at your option) any later version.
Packit 8f70b4
Packit 8f70b4
   The GNU C Library is distributed in the hope that it will be useful,
Packit 8f70b4
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 8f70b4
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 8f70b4
   General Public License for more details.
Packit 8f70b4
Packit 8f70b4
   You should have received a copy of the GNU General Public
Packit 8f70b4
   License along with the GNU C Library; if not, see
Packit 8f70b4
   <https://www.gnu.org/licenses/>.  */
Packit 8f70b4
Packit 8f70b4
#ifndef _GLOB_H
Packit 8f70b4
#define _GLOB_H 1
Packit 8f70b4
Packit 8f70b4
#ifndef __GLOB_GNULIB
Packit 8f70b4
# include <sys/cdefs.h>
Packit 8f70b4
#endif
Packit 8f70b4
Packit 8f70b4
__BEGIN_DECLS
Packit 8f70b4
Packit 8f70b4
#define __need_size_t
Packit 8f70b4
#include <stddef.h>
Packit 8f70b4
Packit 8f70b4
/* Bits set in the FLAGS argument to 'glob'.  */
Packit 8f70b4
#define GLOB_ERR        (1 << 0)/* Return on read errors.  */
Packit 8f70b4
#define GLOB_MARK       (1 << 1)/* Append a slash to each name.  */
Packit 8f70b4
#define GLOB_NOSORT     (1 << 2)/* Don't sort the names.  */
Packit 8f70b4
#define GLOB_DOOFFS     (1 << 3)/* Insert PGLOB->gl_offs NULLs.  */
Packit 8f70b4
#define GLOB_NOCHECK    (1 << 4)/* If nothing matches, return the pattern.  */
Packit 8f70b4
#define GLOB_APPEND     (1 << 5)/* Append to results of a previous call.  */
Packit 8f70b4
#define GLOB_NOESCAPE   (1 << 6)/* Backslashes don't quote metacharacters.  */
Packit 8f70b4
#define GLOB_PERIOD     (1 << 7)/* Leading '.' can be matched by metachars.  */
Packit 8f70b4
Packit 8f70b4
#if !defined __USE_POSIX2 || defined __USE_MISC
Packit 8f70b4
# define GLOB_MAGCHAR    (1 << 8)/* Set in gl_flags if any metachars seen.  */
Packit 8f70b4
# define GLOB_ALTDIRFUNC (1 << 9)/* Use gl_opendir et al functions.  */
Packit 8f70b4
# define GLOB_BRACE      (1 << 10)/* Expand "{a,b}" to "a" "b".  */
Packit 8f70b4
# define GLOB_NOMAGIC    (1 << 11)/* If no magic chars, return the pattern.  */
Packit 8f70b4
# define GLOB_TILDE      (1 << 12)/* Expand ~user and ~ to home directories. */
Packit 8f70b4
# define GLOB_ONLYDIR    (1 << 13)/* Match only directories.  */
Packit 8f70b4
# define GLOB_TILDE_CHECK (1 << 14)/* Like GLOB_TILDE but return an error
Packit 8f70b4
                                      if the user name is not available.  */
Packit 8f70b4
# define __GLOB_FLAGS   (GLOB_ERR|GLOB_MARK|GLOB_NOSORT|GLOB_DOOFFS| \
Packit 8f70b4
                         GLOB_NOESCAPE|GLOB_NOCHECK|GLOB_APPEND|     \
Packit 8f70b4
                         GLOB_PERIOD|GLOB_ALTDIRFUNC|GLOB_BRACE|     \
Packit 8f70b4
                         GLOB_NOMAGIC|GLOB_TILDE|GLOB_ONLYDIR|GLOB_TILDE_CHECK)
Packit 8f70b4
#else
Packit 8f70b4
# define __GLOB_FLAGS   (GLOB_ERR|GLOB_MARK|GLOB_NOSORT|GLOB_DOOFFS| \
Packit 8f70b4
                         GLOB_NOESCAPE|GLOB_NOCHECK|GLOB_APPEND|     \
Packit 8f70b4
                         GLOB_PERIOD)
Packit 8f70b4
#endif
Packit 8f70b4
Packit 8f70b4
/* Error returns from 'glob'.  */
Packit 8f70b4
#define GLOB_NOSPACE    1       /* Ran out of memory.  */
Packit 8f70b4
#define GLOB_ABORTED    2       /* Read error.  */
Packit 8f70b4
#define GLOB_NOMATCH    3       /* No matches found.  */
Packit 8f70b4
#define GLOB_NOSYS      4       /* Not implemented.  */
Packit 8f70b4
#ifdef __USE_GNU
Packit 8f70b4
/* Previous versions of this file defined GLOB_ABEND instead of
Packit 8f70b4
   GLOB_ABORTED.  Provide a compatibility definition here.  */
Packit 8f70b4
# define GLOB_ABEND GLOB_ABORTED
Packit 8f70b4
#endif
Packit 8f70b4
Packit 8f70b4
/* Structure describing a globbing run.  */
Packit 8f70b4
#ifdef __USE_GNU
Packit 8f70b4
struct stat;
Packit 8f70b4
#endif
Packit 8f70b4
typedef struct
Packit 8f70b4
  {
Packit 8f70b4
    size_t gl_pathc;          /* Count of paths matched by the pattern.  */
Packit 8f70b4
    char **gl_pathv;            /* List of matched pathnames.  */
Packit 8f70b4
    size_t gl_offs;           /* Slots to reserve in 'gl_pathv'.  */
Packit 8f70b4
    int gl_flags;               /* Set to FLAGS, maybe | GLOB_MAGCHAR.  */
Packit 8f70b4
Packit 8f70b4
    /* If the GLOB_ALTDIRFUNC flag is set, the following functions
Packit 8f70b4
       are used instead of the normal file access functions.  */
Packit 8f70b4
    void (*gl_closedir) (void *);
Packit 8f70b4
#ifdef __USE_GNU
Packit 8f70b4
    struct dirent *(*gl_readdir) (void *);
Packit 8f70b4
#else
Packit 8f70b4
    void *(*gl_readdir) (void *);
Packit 8f70b4
#endif
Packit 8f70b4
    void *(*gl_opendir) (const char *);
Packit 8f70b4
#ifdef __USE_GNU
Packit 8f70b4
    int (*gl_lstat) (const char *__restrict, struct stat *__restrict);
Packit 8f70b4
    int (*gl_stat) (const char *__restrict, struct stat *__restrict);
Packit 8f70b4
#else
Packit 8f70b4
    int (*gl_lstat) (const char *__restrict, void *__restrict);
Packit 8f70b4
    int (*gl_stat) (const char *__restrict, void *__restrict);
Packit 8f70b4
#endif
Packit 8f70b4
  } glob_t;
Packit 8f70b4
Packit 8f70b4
#ifdef __USE_LARGEFILE64
Packit 8f70b4
# ifdef __USE_GNU
Packit 8f70b4
struct stat64;
Packit 8f70b4
# endif
Packit 8f70b4
typedef struct
Packit 8f70b4
  {
Packit 8f70b4
    size_t gl_pathc;
Packit 8f70b4
    char **gl_pathv;
Packit 8f70b4
    size_t gl_offs;
Packit 8f70b4
    int gl_flags;
Packit 8f70b4
Packit 8f70b4
    /* If the GLOB_ALTDIRFUNC flag is set, the following functions
Packit 8f70b4
       are used instead of the normal file access functions.  */
Packit 8f70b4
    void (*gl_closedir) (void *);
Packit 8f70b4
# ifdef __USE_GNU
Packit 8f70b4
    struct dirent64 *(*gl_readdir) (void *);
Packit 8f70b4
# else
Packit 8f70b4
    void *(*gl_readdir) (void *);
Packit 8f70b4
# endif
Packit 8f70b4
    void *(*gl_opendir) (const char *);
Packit 8f70b4
# ifdef __USE_GNU
Packit 8f70b4
    int (*gl_lstat) (const char *__restrict, struct stat64 *__restrict);
Packit 8f70b4
    int (*gl_stat) (const char *__restrict, struct stat64 *__restrict);
Packit 8f70b4
# else
Packit 8f70b4
    int (*gl_lstat) (const char *__restrict, void *__restrict);
Packit 8f70b4
    int (*gl_stat) (const char *__restrict, void *__restrict);
Packit 8f70b4
# endif
Packit 8f70b4
  } glob64_t;
Packit 8f70b4
#endif
Packit 8f70b4
Packit 8f70b4
/* Do glob searching for PATTERN, placing results in PGLOB.
Packit 8f70b4
   The bits defined above may be set in FLAGS.
Packit 8f70b4
   If a directory cannot be opened or read and ERRFUNC is not nil,
Packit 8f70b4
   it is called with the pathname that caused the error, and the
Packit 8f70b4
   'errno' value from the failing call; if it returns non-zero
Packit 8f70b4
   'glob' returns GLOB_ABEND; if it returns zero, the error is ignored.
Packit 8f70b4
   If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned.
Packit 8f70b4
   Otherwise, 'glob' returns zero.  */
Packit 8f70b4
#if !defined __USE_FILE_OFFSET64 || defined __GLOB_GNULIB
Packit 8f70b4
extern int glob (const char *__restrict __pattern, int __flags,
Packit 8f70b4
                 int (*__errfunc) (const char *, int),
Packit 8f70b4
                 glob_t *__restrict __pglob) __THROW;
Packit 8f70b4
Packit 8f70b4
/* Free storage allocated in PGLOB by a previous 'glob' call.  */
Packit 8f70b4
extern void globfree (glob_t *__pglob) __THROW;
Packit 8f70b4
#else
Packit 8f70b4
extern int __REDIRECT_NTH (glob, (const char *__restrict __pattern,
Packit 8f70b4
                                  int __flags,
Packit 8f70b4
                                  int (*__errfunc) (const char *, int),
Packit 8f70b4
                                  glob_t *__restrict __pglob), glob64);
Packit 8f70b4
Packit 8f70b4
extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64);
Packit 8f70b4
#endif
Packit 8f70b4
Packit 8f70b4
#ifdef __USE_LARGEFILE64
Packit 8f70b4
extern int glob64 (const char *__restrict __pattern, int __flags,
Packit 8f70b4
                   int (*__errfunc) (const char *, int),
Packit 8f70b4
                   glob64_t *__restrict __pglob) __THROW;
Packit 8f70b4
Packit 8f70b4
extern void globfree64 (glob64_t *__pglob) __THROW;
Packit 8f70b4
#endif
Packit 8f70b4
Packit 8f70b4
Packit 8f70b4
#ifdef __USE_GNU
Packit 8f70b4
/* Return nonzero if PATTERN contains any metacharacters.
Packit 8f70b4
   Metacharacters can be quoted with backslashes if QUOTE is nonzero.
Packit 8f70b4
Packit 8f70b4
   This function is not part of the interface specified by POSIX.2
Packit 8f70b4
   but several programs want to use it.  */
Packit 8f70b4
extern int glob_pattern_p (const char *__pattern, int __quote) __THROW;
Packit 8f70b4
#endif
Packit 8f70b4
Packit 8f70b4
__END_DECLS
Packit 8f70b4
Packit 8f70b4
#endif /* glob.h  */