Explorar el Código

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

master
Anselm R. Garbe hace 17 años
padre
commit
8b2f132973
Se han modificado 1 ficheros con 25 adiciones y 1 borrados
  1. +25
    -1
      dmenu.c

+ 25
- 1
dmenu.c Ver fichero

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


Cargando…
Cancelar
Guardar