hush: add #defines to switch off break/continue if loops are not supported
*: remove a few inline keywords
no code changes

diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index 0c59e8a..3a2d893 100644
--- a/modutils/modprobe.c
+++ b/modutils/modprobe.c
@@ -263,7 +263,7 @@
 	return TRUE;
 }
 
-static int inline include_conf_recursive(struct include_conf_t *conf, const char *filename)
+static int include_conf_recursive(struct include_conf_t *conf, const char *filename)
 {
 	return recursive_action(filename, ACTION_RECURSE,
 				include_conf_file_act,
diff --git a/modutils/rmmod.c b/modutils/rmmod.c
index a96a274..5129b34 100644
--- a/modutils/rmmod.c
+++ b/modutils/rmmod.c
@@ -17,7 +17,7 @@
 #endif
 
 #if ENABLE_FEATURE_2_6_MODULES
-static inline void filename2modname(char *modname, const char *afterslash)
+static void filename2modname(char *modname, const char *afterslash)
 {
 	unsigned int i;
 	int kr_chk = 1;
diff --git a/networking/interface.c b/networking/interface.c
index 065b4ba..7861b9f 100644
--- a/networking/interface.c
+++ b/networking/interface.c
@@ -498,7 +498,7 @@
 	}
 }
 
-static inline int procnetdev_version(char *buf)
+static int procnetdev_version(char *buf)
 {
 	if (strstr(buf, "compressed"))
 		return 2;
diff --git a/networking/traceroute.c b/networking/traceroute.c
index 4e6ca2d..29cebfa 100644
--- a/networking/traceroute.c
+++ b/networking/traceroute.c
@@ -819,7 +819,7 @@
  * If the nflag has been supplied, give
  * numeric value, otherwise try for symbolic name.
  */
-static inline void
+static void
 print_inetname(struct sockaddr_in *from)
 {
 	const char *ina;
@@ -836,7 +836,7 @@
 	}
 }
 
-static inline void
+static void
 print(unsigned char *buf, int cc, struct sockaddr_in *from)
 {
 	struct ip *ip;
diff --git a/procps/nmeter.c b/procps/nmeter.c
index be03932..48a5b4e 100644
--- a/procps/nmeter.c
+++ b/procps/nmeter.c
@@ -152,7 +152,7 @@
 	return pf->file;
 }
 
-static inline ullong read_after_slash(const char *p)
+static ullong read_after_slash(const char *p)
 {
 	p = strchr(p, '/');
 	if (!p) return 0;
diff --git a/shell/hush.c b/shell/hush.c
index 5b2f188..5af939d 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -434,13 +434,17 @@
 	struct pipe *toplevel_list;
 	smallint ctrl_z_flag;
 #endif
+#if ENABLE_HUSH_LOOPS
 	smallint flag_break_continue;
+#endif
 	smallint fake_mode;
 	/* these three support $?, $#, and $1 */
 	smalluint last_return_code;
 	char **global_argv;
 	int global_argc;
+#if ENABLE_HUSH_LOOPS
 	unsigned depth_break_continue;
+#endif
 	pid_t last_bg_pid;
 	const char *ifs;
 	const char *cwd;
@@ -722,8 +726,10 @@
 static int builtin_source(char **argv);
 static int builtin_umask(char **argv);
 static int builtin_unset(char **argv);
+#if ENABLE_HUSH_LOOPS
 static int builtin_break(char **argv);
 static int builtin_continue(char **argv);
+#endif
 //static int builtin_not_written(char **argv);
 
 /* Table of built-in functions.  They can be forked or not, depending on
@@ -753,9 +759,13 @@
 #if ENABLE_HUSH_JOB
 	BLTIN("bg"    , builtin_fg_bg, "Resume a job in the background"),
 #endif
+#if ENABLE_HUSH_LOOPS
 	BLTIN("break" , builtin_break, "Exit from a loop"),
+#endif
 	BLTIN("cd"    , builtin_cd, "Change directory"),
+#if ENABLE_HUSH_LOOPS
 	BLTIN("continue", builtin_continue, "Start new loop iteration"),
+#endif
 	BLTIN("echo"  , builtin_echo, "Write to stdout"),
 	BLTIN("eval"  , builtin_eval, "Construct and run shell command"),
 	BLTIN("exec"  , builtin_exec, "Execute command, don't return to shell"),
@@ -2246,13 +2256,15 @@
 		debug_printf_exec(": run_pipe with %d members\n", pi->num_progs);
 		{
 			int r;
+#if ENABLE_HUSH_LOOPS
 			flag_break_continue = 0;
+#endif
 			rcode = r = run_pipe(pi); /* NB: rcode is a smallint */
 			if (r != -1) {
 				/* we only ran a builtin: rcode is already known
 				 * and we don't need to wait for anything. */
+#if ENABLE_HUSH_LOOPS
 				/* was it "break" or "continue"? */
-
 				if (flag_break_continue) {
 					smallint fbc = flag_break_continue;
 					/* we might fall into outer *loop*,
@@ -2271,6 +2283,7 @@
 					bb_error_msg("break/continue: only meaningful in a loop");
 					/* bash compat: exit code is still 0 */
 				}
+#endif
 			} else if (pi->followup == PIPE_BG) {
 				/* what does bash do with attempts to background builtins? */
 				/* even bash 3.2 doesn't do that well with nested bg:
@@ -4534,6 +4547,7 @@
 	return EXIT_SUCCESS;
 }
 
+#if ENABLE_HUSH_LOOPS
 static int builtin_break(char **argv)
 {
 	flag_break_continue++; /* BC_BREAK = 1 */
@@ -4554,3 +4568,4 @@
 	flag_break_continue++; /* BC_CONTINUE = 2 = 1+1 */
 	return builtin_break(argv);
 }
+#endif
diff --git a/shell/hush_test/hush-misc/builtin1.right b/shell/hush_test/hush-misc/builtin1.right
new file mode 100644
index 0000000..2e55ecb
--- /dev/null
+++ b/shell/hush_test/hush-misc/builtin1.right
@@ -0,0 +1,2 @@
+VARIABLE=export
+OK:0
diff --git a/shell/hush_test/hush-misc/builtin1.tests b/shell/hush_test/hush-misc/builtin1.tests
new file mode 100755
index 0000000..1a2941f
--- /dev/null
+++ b/shell/hush_test/hush-misc/builtin1.tests
@@ -0,0 +1,6 @@
+# builtins, unlike keywords like "while", can be constructed
+# with substitutions
+VARIABLE=export
+$VARIABLE VARIABLE
+env | grep ^VARIABLE
+echo OK:$?