cmdedit.c bugfix patch from Vladimir.
 -Erik
diff --git a/cmdedit.c b/cmdedit.c
index 7f403b4..6dcc338 100644
--- a/cmdedit.c
+++ b/cmdedit.c
@@ -55,7 +55,6 @@
 #define BB_FEATURE_COMMAND_TAB_COMPLETION
 #define BB_FEATURE_COMMAND_USERNAME_COMPLETION
 #define BB_FEATURE_NONPRINTABLE_INVERSE_PUT
-#undef BB_FEATURE_SH_SIMPLE_PROMPT
 #define BB_FEATURE_CLEAN_UP
 
 #define D(x)  x
@@ -268,15 +267,15 @@
 static void cmdedit_set_out_char(int next_char)
 {
 
-	int c = command_ps[cursor];
+	int c = (int)((unsigned char) command_ps[cursor]);
 
 	if (c == 0)
 		c = ' ';				/* destroy end char? */
 #ifdef BB_FEATURE_NONPRINTABLE_INVERSE_PUT
 	if (!isprint(c)) {			/* Inverse put non-printable characters */
-		if (((unsigned char) c) >= 128)
+		if (c >= 128)
 			c -= 128;
-		if (((unsigned char) c) < ' ')
+		if (c < ' ')
 			c += '@';
 		if (c == 127)
 			c = '?';
@@ -498,12 +497,8 @@
 		if (flg_not_length == ']')
 			sub_len++;
 	}
-#if 0
-	cmdedit_prmt_len = prmt_len - sub_len;
-	cmdedit_prompt = prmt_ptr;
-#endif	
 	cmdedit_prompt = prmt_mem_ptr;
-	cmdedit_prmt_len = strlen(cmdedit_prompt);
+	cmdedit_prmt_len = prmt_len - sub_len;
 	put_prompt();
 }
 #endif
@@ -1223,7 +1218,7 @@
 
 	int break_out = 0;
 	int lastWasTab = FALSE;
-	char c = 0;
+	unsigned char c = 0;
 	struct history *hp = his_end;
 
 	/* prepare before init handlers */
@@ -1250,10 +1245,10 @@
 	setTermSettings(inputFd, (void *) &new_settings);
 	handlers_sets |= SET_RESET_TERM;
 
-	/* Print out the command prompt */
-	parse_prompt(prompt);
 	/* Now initialize things */
 	cmdedit_init();
+	/* Print out the command prompt */
+	parse_prompt(prompt);
 
 	while (1) {
 
@@ -1545,6 +1540,10 @@
 
 #ifdef TEST
 
+#ifdef BB_FEATURE_NONPRINTABLE_INVERSE_PUT
+#include <locale.h>
+#endif
+
 unsigned int shell_context;
 
 int main(int argc, char **argv)
@@ -1559,6 +1558,9 @@
 		"% ";
 #endif
 
+#ifdef BB_FEATURE_NONPRINTABLE_INVERSE_PUT
+	setlocale(LC_ALL, "");
+#endif
 	shell_context = 1;
 	do {
 		int l;