[BACK]Return to lglob.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / less

Annotation of src/usr.bin/less/lglob.h, Revision 1.1.1.2

1.1       millert     1: /*
1.1.1.2 ! shadchin    2:  * Copyright (C) 1984-2011  Mark Nudelman
1.1       millert     3:  *
                      4:  * You may distribute under the terms of either the GNU General Public
                      5:  * License or the Less License, as specified in the README file.
                      6:  *
                      7:  * For more information about less, or for information on how to
                      8:  * contact the author, see the README file.
                      9:  */
                     10:
                     11:
                     12: /*
                     13:  * Macros to define the method of doing filename "globbing".
                     14:  * There are three possible mechanisms:
                     15:  *   1.        GLOB_LIST
                     16:  *     This defines a function that returns a list of matching filenames.
                     17:  *   2. GLOB_NAME
                     18:  *     This defines a function that steps thru the list of matching
                     19:  *     filenames, returning one name each time it is called.
                     20:  *   3. GLOB_STRING
                     21:  *     This defines a function that returns the complete list of
                     22:  *     matching filenames as a single space-separated string.
                     23:  */
                     24:
                     25: #if OS2
                     26:
                     27: #define        DECL_GLOB_LIST(list)            char **list;  char **pp;
                     28: #define        GLOB_LIST(filename,list)        list = _fnexplode(filename)
                     29: #define        GLOB_LIST_FAILED(list)          list == NULL
                     30: #define        SCAN_GLOB_LIST(list,p)          pp = list;  *pp != NULL;  pp++
                     31: #define        INIT_GLOB_LIST(list,p)          p = *pp
                     32: #define        GLOB_LIST_DONE(list)            _fnexplodefree(list)
                     33:
                     34: #else
                     35: #if MSDOS_COMPILER==DJGPPC
                     36:
                     37: #define        DECL_GLOB_LIST(list)            glob_t list;  int i;
                     38: #define        GLOB_LIST(filename,list)        glob(filename,GLOB_NOCHECK,0,&list)
                     39: #define        GLOB_LIST_FAILED(list)          0
                     40: #define        SCAN_GLOB_LIST(list,p)          i = 0;  i < list.gl_pathc;  i++
                     41: #define        INIT_GLOB_LIST(list,p)          p = list.gl_pathv[i]
                     42: #define        GLOB_LIST_DONE(list)            globfree(&list)
                     43:
                     44: #else
                     45: #if MSDOS_COMPILER==MSOFTC || MSDOS_COMPILER==BORLANDC
                     46:
                     47: #define        GLOB_FIRST_NAME(filename,fndp,h) h = _dos_findfirst(filename, ~_A_VOLID, fndp)
                     48: #define        GLOB_FIRST_FAILED(handle)       ((handle) != 0)
                     49: #define        GLOB_NEXT_NAME(handle,fndp)             _dos_findnext(fndp)
                     50: #define        GLOB_NAME_DONE(handle)
                     51: #define        GLOB_NAME                       name
                     52: #define        DECL_GLOB_NAME(fnd,drive,dir,fname,ext,handle) \
                     53:                                        struct find_t fnd;      \
                     54:                                        char drive[_MAX_DRIVE]; \
                     55:                                        char dir[_MAX_DIR];     \
                     56:                                        char fname[_MAX_FNAME]; \
                     57:                                        char ext[_MAX_EXT];     \
                     58:                                        int handle;
                     59: #else
                     60: #if MSDOS_COMPILER==WIN32C && defined(_MSC_VER)
                     61:
                     62: #define        GLOB_FIRST_NAME(filename,fndp,h) h = _findfirst(filename, fndp)
                     63: #define        GLOB_FIRST_FAILED(handle)       ((handle) == -1)
                     64: #define        GLOB_NEXT_NAME(handle,fndp)     _findnext(handle, fndp)
                     65: #define        GLOB_NAME_DONE(handle)          _findclose(handle)
                     66: #define        GLOB_NAME                       name
                     67: #define        DECL_GLOB_NAME(fnd,drive,dir,fname,ext,handle) \
                     68:                                        struct _finddata_t fnd; \
                     69:                                        char drive[_MAX_DRIVE]; \
                     70:                                        char dir[_MAX_DIR];     \
                     71:                                        char fname[_MAX_FNAME]; \
                     72:                                        char ext[_MAX_EXT];     \
                     73:                                        long handle;
                     74:
                     75: #else
                     76: #if MSDOS_COMPILER==WIN32C && !defined(_MSC_VER) /* Borland C for Windows */
                     77:
                     78: #define        GLOB_FIRST_NAME(filename,fndp,h) h = findfirst(filename, fndp, ~FA_LABEL)
                     79: #define        GLOB_FIRST_FAILED(handle)       ((handle) != 0)
                     80: #define        GLOB_NEXT_NAME(handle,fndp)     findnext(fndp)
                     81: #define        GLOB_NAME_DONE(handle)
                     82: #define        GLOB_NAME                       ff_name
                     83: #define        DECL_GLOB_NAME(fnd,drive,dir,fname,ext,handle) \
                     84:                                        struct ffblk fnd;       \
                     85:                                        char drive[MAXDRIVE];   \
                     86:                                        char dir[MAXDIR];       \
                     87:                                        char fname[MAXFILE];    \
                     88:                                        char ext[MAXEXT];       \
                     89:                                        int handle;
                     90:
                     91: #endif
                     92: #endif
                     93: #endif
                     94: #endif
                     95: #endif