Search Linux Wireless

[PATCH] make iw usable for mere mortals

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[Sorry for attached patch, but I fully expect my mailer to butcher it
otherwise.]

iw currently works, but the error handling is a bit off, many error
messages are absent, and the help text is flat-out wrong.  This
partially fixes the above and should make it possible for noobs to add
and remove interfaces without reading the entire source.

Signed-Off-By: Andy Lutomirski <luto@xxxxxxxxxxxxx>
diff --git a/interface.c b/interface.c
index b54a66c..efc2d93 100644
--- a/interface.c
+++ b/interface.c
@@ -55,7 +55,7 @@ static int get_if_type(int *argc, char ***argv, enum nl80211_iftype *type)
 static int handle_interface_add(struct nl80211_state *state,
 				char *phy, char *dev, int argc, char **argv)
 {
-	char *name = argv[0];
+	char *name;
 	enum nl80211_iftype type;
 	int tpset, err;
 	struct nl_msg *msg;
@@ -65,14 +65,15 @@ static int handle_interface_add(struct nl80211_state *state,
 		return -1;
 	}
 
+	name = argv[0];
 	argc--;
 	argv++;
 
-	if (argc) {
-		tpset = get_if_type(&argc, &argv, &type);
-		if (tpset < 0)
-			return -1;
-	}
+	tpset = get_if_type(&argc, &argv, &type);
+	if (tpset == 0)
+		fprintf(stderr, "you must specify an interface type\n");
+	if (tpset <= 0)
+		return -1;
 
 	if (argc) {
 		fprintf(stderr, "too many arguments\n");
@@ -150,8 +151,10 @@ int handle_interface(struct nl80211_state *state,
 {
 	char *cmd = argv[0];
 
-	if (argc < 1)
+	if (argc < 1) {
+		fprintf(stderr, "you must specify an interface command\n");
 		return -1;
+	}
 
 	argc--;
 	argv++;
diff --git a/iw.c b/iw.c
index c2b53ee..469bf0e 100644
--- a/iw.c
+++ b/iw.c
@@ -92,8 +92,11 @@ static int get_phy_or_dev(int *argc, char ***argv, char **name)
 
 void usage(char *argv0)
 {
-	fprintf(stderr, "Usage: %s [options] {dev <phydev>} {interface <interface> } {COMMAND}\n"
-			"where COMMAND := { add | del }\n", argv0);
+	fprintf(stderr, "Usage: %s dev <phydev> interface <COMMAND> [OPTIONS]\n"
+			"where COMMAND := { add | del }\n"
+			"\n"
+			"For add, OPTIONS := <name> type <type>\n"
+			"For del, OPTIONS should be blank and phydev is the interface to delete.\n", argv0);
 }
 
 int main(int argc, char **argv)

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux