|
Message-Id: <20190726234847.12321-1-ismael@iodev.co.uk> Date: Sat, 27 Jul 2019 01:48:47 +0200 From: Ismael Luceno <ismael@...ev.co.uk> To: musl@...ts.openwall.com Cc: Ismael Luceno <ismael@...ev.co.uk> Subject: [PATCH] glob: implement GLOB_NOMAGIC Signed-off-by: Ismael Luceno <ismael@...ev.co.uk> --- include/glob.h | 1 + src/regex/glob.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/glob.h b/include/glob.h index 4a562a206d52..0ff70bdfeef2 100644 --- a/include/glob.h +++ b/include/glob.h @@ -31,6 +31,7 @@ void globfree(glob_t *); #define GLOB_NOESCAPE 0x40 #define GLOB_PERIOD 0x80 +#define GLOB_NOMAGIC 0x0800 #define GLOB_TILDE 0x1000 #define GLOB_TILDE_CHECK 0x4000 diff --git a/src/regex/glob.c b/src/regex/glob.c index 58248675c203..0ccd9759c5e7 100644 --- a/src/regex/glob.c +++ b/src/regex/glob.c @@ -253,13 +253,18 @@ int glob(const char *restrict pat, int flags, int (*errfunc)(const char *path, i for (cnt=0, tail=head.next; tail; tail=tail->next, cnt++); if (!cnt) { + size_t len; if (flags & GLOB_NOCHECK) { - tail = &head; - if (append(&tail, pat, strlen(pat), 0)) - return GLOB_NOSPACE; - cnt++; + len = strlen(pat); + } else if (flags & GLOB_NOMAGIC) { + len = strcspn(pat, "*?["); + if (pat[len]) return GLOB_NOMATCH; } else return GLOB_NOMATCH; + tail = &head; + if (append(&tail, pat, len, 0)) + return GLOB_NOSPACE; + cnt++; } if (flags & GLOB_APPEND) { -- 2.22.0
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.