Annotation of 43BSDReno/lib/libc/gen/glob.3, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1989 The Regents of the University of California.
        !             2: .\" All rights reserved.
        !             3: .\"
        !             4: .\" This code is derived from software contributed to Berkeley by
        !             5: .\" Guido van Rossum.
        !             6: .\"
        !             7: .\" Redistribution and use in source and binary forms are permitted provided
        !             8: .\" that: (1) source distributions retain this entire copyright notice and
        !             9: .\" comment, and (2) distributions including binaries display the following
        !            10: .\" acknowledgement:  ``This product includes software developed by the
        !            11: .\" University of California, Berkeley and its contributors'' in the
        !            12: .\" documentation or other materials provided with the distribution and in
        !            13: .\" all advertising materials mentioning features or use of this software.
        !            14: .\" Neither the name of the University nor the names of its contributors may
        !            15: .\" be used to endorse or promote products derived from this software without
        !            16: .\" specific prior written permission.
        !            17: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
        !            18: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
        !            19: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
        !            20: .\"
        !            21: .\"    @(#)glob.3      5.2 (Berkeley) 6/23/90
        !            22: .\"
        !            23: .TH GLOB 3 "June 23, 1990"
        !            24: .UC 7
        !            25: .SH NAME
        !            26: glob, globfree \- generate pathnames matching a pattern
        !            27: .SH SYNOPSIS
        !            28: .nf
        !            29: #include <glob.h>
        !            30: 
        !            31: glob(const char *pattern, int flags,
        !            32:        const int (*errfunc)(char *, int), glob_t *pglob);
        !            33: 
        !            34: void globfree(glob_t *pglob);
        !            35: .fi
        !            36: .SH DESCRIPTION
        !            37: .I Glob
        !            38: is a pathname generator that implements the rules for file name pattern
        !            39: matching used by the shell.
        !            40: .PP
        !            41: The include file
        !            42: .I glob.h
        !            43: defines the structure type
        !            44: .IR glob_t ,
        !            45: which contains at least the following fields:
        !            46: .sp
        !            47: .RS
        !            48: .nf
        !            49: .ta .5i +\w'char **gl_pathv;\0\0\0'u
        !            50: typedef struct {
        !            51:        int gl_pathc;           /* count of paths matching pattern */
        !            52:        int gl_offs;            /* reserved at beginning of gl_pathv */
        !            53:        char **gl_pathv;        /* list of paths matching pattern */
        !            54: } glob_t;
        !            55: .fi
        !            56: .RE
        !            57: .PP
        !            58: The argument
        !            59: .I pattern
        !            60: is a pointer to a pathname pattern to be expanded.
        !            61: .I Glob
        !            62: matches all accessible pathnames against the pattern and creates
        !            63: a list of the pathnames that match.
        !            64: In order to have access to a pathname,
        !            65: .I glob
        !            66: requires search permission on every component of a path except the last
        !            67: and read permission on each directory of any filename component of
        !            68: .I pattern
        !            69: that contains any of the special characters ``*'', ``?'' or ``[''.
        !            70: .PP
        !            71: .I Glob
        !            72: stores the number of matched pathnames into the
        !            73: .I gl_pathc
        !            74: field, and a pointer to a list of pointers to pathnames into the
        !            75: .I gl_pathv
        !            76: field.
        !            77: The first pointer after the last pathname is NULL.
        !            78: If the pattern does not match any pathnames, the returned number of
        !            79: matched paths is set to zero.
        !            80: .PP
        !            81: It is the caller's responsibility to create the structure pointed to by
        !            82: .IR pglob .
        !            83: The
        !            84: .I glob
        !            85: function allocates other space as needed, including the memory pointed
        !            86: to by
        !            87: .IR gl_pathv .
        !            88: .PP
        !            89: The argument
        !            90: .I flags
        !            91: is used to modify the behavior of
        !            92: .IR glob .
        !            93: The value of
        !            94: .I flags
        !            95: is the bitwise inclusive OR of any of the following
        !            96: values defined in
        !            97: .IR glob.h :
        !            98: .TP
        !            99: GLOB_APPEND
        !           100: Append pathnames generated to the ones from a previous call (or calls)
        !           101: to
        !           102: .IR glob .
        !           103: The value of
        !           104: .I gl_pathc
        !           105: will be the total matches found by this call and the previous call(s).
        !           106: The pathnames are appended to, not merged with the pathnames returned by
        !           107: the previous call(s).
        !           108: Between calls, the caller must not change the setting of the
        !           109: GLOB_DOOFFS flag, nor change the value of
        !           110: .I gl_offs
        !           111: when
        !           112: GLOB_DOOFFS is set, nor (obviously) call
        !           113: .I globfree
        !           114: for
        !           115: .I pglob.
        !           116: .TP
        !           117: GLOB_DOOFFS
        !           118: Make use of the
        !           119: .I gl_offs
        !           120: field.
        !           121: If this flag is set,
        !           122: .I gl_offs
        !           123: is used to specify how many NULL pointers to prepend to the beginning
        !           124: of the
        !           125: .I gl_pathv
        !           126: field.
        !           127: In other words,
        !           128: .I gl_pathv
        !           129: will point to
        !           130: .I gl_offs
        !           131: NULL pointers,
        !           132: followed by
        !           133: .I gl_pathc
        !           134: pathname pointers, followed by a NULL pointer.
        !           135: .TP
        !           136: GLOB_ERR
        !           137: Causes
        !           138: .I glob
        !           139: to return when it encounters a directory that it cannot open or read.
        !           140: Ordinarily,
        !           141: .I glob
        !           142: continues to find matches.
        !           143: .TP
        !           144: GLOB_MARK
        !           145: Each pathname that is a directory that matches
        !           146: .I pattern
        !           147: has a slash
        !           148: appended.
        !           149: .TP
        !           150: GLOB_NOSORT
        !           151: By default, the pathnames are sorted in ascending ASCII order;
        !           152: this flag prevents that sorting (speeding up
        !           153: .IR glob ).
        !           154: .TP
        !           155: GLOB_NOCHECK
        !           156: If
        !           157: .I pattern
        !           158: does not match any pathname, then
        !           159: .I glob
        !           160: returns a list
        !           161: consisting of only
        !           162: .IR pattern ,
        !           163: and the number of matched pathnames is set to 1.
        !           164: If
        !           165: .I GLOB_QUOTE
        !           166: is set, its effect is present in the pattern returned.
        !           167: .TP
        !           168: GLOB_QUOTE
        !           169: Use the backslash (``\e'') character for quoting: every occurrence of
        !           170: a backslash followed by a character in the pattern is replaced by that
        !           171: character, avoiding any special interpretation of the character.
        !           172: .PP
        !           173: If, during the search, a directory is encountered that cannot be opened
        !           174: or read and
        !           175: .I errfunc
        !           176: is non-NULL,
        !           177: .I glob
        !           178: calls (*\fIerrfunc\fP)(\fIpath\fP, \fIerrno\fP).
        !           179: This may be unintuitive: a pattern like ``*/Makefile'' will try to
        !           180: .IR stat (2)
        !           181: ``foo/Makefile'' even if ``foo'' is not a directory, resulting in a
        !           182: call to
        !           183: .IR errfunc .
        !           184: The error routine can suppress this action by testing for ENOENT and
        !           185: ENOTDIR; however, the GLOB_ERR flag will still cause an immediate
        !           186: return when this happens.
        !           187: .PP
        !           188: If
        !           189: .I errfunc
        !           190: returns non-zero,
        !           191: .I glob
        !           192: stops the scan and returns
        !           193: .I GLOB_ABEND
        !           194: after setting
        !           195: .I gl_pathc
        !           196: and
        !           197: .I gl_pathv
        !           198: to reflect any paths already matched.
        !           199: This also happens if an error is encountered and
        !           200: .I GLOB_ERR
        !           201: is set in
        !           202: .IR flags ,
        !           203: regardless of the return value of
        !           204: .IR errfunc ,
        !           205: if called.
        !           206: If
        !           207: .I GLOB_ERR
        !           208: is not set and either
        !           209: .I errfunc
        !           210: is NULL or
        !           211: .I errfunc
        !           212: returns zero, the error is ignored.
        !           213: .PP
        !           214: The
        !           215: .I globfree
        !           216: function frees any space associated with
        !           217: .I pglob
        !           218: from a previous call(s) to
        !           219: .IR glob .
        !           220: .SH RETURNS
        !           221: On successful completion,
        !           222: .I glob
        !           223: returns zero.
        !           224: The field
        !           225: .I gl_pathc
        !           226: returns the number of matched pathnames and
        !           227: the field
        !           228: .I gl_pathv
        !           229: contains a pointer to a NULL-terminated list of matched pathnames.
        !           230: However, if
        !           231: .I pglob->gl_pathc
        !           232: is zero, the contents of
        !           233: .I pglob->gl_pathv
        !           234: is undefined.
        !           235: .PP
        !           236: If
        !           237: .I glob
        !           238: terminates due to an error, it sets errno and returns one of the
        !           239: following non-zero constants, which are defined in the include
        !           240: file <glob.h>:
        !           241: .TP
        !           242: GLOB_NOSPACE
        !           243: An attempt to allocate memory failed.
        !           244: .TP
        !           245: GLOB_ABEND
        !           246: The scan was stopped because an error was encountered and either
        !           247: GLOB_ERR was set or (*\fIerrfunc\fR)() returned non-zero.
        !           248: .PP
        !           249: The arguments
        !           250: .I pglob->gl_pathc
        !           251: and
        !           252: .I pglob->gl_pathv
        !           253: are still set as specified above.
        !           254: .SH STANDARDS
        !           255: The
        !           256: .I glob
        !           257: function is expected to be POSIX 1003.2 compatible with the exception
        !           258: that the flag GLOB_QUOTE should not be used by applications striving
        !           259: for strict POSIX conformance.
        !           260: .SH EXAMPLE
        !           261: A rough equivalent of ``ls -l *.c *.h'' can be obtained with the
        !           262: following code:
        !           263: .sp
        !           264: .nf
        !           265: .RS
        !           266: glob_t g;
        !           267: 
        !           268: g.gl_offs = 2;
        !           269: glob("*.c", GLOB_DOOFFS, NULL, &g);
        !           270: glob("*.h", GLOB_DOOFFS | GLOB_APPEND, NULL, &g);
        !           271: g.gl_pathv[0] = "ls";
        !           272: g.gl_pathv[1] = "-l";
        !           273: execvp("ls", g.gl_pathv);
        !           274: .RE
        !           275: .fi
        !           276: .SH SEE ALSO
        !           277: sh(1), fnmatch(3), wordexp(3), regexp(3)
        !           278: .SH BUGS
        !           279: Patterns longer than MAXPATHLEN may cause unchecked errors.
        !           280: .PP
        !           281: .I Glob
        !           282: may fail and set errno for any of the errors specified for the
        !           283: library routines
        !           284: .I stat (2),
        !           285: .I closedir (3),
        !           286: .I opendir (3),
        !           287: .I readdir (3),
        !           288: .I malloc (3),
        !           289: and
        !           290: .I free (3).
        !           291: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.