/* : : generated by proto : : */ /*********************************************************************** * * * This software is part of the ast package * * Copyright (c) 1985-2007 AT&T Knowledge Ventures * * and is licensed under the * * Common Public License, Version 1.0 * * by AT&T Knowledge Ventures * * * * A copy of the License is available at * * http://www.opensource.org/licenses/cpl1.0.txt * * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * * * * Information and Software Systems Research * * AT&T Research * * Florham Park NJ * * * * Glenn Fowler * * David Korn * * Phong Vo * * * ***********************************************************************/ /* * posix glob interface definitions with gnu extensions */ #ifndef _GLOB_H #if !defined(__PROTO__) #include #endif #if !defined(__LINKAGE__) #define __LINKAGE__ /* 2004-08-11 transition */ #endif #define _GLOB_H #define GLOB_VERSION 20060717L #include struct dirent; struct stat; struct _glob_; struct _globlist_; typedef struct _glob_ glob_t; typedef struct _globlist_ globlist_t; struct _globlist_ { globlist_t* gl_next; char* gl_begin; unsigned char gl_flags; char gl_path[1]; }; struct _glob_ { size_t gl_pathc; char** gl_pathv; size_t gl_offs; globlist_t* gl_list; int gl_flags; /* GLOB_DISC data -- memset(&gl,0,sizeof(gl)) before using! */ const char* gl_fignore; const char* gl_suffix; unsigned char* gl_intr; int gl_delim; __V_* gl_handle; __V_* (*gl_diropen) __PROTO__((glob_t*, const char*)); char* (*gl_dirnext) __PROTO__((glob_t*, __V_*)); void (*gl_dirclose) __PROTO__((glob_t*, __V_*)); int (*gl_type) __PROTO__((glob_t*, const char*)); int (*gl_attr) __PROTO__((glob_t*, const char*)); /* gnu extensions -- but how do you synthesize dirent and stat? */ __V_* (*gl_opendir) __PROTO__((const char*)); struct dirent* (*gl_readdir) __PROTO__((__V_*)); void (*gl_closedir) __PROTO__((__V_*)); int (*gl_stat) __PROTO__((const char*, struct stat*)); int (*gl_lstat) __PROTO__((const char*, struct stat*)); /* ast additions */ char* (*gl_nextdir) __PROTO__((glob_t*, char*)); unsigned long gl_status; unsigned long gl_version; unsigned short gl_extra; #ifdef _GLOB_PRIVATE_ _GLOB_PRIVATE_ #else char* gl_pad[23]; #endif }; /* standard interface */ #define GLOB_APPEND 0x0001 /* append to previous */ #define GLOB_DOOFFS 0x0002 /* gl_offs defines argv offset */ #define GLOB_ERR 0x0004 /* abort on error */ #define GLOB_MARK 0x0008 /* append / to directories */ #define GLOB_NOCHECK 0x0010 /* nomatch is original pattern */ #define GLOB_NOESCAPE 0x0020 /* don't treat \ specially */ #define GLOB_NOSORT 0x0040 /* don't sort the list */ /* extended interface */ #define GLOB_STARSTAR 0x0080 /* enable [/]**[/] expansion */ #define GLOB_BRACE 0x0100 /* enable {...} expansion */ #define GLOB_ICASE 0x0200 /* ignore case on match */ #define GLOB_COMPLETE 0x0400 /* shell file completeion */ #define GLOB_AUGMENTED 0x0800 /* augmented shell patterns */ #define GLOB_STACK 0x1000 /* allocate on current stack */ #define GLOB_LIST 0x2000 /* just create gl_list */ #define GLOB_ALTDIRFUNC 0x4000 /* gnu discipline functions */ #define GLOB_DISC 0x8000 /* discipline initialized */ /* gl_status */ #define GLOB_NOTDIR 0x0001 /* last gl_dirnext() not a dir */ /* gl_type return */ #define GLOB_NOTFOUND 0 /* does not exist */ #define GLOB_DEV 1 /* exists but not DIR EXE REG */ #define GLOB_DIR 2 /* directory */ #define GLOB_EXE 3 /* executable regular file */ #define GLOB_REG 4 /* regular file */ /* error return values */ #define GLOB_ABORTED 1 #define GLOB_NOMATCH 2 #define GLOB_NOSPACE 3 #define GLOB_INTR 4 #define GLOB_APPERR 5 #define GLOB_NOSYS 6 #if _BLD_ast && defined(__EXPORT__) #undef __MANGLE__ #define __MANGLE__ __LINKAGE__ __EXPORT__ #endif extern __MANGLE__ int glob __PROTO__((const char*, int, int(*)(const char*,int), glob_t*)); extern __MANGLE__ void globfree __PROTO__((glob_t*)); #undef __MANGLE__ #define __MANGLE__ __LINKAGE__ #endif /* _GLOB_H */