diff --git a/dmenu.c b/dmenu.c
index b6f1ef2..40b220c 100644
--- a/dmenu.c
+++ b/dmenu.c
@@ -66,7 +66,6 @@ main(int argc, char *argv[]) {
 	Bool fast = False;
 	int i;
 
-	progname = "dmenu";
 	for(i = 1; i < argc; i++)
 		/* single flags */
 		if(!strcmp(argv[i], "-v")) {
@@ -383,10 +382,9 @@ keypress(XKeyEvent *ev) {
 
 void
 match(void) {
-	size_t len;
+	size_t len = strlen(text);
 	Item *item, *lexact, *lprefix, *lsubstr, *exactend, *prefixend, *substrend;
 
-	len = strlen(text);
 	matches = lexact = lprefix = lsubstr = matchend = exactend = prefixend = substrend = NULL;
 	for(item = items; item && item->text; item++)
 		if(!fstrncmp(text, item->text, len + 1))
@@ -424,9 +422,8 @@ match(void) {
 
 size_t
 nextrune(int incr) {
-	size_t n, len;
+	size_t n, len = strlen(text);
 
-	len = strlen(text);
 	for(n = cursor + incr; n >= 0 && n < len && (text[n] & 0xc0) == 0x80; n += incr);
 	return n;
 }
diff --git a/draw.c b/draw.c
index d35d4c2..f9b8957 100644
--- a/draw.c
+++ b/draw.c
@@ -29,10 +29,9 @@ drawrect(DC *dc, int x, int y, unsigned int w, unsigned int h, Bool fill, unsign
 void
 drawtext(DC *dc, const char *text, unsigned long col[ColLast]) {
 	char buf[256];
-	size_t n, mn;
+	size_t mn, n = strlen(text);
 
 	/* shorten text if necessary */
-	n = strlen(text);
 	for(mn = MIN(n, sizeof buf); textnw(dc, text, mn) > dc->w - dc->font.height/2; mn--)
 		if(mn == 0)
 			return;
@@ -46,10 +45,8 @@ drawtext(DC *dc, const char *text, unsigned long col[ColLast]) {
 
 void
 drawtextn(DC *dc, const char *text, size_t n, unsigned long col[ColLast]) {
-	int x, y;
-
-	x = dc->x + dc->font.height/2;
-	y = dc->y + dc->font.ascent+1;
+	int x = dc->x + dc->font.height/2;
+	int y = dc->y + dc->font.ascent+1;
 
 	XSetForeground(dc->dpy, dc->gc, FG(dc, col));
 	if(dc->font.set)
@@ -64,7 +61,6 @@ void
 eprintf(const char *fmt, ...) {
 	va_list ap;
 
-	fprintf(stderr, "%s: ", progname);
 	va_start(ap, fmt);
 	vfprintf(stderr, fmt, ap);
 	va_end(ap);
@@ -104,7 +100,7 @@ initdc(void) {
 	DC *dc;
 
 	if(!setlocale(LC_CTYPE, "") || !XSupportsLocale())
-		weprintf("no locale support\n");
+		fprintf(stderr, "no locale support\n");
 	if(!(dc = calloc(1, sizeof *dc)))
 		eprintf("cannot malloc %u bytes:", sizeof *dc);
 	if(!(dc->dpy = XOpenDisplay(NULL)))
@@ -119,7 +115,7 @@ void
 initfont(DC *dc, const char *fontstr) {
 	if(!loadfont(dc, fontstr ? fontstr : DEFFONT)) {
 		if(fontstr != NULL)
-			weprintf("cannot load font '%s'\n", fontstr);
+			fprintf(stderr, "cannot load font '%s'\n", fontstr);
 		if(fontstr == NULL || !loadfont(dc, DEFFONT))
 			eprintf("cannot load font '%s'\n", DEFFONT);
 	}
@@ -184,13 +180,3 @@ int
 textw(DC *dc, const char *text) {
 	return textnw(dc, text, strlen(text)) + dc->font.height;
 }
-
-void
-weprintf(const char *fmt, ...) {
-	va_list ap;
-
-	fprintf(stderr, "%s: ", progname);
-	va_start(ap, fmt);
-	vfprintf(stderr, fmt, ap);
-	va_end(ap);
-}
diff --git a/draw.h b/draw.h
index ac3943f..247c0b3 100644
--- a/draw.h
+++ b/draw.h
@@ -20,18 +20,15 @@ typedef struct {
 	} font;
 } DC;  /* draw context */
 
-unsigned long getcolor(DC *dc, const char *colstr);
 void drawrect(DC *dc, int x, int y, unsigned int w, unsigned int h, Bool fill, unsigned long color);
 void drawtext(DC *dc, const char *text, unsigned long col[ColLast]);
 void drawtextn(DC *dc, const char *text, size_t n, unsigned long col[ColLast]);
-void initfont(DC *dc, const char *fontstr);
+void eprintf(const char *fmt, ...);
 void freedc(DC *dc);
+unsigned long getcolor(DC *dc, const char *colstr);
 DC *initdc(void);
+void initfont(DC *dc, const char *fontstr);
 void mapdc(DC *dc, Window win, unsigned int w, unsigned int h);
 void resizedc(DC *dc, unsigned int w, unsigned int h);
 int textnw(DC *dc, const char *text, size_t len);
 int textw(DC *dc, const char *text);
-void eprintf(const char *fmt, ...);
-void weprintf(const char *fmt, ...);
-
-const char *progname;