diff --git a/Makefile b/Makefile
index f0242b8..c25cf5d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 1
 PATCHLEVEL = 12
-SUBLEVEL = 1
+SUBLEVEL = 2
 EXTRAVERSION =
 NAME = Unnamed
 
diff --git a/coreutils/basename.c b/coreutils/basename.c
index a3085ed..8a05e92 100644
--- a/coreutils/basename.c
+++ b/coreutils/basename.c
@@ -48,5 +48,5 @@
 
 	/* puts(s) will do, but we can do without stdio this way: */
 	s[m++] = '\n';
-	return full_write(STDOUT_FILENO, s, m) == (ssize_t)m;
+	return full_write(STDOUT_FILENO, s, m) != (ssize_t)m;
 }
diff --git a/coreutils/env.c b/coreutils/env.c
index 66199e8..2f8c8b7 100644
--- a/coreutils/env.c
+++ b/coreutils/env.c
@@ -29,6 +29,8 @@
  * - use xfunc_error_retval
  */
 
+/* This is a NOEXEC applet. Be very careful! */
+
 #include "libbb.h"
 
 #if ENABLE_FEATURE_ENV_LONG_OPTIONS
@@ -119,5 +121,3 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-
-
diff --git a/editors/vi.c b/editors/vi.c
index 02bdbb3..4accfdb 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -291,6 +291,8 @@
 #define INIT_G() do { \
 	SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
 	last_file_modified = -1; \
+	/* "" but has space for 2 chars */ \
+	USE_FEATURE_VI_SEARCH(last_search_pattern = xzalloc(2);) \
 } while (0)
 
 
@@ -2974,7 +2976,7 @@
 	const char *msg = msg; // for compiler
 	char c1, *p, *q, *save_dot;
 	char buf[12];
-	int dir = dir; // for compiler
+	int dir;
 	int cnt, i, j;
 
 //	c1 = c; // quiet the compiler
@@ -3316,7 +3318,7 @@
 		q = get_input_line(buf);	// get input line- use "status line"
 		if (q[0] && !q[1]) {
 			if (last_search_pattern[0])
-			    last_search_pattern[0] = c;
+				last_search_pattern[0] = c;
 			goto dc3; // if no pat re-use old pat
 		}
 		if (q[0]) {       // strlen(q) > 1: new pat- save it and find
@@ -3346,14 +3348,8 @@
 			do_cmd(c);
 		}				// repeat cnt
  dc3:
-		if (last_search_pattern == 0) {
-			msg = "No previous regular expression";
-			goto dc2;
-		}
-		if (last_search_pattern[0] == '/') {
-			dir = FORWARD;	// assume FORWARD search
-			p = dot + 1;
-		}
+		dir = FORWARD;	// assume FORWARD search
+		p = dot + 1;
 		if (last_search_pattern[0] == '?') {
 			dir = BACK;
 			p = dot - 1;
diff --git a/findutils/grep.c b/findutils/grep.c
index 9d38ef9..73e74f4 100644
--- a/findutils/grep.c
+++ b/findutils/grep.c
@@ -363,12 +363,22 @@
 						 * (unless -v: -Fov doesnt print anything at all) */
 						if (found)
 							print_line(gl->pattern, strlen(gl->pattern), linenum, ':');
-					} else {
+					} else while (1) {
+						char old = line[gl->matched_range.rm_eo];
 						line[gl->matched_range.rm_eo] = '\0';
 						print_line(line + gl->matched_range.rm_so,
 								gl->matched_range.rm_eo - gl->matched_range.rm_so,
 								linenum, ':');
-					}
+						line[gl->matched_range.rm_eo] = old;
+#if !ENABLE_EXTRA_COMPAT
+						break;
+#else
+						if (re_search(&gl->compiled_regex, line, line_len,
+								gl->matched_range.rm_eo, line_len - gl->matched_range.rm_eo, 
+								&gl->matched_range) < 0)
+							break;
+#endif
+					} 
 				} else {
 					print_line(line, line_len, linenum, ':');
 				}
diff --git a/include/applets.h b/include/applets.h
index 46135dc..0c9930d 100644
--- a/include/applets.h
+++ b/include/applets.h
@@ -136,7 +136,7 @@
 USE_ED(APPLET(ed, _BB_DIR_BIN, _BB_SUID_NEVER))
 USE_FEATURE_GREP_EGREP_ALIAS(APPLET_ODDNAME(egrep, grep, _BB_DIR_BIN, _BB_SUID_NEVER, egrep))
 USE_EJECT(APPLET(eject, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
-USE_ENV(APPLET(env, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
+USE_ENV(APPLET_NOEXEC(env, env, _BB_DIR_USR_BIN, _BB_SUID_NEVER, env))
 USE_ENVDIR(APPLET_ODDNAME(envdir, chpst, _BB_DIR_USR_BIN, _BB_SUID_NEVER, envdir))
 USE_ENVUIDGID(APPLET_ODDNAME(envuidgid, chpst, _BB_DIR_USR_BIN, _BB_SUID_NEVER, envuidgid))
 USE_ETHER_WAKE(APPLET_ODDNAME(ether-wake, ether_wake, _BB_DIR_USR_BIN, _BB_SUID_NEVER, ether_wake))
@@ -171,7 +171,7 @@
 USE_GUNZIP(APPLET(gunzip, _BB_DIR_BIN, _BB_SUID_NEVER))
 USE_GZIP(APPLET(gzip, _BB_DIR_BIN, _BB_SUID_NEVER))
 USE_HALT(APPLET(halt, _BB_DIR_SBIN, _BB_SUID_NEVER))
-USE_HD(APPLET_ODDNAME(hd, hexdump, _BB_DIR_USR_BIN, _BB_SUID_NEVER, hd))
+USE_HD(APPLET_NOEXEC(hd, hexdump, _BB_DIR_USR_BIN, _BB_SUID_NEVER, hd))
 USE_HDPARM(APPLET(hdparm, _BB_DIR_SBIN, _BB_SUID_NEVER))
 USE_HEAD(APPLET(head, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
 USE_HEXDUMP(APPLET_NOEXEC(hexdump, hexdump, _BB_DIR_USR_BIN, _BB_SUID_NEVER, hexdump))
diff --git a/libbb/getopt32.c b/libbb/getopt32.c
index 8fb99b6..ee85181 100644
--- a/libbb/getopt32.c
+++ b/libbb/getopt32.c
@@ -515,28 +515,6 @@
 		}
 	}
 
-	/* In case getopt32 was already called:
-	 * reset the libc getopt() function, which keeps internal state.
-	 *
-	 * BSD-derived getopt() functions require that optind be set to 1 in
-	 * order to reset getopt() state.  This used to be generally accepted
-	 * way of resetting getopt().  However, glibc's getopt()
-	 * has additional getopt() state beyond optind, and requires that
-	 * optind be set to zero to reset its state.  So the unfortunate state of
-	 * affairs is that BSD-derived versions of getopt() misbehave if
-	 * optind is set to 0 in order to reset getopt(), and glibc's getopt()
-	 * will core dump if optind is set 1 in order to reset getopt().
-	 *
-	 * More modern versions of BSD require that optreset be set to 1 in
-	 * order to reset getopt().   Sigh.  Standards, anyone?
-	 */
-#ifdef __GLIBC__
-	optind = 0;
-#else /* BSD style */
-	optind = 1;
-	/* optreset = 1; */
-#endif
-	/* optarg = NULL; opterr = 0; optopt = 0; - do we need this?? */
 	pargv = NULL;
 
 	/* Note: just "getopt() <= 0" will not work well for
diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index c2c3ea9..1f21866 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -1415,7 +1415,8 @@
 	if ((state->flags & SAVE_HISTORY) && state->hist_file)
 		load_history(state->hist_file);
 #endif
-	state->cur_history = state->cnt_history;
+	if (state->flags & DO_HISTORY)
+		state->cur_history = state->cnt_history;
 
 	/* prepare before init handlers */
 	cmdedit_y = 0;  /* quasireal y, not true if line > xt*yt */
diff --git a/libbb/setup_environment.c b/libbb/setup_environment.c
index 04e333f..78318ce 100644
--- a/libbb/setup_environment.c
+++ b/libbb/setup_environment.c
@@ -32,16 +32,16 @@
 
 void FAST_FUNC setup_environment(const char *shell, int clear_env, int change_env, const struct passwd *pw)
 {
+	/* Change the current working directory to be the home directory
+	 * of the user */
+	if (chdir(pw->pw_dir)) {
+		xchdir("/");
+		bb_error_msg("can't chdir to home directory '%s'", pw->pw_dir);
+	}
+
 	if (clear_env) {
 		const char *term;
 
-		/* Change the current working directory to be the home directory
-		 * of the user */
-		if (chdir(pw->pw_dir)) {
-			xchdir("/");
-			bb_error_msg("can't chdir to home directory '%s'", pw->pw_dir);
-		}
-
 		/* Leave TERM unchanged. Set HOME, SHELL, USER, LOGNAME, PATH.
 		   Unset all other environment variables.  */
 		term = getenv("TERM");
diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c
index da0dc03..17b373c 100644
--- a/libbb/vfork_daemon_rexec.c
+++ b/libbb/vfork_daemon_rexec.c
@@ -125,6 +125,7 @@
 	int rc, argc;
 
 	applet_name = APPLET_NAME(applet_no);
+
 	xfunc_error_retval = EXIT_FAILURE;
 
 	/* Special flag for xfunc_die(). If xfunc will "die"
@@ -132,7 +133,30 @@
 	 * die_sleep and longjmp here instead. */
 	die_sleep = -1;
 
-	/* option_mask32 = 0; - not needed */
+	/* In case getopt() or getopt32() was already called:
+	 * reset the libc getopt() function, which keeps internal state.
+	 *
+	 * BSD-derived getopt() functions require that optind be set to 1 in
+	 * order to reset getopt() state.  This used to be generally accepted
+	 * way of resetting getopt().  However, glibc's getopt()
+	 * has additional getopt() state beyond optind, and requires that
+	 * optind be set to zero to reset its state.  So the unfortunate state of
+	 * affairs is that BSD-derived versions of getopt() misbehave if
+	 * optind is set to 0 in order to reset getopt(), and glibc's getopt()
+	 * will core dump if optind is set 1 in order to reset getopt().
+	 *
+	 * More modern versions of BSD require that optreset be set to 1 in
+	 * order to reset getopt().  Sigh.  Standards, anyone?
+	 */
+#ifdef __GLIBC__
+	optind = 0;
+#else /* BSD style */
+	optind = 1;
+	/* optreset = 1; */
+#endif
+	/* optarg = NULL; opterr = 1; optopt = 63; - do we need this too? */
+	/* (values above are what they initialized to in glibc and uclibc) */
+	/* option_mask32 = 0; - not needed, no applet depends on it being 0 */
 
 	argc = 1;
 	while (argv[argc])
@@ -161,8 +185,16 @@
 			rc = 0;
 	}
 
-	/* Restoring globals */
+	/* Restoring some globals */
 	restore_nofork_data(old);
+
+	/* Other globals can be simply reset to defaults */
+#ifdef __GLIBC__
+	optind = 0;
+#else /* BSD style */
+	optind = 1;
+#endif
+
 	return rc & 0xff; /* don't confuse people with "exitcodes" >255 */
 }
 
diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index 412e71d..8bbc239 100644
--- a/modutils/modprobe.c
+++ b/modutils/modprobe.c
@@ -263,9 +263,9 @@
 	return TRUE;
 }
 
-static int include_conf_recursive(struct include_conf_t *conf, const char *filename)
+static int include_conf_recursive(struct include_conf_t *conf, const char *filename, int flags)
 {
-	return recursive_action(filename, ACTION_RECURSE,
+	return recursive_action(filename, ACTION_RECURSE | flags,
 				include_conf_file_act,
 				include_conf_dir_act,
 				conf, 1);
@@ -362,7 +362,7 @@
 			char *includefile;
 
 			includefile = skip_whitespace(line_buffer + 8);
-			include_conf_recursive(conf, includefile);
+			include_conf_recursive(conf, includefile, 0);
 		} else if (ENABLE_FEATURE_MODPROBE_BLACKLIST &&
 				(is_conf_command(line_buffer, "blacklist"))) {
 			char *mod;
@@ -559,7 +559,7 @@
 		if (ENABLE_FEATURE_2_6_MODULES) {
 			if (include_conf_file(&conf, "/etc/modprobe.conf"))
 				r = TRUE;
-			if (include_conf_recursive(&conf, "/etc/modprobe.d"))
+			if (include_conf_recursive(&conf, "/etc/modprobe.d", ACTION_QUIET))
 				r = TRUE;
 		}
 		if (ENABLE_FEATURE_2_4_MODULES && !r)
diff --git a/shell/ash.c b/shell/ash.c
index d63acc2..492c77e 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -6964,8 +6964,11 @@
 
 #if ENABLE_FEATURE_SH_STANDALONE
 	if (applet_no >= 0) {
-		if (APPLET_IS_NOEXEC(applet_no))
+		if (APPLET_IS_NOEXEC(applet_no)) {
+			while (*envp)
+				putenv(*envp++);
 			run_applet_no_and_exit(applet_no, argv);
+		}
 		/* re-exec ourselves with the new arguments */
 		execve(bb_busybox_exec_path, argv, envp);
 		/* If they called chroot or otherwise made the binary no longer
@@ -12014,7 +12017,7 @@
 	char *name;
 	const char *p;
 	char **aptr;
-	int flag = argv[0][0] == 'r'? VREADONLY : VEXPORT;
+	int flag = argv[0][0] == 'r' ? VREADONLY : VEXPORT;
 
 	if (nextopt("p") != 'p') {
 		aptr = argptr;
diff --git a/util-linux/getopt.c b/util-linux/getopt.c
index 4026303..8b5e46c 100644
--- a/util-linux/getopt.c
+++ b/util-linux/getopt.c
@@ -142,7 +142,8 @@
  * Other settings are found in global variables.
  */
 #if !ENABLE_GETOPT_LONG
-#define generate_output(argv,argc,optstr,longopts) generate_output(argv,argc,optstr)
+#define generate_output(argv,argc,optstr,longopts) \
+	generate_output(argv,argc,optstr)
 #endif
 static int generate_output(char **argv, int argc, const char *optstr, const struct option *longopts)
 {
@@ -156,14 +157,6 @@
 	if (quiet_errors) /* No error reporting from getopt(3) */
 		opterr = 0;
 
-	/* Reset getopt(3) (see libbb/getopt32.c for long rant) */
-#ifdef __GLIBC__
-	optind = 0;
-#else /* BSD style */
-	optind = 1;
-	/* optreset = 1; */
-#endif
-
 	while (1) {
 		opt =
 #if ENABLE_GETOPT_LONG
