wmstatus: simplify spawning

MPD and NUT sockets are FD_CLOEXEC already, do the same with Xlib.
This commit is contained in:
Přemysl Eric Janouch 2017-05-06 22:07:14 +02:00
parent 9e437bd921
commit ba8657d8fe
Signed by: p
GPG Key ID: B715679E3A361BE6

View File

@ -1,7 +1,7 @@
/*
* wmstatus.c: simple PulseAudio-enabled status setter for dwm and i3
*
* Copyright (c) 2015 - 2016, Přemysl Janouch <p.janouch@gmail.com>
* Copyright (c) 2015 - 2017, Přemysl Janouch <p.janouch@gmail.com>
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -1210,6 +1210,7 @@ app_context_init (struct app_context *self)
poller_init (&self->poller);
self->api = poller_pa_new (&self->poller);
set_cloexec (ConnectionNumber (self->dpy));
poller_fd_init (&self->x_event, &self->poller,
ConnectionNumber (self->dpy));
@ -2072,17 +2073,11 @@ on_make_context (void *user_data)
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static void
spawn (struct app_context *ctx, char *argv[])
spawn (char *argv[])
{
posix_spawn_file_actions_t actions;
posix_spawn_file_actions_init (&actions);
posix_spawn_file_actions_addclose (&actions, ConnectionNumber (ctx->dpy));
if (ctx->mpd_client.socket != -1)
posix_spawn_file_actions_addclose (&actions, ctx->mpd_client.socket);
if (ctx->nut_client.socket != -1)
posix_spawn_file_actions_addclose (&actions, ctx->nut_client.socket);
// That would mess up our JSON
posix_spawn_file_actions_addopen
(&actions, STDOUT_FILENO, "/dev/null", O_WRONLY, 0);
@ -2190,29 +2185,32 @@ on_volume_set (struct app_context *ctx, int arg)
static void
on_lock (struct app_context *ctx, int arg)
{
(void) ctx;
(void) arg;
// One of these will work
char *argv_gdm[] = { "gdm-switch-user", NULL };
spawn (ctx, argv_gdm);
spawn (argv_gdm);
char *argv_ldm[] = { "dm-tool", "lock", NULL };
spawn (ctx, argv_ldm);
spawn (argv_ldm);
}
static void
on_input_switch (struct app_context *ctx, int arg)
{
(void) ctx;
char *values[] = { "vga", "dvi", "dp", "hdmi" };
char *argv[] = { "input-switch", values[arg], NULL };
spawn (ctx, argv);
spawn (argv);
}
static void
on_brightness (struct app_context *ctx, int arg)
{
(void) ctx;
char *value = xstrdup_printf ("%d", arg);
char *argv[] = { "brightness", value, NULL };
spawn (ctx, argv);
spawn (argv);
free (value);
}