You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.9 KiB

  1. From f6e20c9c6e9b50963caaf5483248d329473a6815 Mon Sep 17 00:00:00 2001
  2. From: Gerrit Renker <Gerrit.Renker@ctl.io>
  3. Date: Mon, 21 Jan 2019 09:23:43 -0700
  4. Subject: [PATCH] Scan screen: resolves #62
  5. ---
  6. iw_if.c | 10 ++++++----
  7. iw_if.h | 2 +-
  8. iw_scan.c | 2 +-
  9. 3 files changed, 8 insertions(+), 6 deletions(-)
  10. diff --git a/iw_if.c b/iw_if.c
  11. index c0b0128..d8bacbc 100644
  12. --- a/iw_if.c
  13. +++ b/iw_if.c
  14. @@ -87,11 +87,13 @@ int if_set_down(const char *ifname)
  15. return if_set_up_or_down(ifname, false);
  16. }
  17. -/** Exit handler to restore interface 'down' state on exit via on_exit(3). */
  18. -void if_set_down_on_exit(int rc, void *arg)
  19. +/** Exit handler to restore interface 'down' state on exit via atexit(3). */
  20. +void if_set_down_on_exit(void)
  21. {
  22. - if (if_set_down(arg) < 0) {
  23. - err_msg("unable to restore %s interface state - set down manually", arg);
  24. + const char *ifname = conf_ifname();
  25. +
  26. + if (ifname && if_set_down(ifname) < 0) {
  27. + err_msg("unable to restore %s interface state - set down manually", ifname);
  28. }
  29. }
  30. diff --git a/iw_if.h b/iw_if.h
  31. index 50f5a47..e2199d3 100644
  32. --- a/iw_if.h
  33. +++ b/iw_if.h
  34. @@ -76,7 +76,7 @@ struct if_info {
  35. };
  36. extern bool if_is_up(const char *ifname);
  37. extern int if_set_up(const char *ifname);
  38. -extern void if_set_down_on_exit(int rc, void *arg);
  39. +extern void if_set_down_on_exit(void);
  40. extern void if_getinf(const char *ifname, struct if_info *info);
  41. /**
  42. diff --git a/iw_scan.c b/iw_scan.c
  43. index 18e9e06..e2b3067 100644
  44. --- a/iw_scan.c
  45. +++ b/iw_scan.c
  46. @@ -430,7 +430,7 @@ void *do_scan(void *sr_ptr)
  47. if (if_set_up(conf_ifname()) < 0)
  48. err_sys("Can not bring up interface '%s'", conf_ifname());
  49. - if (on_exit(if_set_down_on_exit, (void *)conf_ifname()) < 0)
  50. + if (atexit(if_set_down_on_exit) < 0)
  51. snprintf(sr->msg, sizeof(sr->msg), "Warning: unable to restore %s down state on exit", conf_ifname());
  52. break;
  53. }
  54. --
  55. 2.17.1