implemented strcasestr for dmenu (I call it cistrstr) for portability issues (cygwin has no strcasestr, oh dear)
This commit is contained in:
parent
1c488e6dac
commit
8b2f132973
26
dmenu.c
26
dmenu.c
|
@ -58,6 +58,7 @@ void readstdin(void);
|
||||||
void run(void);
|
void run(void);
|
||||||
void setup(Bool bottom);
|
void setup(Bool bottom);
|
||||||
int strcaseido(const char *text, const char *pattern);
|
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 textnw(const char *text, unsigned int len);
|
||||||
unsigned int textw(const char *text);
|
unsigned int textw(const char *text);
|
||||||
|
|
||||||
|
@ -511,7 +512,7 @@ match(char *pattern) {
|
||||||
if(!i->matched && !strncasecmp(pattern, i->text, plen))
|
if(!i->matched && !strncasecmp(pattern, i->text, plen))
|
||||||
j = appenditem(i, j);
|
j = appenditem(i, j);
|
||||||
for(i = allitems; i; i = i->next)
|
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);
|
j = appenditem(i, j);
|
||||||
if(idomatch)
|
if(idomatch)
|
||||||
for(i = allitems; i; i = i->next)
|
for(i = allitems; i; i = i->next)
|
||||||
|
@ -629,6 +630,29 @@ strcaseido(const char *text, const char *pattern) {
|
||||||
return !*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
|
unsigned int
|
||||||
textnw(const char *text, unsigned int len) {
|
textnw(const char *text, unsigned int len) {
|
||||||
XRectangle r;
|
XRectangle r;
|
||||||
|
|
Loading…
Reference in a new issue