Warn once when external key combo is used and key-handler not installed
This commit is contained in:
		
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| VERSION = git-20140207 | ||||
| VERSION = git-20140218 | ||||
|  | ||||
| PREFIX    = /usr/local | ||||
| MANPREFIX = $(PREFIX)/share/man | ||||
|   | ||||
							
								
								
									
										18
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								main.c
									
									
									
									
									
								
							| @@ -86,7 +86,10 @@ struct { | ||||
|   bool open; | ||||
| } info; | ||||
|  | ||||
| char * keyhandler; | ||||
| struct { | ||||
| 	char *cmd; | ||||
| 	bool warned; | ||||
| } keyhandler; | ||||
|  | ||||
| timeout_t timeouts[] = { | ||||
| 	{ { 0, 0 }, false, redraw       }, | ||||
| @@ -453,7 +456,14 @@ void run_key_handler(const char *key, unsigned int mask) | ||||
| 	char kstr[32]; | ||||
| 	struct stat oldst, newst; | ||||
|  | ||||
| 	if (keyhandler == NULL || key == NULL) | ||||
| 	if (keyhandler.cmd == NULL) { | ||||
| 		if (!keyhandler.warned) { | ||||
| 			warn("key handler not installed"); | ||||
| 			keyhandler.warned = true; | ||||
| 		} | ||||
| 		return; | ||||
| 	} | ||||
| 	if (key == NULL) | ||||
| 		return; | ||||
|  | ||||
| 	snprintf(kstr, sizeof(kstr), "%s%s%s%s", | ||||
| @@ -464,7 +474,7 @@ void run_key_handler(const char *key, unsigned int mask) | ||||
| 	stat(files[n].path, &oldst); | ||||
|  | ||||
| 	if ((pid = fork()) == 0) { | ||||
| 		execl(keyhandler, keyhandler, kstr, files[n].path, NULL); | ||||
| 		execl(keyhandler.cmd, keyhandler.cmd, kstr, files[n].path, NULL); | ||||
| 		warn("could not exec key handler"); | ||||
| 		exit(EXIT_FAILURE); | ||||
| 	} else if (pid < 0) { | ||||
| @@ -810,7 +820,7 @@ int main(int argc, char **argv) | ||||
| 		dsuffix = "/.config"; | ||||
| 	} | ||||
| 	if (homedir != NULL) { | ||||
| 		char **cmd[] = { &info.cmd, &keyhandler }; | ||||
| 		char **cmd[] = { &info.cmd, &keyhandler.cmd }; | ||||
| 		const char *name[] = { "image-info", "key-handler" }; | ||||
|  | ||||
| 		for (i = 0; i < ARRLEN(cmd); i++) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user