OSDN Git Service

v24
[android-x86/external-wireless-tools.git] / wireless_tools / macaddr.c
index 8c5a93a..5950fd9 100644 (file)
  *     This is released unther the GPL license.
  */
 
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
 #include <sys/ioctl.h>
 #include <sys/types.h>
 #include <sys/socket.h>
-#include <linux/in.h>
-#include <linux/socket.h>
-#include <linux/if.h>
 
-int main(int argc, char** argv) {
+#include "iwlib.h"
+
+int main(int argc, char** argv)
+{
 
        int devsock;
        struct ifreq ifbuffer;
-       int i;
 
-       if (argc != 2) {
+       if ((argc != 2) || (argv[1][0] == '-')) {
                printf("Usage: macaddr interface\n");
                exit(1);
        }
 
-       devsock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+       devsock = socket(AF_INET, SOCK_STREAM, 0);
 
        if (devsock == -1) {
-               printf("Failed opening socket\n");
+               perror("Failed opening socket");
                exit (1);
        }
 
        memset(&ifbuffer, 0, sizeof(ifbuffer));
-       strcpy(ifbuffer.ifr_name, argv[1]);
+       strncpy(ifbuffer.ifr_name, argv[1], sizeof(ifbuffer.ifr_name));
        if (ioctl(devsock, SIOCGIFHWADDR, &ifbuffer) == -1) {
-               printf("There is no MACADDR for %s\n", argv[1]);
+               fprintf(stderr, "There is no MACADDR for %s\n", argv[1]);
                exit(1);
        }
-       close (devsock);
+       close(devsock);
 
-       for (i = 0; i < IFHWADDRLEN; i++)
-               printf("%02X", (unsigned char) ifbuffer.ifr_ifru.ifru_hwaddr.sa_data[i]);
-       printf("\n");
+       puts(iw_ether_ntoa((struct ether_addr *) ifbuffer.ifr_ifru.ifru_hwaddr.sa_data));
 
        exit(0);
-
 }