timplemented strcasestr for dmenu (I call it cistrstr) for portability issues (cygwin has no strcasestr, oh dear) - dmenu - Dmenu fork with xft fonts.
 (HTM) git clone git://r-36.net/dmenu
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 8b2f132973f0fc8150ea66debbed057d849b5cfe
 (DIR) parent 1c488e6dac6e327ce06685556b1989bd75faf241
 (HTM) Author: Anselm R. Garbe <garbeam@gmail.com>
       Date:   Mon,  1 Oct 2007 15:28:42 +0200
       
       implemented strcasestr for dmenu (I call it cistrstr) for portability issues (cygwin has no strcasestr, oh dear)
       Diffstat:
         dmenu.c                             |      26 +++++++++++++++++++++++++-
       
       1 file changed, 25 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/dmenu.c b/dmenu.c
       t@@ -58,6 +58,7 @@ void readstdin(void);
        void run(void);
        void setup(Bool bottom);
        int strcaseido(const char *text, const char *pattern);
       +char *cistrstr(const char *s, const char *sub);
        unsigned int textnw(const char *text, unsigned int len);
        unsigned int textw(const char *text);
        
       t@@ -511,7 +512,7 @@ match(char *pattern) {
                        if(!i->matched && !strncasecmp(pattern, i->text, plen))
                                j = appenditem(i, j);
                for(i = allitems; i; i = i->next)
       -                if(!i->matched && strcasestr(i->text, pattern))
       +                if(!i->matched && cistrstr(i->text, pattern))
                                j = appenditem(i, j);
                if(idomatch)
                        for(i = allitems; i; i = i->next)
       t@@ -629,6 +630,29 @@ strcaseido(const char *text, const char *pattern) {
                return !*pattern;
        }                                  
        
       +char *
       +cistrstr(const char *s, const char *sub) {
       +        int c, csub;
       +        unsigned int len;
       +
       +        if(!sub)
       +                return (char *)s;
       +        if((c = *sub++) != 0) {
       +                c = tolower(c);
       +                len = strlen(sub);
       +                do {
       +                        do {
       +                                if((csub = *s++) == 0)
       +                                        return (NULL);
       +                        }
       +                        while(tolower(csub) != c);
       +                }
       +                while(strncasecmp(s, sub, len) != 0);
       +                s--;
       +        }
       +        return (char *)s;
       +}
       +
        unsigned int
        textnw(const char *text, unsigned int len) {
                XRectangle r;