[packages] wavemon: update to 0.7.3, remove obsolete patches, use PKG_INSTALL & MAKE_...
authorStephen Walker <stephendwalker@gmail.com>
Sat, 14 Jan 2012 02:00:22 +0000 (02:00 +0000)
committerStephen Walker <stephendwalker@gmail.com>
Sat, 14 Jan 2012 02:00:22 +0000 (02:00 +0000)
SVN-Revision: 29740

net/wavemon/Makefile
net/wavemon/patches/000-upstream-config_menu.patch [deleted file]
net/wavemon/patches/000-upstream-negative.patch [deleted file]
net/wavemon/patches/000-upstream-terminate.patch [deleted file]
net/wavemon/patches/000-upstream-wrapper.patch [deleted file]

index 192b4aca4db65c2e20b5602f480a72f6e3706c5f..14b099b39d661166b217f5efd64f027888c5021b 100644 (file)
@@ -1,5 +1,5 @@
-# 
-# Copyright (C) 2008 OpenWrt.org
+#
+# Copyright (C) 2008-2012 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,12 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=wavemon
-PKG_VERSION:=0.7.2
+PKG_VERSION:=0.7.3
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://eden-feed.erg.abdn.ac.uk/wavemon/stable-releases
-PKG_MD5SUM:=0dec700364df7bfb2e066624d0acf7bb
+PKG_MD5SUM:=a96bad0359592ac56532067002b9e862
+
+PKG_INSTALL:=1
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -21,29 +23,24 @@ define Package/wavemon
   SECTION:=net
   CATEGORY:=Network
   TITLE:=N-curses based wireless network devices monitor
-  DEPENDS:= +libncurses
+  DEPENDS:=+libncurses
   SUBMENU:=wireless
   URL:=http://eden-feed.erg.abdn.ac.uk/wavemon/
 endef
 
 define Package/wavemon/description
-  wavemon is a ncurses-based monitoring application for wireless network 
-  devices. It currently works under Linux with devices that are supported 
-  by the wireless extensions by Jean Tourrilhes (included in Kernel 2.4 
-  and higher), e.g. the Lucent Orinoco cards. 
+  wavemon is a ncurses-based monitoring application for wireless network
+  devices. It currently works under Linux with devices that are supported
+  by the wireless extensions by Jean Tourrilhes (included in Kernel 2.4
+  and higher), e.g. the Lucent Orinoco cards.
 endef
 
-define Build/Compile
-       $(MAKE) -C $(PKG_BUILD_DIR) \
-               $(TARGET_CONFIGURE_OPTS) \
-               CFLAGS="$(TARGET_CFLAGS) -L${STAGING_DIR}/usr/lib -I${STAGING_DIR}/usr/include" \
-               DESTDIR="$(PKG_INSTALL_DIR)" \
-               all
-endef
+MAKE_FLAGS += \
+       CFLAGS="$(TARGET_CFLAGS) -L$(STAGING_DIR)/usr/lib -I$(STAGING_DIR)/usr/include"
 
 define Package/wavemon/install
-        $(INSTALL_DIR) $(1)/usr/bin
-       $(CP) $(PKG_BUILD_DIR)/wavemon $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/wavemon $(1)/usr/bin/
 endef
 
 $(eval $(call BuildPackage,wavemon))
diff --git a/net/wavemon/patches/000-upstream-config_menu.patch b/net/wavemon/patches/000-upstream-config_menu.patch
deleted file mode 100644 (file)
index 38b9d05..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-From: Gerrit Renker <gerrit@erg.abdn.ac.uk>
-Date: Sat, 12 Mar 2011 19:32:56 +0000 (+0100)
-Subject: Configuration screen: memorize last active line
-X-Git-Url: http://eden-feed.erg.abdn.ac.uk/cgi-bin/gitweb.cgi?p=wavemon.git;a=commitdiff_plain;h=094538edab8a590ffb14af2101725563d2453104
-
-Configuration screen: memorize last active line
-
-This fixes a bug in the configuration menu - the last active line was not
-reset properly when switching back from another window. Changed it in such
-a way that it now memorizes the last active position, which is handy when
-trying out different values for a given parameter.
----
-
-diff --git a/conf_scr.c b/conf_scr.c
-index b9aba23..a338771 100644
---- a/conf_scr.c
-+++ b/conf_scr.c
-@@ -165,9 +165,11 @@ void scr_conf_init(void)
-       w_conf    = newwin_title(0, WAV_HEIGHT, "Preferences", false);
-       w_confpad = newpad(num_items + 1, CONF_SCREEN_WIDTH);
--      while ((item = ll_get(conf_items, active_item)) && item->type == t_sep)
--              active_item++;
--      first_item = active_item;
-+      if (first_item)                 /* already initialized */
-+              return;
-+      while ((item = ll_get(conf_items, first_item)) && item->type == t_sep)
-+              first_item++;
-+      active_item = first_item;
- }
- int scr_conf_loop(WINDOW *w_menu)
diff --git a/net/wavemon/patches/000-upstream-negative.patch b/net/wavemon/patches/000-upstream-negative.patch
deleted file mode 100644 (file)
index 3e3cedf..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-From: Gerrit Renker <gerrit@erg.abdn.ac.uk>
-Date: Sat, 12 Mar 2011 19:00:32 +0000 (+0100)
-Subject: Info screen: fix a bug in the random level code
-X-Git-Url: http://eden-feed.erg.abdn.ac.uk/cgi-bin/gitweb.cgi?p=wavemon.git;a=commitdiff_plain;h=cc8235c4b4ab30898fd60f3ad71b7899cf1bdd66
-
-Info screen: fix a bug in the random level code
-
-The link quality was not converted back correctly, causing negative
-values, which then overran the maximum value.
----
-
-diff --git a/iw_if.c b/iw_if.c
-index ae5950a..2008c14 100644
---- a/iw_if.c
-+++ b/iw_if.c
-@@ -369,7 +369,6 @@ static int rand_wave(float *rlvl, float *step, float *rlvl_next, float range)
- static void iw_getstat_random(struct iw_stat *iw)
- {
-       static float rnd_sig, snext, sstep = 1.0, rnd_noise, nnext, nstep = 1.0;
--      uint8_t smin = dbm_to_u8(conf.sig_min), smax = dbm_to_u8(conf.sig_max);
-       rand_wave(&rnd_sig, &sstep, &snext, conf.sig_max - conf.sig_min);
-       rand_wave(&rnd_noise, &nstep, &nnext, conf.noise_max - conf.noise_min);
-@@ -377,11 +376,12 @@ static void iw_getstat_random(struct iw_stat *iw)
-       if (iw->range.max_qual.qual == 0)
-               iw->range.max_qual.qual = WAVE_RAND_QUAL_MAX;
--      iw->stat.qual.level     = smin + rnd_sig;
--      iw->stat.qual.noise     = dbm_to_u8(conf.noise_min) + rnd_noise;
--      iw->stat.qual.qual      = map_range(iw->stat.qual.level, smin, smax,
--                                          0, iw->range.max_qual.qual);
-+      iw->stat.qual.level     = dbm_to_u8(conf.sig_min + rnd_sig);
-+      iw->stat.qual.noise     = dbm_to_u8(conf.noise_min + rnd_noise);
-       iw->stat.qual.updated   = IW_QUAL_DBM;
-+      iw->stat.qual.qual      = map_range(conf.sig_min + rnd_sig,
-+                                          conf.sig_min, conf.sig_max,
-+                                          0, iw->range.max_qual.qual);
- }
- static void iw_getstat_real(struct iw_statistics *stat)
diff --git a/net/wavemon/patches/000-upstream-terminate.patch b/net/wavemon/patches/000-upstream-terminate.patch
deleted file mode 100644 (file)
index d07ac04..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-From: Gerrit Renker <gerrit@erg.abdn.ac.uk>
-Date: Sun, 27 Feb 2011 20:41:48 +0000 (+0100)
-Subject: Better termination
-X-Git-Url: http://eden-feed.erg.abdn.ac.uk/cgi-bin/gitweb.cgi?p=wavemon.git;a=commitdiff_plain;h=633c66a214c68af9a54d123307dc1e1209240472
-
-Better termination
-
-This fixes two flaws in the attempt to terminate the other wavemon processes
-on error: (i) it was not ensured that wavemon runs in its own process group;
-(ii) sending the signal to self is ugly.
----
-
-diff --git a/error.c b/error.c
-index 592d3e4..5408c07 100644
---- a/error.c
-+++ b/error.c
-@@ -59,6 +59,34 @@ void err_msg(const char *format, ...)
-       sleep(WARN_DISPLAY_DELAY);
- }
-+/**
-+ * terminate_all_processes  -  terminate wavemon and reset screen
-+ * @fmt:     printf-like format string
-+ * @strerr:  set to non-0 if termination is due to failed system call
-+ * @ap:            argument list for @fmt
-+ */
-+static void terminate_all_processes(const char *fmt, int strerr, va_list ap)
-+{
-+      int saved_errno = strerr ? errno : 0;
-+      /*
-+       * wavemon runs in its own process group. Block TERM in this process,
-+       * but send to all others (parent or child), which by default do not
-+       * block TERM.
-+       */
-+      xsignal(SIGTERM, SIG_IGN);
-+      endwin();
-+      kill(0, SIGTERM);
-+      reset_shell_mode();
-+      if (saved_errno) {
-+              errno = saved_errno;
-+              vwarn(fmt, ap);
-+      } else {
-+              vwarnx(fmt, ap);
-+      }
-+      va_end(ap);
-+      exit(EXIT_FAILURE);
-+}
-+
- /*
-  * Abort on fatal error unrelated to system call.
-  */
-@@ -66,13 +94,8 @@ void err_quit(const char *format, ...)
- {
-       va_list argp;
--      endwin();
--
-       va_start(argp, format);
--      vwarnx(format, argp);
--      va_end(argp);
--      /* Exit via kill to terminate any child processes. */
--      kill(0, SIGTERM);
-+      terminate_all_processes(format, false, argp);
- }
- /*
-@@ -82,10 +105,6 @@ void err_sys(const char *format, ...)
- {
-       va_list argp;
--      endwin();
--
-       va_start(argp, format);
--      vwarn(format, argp);
--      va_end(argp);
--      kill(0, SIGTERM);
-+      terminate_all_processes(format, true, argp);
- }
-diff --git a/wavemon.c b/wavemon.c
-index 6c3196e..4e1f492 100644
---- a/wavemon.c
-+++ b/wavemon.c
-@@ -139,6 +139,7 @@ int main(int argc, char *argv[])
-       if (!isatty(STDIN_FILENO))
-               errx(1, "input is not from a terminal");
-+      setpgid(0, 0);
-       /* honour numeric separators if the environment defines them */
-       setlocale(LC_NUMERIC, "");
diff --git a/net/wavemon/patches/000-upstream-wrapper.patch b/net/wavemon/patches/000-upstream-wrapper.patch
deleted file mode 100644 (file)
index 9f95864..0000000
+++ /dev/null
@@ -1,397 +0,0 @@
-From: Gerrit Renker <gerrit@erg.abdn.ac.uk>
-Date: Sun, 13 Mar 2011 17:39:40 +0000 (+0100)
-Subject: Configuration: decouple configuration items
-X-Git-Url: http://eden-feed.erg.abdn.ac.uk/cgi-bin/gitweb.cgi?p=wavemon.git;a=commitdiff_plain;h=74610068abe331927f72aa617689566a2b2a7771
-
-Configuration: decouple configuration items
-
-This puts access to WiFi interface list and currently selected interface
-into wrapper functions, to better separate the code blocks.
----
-
-diff --git a/conf.c b/conf.c
-index 4004c73..45fa42e 100644
---- a/conf.c
-+++ b/conf.c
-@@ -22,6 +22,7 @@
- #include <sys/types.h>
- /* GLOBALS */
-+static char **if_list;                /* array of WiFi interface names */
- int conf_items;                       /* index into array storing menu items */
- static char *on_off_names[] = { [false] = "Off", [true] = "On", NULL };
-@@ -116,6 +117,39 @@ static void getargs(int argc, char *argv[])
-               }
- }
-+/** Populate interface list */
-+void conf_get_interface_list(void)
-+{
-+      char *old_if = NULL;
-+      int idx;
-+
-+      if (if_list) {
-+              for (idx = 0; if_list[idx]; idx++)
-+                      if (idx == conf.if_idx)
-+                              old_if = if_list[idx];
-+                      else
-+                              free(if_list[idx]);
-+              free(if_list);
-+      }
-+      if_list = iw_get_interface_list();
-+      if (if_list == NULL)
-+              err_quit("no wireless interfaces found!");
-+
-+      conf.if_idx = 0;
-+      if (old_if) {
-+              idx = argv_find(if_list, old_if);
-+              if (idx > 0)
-+                      conf.if_idx = idx;
-+              free(old_if);
-+      }
-+}
-+
-+/** Return currently selected interface name */
-+const char *conf_ifname(void)
-+{
-+      return if_list ? if_list[conf.if_idx] : "(none)";
-+}
-+
- /* Return full path of rcfile. Allocates string which must bee free()-d. */
- static char *get_confname(void)
- {
-@@ -520,7 +554,7 @@ static void init_conf_items(void)
- void getconf(int argc, char *argv[])
- {
--      iw_get_interface_list();
-+      conf_get_interface_list();
-       init_conf_items();
-       read_cf();
-       getargs(argc, argv);
-diff --git a/conf_scr.c b/conf_scr.c
-index a338771..674137c 100644
---- a/conf_scr.c
-+++ b/conf_scr.c
-@@ -159,7 +159,7 @@ static int m_pref(WINDOW *w_conf, int list_offset, int active_item, int num_item
- void scr_conf_init(void)
- {
--      iw_get_interface_list();        /* may have changed in the meantime */
-+      conf_get_interface_list();      /* may have changed in the meantime */
-       num_items = ll_size(conf_items);
-       w_conf    = newwin_title(0, WAV_HEIGHT, "Preferences", false);
-diff --git a/info_scr.c b/info_scr.c
-index 8171373..d17fdfa 100644
---- a/info_scr.c
-+++ b/info_scr.c
-@@ -30,7 +30,7 @@ void sampling_init(void (*sampling_handler)(int))
-       div_t d = div(conf.stat_iv, 1000);      /* conf.stat_iv in msec */
-       xsignal(SIGALRM, SIG_IGN);
--      iw_getinf_range(if_list[conf.if_idx], &cur.range);
-+      iw_getinf_range(conf_ifname(), &cur.range);
-       i.it_interval.tv_sec  = i.it_value.tv_sec  = d.quot;
-       i.it_interval.tv_usec = i.it_value.tv_usec = d.rem * 1000;
-       xsignal(SIGALRM, sampling_handler);
-@@ -139,7 +139,7 @@ static void display_stats(void)
-       struct if_stat nstat;
-       char tmp[0x100];
--      if_getstat(if_list[conf.if_idx], &nstat);
-+      if_getstat(conf_ifname(), &nstat);
-       /*
-        * Interface RX stats
-@@ -197,10 +197,10 @@ static void display_info(WINDOW *w_if, WINDOW *w_info)
-       char tmp[0x100];
-       int i;
--      dyn_info_get(&info, if_list[conf.if_idx], &cur.range);
-+      dyn_info_get(&info, conf_ifname(), &cur.range);
-       wmove(w_if, 1, 1);
--      waddstr_b(w_if, if_list[conf.if_idx]);
-+      waddstr_b(w_if, conf_ifname());
-       if (cur.range.enc_capa & IW_WPA_MASK)
-               sprintf(tmp, " (%s, %s)", info.name, format_wpa(&cur.range));
-       else
-@@ -416,11 +416,11 @@ static void display_netinfo(WINDOW *w_net)
-       struct if_info info;
-       char tmp[0x40];
--      if_getinf(if_list[conf.if_idx], &info);
-+      if_getinf(conf_ifname(), &info);
-       wmove(w_net, 1, 1);
-       if (getmaxy(w_net) == WH_NET_MAX) {
--              waddstr(w_net, if_list[conf.if_idx]);
-+              waddstr(w_net, conf_ifname());
-               waddstr_b(w_net, " (");
-               waddstr(w_net, info.flags & IFF_UP ? "UP" : "DOWN");
-diff --git a/iw_if.c b/iw_if.c
-index 2008c14..708ff85 100644
---- a/iw_if.c
-+++ b/iw_if.c
-@@ -24,9 +24,6 @@
- /* Fallback maximum quality level when using random samples. */
- #define WAVE_RAND_QUAL_MAX    100
--/* GLOBALS */
--char **if_list = NULL;                /* array of WiFi interface names */
--
- /*
-  * Obtain network device information
-  */
-@@ -65,7 +62,7 @@ int if_set_up(int skfd, const char *ifname)
- }
- /* Interface information */
--void if_getinf(char *ifname, struct if_info *info)
-+void if_getinf(const char *ifname, struct if_info *info)
- {
-       struct ifreq ifr;
-       int skfd = socket(AF_INET, SOCK_DGRAM, 0);
-@@ -114,49 +111,27 @@ static FILE *open_proc_net(const char *filename)
- }
- /**
-- * iw_get_interface_list  -  Populate NULL-terminated array of WiFi interfaces.
-- * Rebuild if already set, exit if no interfaces present.
-+ * iw_get_interface_list  -  Return NULL-terminated array of WiFi interfaces.
-  */
--void iw_get_interface_list(void)
-+char **iw_get_interface_list(void)
- {
--      char *p, tmp[IFNAMSIZ], *old_if = NULL;
--      int idx, nifs;
-+      char **if_list = NULL, *p, tmp[BUFSIZ];
-+      int  nifs = 1;          /* if_list[nifs-1] = NULL */
-       FILE *fp = open_proc_net("wireless");
--      if (if_list) {
--              for (idx = 0; if_list[idx]; idx++)
--                      if (idx == conf.if_idx)
--                              old_if = if_list[idx];
--                      else
--                              free(if_list[idx]);
--              free(if_list);
--      }
--
--      for (nifs = 0; fgets(tmp, sizeof(tmp), fp); )
--              nifs += strchr(tmp, ':') != NULL;
--      if (!nifs)
--              err_quit("no wireless interfaces found!");
--      rewind(fp);
--
--      if_list = calloc(nifs + 1, sizeof(*if_list));
--      if (if_list == NULL)
--              err_sys("unable to memorize %d interfaces", nifs);
--
--      for (conf.if_idx = idx = 0; fgets(tmp, sizeof(tmp), fp); ) {
-+      while (fgets(tmp, sizeof(tmp), fp))
-               if ((p = strchr(tmp, ':'))) {
-+                      if_list = realloc(if_list, sizeof(char *) * (nifs + 1));
-                       for (*p = '\0', p = tmp; isspace(*p); )
-                               p++;
--                      if (old_if && strcmp(old_if, p) == 0)
--                              conf.if_idx = idx;
--                      if_list[idx++] = strdup(p);
-+                      if_list[nifs-1] = strdup(p);
-+                      if_list[nifs++] = NULL;
-               }
--      }
--      assert(idx == nifs);
-       fclose(fp);
--      free(old_if);
-+      return if_list;
- }
--void if_getstat(char *ifname, struct if_stat *stat)
-+void if_getstat(const char *ifname, struct if_stat *stat)
- {
-       char line[0x100];
-       unsigned long d;
-@@ -187,7 +162,8 @@ void if_getstat(char *ifname, struct if_stat *stat)
-  * @ifname: interface name
-  * @if:           range information to use (number of encryption keys)
-  */
--void dyn_info_get(struct iw_dyn_info *info, char *ifname, struct iw_range *ir)
-+void dyn_info_get(struct iw_dyn_info *info,
-+                const char *ifname, struct iw_range *ir)
- {
-       struct iwreq iwr;
-       int i, skfd = socket(AF_INET, SOCK_DGRAM, 0);
-@@ -321,7 +297,7 @@ void dyn_info_cleanup(struct iw_dyn_info *info)
- /*
-  * get range information
-  */
--void iw_getinf_range(char *ifname, struct iw_range *range)
-+void iw_getinf_range(const char *ifname, struct iw_range *range)
- {
-       struct iwreq iwr;
-       int skfd = socket(AF_INET, SOCK_DGRAM, 0);
-@@ -395,7 +371,7 @@ static void iw_getstat_real(struct iw_statistics *stat)
-       wrq.u.data.pointer = (caddr_t) stat;
-       wrq.u.data.length  = sizeof(*stat);
-       wrq.u.data.flags   = 0;
--      strncpy(wrq.ifr_name, if_list[conf.if_idx], IFNAMSIZ);
-+      strncpy(wrq.ifr_name, conf_ifname(), IFNAMSIZ);
-       if (ioctl(skfd, SIOCGIWSTATS, &wrq) < 0) {
-               /*
-@@ -490,13 +466,13 @@ void dump_parameters(void)
-       struct if_stat nstat;
-       int i;
--      iw_getinf_range(if_list[conf.if_idx], &iw.range);
--      dyn_info_get(&info, if_list[conf.if_idx], &iw.range);
-+      iw_getinf_range(conf_ifname(), &iw.range);
-+      dyn_info_get(&info, conf_ifname(), &iw.range);
-       iw_getstat(&iw);
--      if_getstat(if_list[conf.if_idx], &nstat);
-+      if_getstat(conf_ifname(), &nstat);
-       printf("\n");
--      printf("Configured device: %s (%s)\n", if_list[conf.if_idx], info.name);
-+      printf("Configured device: %s (%s)\n", conf_ifname(), info.name);
-       printf("         Security: %s\n", iw.range.enc_capa ?
-                       format_enc_capab(iw.range.enc_capa, ", ") : "WEP");
-       if (iw.range.num_encoding_sizes &&
-diff --git a/iw_if.h b/iw_if.h
-index 80e6595..636a63a 100644
---- a/iw_if.h
-+++ b/iw_if.h
-@@ -71,7 +71,7 @@ struct if_info {
- };
- extern bool if_is_up(int skfd, const char *ifname);
- extern int  if_set_up(int skfd, const char *ifname);
--extern void if_getinf(char *ifname, struct if_info *info);
-+extern void if_getinf(const char *ifname, struct if_info *info);
- /**
-  * struct iw_key  -  Encoding information
-@@ -174,7 +174,8 @@ static inline uint8_t dyn_info_wep_keys(struct iw_dyn_info *info)
-                                  info->keys[i].size == 13;
-       return num_wep;
- }
--extern void dyn_info_get(struct iw_dyn_info *, char *ifname, struct iw_range *);
-+extern void dyn_info_get(struct iw_dyn_info *info,
-+                       const char *ifname, struct iw_range *ir);
- extern void dyn_info_cleanup(struct iw_dyn_info *info);
-@@ -188,7 +189,7 @@ struct if_stat {
-                               tx_bytes;
- };
--extern void if_getstat(char *ifname, struct if_stat *stat);
-+extern void if_getstat(const char *ifname, struct if_stat *stat);
- /*
-  *     Structs to communicate WiFi statistics
-@@ -200,7 +201,7 @@ struct iw_levelstat {
- };
- #define IW_LSTAT_INIT { 0, 0, IW_QUAL_LEVEL_INVALID | IW_QUAL_NOISE_INVALID }
--extern void iw_getinf_range(char *ifname, struct iw_range *range);
-+extern void iw_getinf_range(const char *ifname, struct iw_range *range);
- extern void iw_sanitize(struct iw_range *range,
-                       struct iw_quality *qual,
-                       struct iw_levelstat *dbm);
-@@ -250,7 +251,7 @@ struct scan_result {
-       struct scan_result *next;
- };
--extern struct scan_result *get_scan_list(int skfd, char *ifname, int weversion);
-+extern struct scan_result *get_scan_list(int skfd, const char *ifname, int ver);
- extern void free_scan_result(struct scan_result *head);
-diff --git a/iw_scan.c b/iw_scan.c
-index d75ab6b..8423e6a 100644
---- a/iw_scan.c
-+++ b/iw_scan.c
-@@ -553,7 +553,7 @@ static int cmp_scan_sig(struct scan_result *a, struct scan_result *b)
-       return a->qual.level - b->qual.level;
- }
--struct scan_result *get_scan_list(int skfd, char *ifname, int we_version)
-+struct scan_result *get_scan_list(int skfd, const char *ifname, int we_version)
- {
-       struct scan_result *head = NULL;
-       struct iwreq wrq;
-diff --git a/scan_scr.c b/scan_scr.c
-index 879c2f6..b9a4eee 100644
---- a/scan_scr.c
-+++ b/scan_scr.c
-@@ -80,9 +80,9 @@ static void display_aplist(WINDOW *w_aplst)
-       if (skfd < 0)
-               err_sys("%s: can not open socket", __func__);
--      iw_getinf_range(if_list[conf.if_idx], &range);
-+      iw_getinf_range(conf_ifname(), &range);
--      head = get_scan_list(skfd, if_list[conf.if_idx], range.we_version_compiled);
-+      head = get_scan_list(skfd, conf_ifname(), range.we_version_compiled);
-       if (head) {
-               ;
-       } else if (errno == EPERM || !has_net_admin_capability()) {
-@@ -93,13 +93,13 @@ static void display_aplist(WINDOW *w_aplst)
-       } else if (errno == EINTR || errno == EAGAIN || errno == EBUSY) {
-               /* Ignore temporary errors */
-               goto done;
--      } else if (!if_is_up(skfd, if_list[conf.if_idx])) {
--              sprintf(s, "Interface '%s' is down ", if_list[conf.if_idx]);
-+      } else if (!if_is_up(skfd, conf_ifname())) {
-+              sprintf(s, "Interface '%s' is down ", conf_ifname());
-               if (!has_net_admin_capability())
-                       strcat(s, "- can not scan");
--              else if (if_set_up(skfd, if_list[conf.if_idx]) < 0)
-+              else if (if_set_up(skfd, conf_ifname()) < 0)
-                       sprintf(s, "Can not bring up '%s' for scanning: %s",
--                              if_list[conf.if_idx], strerror(errno));
-+                              conf_ifname(), strerror(errno));
-               else
-                       strcat(s, "- setting it up ...");
-       } else if (errno == EFAULT) {
-@@ -110,9 +110,9 @@ static void display_aplist(WINDOW *w_aplst)
-                */
-               goto done;
-       } else if (errno) {
--              sprintf(s, "No scan on %s: %s", if_list[conf.if_idx], strerror(errno));
-+              sprintf(s, "No scan on %s: %s", conf_ifname(), strerror(errno));
-       } else {
--              sprintf(s, "No scan results on %s", if_list[conf.if_idx]);
-+              sprintf(s, "No scan results on %s", conf_ifname());
-       }
-       for (i = 1; i <= MAXYLEN; i++)
-diff --git a/wavemon.h b/wavemon.h
-index 22a783f..ad0b488 100644
---- a/wavemon.h
-+++ b/wavemon.h
-@@ -103,7 +103,7 @@ static inline void threshold_action(enum threshold_action action)
-  * Global in-memory representation of current wavemon configuration state
-  */
- extern struct wavemon_conf {
--      int     if_idx;                 /* Index into if_list */
-+      int     if_idx;                 /* Index into interface list */
-       int     stat_iv,
-               info_iv;
-@@ -256,8 +256,9 @@ static inline int cp_from_scale(float value, const char *cscale, bool reverse)
- /*
-  *    Wireless interfaces
-  */
--extern char **if_list;
--extern void iw_get_interface_list(void);
-+extern const char *conf_ifname(void);
-+extern void conf_get_interface_list(void);
-+extern char **iw_get_interface_list(void);
- extern void dump_parameters(void);
- /*