iwinfo: print info of all existing wireless ifaces when cli is called without arguments
authorJo-Philipp Wich <jow@openwrt.org>
Mon, 15 Apr 2013 15:00:16 +0000 (15:00 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Mon, 15 Apr 2013 15:00:16 +0000 (15:00 +0000)
SVN-Revision: 36339

package/network/utils/iwinfo/Makefile
package/network/utils/iwinfo/src/iwinfo_cli.c

index 23f3f38cb4d5d7a9ee73bab8d8f55aca77c8f6d2..8b103ebb57fd64ab8488ffa6070d07291aea18a6 100644 (file)
@@ -7,7 +7,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libiwinfo
-PKG_RELEASE:=40
+PKG_RELEASE:=41
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
 PKG_CONFIG_DEPENDS := \
index 7ec5aef95c8f485283ff8af7e04780917c62acf8..8da216a6efab6e6dc5af86124092d477aeba8ee9 100644 (file)
@@ -17,6 +17,7 @@
  */
 
 #include <stdio.h>
+#include <glob.h>
 
 #include "iwinfo.h"
 
@@ -735,9 +736,11 @@ static void print_countrylist(const struct iwinfo_ops *iw, const char *ifname)
 int main(int argc, char **argv)
 {
        int i;
+       char *p;
        const struct iwinfo_ops *iw;
+       glob_t globbuf;
 
-       if (argc < 3)
+       if (argc > 1 && argc < 3)
        {
                fprintf(stderr,
                        "Usage:\n"
@@ -752,6 +755,30 @@ int main(int argc, char **argv)
                return 1;
        }
 
+       if (argc == 1)
+       {
+               glob("/sys/class/net/*", 0, NULL, &globbuf);
+
+               for (i = 0; i < globbuf.gl_pathc; i++)
+               {
+                       p = strrchr(globbuf.gl_pathv[i], '/');
+
+                       if (!p)
+                               continue;
+
+                       iw = iwinfo_backend(++p);
+
+                       if (!iw)
+                               continue;
+
+                       print_info(iw, p);
+                       printf("\n");
+               }
+
+               globfree(&globbuf);
+               return 0;
+       }
+
        iw = iwinfo_backend(argv[1]);
 
        if (!iw)