Applied patch from Jeff Garzik to getopt-ify rmmod.
authorMark Whitley <markw@lineo.com>
Fri, 9 Mar 2001 21:49:12 +0000 (21:49 -0000)
committerMark Whitley <markw@lineo.com>
Fri, 9 Mar 2001 21:49:12 +0000 (21:49 -0000)
modutils/rmmod.c
rmmod.c

index aab32612352c9cdb980a6fb2932ffbf869de4c1b..36857e02c3e922f5cb5907e6b466fc208d73e66a 100644 (file)
@@ -25,6 +25,7 @@
 #include <errno.h>
 #include <unistd.h>
 #include <stdlib.h>
+#include <getopt.h>
 #include <sys/syscall.h>
 #include <linux/unistd.h>
 #include "busybox.h"
@@ -37,15 +38,11 @@ _syscall1(int, delete_module, const char *, name)
 
 extern int rmmod_main(int argc, char **argv)
 {
-       int ret = EXIT_SUCCESS;
-       if (argc <= 1) {
-               show_usage();
-       }
+       int n, ret = EXIT_SUCCESS;
 
-       /* Parse any options */
-       while (--argc > 0 && **(++argv) == '-') {
-               while (*(++(*argv))) {
-                       switch (**argv) {
+       /* Parse command line. */
+       while ((n = getopt(argc, argv, "a")) != EOF) {
+               switch (n) {
                        case 'a':
                                /* Unload _all_ unused modules via NULL delete_module() call */
                                if (delete_module(NULL))
@@ -53,16 +50,18 @@ extern int rmmod_main(int argc, char **argv)
                                return EXIT_SUCCESS;
                        default:
                                show_usage();
-                       }
                }
        }
 
-       while (argc-- > 0) {
-               if (delete_module(*argv) < 0) {
-                       perror_msg("%s", *argv);
+       if (optind == argc)
+                       show_usage();
+
+       for (n = optind; n < argc; n++) {
+               if (delete_module(argv[n]) < 0) {
+                       perror_msg("%s", argv[n]);
                        ret = EXIT_FAILURE;
                }
-               argv++;
        }
+
        return(ret);
 }
diff --git a/rmmod.c b/rmmod.c
index aab32612352c9cdb980a6fb2932ffbf869de4c1b..36857e02c3e922f5cb5907e6b466fc208d73e66a 100644 (file)
--- a/rmmod.c
+++ b/rmmod.c
@@ -25,6 +25,7 @@
 #include <errno.h>
 #include <unistd.h>
 #include <stdlib.h>
+#include <getopt.h>
 #include <sys/syscall.h>
 #include <linux/unistd.h>
 #include "busybox.h"
@@ -37,15 +38,11 @@ _syscall1(int, delete_module, const char *, name)
 
 extern int rmmod_main(int argc, char **argv)
 {
-       int ret = EXIT_SUCCESS;
-       if (argc <= 1) {
-               show_usage();
-       }
+       int n, ret = EXIT_SUCCESS;
 
-       /* Parse any options */
-       while (--argc > 0 && **(++argv) == '-') {
-               while (*(++(*argv))) {
-                       switch (**argv) {
+       /* Parse command line. */
+       while ((n = getopt(argc, argv, "a")) != EOF) {
+               switch (n) {
                        case 'a':
                                /* Unload _all_ unused modules via NULL delete_module() call */
                                if (delete_module(NULL))
@@ -53,16 +50,18 @@ extern int rmmod_main(int argc, char **argv)
                                return EXIT_SUCCESS;
                        default:
                                show_usage();
-                       }
                }
        }
 
-       while (argc-- > 0) {
-               if (delete_module(*argv) < 0) {
-                       perror_msg("%s", *argv);
+       if (optind == argc)
+                       show_usage();
+
+       for (n = optind; n < argc; n++) {
+               if (delete_module(argv[n]) < 0) {
+                       perror_msg("%s", argv[n]);
                        ret = EXIT_FAILURE;
                }
-               argv++;
        }
+
        return(ret);
 }