[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: Re: history size 0 broken in 1.14(.4)
From: Denys Vlasenko <vda.linux () googlemail ! com>
Date: 2009-09-27 0:48:28
Message-ID: 200909270248.28446.vda.linux () googlemail ! com
[Download RAW message or body]
On Friday 25 September 2009 16:54, Alejandro Mery wrote:
> Hello,
>
> setting editing history to zero doesn't work in 1.14.4
>
> $ grep HISTORY .config
> CONFIG_FEATURE_EDITING_HISTORY=0
> # CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
>
>
> libbb/lineedit.c: In function 'read_line_input':
> libbb/lineedit.c:1500: error: 'line_input_t' has no member named
> 'cur_history'
> libbb/lineedit.c:1500: error: 'line_input_t' has no member named
> 'cnt_history'
> make[1]: *** [libbb/lineedit.o] Error 1
>
> I got dizzy trying to find where to "#if MAX_HISTORY" so I
> temporarily set it to 15.
Try attached patch.
--
vda
["3.patch" (text/x-diff)]
diff -d -urpN busybox.2/libbb/lineedit.c busybox.3/libbb/lineedit.c
--- busybox.2/libbb/lineedit.c 2009-09-26 15:14:57.000000000 +0200
+++ busybox.3/libbb/lineedit.c 2009-09-27 02:44:48.000000000 +0200
@@ -1095,15 +1095,15 @@ static void save_command_ps_at_cur_histo
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 *st
/* 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 c
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 c
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 c
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
/* 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
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 -d -urpN busybox.2/shell/ash.c busybox.3/shell/ash.c
--- busybox.2/shell/ash.c 2009-09-27 02:02:19.000000000 +0200
+++ busybox.3/shell/ash.c 2009-09-27 02:46:54.000000000 +0200
@@ -13317,7 +13317,7 @@ int ash_main(int argc UNUSED_PARAM, char
}
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)
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic