# HG changeset patch # User Michal Janeczek # Date 1190474291 -7200 # Node ID cf675ec8058cfa43abe5c01c556302a04a0fe550 # Parent 41a58f68f67b4382b1a9c2f846061b1574b629f1 Added an option for case-insensitive matching diff -r 41a58f68f67b -r cf675ec8058c dmenu.1 --- a/dmenu.1 Sat Sep 22 09:12:50 2007 +0200 +++ b/dmenu.1 Sat Sep 22 17:18:11 2007 +0200 @@ -4,6 +4,7 @@ dmenu \- dynamic menu .SH SYNOPSIS .B dmenu .RB [ \-b ] +.RB [ \-c ] .RB [ \-fn " "] .RB [ \-nb " "] .RB [ \-nf " "] @@ -21,6 +22,9 @@ efficiently. .TP .B \-b makes dmenu appear at the screen bottom (by default it appears at the screen top). +.TP +.B \-c +makes dmenu match menu entries case-insensitively (by default it is case sensitive). .TP .B \-fn defines the font. diff -r 41a58f68f67b -r cf675ec8058c dmenu.c --- a/dmenu.c Sat Sep 22 09:12:50 2007 +0200 +++ b/dmenu.c Sat Sep 22 17:18:11 2007 +0200 @@ -87,6 +87,7 @@ Item *prev = NULL; Item *prev = NULL; Item *curr = NULL; Window root, win; +int (*comparefunc)(const char*, const char*, size_t) = strncmp; void calcoffsets(void) { @@ -489,7 +490,7 @@ match(char *pattern) { item = j = NULL; nitem = 0; for(i = allitems; i; i=i->next) - if(!plen || !strncmp(pattern, i->text, plen)) { + if(!plen || !comparefunc(pattern, i->text, plen)) { if(!j) item = i; else @@ -500,7 +501,7 @@ match(char *pattern) { nitem++; } for(i = allitems; i; i=i->next) - if(plen && strncmp(pattern, i->text, plen) + if(plen && comparefunc(pattern, i->text, plen) && strstr(i->text, pattern)) { if(!j) item = i; @@ -512,7 +513,7 @@ match(char *pattern) { nitem++; } for(i = allitems; i; i=i->next) - if(plen && strncmp(pattern, i->text, plen) + if(plen && comparefunc(pattern, i->text, plen) && !strstr(i->text, pattern) && strido(i->text,pattern)) { if(!j) @@ -662,6 +663,9 @@ main(int argc, char *argv[]) { if(!strcmp(argv[i], "-b")) { bottom = True; } + else if(!strcmp(argv[i], "-c")) { + comparefunc = strncasecmp; + } else if(!strcmp(argv[i], "-fn")) { if(++i < argc) font = argv[i]; } @@ -683,7 +687,7 @@ main(int argc, char *argv[]) { else if(!strcmp(argv[i], "-v")) eprint("dmenu-"VERSION", © 2006-2007 Anselm R. Garbe, Sander van Dijk\n"); else - eprint("usage: dmenu [-b] [-fn ] [-nb ] [-nf ]\n" + eprint("usage: dmenu [-b] [-c] [-fn ] [-nb ] [-nf ]\n" " [-p ] [-sb ] [-sf ] [-v]\n"); setlocale(LC_CTYPE, ""); dpy = XOpenDisplay(0);