sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit 206606b32cd6bd9c6d6d83ff02d49b1d3c7e0b18
parent a713686daa0b80bb7273a220d08ad99bcf1dab72
Author: Drew DeVault <sir@cmpwn.com>
Date:   Wed, 25 Nov 2015 18:59:35 -0500

Merge pull request #261 from christophgysin/exec

Call swaybg without invoking a shell
Diffstat:
Msway/config.c | 23++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/sway/config.c b/sway/config.c @@ -334,17 +334,22 @@ void apply_output_config(struct output_config *oc, swayc_t *output) { } sway_log(L_DEBUG, "Setting background for output %d to %s", i, oc->background); - char *cmd = malloc( - strlen("swaybg ") + - (i >= 10 ? 2 : 1) + - strlen(oc->background) + 3 + - strlen(oc->background_option) + 3 + - 1); - sprintf(cmd, "swaybg %d '%s' '%s'", i, oc->background, oc->background_option); + + size_t bufsize = 4; + char output_id[bufsize]; + snprintf(output_id, bufsize, "%d", i); + output_id[bufsize-1] = 0; + + char *const cmd[] = { + "swaybg", + output_id, + oc->background, + oc->background_option, + NULL, + }; if (fork() == 0) { - execl("/bin/sh", "/bin/sh", "-c", cmd, (void *)NULL); + execvp(cmd[0], cmd); } - free(cmd); } }