portability
authorConnor Lane Smith <cls@lubutu.com>
Sun, 15 May 2011 20:54:26 +0000 (21:54 +0100)
committerConnor Lane Smith <cls@lubutu.com>
Sun, 15 May 2011 20:54:26 +0000 (21:54 +0100)
config.mk
dmenu.c
draw.c

index 126bd79..03f1670 100644 (file)
--- a/config.mk
+++ b/config.mk
@@ -18,7 +18,7 @@ LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS}
 
 # flags
 CPPFLAGS = -D_BSD_SOURCE -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
-CFLAGS   = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
+CFLAGS   = -ansi -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
 LDFLAGS  = -s ${LIBS}
 
 # compiler and linker
diff --git a/dmenu.c b/dmenu.c
index a8a6290..cee73b2 100644 (file)
--- a/dmenu.c
+++ b/dmenu.c
@@ -3,6 +3,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <strings.h>
 #include <unistd.h>
 #include <X11/Xlib.h>
 #include <X11/Xatom.h>
@@ -231,13 +232,14 @@ insert(const char *str, ssize_t n) {
 void
 keypress(XKeyEvent *ev) {
        char buf[32];
-       size_t len;
        KeySym ksym;
 
-       len = strlen(text);
        XLookupString(ev, buf, sizeof buf, &ksym, NULL);
-       if(ev->state & ControlMask)
-               switch(tolower(ksym)) {
+       if(ev->state & ControlMask) {
+               KeySym lower, upper;
+
+               XConvertCase(ksym, &lower, &upper);
+               switch(lower) {
                default:
                        return;
                case XK_a:
@@ -290,13 +292,14 @@ keypress(XKeyEvent *ev) {
                        XConvertSelection(dc->dpy, XA_PRIMARY, utf8, utf8, win, CurrentTime);
                        return;
                }
+       }
        switch(ksym) {
        default:
                if(!iscntrl(*buf))
                        insert(buf, strlen(buf));
                break;
        case XK_Delete:
-               if(cursor == len)
+               if(text[cursor] == '\0')
                        return;
                cursor = nextrune(+1);
        case XK_BackSpace:
@@ -304,8 +307,8 @@ keypress(XKeyEvent *ev) {
                        insert(NULL, nextrune(-1) - cursor);
                break;
        case XK_End:
-               if(cursor < len) {
-                       cursor = len;
+               if(text[cursor] != '\0') {
+                       cursor = strlen(text);
                        break;
                }
                if(next) {
@@ -358,7 +361,7 @@ keypress(XKeyEvent *ev) {
                fputs((sel && !(ev->state & ShiftMask)) ? sel->text : text, stdout);
                exit(EXIT_SUCCESS);
        case XK_Right:
-               if(cursor < len) {
+               if(text[cursor] != '\0') {
                        cursor = nextrune(+1);
                        break;
                }
@@ -385,7 +388,7 @@ void
 match(Bool sub) {
        size_t len = strlen(text);
        Item *lexact, *lprefix, *lsubstr, *exactend, *prefixend, *substrend;
-       Item *item, *next = NULL;
+       Item *item, *next;
 
        lexact = lprefix = lsubstr = exactend = prefixend = substrend = NULL;
        for(item = sub ? matches : items; item && item->text; item = next) {
diff --git a/draw.c b/draw.c
index 95ff072..351a43d 100644 (file)
--- a/draw.c
+++ b/draw.c
@@ -15,12 +15,13 @@ static Bool loadfont(DC *dc, const char *fontstr);
 
 void
 drawrect(DC *dc, int x, int y, unsigned int w, unsigned int h, Bool fill, unsigned long color) {
-       XRectangle r = { dc->x + x, dc->y + y, w, h };
+       XRectangle r;
+
+       r.x = dc->x + x;
+       r.y = dc->y + y;
+       r.width  = fill ? w : w-1;
+       r.height = fill ? h : h-1;
 
-       if(!fill) {
-               r.width -= 1;
-               r.height -= 1;
-       }
        XSetForeground(dc->dpy, dc->gc, color);
        (fill ? XFillRectangles : XDrawRectangles)(dc->dpy, dc->canvas, dc->gc, &r, 1);
 }