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:
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);
}
}