Merge pull request #482 from bebehei/execvp-errorhandler

Handle execvp error in open_browser
This commit is contained in:
Nikos Tsipinakis 2018-01-15 17:30:27 +02:00 committed by GitHub
commit d25404d590
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -115,10 +115,15 @@ void open_browser(const char *in)
if (browser_pid2) { if (browser_pid2) {
exit(0); exit(0);
} else { } else {
char *browser_cmd = char *browser_cmd = g_strconcat(settings.browser, " ", url, NULL);
string_append(settings.browser, url, " ");
char **cmd = g_strsplit(browser_cmd, " ", 0); char **cmd = g_strsplit(browser_cmd, " ", 0);
execvp(cmd[0], cmd); execvp(cmd[0], cmd);
// execvp won't return if it's successful
// so, if we're here, it's definitely an error
fprintf(stderr, "Warning: failed to execute '%s': %s\n",
settings.browser,
strerror(errno));
exit(EXIT_FAILURE);
} }
} }
} }
@ -238,6 +243,10 @@ void context_menu(void)
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
execvp(settings.dmenu_cmd[0], settings.dmenu_cmd); execvp(settings.dmenu_cmd[0], settings.dmenu_cmd);
fprintf(stderr, "Warning: failed to execute '%s': %s\n",
settings.dmenu,
strerror(errno));
exit(EXIT_FAILURE);
} else { } else {
close(child_io[0]); close(child_io[0]);
close(parent_io[1]); close(parent_io[1]);