mirror of
https://github.com/albfan/miraclecast.git
synced 2025-03-09 23:38:56 +00:00
Update to new libsystemd API
The upstream API changed (isn't released, yet!). Update our code to use the new systemd-211 API. Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
This commit is contained in:
parent
3bd83f1572
commit
06be8854c5
7 changed files with 135 additions and 49 deletions
|
@ -128,4 +128,90 @@ static inline int64_t now(clockid_t clock_id)
|
||||||
(int64_t)ts.tv_nsec / 1000LL;
|
(int64_t)ts.tv_nsec / 1000LL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline char hexchar(int x)
|
||||||
|
{
|
||||||
|
static const char table[16] = "0123456789abcdef";
|
||||||
|
return table[x & 15];
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int unhexchar(char c)
|
||||||
|
{
|
||||||
|
if (c >= '0' && c <= '9')
|
||||||
|
return c - '0';
|
||||||
|
|
||||||
|
if (c >= 'a' && c <= 'f')
|
||||||
|
return c - 'a' + 10;
|
||||||
|
|
||||||
|
if (c >= 'A' && c <= 'F')
|
||||||
|
return c - 'A' + 10;
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline char *bus_label_escape(const char *s)
|
||||||
|
{
|
||||||
|
char *r, *t;
|
||||||
|
const char *f;
|
||||||
|
|
||||||
|
if (*s == 0)
|
||||||
|
return strdup("_");
|
||||||
|
|
||||||
|
r = calloc(sizeof(char), strlen(s)*3 + 1);
|
||||||
|
if (!r)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
for (f = s, t = r; *f; f++) {
|
||||||
|
|
||||||
|
/* Escape everything that is not a-zA-Z0-9. We also
|
||||||
|
* escape 0-9 if it's the first character */
|
||||||
|
|
||||||
|
if (!(*f >= 'A' && *f <= 'Z') &&
|
||||||
|
!(*f >= 'a' && *f <= 'z') &&
|
||||||
|
!(f > s && *f >= '0' && *f <= '9')) {
|
||||||
|
*(t++) = '_';
|
||||||
|
*(t++) = hexchar(*f >> 4);
|
||||||
|
*(t++) = hexchar(*f);
|
||||||
|
} else
|
||||||
|
*(t++) = *f;
|
||||||
|
}
|
||||||
|
|
||||||
|
*t = 0;
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline char *bus_label_unescape(const char *f)
|
||||||
|
{
|
||||||
|
char *r, *t;
|
||||||
|
|
||||||
|
/* Special case for the empty string */
|
||||||
|
if (!strcmp(f, "_"))
|
||||||
|
return strdup("");
|
||||||
|
|
||||||
|
r = calloc(sizeof(char), strlen(f) + 1);
|
||||||
|
if (!r)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
for (t = r; *f; f++) {
|
||||||
|
|
||||||
|
if (*f == '_') {
|
||||||
|
int a, b;
|
||||||
|
|
||||||
|
if ((a = unhexchar(f[1])) < 0 ||
|
||||||
|
(b = unhexchar(f[2])) < 0) {
|
||||||
|
/* Invalid escape code, let's take it literal then */
|
||||||
|
*(t++) = '_';
|
||||||
|
} else {
|
||||||
|
*(t++) = (char) ((a << 4) | b);
|
||||||
|
f += 2;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
*(t++) = *f;
|
||||||
|
}
|
||||||
|
|
||||||
|
*t = 0;
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* MIRACLE_H */
|
#endif /* MIRACLE_H */
|
||||||
|
|
|
@ -404,10 +404,10 @@ static int cli_init(void)
|
||||||
sigprocmask(SIG_BLOCK, &mask, NULL);
|
sigprocmask(SIG_BLOCK, &mask, NULL);
|
||||||
|
|
||||||
r = sd_event_add_signal(cli_event,
|
r = sd_event_add_signal(cli_event,
|
||||||
|
&cli_sigs[i],
|
||||||
sigs[i],
|
sigs[i],
|
||||||
cli_signal_fn,
|
cli_signal_fn,
|
||||||
NULL,
|
NULL);
|
||||||
&cli_sigs[i]);
|
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
cli_vERR(r);
|
cli_vERR(r);
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -415,11 +415,11 @@ static int cli_init(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
r = sd_event_add_io(cli_event,
|
r = sd_event_add_io(cli_event,
|
||||||
|
&cli_stdin,
|
||||||
fileno(stdin),
|
fileno(stdin),
|
||||||
EPOLLHUP | EPOLLERR | EPOLLIN,
|
EPOLLHUP | EPOLLERR | EPOLLIN,
|
||||||
cli_stdin_fn,
|
cli_stdin_fn,
|
||||||
NULL,
|
NULL);
|
||||||
&cli_stdin);
|
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
cli_vERR(r);
|
cli_vERR(r);
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -559,7 +559,7 @@ static int cmd_list_links(sd_bus_message *m)
|
||||||
}
|
}
|
||||||
|
|
||||||
free(link);
|
free(link);
|
||||||
link = sd_bus_label_unescape(obj);
|
link = bus_label_unescape(obj);
|
||||||
if (!link)
|
if (!link)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -634,7 +634,7 @@ static int cmd_list_peer(sd_bus_message *m,
|
||||||
"/org/freedesktop/miracle/link/");
|
"/org/freedesktop/miracle/link/");
|
||||||
if (obj) {
|
if (obj) {
|
||||||
free(link);
|
free(link);
|
||||||
link = sd_bus_label_unescape(obj);
|
link = bus_label_unescape(obj);
|
||||||
if (!link)
|
if (!link)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
}
|
}
|
||||||
|
@ -717,7 +717,7 @@ static int cmd_list_peers(sd_bus_message *m, const char *link_filter)
|
||||||
}
|
}
|
||||||
|
|
||||||
free(peer);
|
free(peer);
|
||||||
peer = sd_bus_label_unescape(obj);
|
peer = bus_label_unescape(obj);
|
||||||
if (!peer)
|
if (!peer)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -806,7 +806,7 @@ static int cmd_select(char **args, unsigned int n)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
name = sd_bus_label_escape(args[0]);
|
name = bus_label_escape(args[0]);
|
||||||
if (!name)
|
if (!name)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -855,7 +855,7 @@ static int cmd_show_link(char **args, unsigned int n)
|
||||||
else if (!(arg_link = selected_link))
|
else if (!(arg_link = selected_link))
|
||||||
return log_error("no link selected"), -EINVAL;
|
return log_error("no link selected"), -EINVAL;
|
||||||
|
|
||||||
name = sd_bus_label_escape(arg_link);
|
name = bus_label_escape(arg_link);
|
||||||
if (!name)
|
if (!name)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -955,7 +955,7 @@ static int cmd_show_peer(char **args, unsigned int n)
|
||||||
const char *t;
|
const char *t;
|
||||||
int r, is_connected = false;
|
int r, is_connected = false;
|
||||||
|
|
||||||
name = sd_bus_label_escape(args[0]);
|
name = bus_label_escape(args[0]);
|
||||||
if (!name)
|
if (!name)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -995,7 +995,7 @@ static int cmd_show_peer(char **args, unsigned int n)
|
||||||
"/org/freedesktop/miracle/link/");
|
"/org/freedesktop/miracle/link/");
|
||||||
if (t) {
|
if (t) {
|
||||||
free(link);
|
free(link);
|
||||||
link = sd_bus_label_unescape(t);
|
link = bus_label_unescape(t);
|
||||||
if (!link)
|
if (!link)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
}
|
}
|
||||||
|
@ -1115,7 +1115,7 @@ static int cmd_add_link(char **args, unsigned int n)
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return cli_log_parser(r);
|
return cli_log_parser(r);
|
||||||
|
|
||||||
link = sd_bus_label_unescape(name);
|
link = bus_label_unescape(name);
|
||||||
if (!link)
|
if (!link)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1171,7 +1171,7 @@ static int cmd_set_link_name(char **args, unsigned int n)
|
||||||
arg_name = args[0];
|
arg_name = args[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
name = sd_bus_label_escape(arg_link);
|
name = bus_label_escape(arg_link);
|
||||||
if (!name)
|
if (!name)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1180,11 +1180,11 @@ static int cmd_set_link_name(char **args, unsigned int n)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
r = sd_bus_message_new_method_call(bus,
|
r = sd_bus_message_new_method_call(bus,
|
||||||
|
&m,
|
||||||
"org.freedesktop.miracle",
|
"org.freedesktop.miracle",
|
||||||
path,
|
path,
|
||||||
"org.freedesktop.DBus.Properties",
|
"org.freedesktop.DBus.Properties",
|
||||||
"Set",
|
"Set");
|
||||||
&m);
|
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_bus_create(r);
|
return log_bus_create(r);
|
||||||
|
|
||||||
|
@ -1233,7 +1233,7 @@ static int cmd_start_scan(char **args, unsigned int n)
|
||||||
else if (!(arg_link = selected_link))
|
else if (!(arg_link = selected_link))
|
||||||
return log_error("no link selected"), -EINVAL;
|
return log_error("no link selected"), -EINVAL;
|
||||||
|
|
||||||
name = sd_bus_label_escape(arg_link);
|
name = bus_label_escape(arg_link);
|
||||||
if (!name)
|
if (!name)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1275,7 +1275,7 @@ static int cmd_stop_scan(char **args, unsigned int n)
|
||||||
else if (!(arg_link = selected_link))
|
else if (!(arg_link = selected_link))
|
||||||
return log_error("no link selected"), -EINVAL;
|
return log_error("no link selected"), -EINVAL;
|
||||||
|
|
||||||
name = sd_bus_label_escape(arg_link);
|
name = bus_label_escape(arg_link);
|
||||||
if (!name)
|
if (!name)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1316,7 +1316,7 @@ static int cmd_scan_stop(bool async)
|
||||||
if (!scan_link)
|
if (!scan_link)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
name = sd_bus_label_escape(scan_link);
|
name = bus_label_escape(scan_link);
|
||||||
if (!name)
|
if (!name)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1390,7 +1390,7 @@ static int cmd_scan(char **args, unsigned int n)
|
||||||
else if (!(arg_link = selected_link))
|
else if (!(arg_link = selected_link))
|
||||||
return log_error("no link selected"), -EINVAL;
|
return log_error("no link selected"), -EINVAL;
|
||||||
|
|
||||||
name = sd_bus_label_escape(arg_link);
|
name = bus_label_escape(arg_link);
|
||||||
if (!name)
|
if (!name)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1436,7 +1436,7 @@ static int cmd_allow(char **args, unsigned int n)
|
||||||
if (n > 1)
|
if (n > 1)
|
||||||
pin = args[1];
|
pin = args[1];
|
||||||
|
|
||||||
name = sd_bus_label_escape(args[0]);
|
name = bus_label_escape(args[0]);
|
||||||
if (!name)
|
if (!name)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1473,7 +1473,7 @@ static int cmd_reject(char **args, unsigned int n)
|
||||||
_shl_cleanup_free_ char *name = NULL, *path = NULL;
|
_shl_cleanup_free_ char *name = NULL, *path = NULL;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
name = sd_bus_label_escape(args[0]);
|
name = bus_label_escape(args[0]);
|
||||||
if (!name)
|
if (!name)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1515,7 +1515,7 @@ static int cmd_connect(char **args, unsigned int n)
|
||||||
prov = (n > 1) ? args[1] : "";
|
prov = (n > 1) ? args[1] : "";
|
||||||
pin = (n > 2) ? args[2] : "";
|
pin = (n > 2) ? args[2] : "";
|
||||||
|
|
||||||
name = sd_bus_label_escape(peer);
|
name = bus_label_escape(peer);
|
||||||
if (!name)
|
if (!name)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1552,7 +1552,7 @@ static int cmd_disconnect(char **args, unsigned int n)
|
||||||
_shl_cleanup_free_ char *name = NULL, *path = NULL;
|
_shl_cleanup_free_ char *name = NULL, *path = NULL;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
name = sd_bus_label_escape(args[0]);
|
name = bus_label_escape(args[0]);
|
||||||
if (!name)
|
if (!name)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1602,7 +1602,7 @@ static int filters_show_peer(const char *peer)
|
||||||
const char *t;
|
const char *t;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
name = sd_bus_label_escape(peer);
|
name = bus_label_escape(peer);
|
||||||
if (!name)
|
if (!name)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1642,7 +1642,7 @@ static int filters_show_peer(const char *peer)
|
||||||
"/org/freedesktop/miracle/link/");
|
"/org/freedesktop/miracle/link/");
|
||||||
if (t) {
|
if (t) {
|
||||||
free(link);
|
free(link);
|
||||||
link = sd_bus_label_unescape(t);
|
link = bus_label_unescape(t);
|
||||||
if (!link)
|
if (!link)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
}
|
}
|
||||||
|
@ -1686,7 +1686,7 @@ static int filters_show_link(const char *link)
|
||||||
const char *t;
|
const char *t;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
name = sd_bus_label_escape(link);
|
name = bus_label_escape(link);
|
||||||
if (!name)
|
if (!name)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1767,7 +1767,7 @@ static int filters_object_fn(sd_bus *bus,
|
||||||
|
|
||||||
t = shl_startswith(obj, "/org/freedesktop/miracle/peer/");
|
t = shl_startswith(obj, "/org/freedesktop/miracle/peer/");
|
||||||
if (t) {
|
if (t) {
|
||||||
peer = sd_bus_label_unescape(t);
|
peer = bus_label_unescape(t);
|
||||||
if (!peer)
|
if (!peer)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1783,7 +1783,7 @@ static int filters_object_fn(sd_bus *bus,
|
||||||
|
|
||||||
t = shl_startswith(obj, "/org/freedesktop/miracle/link/");
|
t = shl_startswith(obj, "/org/freedesktop/miracle/link/");
|
||||||
if (t) {
|
if (t) {
|
||||||
link = sd_bus_label_unescape(t);
|
link = bus_label_unescape(t);
|
||||||
if (!link)
|
if (!link)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1861,14 +1861,14 @@ static int filters_props_fn(sd_bus *bus,
|
||||||
path = sd_bus_message_get_path(m);
|
path = sd_bus_message_get_path(m);
|
||||||
t = shl_startswith(path, "/org/freedesktop/miracle/peer/");
|
t = shl_startswith(path, "/org/freedesktop/miracle/peer/");
|
||||||
if (t) {
|
if (t) {
|
||||||
peer = sd_bus_label_unescape(t);
|
peer = bus_label_unescape(t);
|
||||||
if (!peer)
|
if (!peer)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
}
|
}
|
||||||
|
|
||||||
t = shl_startswith(path, "/org/freedesktop/miracle/link/");
|
t = shl_startswith(path, "/org/freedesktop/miracle/link/");
|
||||||
if (t) {
|
if (t) {
|
||||||
link = sd_bus_label_unescape(t);
|
link = bus_label_unescape(t);
|
||||||
if (!link)
|
if (!link)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
}
|
}
|
||||||
|
@ -1928,7 +1928,7 @@ static int filters_peer_fn(sd_bus *bus,
|
||||||
if (!path)
|
if (!path)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
peer = sd_bus_label_unescape(path);
|
peer = bus_label_unescape(path);
|
||||||
if (!peer)
|
if (!peer)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
@ -1969,7 +1969,7 @@ static int filters_link_fn(sd_bus *bus,
|
||||||
if (!path)
|
if (!path)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
link = sd_bus_label_unescape(path);
|
link = bus_label_unescape(path);
|
||||||
if (!link)
|
if (!link)
|
||||||
return cli_ENOMEM();
|
return cli_ENOMEM();
|
||||||
|
|
||||||
|
|
|
@ -685,7 +685,7 @@ static int manager_dbus_remove_link(sd_bus *bus, sd_bus_message *msg,
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
link = sd_bus_label_escape(name);
|
link = bus_label_escape(name);
|
||||||
if (!link)
|
if (!link)
|
||||||
return log_ENOMEM();
|
return log_ENOMEM();
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,7 @@ int link_make_name(unsigned int type, const char *interface, char **out)
|
||||||
if (!name)
|
if (!name)
|
||||||
return log_ENOMEM();
|
return log_ENOMEM();
|
||||||
|
|
||||||
res = sd_bus_label_escape(name);
|
res = bus_label_escape(name);
|
||||||
free(name);
|
free(name);
|
||||||
if (!res)
|
if (!res)
|
||||||
return log_ENOMEM();
|
return log_ENOMEM();
|
||||||
|
@ -236,20 +236,20 @@ static int link_wifi_init(struct link *l)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
r = sd_event_add_child(l->m->event,
|
r = sd_event_add_child(l->m->event,
|
||||||
|
&l->wpa_child_source,
|
||||||
wifi_get_supplicant_pid(l->w),
|
wifi_get_supplicant_pid(l->w),
|
||||||
WEXITED,
|
WEXITED,
|
||||||
link_wifi_child_fn,
|
link_wifi_child_fn,
|
||||||
l,
|
l);
|
||||||
&l->wpa_child_source);
|
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
r = sd_event_add_monotonic(l->m->event,
|
r = sd_event_add_monotonic(l->m->event,
|
||||||
|
&l->wpa_startup_source,
|
||||||
now(CLOCK_MONOTONIC) + 200 * 1000,
|
now(CLOCK_MONOTONIC) + 200 * 1000,
|
||||||
0,
|
0,
|
||||||
link_wifi_startup_fn,
|
link_wifi_startup_fn,
|
||||||
l,
|
l);
|
||||||
&l->wpa_startup_source);
|
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ int peer_make_name(unsigned int id, char **out)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf) - 1, "%u", id);
|
snprintf(buf, sizeof(buf) - 1, "%u", id);
|
||||||
name = sd_bus_label_escape(buf);
|
name = bus_label_escape(buf);
|
||||||
if (!name)
|
if (!name)
|
||||||
return log_ENOMEM();
|
return log_ENOMEM();
|
||||||
|
|
||||||
|
|
|
@ -766,11 +766,11 @@ int wifi_new(sd_event *event, wifi_event_t event_fn, void *data,
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
r = sd_event_add_io(w->event,
|
r = sd_event_add_io(w->event,
|
||||||
|
&w->wpa_source,
|
||||||
wfd_wpa_ctrl_get_fd(w->wpa),
|
wfd_wpa_ctrl_get_fd(w->wpa),
|
||||||
EPOLLHUP | EPOLLERR | EPOLLIN,
|
EPOLLHUP | EPOLLERR | EPOLLIN,
|
||||||
wifi_wpa_fd_fn,
|
wifi_wpa_fd_fn,
|
||||||
w,
|
w);
|
||||||
&w->wpa_source);
|
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_vERR(r);
|
log_vERR(r);
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -1335,22 +1335,22 @@ static int wifi_dev_start(struct wifi_dev *d, const char *ifname,
|
||||||
}
|
}
|
||||||
|
|
||||||
r = sd_event_add_io(d->w->event,
|
r = sd_event_add_io(d->w->event,
|
||||||
|
&d->dhcp_comm_source,
|
||||||
d->dhcp_comm,
|
d->dhcp_comm,
|
||||||
EPOLLHUP | EPOLLERR | EPOLLIN,
|
EPOLLHUP | EPOLLERR | EPOLLIN,
|
||||||
wifi_dev_comm_fn,
|
wifi_dev_comm_fn,
|
||||||
d,
|
d);
|
||||||
&d->dhcp_comm_source);
|
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_vERR(r);
|
log_vERR(r);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = sd_event_add_child(d->w->event,
|
r = sd_event_add_child(d->w->event,
|
||||||
|
&d->dhcp_pid_source,
|
||||||
d->dhcp_pid,
|
d->dhcp_pid,
|
||||||
WEXITED,
|
WEXITED,
|
||||||
wifi_dev_pid_fn,
|
wifi_dev_pid_fn,
|
||||||
d,
|
d);
|
||||||
&d->dhcp_pid_source);
|
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_vERR(r);
|
log_vERR(r);
|
||||||
goto error;
|
goto error;
|
||||||
|
|
|
@ -248,10 +248,10 @@ static int manager_new(struct manager **out)
|
||||||
sigprocmask(SIG_BLOCK, &mask, NULL);
|
sigprocmask(SIG_BLOCK, &mask, NULL);
|
||||||
|
|
||||||
r = sd_event_add_signal(m->event,
|
r = sd_event_add_signal(m->event,
|
||||||
|
&m->sigs[i],
|
||||||
sigs[i],
|
sigs[i],
|
||||||
manager_signal_fn,
|
manager_signal_fn,
|
||||||
m,
|
m);
|
||||||
&m->sigs[i]);
|
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_vERR(r);
|
log_vERR(r);
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -285,11 +285,11 @@ static int manager_new(struct manager **out)
|
||||||
}
|
}
|
||||||
|
|
||||||
r = sd_event_add_io(m->event,
|
r = sd_event_add_io(m->event,
|
||||||
|
&m->udev_mon_source,
|
||||||
udev_monitor_get_fd(m->udev_mon),
|
udev_monitor_get_fd(m->udev_mon),
|
||||||
EPOLLHUP | EPOLLERR | EPOLLIN,
|
EPOLLHUP | EPOLLERR | EPOLLIN,
|
||||||
manager_udev_fn,
|
manager_udev_fn,
|
||||||
m,
|
m);
|
||||||
&m->udev_mon_source);
|
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_vERR(r);
|
log_vERR(r);
|
||||||
goto error;
|
goto error;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue