revert using strcasestr and use a more optimized portable version - dmenu - dynamic menu
 (HTM) git clone git://git.suckless.org/dmenu
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 3e39c526d28582b0b5606d3e3bb36ee3d271e616
 (DIR) parent a9a3836861bd23387b5a51d6f6ac23377e98e26f
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       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(-)
       ---
 (DIR) 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 -D_POSIX_C_SOURCE=200809L -DVERSION=\"$(VERSION)\" $(XINERAMAFLAGS)
       +CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L -DVERSION=\"$(VERSION)\" $(XINERAMAFLAGS)
        CFLAGS   = -std=c99 -pedantic -Wall -Os $(INCS) $(CPPFLAGS)
        LDFLAGS  = $(LIBS)
        
 (DIR) 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 matching */
                                fstrncmp = strncasecmp;
       -                        fstrstr = strcasestr;
       +                        fstrstr = cistrstr;
                        } else if (i + 1 == argc)
                                usage();
                        /* these options take one argument */