revert using strcasestr and use a more optimized portable version - dmenu - dyn… | |
git clone git://git.suckless.org/dmenu | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 3e39c526d28582b0b5606d3e3bb36ee3d271e616 | |
parent a9a3836861bd23387b5a51d6f6ac23377e98e26f | |
Author: Hiltjo Posthuma <[email protected]> | |
Date: Tue, 8 Feb 2022 19:32:25 +0100 | |
revert using strcasestr and use a more optimized portable version | |
... compared to the old cistrstr(). | |
Thanks for the feedback! | |
Diffstat: | |
M config.mk | 2 +- | |
M dmenu.c | 21 ++++++++++++++++++++- | |
2 files changed, 21 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/config.mk b/config.mk | |
@@ -23,7 +23,7 @@ INCS = -I$(X11INC) -I$(FREETYPEINC) | |
LIBS = -L$(X11LIB) -lX11 $(XINERAMALIBS) $(FREETYPELIBS) | |
# flags | |
-CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE -D_XOPEN_SOURCE=700 -… | |
+CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_POSIX_C_SOUR… | |
CFLAGS = -std=c99 -pedantic -Wall -Os $(INCS) $(CPPFLAGS) | |
LDFLAGS = $(LIBS) | |
diff --git a/dmenu.c b/dmenu.c | |
@@ -102,6 +102,25 @@ cleanup(void) | |
XCloseDisplay(dpy); | |
} | |
+static char * | |
+cistrstr(const char *h, const char *n) | |
+ | |
+{ | |
+ size_t i; | |
+ | |
+ if (!n[0]) | |
+ return (char *)h; | |
+ | |
+ for (; *h; ++h) { | |
+ for (i = 0; n[i] && tolower((unsigned char)n[i]) == | |
+ tolower((unsigned char)h[i]); ++i) | |
+ ; | |
+ if (n[i] == '\0') | |
+ return (char *)h; | |
+ } | |
+ return NULL; | |
+} | |
+ | |
static int | |
drawitem(struct item *item, int x, int y, int w) | |
{ | |
@@ -711,7 +730,7 @@ main(int argc, char *argv[]) | |
fast = 1; | |
else if (!strcmp(argv[i], "-i")) { /* case-insensitive item ma… | |
fstrncmp = strncasecmp; | |
- fstrstr = strcasestr; | |
+ fstrstr = cistrstr; | |
} else if (i + 1 == argc) | |
usage(); | |
/* these options take one argument */ |