Blame src/lib/libast/include/glob.h

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 */