39{
45
47
48 fputs(prompt, stdout);
50 return strlen(cmd);
51 }
52
53 fputs(prompt, stdout);
54 fflush(stdout);
55
59 strcpy(line, cmd);
60 fputs(line, stdout);
62 fflush(stdout);
63
64 do {
66
69
70 if (
c >=
' ' &&
c <
CH_EXT && escape_flag) {
74 }
75
76
79 for (
j = strlen(line);
j >=
i;
j--)
80 line[
j + 1] = line[
j];
84 }
85 for (
j =
i;
j < (
INT) strlen(line);
j++)
86 fputc(line[
j], stdout);
87 for (
j =
i;
j < (
INT) strlen(line);
j++)
88 fputc('\b', stdout);
89 }
90 }
91
92
95 fputc('\b', stdout);
96 for (
j =
i;
j <= (
INT) strlen(line);
j++) {
97 line[
j] = line[
j + 1];
99 fputc(line[
j], stdout);
100 else
101 fputc(' ', stdout);
102 }
103 for (
k = 0;
k <
j -
i;
k++)
104 fputc('\b', stdout);
105 }
106
107
109 for (
j =
i;
j <= (
INT) strlen(line);
j++) {
110 line[
j] = line[
j + 1];
112 fputc(line[
j], stdout);
113 else
114 fputc(' ', stdout);
115 }
116 for (
k = 0;
k <
j -
i;
k++)
117 fputc('\b', stdout);
118 }
119
120
121 if (
c == 23 ||
c == 21) {
123 memset(line, 0, sizeof(line));
124 printf("\r%s", prompt);
125 for (
j = 0;
j <
i;
j++)
126 fputc(' ', stdout);
127 for (
j = 0;
j <
i;
j++)
128 fputc('\b', stdout);
130 }
131
132
134 for (
j =
i;
j < (
INT) strlen(line);
j++)
135 fputc(' ', stdout);
136 for (
j =
i;
j < (
INT) strlen(line);
j++)
137 fputc('\b', stdout);
138 for (
j = strlen(line);
j >=
i;
j--)
140 }
141
142
145 fputc('\b', stdout);
146 }
147
148
150 fputc(line[
i++], stdout);
151
152
154 for (
j = 0;
j <
i;
j++)
155 fputc('\b', stdout);
157 }
158
159
160 if ((
c ==
CH_END ||
c == 5) &&
i < (
INT) strlen(line)) {
161 for (
j =
i;
j < (
INT) strlen(line);
j++)
162 fputc(line[
i++], stdout);
164 }
165
166
171 fputc('\r', stdout);
172 fputs(prompt, stdout);
173 for (
j = 0;
j <
i;
j++)
174 fputc(' ', stdout);
175 for (
j = 0;
j <
i;
j++)
176 fputc('\b', stdout);
177 memcpy(line,
history[hi], 256);
179 for (
j = 0;
j <
i;
j++)
180 fputc(line[
j], stdout);
181 }
182 }
183
184
189 fputc('\r', stdout);
190 fputs(prompt, stdout);
191 for (
j = 0;
j <
i;
j++)
192 fputc(' ', stdout);
193 for (
j = 0;
j <
i;
j++)
194 fputc('\b', stdout);
195 memcpy(line,
history[hi], 256);
197 for (
j = 0;
j <
i;
j++)
198 fputc(line[
j], stdout);
199 }
200 }
201
202
208 fputs(line +
i, stdout);
210 break;
211 }
213 fputc(7, stdout);
214 }
215
216
217 if (
c == 9 && dir != NULL) {
219
220
221 fputc('\r', stdout);
222 fputs(prompt, stdout);
223 fputs(line, stdout);
224
225 for (
j = 0;
j < (
INT) strlen(line) -
i;
j++)
226 fputc('\b', stdout);
227 }
228
231 fflush(stdout);
232 }
233
236
238 fputc('\r', stdout);
239 fputs(prompt, stdout);
240 fputs(line, stdout);
241
242 for (
j = 0;
j < (
INT) strlen(line) -
i;
j++)
243 fputc('\b', stdout);
244
245 fflush(stdout);
246 }
247 }
248
250
251 strcpy(cmd, line);
252
253 if (dir != NULL)
255 cmd[0]) {
258 }
259
260
262
263 fputc('\n', stdout);
264
265 return strlen(line);
266}
char history[MAX_HISTORY][LINE_LENGTH]
INT ss_getchar(BOOL reset)
char * ss_gets(char *string, int size)