nsxiv653a6ee
Warn once when external key combo is used and key-handler not installed
+15 −5
2 files changed
| @@ -1,4 +1,4 @@ | |||
| 1 | − | VERSION = git-20140207 | |
| 1 | + | VERSION = git-20140218 | |
| 2 | 2 | ||
| 3 | 3 | PREFIX = /usr/local | |
| 4 | 4 | MANPREFIX = $(PREFIX)/share/man | |
| @@ -86,7 +86,10 @@ struct { | |||
| 86 | 86 | bool open; | |
| 87 | 87 | } info; | |
| 88 | 88 | ||
| 89 | − | char * keyhandler; | |
| 89 | + | struct { | |
| 90 | + | char *cmd; | |
| 91 | + | bool warned; | |
| 92 | + | } keyhandler; | |
| 90 | 93 | ||
| 91 | 94 | timeout_t timeouts[] = { | |
| 92 | 95 | { { 0, 0 }, false, redraw }, | |
| @@ -453,7 +456,14 @@ void run_key_handler(const char *key, unsigned int mask) | |||
| 453 | 456 | char kstr[32]; | |
| 454 | 457 | struct stat oldst, newst; | |
| 455 | 458 | ||
| 456 | − | if (keyhandler == NULL || key == NULL) | |
| 459 | + | if (keyhandler.cmd == NULL) { | |
| 460 | + | if (!keyhandler.warned) { | |
| 461 | + | warn("key handler not installed"); | |
| 462 | + | keyhandler.warned = true; | |
| 463 | + | } | |
| 464 | + | return; | |
| 465 | + | } | |
| 466 | + | if (key == NULL) | |
| 457 | 467 | return; | |
| 458 | 468 | ||
| 459 | 469 | snprintf(kstr, sizeof(kstr), "%s%s%s%s", | |
| @@ -464,7 +474,7 @@ void run_key_handler(const char *key, unsigned int mask) | |||
| 464 | 474 | stat(files[n].path, &oldst); | |
| 465 | 475 | ||
| 466 | 476 | if ((pid = fork()) == 0) { | |
| 467 | − | execl(keyhandler, keyhandler, kstr, files[n].path, NULL); | |
| 477 | + | execl(keyhandler.cmd, keyhandler.cmd, kstr, files[n].path, NULL); | |
| 468 | 478 | warn("could not exec key handler"); | |
| 469 | 479 | exit(EXIT_FAILURE); | |
| 470 | 480 | } else if (pid < 0) { | |
| @@ -810,7 +820,7 @@ int main(int argc, char **argv) | |||
| 810 | 820 | dsuffix = "/.config"; | |
| 811 | 821 | } | |
| 812 | 822 | if (homedir != NULL) { | |
| 813 | − | char **cmd[] = { &info.cmd, &keyhandler }; | |
| 823 | + | char **cmd[] = { &info.cmd, &keyhandler.cmd }; | |
| 814 | 824 | const char *name[] = { "image-info", "key-handler" }; | |
| 815 | 825 | ||
| 816 | 826 | for (i = 0; i < ARRLEN(cmd); i++) { | |