374: if (cp < ep) {
375: if (buf[cp] & 0x80) cons_putch(p, buf[cp++]);
376: cons_putch(p, buf[cp++]);
377: }
381: if (cp > 0) {
382: if (buf[--cp] & 0x80){cons_putch(p, BS); cp--;}
383: cons_putch(p, BS);
384: }
398: }
399: for (; cp > 0; cp--) cons_putch(p, BS);
400: i = STRLEN(&hist[hp]);
402: for (; cp < i; cp++)
403: cons_putch(p, buf[cp] = hist[hp + cp]);
404: c = ERASE;
411: buf[--ep] = ' ';
412: cons_putch(p, BS);
413: }
414: cp -= len;
415: for (i = cp; i < ep + len; i++) cons_putch(p, buf[i]);
416: for (; i > cp; i--) cons_putch(p, BS);
417: continue;
419: if (c == CAN || c == CAN2) {
420: for (; cp > 0; cp--) cons_putch(p, BS);
421: c = ERASE;
423: if (c == ERASE) {
424: for (i = cp; i < ep; i++) cons_putch(p, ' ');
425: for (; i > cp; i--) cons_putch(p, BS);
426: ep = cp;
430:
431: if (c == CTLC) {cons_putch(p, c); break;}
432:
443: buf[cp] = c;
444: for (ep += len, i = cp; i < ep; i++) cons_putch(p, buf[i]);
445: for (cp += len; i > cp; i--) cons_putch(p, BS);
446: }
447: if (c == LF) {
448: cons_putch(p, CR); /* Echo back */
449: cons_putch(p, LF);
450: }
487: if ((c = *buf++) == LF && p->newline) {
488: if (cons_putch(p, CR)) break;
489: }
490: if (cons_putch(p, c)) break;
491: }
525: if (c == LF && p->input != RAW)
526: cons_putch(p, CR);
527: cons_putch(p, c);
528: }