diff options
author | Connor Lane Smith <cls@lubutu.com> | 2011-05-15 13:02:33 +0100 |
---|---|---|
committer | Connor Lane Smith <cls@lubutu.com> | 2011-05-15 13:02:33 +0100 |
commit | f5bd1eed8d746414f5fbf9645124ccd54a095386 (patch) | |
tree | e92216858989ac8bb7c4fd91945bc56e16b5dcd2 | |
parent | 1654d6cd6269bc784ee99045edd89e4bda24149f (diff) | |
download | dmenu-f5bd1eed8d746414f5fbf9645124ccd54a095386.tar.gz dmenu-f5bd1eed8d746414f5fbf9645124ccd54a095386.tar.bz2 dmenu-f5bd1eed8d746414f5fbf9645124ccd54a095386.zip |
fast but inexact
-rw-r--r-- | dmenu.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -444,19 +444,22 @@ paste(void) { void readstdin(void) { - char buf[sizeof text], *p; - size_t i, size = 0; + 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) { - if(i+1 == size / sizeof *items || !items) + if(i+1 >= size / sizeof *items) if(!(items = realloc(items, (size += BUFSIZ)))) eprintf("cannot realloc %u bytes:", size); if((p = strchr(buf, '\n'))) *p = '\0'; if(!(items[i].text = strdup(buf))) eprintf("cannot strdup %u bytes:", strlen(buf)+1); - inputw = MAX(inputw, textw(dc, items[i].text)); + if(strlen(items[i].text) > max) + max = strlen(maxstr = items[i].text); } + if(maxstr) + inputw = textw(dc, maxstr); } void |