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