diff options
Diffstat (limited to 'dmenu.c')
-rw-r--r-- | dmenu.c | 35 |
1 files changed, 18 insertions, 17 deletions
@@ -36,13 +36,12 @@ static void paste(void); static void readstdin(void); static void run(void); static void setup(void); +static void usage(void); static char text[BUFSIZ] = ""; static int bh, mw, mh; -static int inputw; +static int inputw, promptw; static int lines = 0; -static int monitor = -1; -static int promptw; static size_t cursor = 0; static const char *font = NULL; static const char *prompt = NULL; @@ -70,7 +69,7 @@ main(int argc, char *argv[]) { for(i = 1; i < argc; i++) /* single flags */ if(!strcmp(argv[i], "-v")) { - fputs("dmenu-"VERSION", © 2006-2011 dmenu engineers, see LICENSE for details\n", stdout); + puts("dmenu-"VERSION", © 2006-2011 dmenu engineers, see LICENSE for details"); exit(EXIT_SUCCESS); } else if(!strcmp(argv[i], "-b")) @@ -80,12 +79,10 @@ main(int argc, char *argv[]) { else if(!strcmp(argv[i], "-i")) fstrncmp = strncasecmp; else if(i+1 == argc) - goto usage; + usage(); /* double flags */ else if(!strcmp(argv[i], "-l")) lines = atoi(argv[++i]); - else if(!strcmp(argv[i], "-m")) - monitor = atoi(argv[++i]); else if(!strcmp(argv[i], "-p")) prompt = argv[++i]; else if(!strcmp(argv[i], "-fn")) @@ -99,7 +96,7 @@ main(int argc, char *argv[]) { else if(!strcmp(argv[i], "-sf")) selfgcolor = argv[++i]; else - goto usage; + usage(); dc = initdc(); initfont(dc, font); @@ -114,12 +111,8 @@ main(int argc, char *argv[]) { } setup(); run(); - return EXIT_FAILURE; -usage: - fputs("usage: dmenu [-b] [-f] [-i] [-l lines] [-m monitor] [-p prompt] [-fn font]\n" - " [-nb color] [-nf color] [-sb color] [-sf color] [-v]\n", stderr); - return EXIT_FAILURE; + return EXIT_FAILURE; /* should not reach */ } void @@ -452,7 +445,7 @@ readstdin(void) { char buf[sizeof text], *p, *maxstr = NULL; size_t i, max = 0, size = 0; - for(i = 0; fgets(buf, sizeof buf, stdin); items[++i].text = NULL) { + for(i = 0; fgets(buf, sizeof buf, stdin); i++) { if(i+1 >= size / sizeof *items) if(!(items = realloc(items, (size += BUFSIZ)))) eprintf("cannot realloc %u bytes:", size); @@ -463,6 +456,8 @@ readstdin(void) { if(strlen(items[i].text) > max) max = strlen(maxstr = items[i].text); } + if(items) + items[i].text = NULL; inputw = maxstr ? textw(dc, maxstr) : 0; } @@ -519,8 +514,7 @@ setup(void) { XQueryPointer(dc->dpy, root, &dw, &dw, &x, &y, &di, &di, &du); for(i = 0; i < n-1; i++) - if((monitor == info[i].screen_number) - || (monitor < 0 && INRECT(x, y, info[i].x_org, info[i].y_org, info[i].width, info[i].height))) + if(INRECT(x, y, info[i].x_org, info[i].y_org, info[i].width, info[i].height)) break; x = info[i].x_org; y = info[i].y_org + (topbar ? 0 : info[i].height - mh); @@ -534,8 +528,8 @@ setup(void) { y = topbar ? 0 : DisplayHeight(dc->dpy, screen) - mh; mw = DisplayWidth(dc->dpy, screen); } - inputw = MIN(inputw, mw/3); promptw = prompt ? textw(dc, prompt) : 0; + inputw = MIN(inputw, mw/3); match(False); /* menu window */ @@ -551,3 +545,10 @@ setup(void) { resizedc(dc, mw, mh); drawmenu(); } + +void +usage(void) { + fputs("usage: dmenu [-b] [-f] [-i] [-l lines] [-p prompt] [-fn font]\n" + " [-nb color] [-nf color] [-sb color] [-sf color] [-v]\n", stderr); + exit(EXIT_FAILURE); +} |