Subversion Repositories HelenOS

Rev

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
            }