fix !ENABLE_FEATURE_GETOPT_LONG build. Closes 3775
authorDenys Vlasenko <vda.linux@googlemail.com>
Sun, 29 May 2011 02:24:13 +0000 (04:24 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 29 May 2011 02:24:52 +0000 (04:24 +0200)
When compiling with !ENABLE_FEATURE_GETOPT_LONG, busybox still tries
to include getopt.h which is not available; for example with uClibc
when !UCLIBC_HAS_GETOPT_LONG.  getopt.h is only required
for the _long set of functions.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
docs/style-guide.txt
libbb/getopt32.c
selinux/chcon.c
selinux/runcon.c
util-linux/getopt.c

index fdf6cfe4daa2f0875a59aca48247cae3a7524e05..10ed893dc96f3e47ba7494b74867f00a78b39ecb 100644 (file)
@@ -679,11 +679,10 @@ line in the midst of your #includes, if you need to parse long options:
 
 Then have long options defined:
 
-       static const struct option <applet>_long_options[] = {
-               { "list",    0, NULL, 't' },
-               { "extract", 0, NULL, 'x' },
-               { NULL, 0, NULL, 0 }
-       };
+       static const char <applet>_longopts[] ALIGN1 =
+               "list\0"    No_argument "t"
+               "extract\0" No_argument "x"
+       ;
 
 And a code block similar to the following near the top of your applet_main()
 routine:
@@ -691,7 +690,7 @@ routine:
        char *str_b;
 
        opt_complementary = "cryptic_string";
-       applet_long_options = <applet>_long_options; /* if you have them */
+       applet_long_options = <applet>_longopts; /* if you have them */
        opt = getopt32(argc, argv, "ab:c", &str_b);
        if (opt & 1) {
                handle_option_a();
index 18f33c7041d6fd4129ea18b88e318f99143cc070..c7c4079c2a5e6bdef0ae77a80ea455ec264e24c9 100644 (file)
@@ -7,7 +7,9 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
-#include <getopt.h>
+#if ENABLE_LONG_OPTS || ENABLE_FEATURE_GETOPT_LONG
+# include <getopt.h>
+#endif
 #include "libbb.h"
 
 /*      Documentation
index 8644502b588115fe9c230698e0b67e5dfa644f6f..88d0cfec61b0918682baaee061a9df1aedbb2b28 100644 (file)
@@ -40,7 +40,6 @@
 //usage:     "\n       -R      Recurse"
 //usage:       )
 
-#include <getopt.h>
 #include <selinux/context.h>
 
 #include "libbb.h"
index f0b21269f7e3ea5cdb891f51729c4e86bb136448..3183a2274e01f3cc3588286cc77d74ad04c17760 100644 (file)
@@ -50,7 +50,6 @@
 //usage:     "\n       -l RNG  Levelrange"
 //usage:       )
 
-#include <getopt.h>
 #include <selinux/context.h>
 #include <selinux/flask.h>
 
index 10e1dc49b0b9558cb892bd86fd51a5e3f5ff91da..85ff76189372dceeb47fe674160a7d4298935e11 100644 (file)
@@ -25,7 +25,7 @@
  *   Added NLS support (partly written by Arkadiusz Mickiewicz
  *     <misiek@misiek.eu.org>)
  * Ported to Busybox - Alfred M. Szmidt <ams@trillian.itslinux.org>
- *  Removed --version/-V and --help/-h in
+ *  Removed --version/-V and --help/-h
  *  Removed parse_error(), using bb_error_msg() from Busybox instead
  *  Replaced our_malloc with xmalloc and our_realloc with xrealloc
  *
@@ -79,7 +79,9 @@
 //usage:       " esac\n"
 //usage:       "done\n"
 
-#include <getopt.h>
+#if ENABLE_FEATURE_GETOPT_LONG
+# include <getopt.h>
+#endif
 #include "libbb.h"
 
 /* NON_OPT is the code that is returned when a non-option is found in '+'