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