Pledge on OpenBSD
[dmenu.git] / dmenu.c
diff --git a/dmenu.c b/dmenu.c
index 314256f..7745947 100644 (file)
--- a/dmenu.c
+++ b/dmenu.c
 #define LENGTH(X)             (sizeof X / sizeof X[0])
 #define TEXTW(X)              (drw_fontset_getwidth(drw, (X)) + lrpad)
 
+#ifdef __OpenBSD__
+#include <unistd.h>
+#else
+#define pledge(a,b) 0
+#endif
+
 /* enums */
 enum { SchemeNorm, SchemeSel, SchemeOut, SchemeLast }; /* color schemes */
 
@@ -144,7 +150,7 @@ drawmenu(void)
        drw_setscheme(drw, scheme[SchemeNorm]);
        drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0);
 
-       drw_font_getexts(drw->fonts, text, cursor, &curpos, NULL);
+       curpos = TEXTW(text) - TEXTW(&text[cursor]);
        if ((curpos += lrpad / 2 - 1) < w) {
                drw_setscheme(drw, scheme[SchemeNorm]);
                drw_rect(drw, x + curpos, 2, 2, bh - 4, 1, 0);
@@ -746,6 +752,9 @@ main(int argc, char *argv[])
                die("no fonts could be loaded.");
        lrpad = drw->fonts->h;
 
+       if (pledge("stdio rpath", NULL) < 0)
+               die("pledge");
+
        if (fast) {
                grabkeyboard();
                readstdin();