From f6e20c9c6e9b50963caaf5483248d329473a6815 Mon Sep 17 00:00:00 2001 From: Gerrit Renker Date: Mon, 21 Jan 2019 09:23:43 -0700 Subject: [PATCH] Scan screen: resolves #62 --- iw_if.c | 10 ++++++---- iw_if.h | 2 +- iw_scan.c | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/iw_if.c b/iw_if.c index c0b0128..d8bacbc 100644 --- a/iw_if.c +++ b/iw_if.c @@ -87,11 +87,13 @@ int if_set_down(const char *ifname) return if_set_up_or_down(ifname, false); } -/** Exit handler to restore interface 'down' state on exit via on_exit(3). */ -void if_set_down_on_exit(int rc, void *arg) +/** Exit handler to restore interface 'down' state on exit via atexit(3). */ +void if_set_down_on_exit(void) { - if (if_set_down(arg) < 0) { - err_msg("unable to restore %s interface state - set down manually", arg); + const char *ifname = conf_ifname(); + + if (ifname && if_set_down(ifname) < 0) { + err_msg("unable to restore %s interface state - set down manually", ifname); } } diff --git a/iw_if.h b/iw_if.h index 50f5a47..e2199d3 100644 --- a/iw_if.h +++ b/iw_if.h @@ -76,7 +76,7 @@ struct if_info { }; extern bool if_is_up(const char *ifname); extern int if_set_up(const char *ifname); -extern void if_set_down_on_exit(int rc, void *arg); +extern void if_set_down_on_exit(void); extern void if_getinf(const char *ifname, struct if_info *info); /** diff --git a/iw_scan.c b/iw_scan.c index 18e9e06..e2b3067 100644 --- a/iw_scan.c +++ b/iw_scan.c @@ -430,7 +430,7 @@ void *do_scan(void *sr_ptr) if (if_set_up(conf_ifname()) < 0) err_sys("Can not bring up interface '%s'", conf_ifname()); - if (on_exit(if_set_down_on_exit, (void *)conf_ifname()) < 0) + if (atexit(if_set_down_on_exit) < 0) snprintf(sr->msg, sizeof(sr->msg), "Warning: unable to restore %s down state on exit", conf_ifname()); break; } -- 2.17.1