28 static void init(
struct buffer *buf)
35 static void add(
struct buffer *buf,
char c)
37 if (buf->len >= buf->alloc) {
39 buf->buf =
G_realloc(buf->buf, buf->alloc);
42 buf->buf[buf->len++] = c;
45 static void fini(
struct buffer *buf)
50 static const char *do_set(
struct buffer *buf,
const char *p)
64 for (; *p && *p !=
']'; p++)
75 static int wc2regex(
struct buffer *buf,
const char *pat)
84 for (p = pat; p && *p; p++) {
124 if (!(p = do_set(buf, p)))
145 static int re_filter(
const char *filename,
void *closure)
147 regex_t *regex = closure;
149 return filename[0] !=
'.' && regexec(regex, filename, 0,
NULL, 0) == 0;
155 regex_t *regex =
G_malloc(
sizeof(regex_t));
157 if (regcomp(regex, pat, REG_NOSUB |
158 (extended ? REG_EXTENDED : 0) |
159 (ignorecase ? REG_ICASE : 0)) != 0) {
179 if (!wc2regex(&buf, pat)) {
void G_set_ls_filter(int(*)(const char *, void *), void *)
void G_free(void *)
Free allocated memory.
void G_set_ls_exclude_filter(int(*)(const char *, void *), void *)
void * G_ls_regex_filter(const char *pat, int exclude, int extended, int ignorecase)
void * G_ls_glob_filter(const char *pat, int exclude, int ignorecase)
void G_free_ls_filter(void *regex)