1*cc698b49SBrooks Davis /* NetBSD: glob.h,v 1.13 2001/03/16 21:02:42 christos Exp */ 26767bd61SMark Peek 3c80476e4SDavid E. O'Brien /* 46767bd61SMark Peek * Copyright (c) 1989, 1993 56767bd61SMark Peek * The Regents of the University of California. All rights reserved. 6c80476e4SDavid E. O'Brien * 7c80476e4SDavid E. O'Brien * This code is derived from software contributed to Berkeley by 8c80476e4SDavid E. O'Brien * Guido van Rossum. 9c80476e4SDavid E. O'Brien * 10c80476e4SDavid E. O'Brien * Redistribution and use in source and binary forms, with or without 11c80476e4SDavid E. O'Brien * modification, are permitted provided that the following conditions 12c80476e4SDavid E. O'Brien * are met: 13c80476e4SDavid E. O'Brien * 1. Redistributions of source code must retain the above copyright 14c80476e4SDavid E. O'Brien * notice, this list of conditions and the following disclaimer. 15c80476e4SDavid E. O'Brien * 2. Redistributions in binary form must reproduce the above copyright 16c80476e4SDavid E. O'Brien * notice, this list of conditions and the following disclaimer in the 17c80476e4SDavid E. O'Brien * documentation and/or other materials provided with the distribution. 1829301572SMark Peek * 3. Neither the name of the University nor the names of its contributors 19c80476e4SDavid E. O'Brien * may be used to endorse or promote products derived from this software 20c80476e4SDavid E. O'Brien * without specific prior written permission. 21c80476e4SDavid E. O'Brien * 22c80476e4SDavid E. O'Brien * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23c80476e4SDavid E. O'Brien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24c80476e4SDavid E. O'Brien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25c80476e4SDavid E. O'Brien * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26c80476e4SDavid E. O'Brien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27c80476e4SDavid E. O'Brien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28c80476e4SDavid E. O'Brien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29c80476e4SDavid E. O'Brien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30c80476e4SDavid E. O'Brien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31c80476e4SDavid E. O'Brien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32c80476e4SDavid E. O'Brien * SUCH DAMAGE. 33c80476e4SDavid E. O'Brien * 346767bd61SMark Peek * @(#)glob.h 8.1 (Berkeley) 6/2/93 35c80476e4SDavid E. O'Brien */ 36c80476e4SDavid E. O'Brien 37c80476e4SDavid E. O'Brien #ifndef _GLOB_H_ 38c80476e4SDavid E. O'Brien #define _GLOB_H_ 39c80476e4SDavid E. O'Brien 40c80476e4SDavid E. O'Brien typedef struct { 416767bd61SMark Peek int gl_pathc; /* Count of total paths so far. */ 426767bd61SMark Peek int gl_matchc; /* Count of paths matching pattern. */ 436767bd61SMark Peek int gl_offs; /* Reserved at beginning of gl_pathv. */ 446767bd61SMark Peek int gl_flags; /* Copy of flags parameter to glob. */ 456767bd61SMark Peek char **gl_pathv; /* List of paths matching pattern. */ 466767bd61SMark Peek /* Copy of errfunc parameter to glob. */ 4745e5710bSMark Peek int (*gl_errfunc) (const char *, int); 486767bd61SMark Peek 496767bd61SMark Peek /* 506767bd61SMark Peek * Alternate filesystem access methods for glob; replacement 516767bd61SMark Peek * versions of closedir(3), readdir(3), opendir(3), stat(2) 526767bd61SMark Peek * and lstat(2). 536767bd61SMark Peek */ 5445e5710bSMark Peek void (*gl_closedir) (void *); 5545e5710bSMark Peek struct dirent *(*gl_readdir) (void *); 5645e5710bSMark Peek void *(*gl_opendir) (const char *); 5745e5710bSMark Peek int (*gl_lstat) (const char *, struct stat *); 5845e5710bSMark Peek int (*gl_stat) (const char *, struct stat *); 59c80476e4SDavid E. O'Brien } glob_t; 60c80476e4SDavid E. O'Brien 616767bd61SMark Peek #define GLOB_APPEND 0x0001 /* Append to output from previous call. */ 626767bd61SMark Peek #define GLOB_DOOFFS 0x0002 /* Use gl_offs. */ 636767bd61SMark Peek #define GLOB_ERR 0x0004 /* Return on error. */ 646767bd61SMark Peek #define GLOB_MARK 0x0008 /* Append / to matching directories. */ 656767bd61SMark Peek #define GLOB_NOCHECK 0x0010 /* Return pattern itself if nothing matches. */ 666767bd61SMark Peek #define GLOB_NOSORT 0x0020 /* Don't sort. */ 676767bd61SMark Peek #define GLOB_NOESCAPE 0x1000 /* Disable backslash escaping. */ 68c80476e4SDavid E. O'Brien 696767bd61SMark Peek #define GLOB_NOSPACE (-1) /* Malloc call failed. */ 706767bd61SMark Peek #define GLOB_ABORTED (-2) /* Unignored error. */ 716767bd61SMark Peek #define GLOB_NOMATCH (-3) /* No match, and GLOB_NOCHECK was not set. */ 726767bd61SMark Peek #define GLOB_NOSYS (-4) /* Implementation does not support function. */ 736767bd61SMark Peek 7429301572SMark Peek /* #if !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE) */ 756767bd61SMark Peek #define GLOB_ALTDIRFUNC 0x0040 /* Use alternately specified directory funcs. */ 766767bd61SMark Peek #define GLOB_BRACE 0x0080 /* Expand braces ala csh. */ 776767bd61SMark Peek #define GLOB_MAGCHAR 0x0100 /* Pattern had globbing characters. */ 786767bd61SMark Peek #define GLOB_NOMAGIC 0x0200 /* GLOB_NOCHECK without magic chars (csh). */ 796767bd61SMark Peek #define GLOB_LIMIT 0x0400 /* Limit memory used by matches to ARG_MAX */ 806767bd61SMark Peek #define GLOB_TILDE 0x0800 /* Expand tilde names from the passwd file. */ 816767bd61SMark Peek #define GLOB_ALTNOT 0x1000 /* use alternate glob character [^ not !] */ 826767bd61SMark Peek #define GLOB_QUOTE 0x2000 /* XXX: source compatibility */ 839ccc37e3SMark Peek #define GLOB_STAR 0x4000 /* use glob ** to recurse directories */ 849ccc37e3SMark Peek #define GLOB_DOT 0x8000 /* don't skip dotfiles (except . and ..) */ 856767bd61SMark Peek 866767bd61SMark Peek #define GLOB_ABEND GLOB_ABORTED /* source compatibility */ 8729301572SMark Peek /* #endif */ 88c80476e4SDavid E. O'Brien 8945e5710bSMark Peek int glob (const char *, int, int (*)(const char *, int), glob_t *); 9045e5710bSMark Peek void globfree (glob_t *); 9145e5710bSMark Peek int globcharcoll (Char, Char, int); 92c80476e4SDavid E. O'Brien 93c80476e4SDavid E. O'Brien #endif /* !_GLOB_H_ */ 94