Blame posix/glob.h

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