Rev 2572 | Rev 3194 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2572 | Rev 3193 | ||
---|---|---|---|
Line 238... | Line 238... | ||
238 | strncpy(name, output, MAX_SYMBOL_NAME); |
238 | strncpy(name, output, MAX_SYMBOL_NAME); |
239 | return found; |
239 | return found; |
240 | 240 | ||
241 | } |
241 | } |
242 | 242 | ||
- | 243 | //char *clever_readline(const char *prompt, chardev_t *input); |
|
243 | static char * clever_readline(const char *prompt, chardev_t *input) |
244 | static char *clever_readline(const char *prompt, chardev_t *input) |
244 | { |
245 | { |
245 | static int histposition = 0; |
246 | static int histposition = 0; |
246 | 247 | ||
247 | static char tmp[MAX_CMDLINE+1]; |
248 | static char tmp[MAX_CMDLINE + 1]; |
Line 255... | Line 256... | ||
255 | while (1) { |
256 | while (1) { |
256 | c = _getc(input); |
257 | c = _getc(input); |
257 | if (c == '\n') { |
258 | if (c == '\n') { |
258 | putchar(c); |
259 | putchar(c); |
259 | break; |
260 | break; |
- | 261 | } |
|
260 | } if (c == '\b') { /* Backspace */ |
262 | if (c == '\b') { /* Backspace */ |
261 | if (position == 0) |
263 | if (position == 0) |
262 | continue; |
264 | continue; |
263 | for (i = position; i < curlen; i++) |
265 | for (i = position; i < curlen; i++) |
264 | current[i - 1] = current[i]; |
266 | current[i - 1] = current[i]; |
265 | curlen--; |
267 | curlen--; |
Line 541... | Line 543... | ||
541 | switch (cmd->argv[i].type) { |
543 | switch (cmd->argv[i].type) { |
542 | case ARG_TYPE_STRING: |
544 | case ARG_TYPE_STRING: |
543 | buf = (char *) cmd->argv[i].buffer; |
545 | buf = (char *) cmd->argv[i].buffer; |
544 | strncpy(buf, (const char *) &cmdline[start], |
546 | strncpy(buf, (const char *) &cmdline[start], |
545 | min((end - start) + 2, cmd->argv[i].len)); |
547 | min((end - start) + 2, cmd->argv[i].len)); |
546 | buf[min((end - start) + 1, cmd->argv[i].len - 1)] = '\0'; |
548 | buf[min((end - start) + 1, cmd->argv[i].len - 1)] = |
- | 549 | '\0'; |
|
547 | break; |
550 | break; |
548 | case ARG_TYPE_INT: |
551 | case ARG_TYPE_INT: |
549 | if (parse_int_arg(cmdline + start, end - start + 1, |
552 | if (parse_int_arg(cmdline + start, end - start + 1, |
550 | &cmd->argv[i].intval)) |
553 | &cmd->argv[i].intval)) |
551 | error = 1; |
554 | error = 1; |
Line 558... | Line 561... | ||
558 | min((end-start), cmd->argv[i].len)); |
561 | min((end-start), cmd->argv[i].len)); |
559 | buf[min((end - start), cmd->argv[i].len - 1)] = |
562 | buf[min((end - start), cmd->argv[i].len - 1)] = |
560 | '\0'; |
563 | '\0'; |
561 | cmd->argv[i].intval = (unative_t) buf; |
564 | cmd->argv[i].intval = (unative_t) buf; |
562 | cmd->argv[i].vartype = ARG_TYPE_STRING; |
565 | cmd->argv[i].vartype = ARG_TYPE_STRING; |
563 | } else if (!parse_int_arg(cmdline + start, end - start + 1, |
566 | } else if (!parse_int_arg(cmdline + start, |
564 | &cmd->argv[i].intval)) { |
567 | end - start + 1, &cmd->argv[i].intval)) { |
565 | cmd->argv[i].vartype = ARG_TYPE_INT; |
568 | cmd->argv[i].vartype = ARG_TYPE_INT; |
566 | } else { |
569 | } else { |
567 | printf("Unrecognized variable argument.\n"); |
570 | printf("Unrecognized variable argument.\n"); |
568 | error = 1; |
571 | error = 1; |
569 | } |
572 | } |