| From f6e20c9c6e9b50963caaf5483248d329473a6815 Mon Sep 17 00:00:00 2001 |
| From: Gerrit Renker <Gerrit.Renker@ctl.io> |
| Date: Mon, 21 Jan 2019 09:23:43 -0700 |
| Subject: [PATCH] Drop on_exit(), use standard atexit() instead |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| `on_exit()` is a GLIBC specific extension and not available in musl and uClibc. |
| |
| Portable applications should avoid this function, and use the standard |
| `atexit()` instead. |
| |
| Backported from:f6e20c9c6e9b50963caaf5483248d329473a6815 |
| |
| Signed-off-by: Jรถrg Krause <joerg.krause@embedded.rocks> |
| --- |
| 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.20.1 |
| |