summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2025-05-23 10:31:15 -0500
committerCraig Jennings <c@cjennings.net>2025-05-23 10:31:15 -0500
commit928298ef5b08545a6e29050b5a3a971de4d99ed1 (patch)
tree4cbe71a3b5470e0f4a39a80462e15ae836ef3f2f
parent0da1db38600084fc62698187de495162c3377ad8 (diff)
make dmenu search case insensitive by defaultHEADmain
-rw-r--r--dmenu-caseinsensitive-5.0.diff53
-rw-r--r--dmenu.16
-rw-r--r--dmenu.c11
3 files changed, 62 insertions, 8 deletions
diff --git a/dmenu-caseinsensitive-5.0.diff b/dmenu-caseinsensitive-5.0.diff
new file mode 100644
index 0000000..f476bc9
--- /dev/null
+++ b/dmenu-caseinsensitive-5.0.diff
@@ -0,0 +1,53 @@
+diff --git a/dmenu.1 b/dmenu.1
+index 323f93c..3e3b31b 100644
+--- a/dmenu.1
++++ b/dmenu.1
+@@ -3,7 +3,7 @@
+ dmenu \- dynamic menu
+ .SH SYNOPSIS
+ .B dmenu
+-.RB [ \-bfiv ]
++.RB [ \-bfsv ]
+ .RB [ \-l
+ .IR lines ]
+ .RB [ \-m
+@@ -44,8 +44,8 @@ dmenu appears at the bottom of the screen.
+ dmenu grabs the keyboard before reading stdin if not reading from a tty. This
+ is faster, but will lock up X until stdin reaches end\-of\-file.
+ .TP
+-.B \-i
+-dmenu matches menu items case insensitively.
++.B \-s
++dmenu matches menu items case sensitively.
+ .TP
+ .BI \-l " lines"
+ dmenu lists items vertically, with the given number of lines.
+diff --git a/dmenu.c b/dmenu.c
+index 65f25ce..855df59 100644
+--- a/dmenu.c
++++ b/dmenu.c
+@@ -55,8 +55,9 @@ static Clr *scheme[SchemeLast];
+
+ #include "config.h"
+
+-static int (*fstrncmp)(const char *, const char *, size_t) = strncmp;
+-static char *(*fstrstr)(const char *, const char *) = strstr;
++static char * cistrstr(const char *s, const char *sub);
++static int (*fstrncmp)(const char *, const char *, size_t) = strncasecmp;
++static char *(*fstrstr)(const char *, const char *) = cistrstr;
+
+ static void
+ appenditem(struct item *item, struct item **list, struct item **last)
+@@ -709,9 +710,9 @@ main(int argc, char *argv[])
+ topbar = 0;
+ else if (!strcmp(argv[i], "-f")) /* grabs keyboard before reading stdin */
+ fast = 1;
+- else if (!strcmp(argv[i], "-i")) { /* case-insensitive item matching */
+- fstrncmp = strncasecmp;
+- fstrstr = cistrstr;
++ else if (!strcmp(argv[i], "-s")) { /* case-sensitive item matching */
++ fstrncmp = strncmp;
++ fstrstr = strstr;
+ } else if (i + 1 == argc)
+ usage();
+ /* these options take one argument */
diff --git a/dmenu.1 b/dmenu.1
index 323f93c..3e3b31b 100644
--- a/dmenu.1
+++ b/dmenu.1
@@ -3,7 +3,7 @@
dmenu \- dynamic menu
.SH SYNOPSIS
.B dmenu
-.RB [ \-bfiv ]
+.RB [ \-bfsv ]
.RB [ \-l
.IR lines ]
.RB [ \-m
@@ -44,8 +44,8 @@ dmenu appears at the bottom of the screen.
dmenu grabs the keyboard before reading stdin if not reading from a tty. This
is faster, but will lock up X until stdin reaches end\-of\-file.
.TP
-.B \-i
-dmenu matches menu items case insensitively.
+.B \-s
+dmenu matches menu items case sensitively.
.TP
.BI \-l " lines"
dmenu lists items vertically, with the given number of lines.
diff --git a/dmenu.c b/dmenu.c
index 839f6cc..7abae62 100644
--- a/dmenu.c
+++ b/dmenu.c
@@ -55,8 +55,9 @@ static Clr *scheme[SchemeLast];
#include "config.h"
-static int (*fstrncmp)(const char *, const char *, size_t) = strncmp;
-static char *(*fstrstr)(const char *, const char *) = strstr;
+static char * cistrstr(const char *s, const char *sub);
+static int (*fstrncmp)(const char *, const char *, size_t) = strncasecmp;
+static char *(*fstrstr)(const char *, const char *) = cistrstr;
static unsigned int
textw_clamp(const char *str, unsigned int n)
@@ -736,9 +737,9 @@ main(int argc, char *argv[])
topbar = 0;
else if (!strcmp(argv[i], "-f")) /* grabs keyboard before reading stdin */
fast = 1;
- else if (!strcmp(argv[i], "-i")) { /* case-insensitive item matching */
- fstrncmp = strncasecmp;
- fstrstr = cistrstr;
+ else if (!strcmp(argv[i], "-s")) { /* case-sensitive item matching */
+ fstrncmp = strncmp;
+ fstrstr = strstr;
} else if (i + 1 == argc)
usage();
/* these options take one argument */