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