[git commit master] libbb/lineedit: fix the case when we configured history to have 0 lines

Denys Vlasenko vda.linux at googlemail.com
Sun Sep 27 00:48:53 UTC 2009


commit: http://git.busybox.net/busybox/commit/?id=db9c57eed1db2fd53bfd653efcf19210e5b14080
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 libbb/lineedit.c |   38 ++++++++++++++++++++------------------
 shell/ash.c      |    2 +-
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index 38c69c6..3689b4b 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -1095,15 +1095,15 @@ static void save_command_ps_at_cur_history(void)
 		int cur = state->cur_history;
 		free(state->history[cur]);
 
-#if ENABLE_FEATURE_ASSUME_UNICODE
+# if ENABLE_FEATURE_ASSUME_UNICODE
 		{
 			char tbuf[MAX_LINELEN];
 			save_string(tbuf, sizeof(tbuf));
 			state->history[cur] = xstrdup(tbuf);
 		}
-#else
+# else
 		state->history[cur] = xstrdup(command_ps);
-#endif
+# endif
 	}
 }
 
@@ -1131,7 +1131,7 @@ static int get_next_history(void)
 	return 0;
 }
 
-#if ENABLE_FEATURE_EDITING_SAVEHISTORY
+# if ENABLE_FEATURE_EDITING_SAVEHISTORY
 /* We try to ensure that concurrent additions to the history
  * do not overwrite each other.
  * Otherwise shell users get unhappy.
@@ -1256,10 +1256,10 @@ static void save_history(char *str)
 		free_line_input_t(st_temp);
 	}
 }
-#else
-#define load_history(a) ((void)0)
-#define save_history(a) ((void)0)
-#endif /* FEATURE_COMMAND_SAVEHISTORY */
+# else
+#  define load_history(a) ((void)0)
+#  define save_history(a) ((void)0)
+# endif /* FEATURE_COMMAND_SAVEHISTORY */
 
 static void remember_in_history(char *str)
 {
@@ -1290,15 +1290,15 @@ static void remember_in_history(char *str)
 	/* i <= MAX_HISTORY */
 	state->cur_history = i;
 	state->cnt_history = i;
-#if ENABLE_FEATURE_EDITING_SAVEHISTORY
+# if MAX_HISTORY > 0 && ENABLE_FEATURE_EDITING_SAVEHISTORY
 	if ((state->flags & SAVE_HISTORY) && state->hist_file)
 		save_history(str);
-#endif
+# endif
 	IF_FEATURE_EDITING_FANCY_PROMPT(num_ok_lines++;)
 }
 
 #else /* MAX_HISTORY == 0 */
-#define remember_in_history(a) ((void)0)
+# define remember_in_history(a) ((void)0)
 #endif /* MAX_HISTORY */
 
 
@@ -1476,11 +1476,11 @@ static void parse_and_put_prompt(const char *prmt_ptr)
 				c = *prmt_ptr++;
 
 				switch (c) {
-#if ENABLE_FEATURE_GETUSERNAME_AND_HOMEDIR
+# if ENABLE_FEATURE_GETUSERNAME_AND_HOMEDIR
 				case 'u':
 					pbuf = user_buf ? user_buf : (char*)"";
 					break;
-#endif
+# endif
 				case 'h':
 					pbuf = free_me = safe_gethostname();
 					*strchrnul(pbuf, '.') = '\0';
@@ -1488,7 +1488,7 @@ static void parse_and_put_prompt(const char *prmt_ptr)
 				case '$':
 					c = (geteuid() == 0 ? '#' : '$');
 					break;
-#if ENABLE_FEATURE_GETUSERNAME_AND_HOMEDIR
+# if ENABLE_FEATURE_GETUSERNAME_AND_HOMEDIR
 				case 'w':
 					/* /home/user[/something] -> ~[/something] */
 					pbuf = cwd_buf;
@@ -1501,7 +1501,7 @@ static void parse_and_put_prompt(const char *prmt_ptr)
 						pbuf = free_me = xasprintf("~%s", cwd_buf + l);
 					}
 					break;
-#endif
+# endif
 				case 'W':
 					pbuf = cwd_buf;
 					cp = strrchr(pbuf, '/');
@@ -1688,13 +1688,15 @@ int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, li
 
 	/* With null flags, no other fields are ever used */
 	state = st ? st : (line_input_t*) &const_int_0;
-#if ENABLE_FEATURE_EDITING_SAVEHISTORY
+#if MAX_HISTORY > 0
+# if ENABLE_FEATURE_EDITING_SAVEHISTORY
 	if ((state->flags & SAVE_HISTORY) && state->hist_file)
 		if (state->cnt_history == 0)
 			load_history(state);
-#endif
+# endif
 	if (state->flags & DO_HISTORY)
 		state->cur_history = state->cnt_history;
+#endif
 
 	/* prepare before init handlers */
 	cmdedit_y = 0;  /* quasireal y, not true if line > xt*yt */
@@ -1716,7 +1718,7 @@ int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, li
 	new_settings.c_cc[VTIME] = 0;
 	/* Turn off CTRL-C, so we can trap it */
 #ifndef _POSIX_VDISABLE
-#define _POSIX_VDISABLE '\0'
+# define _POSIX_VDISABLE '\0'
 #endif
 	new_settings.c_cc[VINTR] = _POSIX_VDISABLE;
 	tcsetattr_stdin_TCSANOW(&new_settings);
diff --git a/shell/ash.c b/shell/ash.c
index d7355ce..9529613 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -13317,7 +13317,7 @@ int ash_main(int argc UNUSED_PARAM, char **argv)
 	}
 
 	if (sflag || minusc == NULL) {
-#if ENABLE_FEATURE_EDITING_SAVEHISTORY
+#if MAX_HISTORY > 0 && ENABLE_FEATURE_EDITING_SAVEHISTORY
 		if (iflag) {
 			const char *hp = lookupvar("HISTFILE");
 			if (hp)
-- 
1.6.3.3



More information about the busybox-cvs mailing list