aboutsummaryrefslogtreecommitdiff
path: root/shell/cmdedit.c
diff options
context:
space:
mode:
authorGlenn L McGrath <bug1@ihug.co.nz>2002-12-09 11:10:40 +0000
committerGlenn L McGrath <bug1@ihug.co.nz>2002-12-09 11:10:40 +0000
commitfdbbb048933389c5a2624aa77aa5af2dbea75b01 (patch)
tree41623dd3faac0290e7739fde7c7228f7fa47e18e /shell/cmdedit.c
parent6b5bd0e5abbfb6b3b925dfd8452c72589569981b (diff)
downloadbusybox-w32-fdbbb048933389c5a2624aa77aa5af2dbea75b01.tar.gz
busybox-w32-fdbbb048933389c5a2624aa77aa5af2dbea75b01.tar.bz2
busybox-w32-fdbbb048933389c5a2624aa77aa5af2dbea75b01.zip
Command line history changes, lastpatch_71 from Vladimir N. Oleynik
Diffstat (limited to 'shell/cmdedit.c')
-rw-r--r--shell/cmdedit.c46
1 files changed, 25 insertions, 21 deletions
diff --git a/shell/cmdedit.c b/shell/cmdedit.c
index 73378e659..2e102e351 100644
--- a/shell/cmdedit.c
+++ b/shell/cmdedit.c
@@ -1131,40 +1131,44 @@ static int get_next_history(void)
1131 } 1131 }
1132} 1132}
1133 1133
1134
1135extern void load_history ( char *fromfile )
1136{
1137#ifdef CONFIG_FEATURE_COMMAND_SAVEHISTORY 1134#ifdef CONFIG_FEATURE_COMMAND_SAVEHISTORY
1135extern void load_history ( const char *fromfile )
1136{
1138 FILE *fp; 1137 FILE *fp;
1138 int hi;
1139 1139
1140 // cleanup old 1140 /* cleanup old */
1141 while ( n_history ) { 1141
1142 if ( history [n_history - 1] ) 1142 for(hi = n_history; hi > 0; ) {
1143 free ( history [n_history - 1] ); 1143 hi--;
1144 n_history--; 1144 free ( history [hi] );
1145 } 1145 }
1146 1146
1147 if (( fp = fopen ( fromfile, "r" ))) { 1147 if (( fp = fopen ( fromfile, "r" ))) {
1148 char buffer [256];
1149 int i, l;
1150 1148
1151 for ( i = 0; i < MAX_HISTORY; i++ ) { 1149 for ( hi = 0; hi < MAX_HISTORY; ) {
1152 if ( !fgets ( buffer, sizeof( buffer ) - 1, fp )) 1150 char * hl = get_line_from_file(fp);
1151 int l;
1152
1153 if(!hl)
1153 break; 1154 break;
1154 l = xstrlen ( buffer ); 1155 chomp(hl);
1155 if ( l && buffer [l - 1] == '\n' ) 1156 l = strlen(hl);
1156 buffer [l - 1] = 0; 1157 if(l >= BUFSIZ)
1157 history [n_history++] = xstrdup ( buffer ); 1158 hl[BUFSIZ-1] = 0;
1159 if(l == 0 || hl[0] == ' ') {
1160 free(hl);
1161 continue;
1162 }
1163 history [hi++] = hl;
1158 } 1164 }
1159 fclose ( fp ); 1165 fclose ( fp );
1160 } 1166 }
1161 cur_history = n_history; 1167 cur_history = n_history = hi;
1162#endif
1163} 1168}
1164 1169
1165extern void save_history ( char *tofile ) 1170extern void save_history ( const char *tofile )
1166{ 1171{
1167#ifdef CONFIG_FEATURE_COMMAND_SAVEHISTORY
1168 FILE *fp = fopen ( tofile, "w" ); 1172 FILE *fp = fopen ( tofile, "w" );
1169 1173
1170 if ( fp ) { 1174 if ( fp ) {
@@ -1176,8 +1180,8 @@ extern void save_history ( char *tofile )
1176 } 1180 }
1177 fclose ( fp ); 1181 fclose ( fp );
1178 } 1182 }
1179#endif
1180} 1183}
1184#endif
1181 1185
1182#endif 1186#endif
1183 1187