Procházet zdrojové kódy

iwinfo: print info of all existing wireless ifaces when cli is called without arguments

SVN-Revision: 36339
Jo-Philipp Wich před 12 roky
rodič
revize
25ffe0446c

+ 1 - 1
package/network/utils/iwinfo/Makefile

@@ -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 := \

+ 28 - 1
package/network/utils/iwinfo/src/iwinfo_cli.c

@@ -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)