--- dmenu.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/dmenu.c b/dmenu.c index d605ab4..4672f89 100644 --- a/dmenu.c +++ b/dmenu.c _AT_@ -36,7 +36,7 @@ struct item { static char text[BUFSIZ] = ""; static char *embed; static int bh, mw, mh; -static int inputw = 0, promptw; +static int inputw = 0, promptw, passwd = 0; static int lrpad; /* sum of left and right padding */ static size_t cursor; static struct item *items = NULL; _AT_@ -142,7 +142,11 @@ drawmenu(void) /* draw input field */ w = (lines > 0 || !matches) ? mw - x : inputw; drw_setscheme(drw, scheme[SchemeNorm]); - drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0); + if (passwd) { + char *ntext = calloc(1, sizeof(text)); + for (int i = 0; i < strlen(text); i++) ntext[i] = '.'; + drw_text(drw, x, 0, w, bh, lrpad / 2, ntext, 0); + } else drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0); drw_font_getexts(drw->fonts, text, cursor, &curpos, NULL); if ((curpos += lrpad / 2 - 1) < w) { _AT_@ -481,6 +485,11 @@ readstdin(void) size_t i, imax = 0, size = 0; unsigned int tmpmax = 0; + if (passwd) { + inputw = lines = 0; + return; + } + /* read each line from stdin and add it to the item list */ for (i = 0; fgets(buf, sizeof buf, stdin); i++) { if (i + 1 >= size / sizeof *items) _AT_@ -636,7 +645,7 @@ setup(void) static void usage(void) { - fputs("usage: dmenu [-bfiv] [-l lines] [-p prompt] [-fn font] [-m monitor]\n" + fputs("usage: dmenu [-bfiPv] [-l lines] [-p prompt] [-fn font] [-m monitor]\n" " [-nb color] [-nf color] [-sb color] [-sf color] [-w windowid]\n", stderr); exit(1); } _AT_@ -659,7 +668,9 @@ main(int argc, char *argv[]) else if (!strcmp(argv[i], "-i")) { /* case-insensitive item matching */ fstrncmp = strncasecmp; fstrstr = cistrstr; - } else if (i + 1 == argc) + } else if (!strcmp(argv[i], "-P")) /* is the input a password */ + passwd = 1; + else if (i + 1 == argc) usage(); /* these options take one argument */ else if (!strcmp(argv[i], "-l")) /* number of lines in vertical list */ -- 2.11.0Received on Sat Jun 10 2017 - 18:29:49 CEST
This archive was generated by hypermail 2.3.0 : Sat Jun 10 2017 - 18:36:18 CEST