Sfoglia il codice sorgente

implemented strcasestr for dmenu (I call it cistrstr) for portability issues (cygwin has no strcasestr, oh dear)

master
Anselm R. Garbe 17 anni fa
parent
commit
8b2f132973
1 ha cambiato i file con 25 aggiunte e 1 eliminazioni
  1. +25
    -1
      dmenu.c

+ 25
- 1
dmenu.c Vedi File

@@ -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);

@@ -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)
@@ -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;


Caricamento…
Annulla
Salva