Blame lib/glob-libc.h

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