ntpd: explain why scripts can be run in quick succession
[oweals/busybox.git] / networking / ifconfig.c
index d021757837151eebcfcf9b22825d6a402774ec22..1e960d45c84a86ce7a45263ce6b8125edbb43416 100644 (file)
@@ -252,22 +252,15 @@ static const struct options OptArray[] = {
 /*
  * A couple of prototypes.
  */
-
 #if ENABLE_FEATURE_IFCONFIG_HW
 static int in_ether(const char *bufp, struct sockaddr *sap);
-# if ENABLE_FEATURE_HWIB
-extern int in_ib(const char *bufp, struct sockaddr *sap);
-# else
-#  define in_ib(a, b) 1 /* fail */
-# endif
 #endif
 
 /*
  * Our main function.
  */
-
 int ifconfig_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int ifconfig_main(int argc, char **argv)
+int ifconfig_main(int argc UNUSED_PARAM, char **argv)
 {
        struct ifreq ifr;
        struct sockaddr_in sai;
@@ -298,19 +291,17 @@ int ifconfig_main(int argc, char **argv)
 
        /* skip argv[0] */
        ++argv;
-       --argc;
 
 #if ENABLE_FEATURE_IFCONFIG_STATUS
-       if (argc > 0 && (argv[0][0] == '-' && argv[0][1] == 'a' && !argv[0][2])) {
+       if (argv[0] && (argv[0][0] == '-' && argv[0][1] == 'a' && !argv[0][2])) {
                interface_opt_a = 1;
-               --argc;
                ++argv;
        }
 #endif
 
-       if (argc <= 1) {
+       if (!argv[0] || !argv[1]) { /* one or no args */
 #if ENABLE_FEATURE_IFCONFIG_STATUS
-               return display_interfaces(argc ? *argv : NULL);
+               return display_interfaces(argv[0] /* can be NULL */);
 #else
                bb_error_msg_and_die("no support for status display");
 #endif
@@ -320,7 +311,7 @@ int ifconfig_main(int argc, char **argv)
        sockfd = xsocket(AF_INET, SOCK_DGRAM, 0);
 
        /* get interface name */
-       strncpy(ifr.ifr_name, *argv, IFNAMSIZ);
+       strncpy_IFNAMSIZ(ifr.ifr_name, *argv);
 
        /* Process the remaining arguments. */
        while (*++argv != (char *) NULL) {
@@ -431,13 +422,12 @@ int ifconfig_main(int argc, char **argv)
                                        } else {        /* A_CAST_HOST_COPY_IN_ETHER */
                                                /* This is the "hw" arg case. */
                                                smalluint hw_class= index_in_substrings("ether\0"
-                                                               USE_FEATURE_HWIB("infiniband\0"), *argv) + 1;
+                                                               IF_FEATURE_HWIB("infiniband\0"), *argv) + 1;
                                                if (!hw_class || !*++argv)
                                                        bb_show_usage();
                                                /*safe_strncpy(host, *argv, sizeof(host));*/
                                                host = *argv;
-                                               if (hw_class == 1 ? in_ether(host, &sa)
-                                                       : in_ib(host, &sa))
+                                               if (hw_class == 1 ? in_ether(host, &sa) : in_ib(host, &sa))
                                                        bb_error_msg_and_die("invalid hw-addr %s", host);
                                                p = (char *) &sa;
                                        }
@@ -514,7 +504,7 @@ static int in_ether(const char *bufp, struct sockaddr *sap)
        unsigned char c;
 
        sap->sa_family = ARPHRD_ETHER;
-       ptr = sap->sa_data;
+       ptr = (char *) sap->sa_data;
 
        i = 0;
        do {