X-Git-Url: http://git.osdn.net/view?p=android-x86%2Fexternal-wireless-tools.git;a=blobdiff_plain;f=wireless_tools%2Fiwpriv.c;fp=wireless_tools%2Fiwpriv.c;h=65a0aee08de45c02d2c0f8e0b960ffe1d846e573;hp=de9861324b1d09065db9ba94ebe116703ba405be;hb=fb1188c580d9ff90cc4d80d2bedb03e86b463057;hpb=37268af80055faf826140ff0c255f495df34b616 diff --git a/wireless_tools/iwpriv.c b/wireless_tools/iwpriv.c index de98613..65a0aee 100644 --- a/wireless_tools/iwpriv.c +++ b/wireless_tools/iwpriv.c @@ -10,7 +10,7 @@ * This file is released under the GPL license. */ -#include "iwcommon.h" /* Header */ +#include "iwlib.h" /* Header */ /************************* MISC SUBROUTINES **************************/ @@ -24,7 +24,6 @@ iw_usage(void) fprintf(stderr, "Usage: iwpriv interface [private-command [private-arguments]]\n"); fprintf(stderr, " interface [roam {on|off}]\n"); fprintf(stderr, " interface [port {ad-hoc|managed|N}]\n"); - exit(1); } /************************ GENERIC FUNCTIONS *************************/ @@ -41,10 +40,10 @@ print_priv_info(int skfd, int k; iwprivargs priv[16]; int n; - char * argtype[] = { " ", "byte", "char", "", "int", "float" }; + char * argtype[] = { " ", "byte", "char", "", "int ", "float" }; /* Read the private ioctls */ - n = get_priv_info(skfd, ifname, priv); + n = iw_get_priv_info(skfd, ifname, priv); /* Is there any ? */ if(n <= 0) @@ -115,7 +114,7 @@ set_private(int skfd, /* Socket */ int number; /* Read the private ioctls */ - number = get_priv_info(skfd, ifname, priv); + number = iw_get_priv_info(skfd, ifname, priv); /* Is there any ? */ if(number <= 0) @@ -209,7 +208,7 @@ set_private(int skfd, /* Socket */ strncpy(wrq.ifr_name, ifname, IFNAMSIZ); if((priv[k].set_args & IW_PRIV_SIZE_FIXED) && - (byte_size(priv[k].set_args) < IFNAMSIZ)) + (iw_byte_size(priv[k].set_args) < IFNAMSIZ)) memcpy(wrq.u.name, buffer, IFNAMSIZ); else { @@ -235,7 +234,7 @@ set_private(int skfd, /* Socket */ printf("%-8.8s %s:", ifname, priv[k].name); if((priv[k].get_args & IW_PRIV_SIZE_FIXED) && - (byte_size(priv[k].get_args) < IFNAMSIZ)) + (iw_byte_size(priv[k].get_args) < IFNAMSIZ)) { memcpy(buffer, wrq.u.name, IFNAMSIZ); n = priv[k].get_args & IW_PRIV_SIZE_MASK; @@ -301,7 +300,7 @@ set_roaming(int skfd, /* Socket */ change roam states */ /* Read the private ioctls */ - number = get_priv_info(skfd, ifname, priv); + number = iw_get_priv_info(skfd, ifname, priv); /* Is there any ? */ if(number <= 0) @@ -313,7 +312,10 @@ set_roaming(int skfd, /* Socket */ } if(count != 1) - iw_usage(); + { + iw_usage(); + return(-1); + } if(!strcasecmp(args[i], "on")) { @@ -363,12 +365,11 @@ set_roaming(int skfd, /* Socket */ if(ioctl(skfd, priv[k].cmd, &wrq) < 0) { fprintf(stderr, "Roaming support is broken.\n"); - exit(0); + return(-1); } } - i++; - return(i); + return(0); } /*------------------------------------------------------------------*/ @@ -391,7 +392,7 @@ port_type(int skfd, /* Socket */ char * modes[] = { "invalid", "managed (BSS)", "reserved", "ad-hoc" }; /* Read the private ioctls */ - number = get_priv_info(skfd, ifname, priv); + number = iw_get_priv_info(skfd, ifname, priv); /* Is there any ? */ if(number <= 0) @@ -431,7 +432,10 @@ port_type(int skfd, /* Socket */ } if(count != 1) - iw_usage(); + { + iw_usage(); + return(-1); + } /* Read it */ /* As a string... */ @@ -443,7 +447,10 @@ port_type(int skfd, /* Socket */ else /* ...or as an integer */ if(sscanf(args[i], "%d", (int *) &ptype) != 1) - iw_usage(); + { + iw_usage(); + return(-1); + } k = -1; while((++k < number) && strcmp(priv[k].name, "sport_type") && @@ -460,11 +467,10 @@ port_type(int skfd, /* Socket */ if(ioctl(skfd, priv[k].cmd, &wrq) < 0) { fprintf(stderr, "Invalid port type (or setting not allowed)\n"); - exit(0); + return(-1); } - i++; - return(i); + return(0); } /******************************* MAIN ********************************/ @@ -481,10 +487,10 @@ main(int argc, int goterr = 0; /* Create a channel to the NET kernel. */ - if((skfd = sockets_open()) < 0) + if((skfd = iw_sockets_open()) < 0) { perror("socket"); - exit(-1); + return(-1); } /* No argument : show the list of all device + info */ @@ -492,7 +498,7 @@ main(int argc, { print_priv_devices(skfd); close(skfd); - exit(0); + return(0); } /* Special cases take one... */ @@ -502,7 +508,7 @@ main(int argc, { iw_usage(); close(skfd); - exit(0); + return(0); } /* The device name must be the first argument */ @@ -511,7 +517,7 @@ main(int argc, { print_priv_info(skfd, argv[1]); close(skfd); - exit(0); + return(0); } /* Special cases take two... */ @@ -520,7 +526,7 @@ main(int argc, { goterr = set_roaming(skfd, argv + 3, argc - 3, argv[1]); close(skfd); - exit(0); + return(goterr); } /* Port type */ @@ -528,7 +534,7 @@ main(int argc, { goterr = port_type(skfd, argv + 3, argc - 3, argv[1]); close(skfd); - exit(0); + return(goterr); } /* Otherwise, it's a private ioctl */ @@ -537,5 +543,5 @@ main(int argc, /* Close the socket. */ close(skfd); - return(1); + return(goterr); }