From 3df6eb689ece68c3ada07a4e266d2b695dbb23d7 Mon Sep 17 00:00:00 2001 From: sabetts Date: Sat, 5 Mar 2005 18:22:47 +0000 Subject: * src/ratpoison.h (check_child_procs): new prototype (chld_handler): likewise (set_sig_handler): likewise * src/main.c (check_child_procs): new function (chld_handler): call check_child_procs (free_screen): unselect all events on the root window. * src/actions.c: include signal.h (spawn): don't prefix the command with exec. (set_wingravity): print the setting as a string. (set_transgravity): likewise (set_maxsizegravity): likewise (set_bargravity): likewise (set_font): likewise (set_winfmt): likewise (set_fgcolor): likewise (set_bgcolor): likewise (set_framesels): likewise (cmd_tmpwm): ungrab the keys for all windows before spawning the new wm. (cmd_tmpwm): disable the sigchld handler then enabled it after the wm returns. call check_child_procs. --- src/actions.c | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) (limited to 'src/actions.c') diff --git a/src/actions.c b/src/actions.c index 67d1289..8f016fe 100644 --- a/src/actions.c +++ b/src/actions.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "ratpoison.h" @@ -2405,7 +2406,6 @@ cmd_exec (int interactive, struct cmdarg **args) int spawn(char *cmd) { - char *tmp; rp_child_info *child; int pid; @@ -2423,9 +2423,7 @@ spawn(char *cmd) #elif defined (HAVE_SETPGRP) setpgrp (0, 0); #endif - /* Prepend with exec to avoid excess /bin/sh's. */ - tmp = xsprintf ("exec %s", cmd); - execl("/bin/sh", "sh", "-c", tmp, 0); + execl("/bin/sh", "sh", "-c", cmd, 0); _exit(EXIT_FAILURE); } @@ -3290,7 +3288,7 @@ static cmdret * set_wingravity (struct cmdarg **args) { if (args[0] == NULL) - return cmdret_new (RET_SUCCESS, wingravity_to_string (defaults.win_gravity)); + return cmdret_new (RET_SUCCESS, "%s", wingravity_to_string (defaults.win_gravity)); defaults.win_gravity = ARG(0,gravity); @@ -3301,7 +3299,7 @@ static cmdret * set_transgravity (struct cmdarg **args) { if (args[0] == NULL) - return cmdret_new (RET_SUCCESS, wingravity_to_string (defaults.trans_gravity)); + return cmdret_new (RET_SUCCESS, "%s", wingravity_to_string (defaults.trans_gravity)); defaults.trans_gravity = ARG(0,gravity); @@ -3312,7 +3310,7 @@ static cmdret * set_maxsizegravity (struct cmdarg **args) { if (args[0] == NULL) - return cmdret_new (RET_SUCCESS, wingravity_to_string (defaults.maxsize_gravity)); + return cmdret_new (RET_SUCCESS, "%s", wingravity_to_string (defaults.maxsize_gravity)); defaults.maxsize_gravity = ARG(0,gravity); @@ -3340,7 +3338,7 @@ static cmdret * set_bargravity (struct cmdarg **args) { if (args[0] == NULL) - return cmdret_new (RET_SUCCESS, wingravity_to_string (defaults.bar_location)); + return cmdret_new (RET_SUCCESS, "%s", wingravity_to_string (defaults.bar_location)); defaults.bar_location = ARG(0,gravity); @@ -3382,7 +3380,7 @@ set_font (struct cmdarg **args) XFontStruct *font; if (args[0] == NULL) - return cmdret_new (RET_SUCCESS, defaults.font_string); + return cmdret_new (RET_SUCCESS, "%s", defaults.font_string); font = XLoadQueryFont (dpy, ARG_STRING(0)); if (font == NULL) @@ -3535,7 +3533,7 @@ static cmdret * set_winfmt (struct cmdarg **args) { if (args[0] == NULL) - return cmdret_new (RET_SUCCESS, defaults.window_fmt); + return cmdret_new (RET_SUCCESS, "%s", defaults.window_fmt); free (defaults.window_fmt); defaults.window_fmt = xstrdup (ARG_STRING(0)); @@ -3585,7 +3583,7 @@ set_fgcolor (struct cmdarg **args) XColor color, junk; if (args[0] == NULL) - return cmdret_new (RET_SUCCESS, defaults.fgcolor_string); + return cmdret_new (RET_SUCCESS, "%s", defaults.fgcolor_string); for (i=0; i