+ char c;
+ read (STDIN_FILENO, &c, 1);
+
+ switch (c)
+ {
+ case '\n':
+ /* Done. */
+ goto got_cmd;
+
+ case '\b':
+ /* Back up cursor, overwrite character, back up again. */
+ printf ("\b \b");
+ break;
+
+ case 27: /* Escape. */
+ case ('U' - 'A') + 1: /* Ctrl+U. */
+ /* Clear entire line. */
+ printf ("\n--");
+ cp = command;
+ break;
+
+ default:
+ /* Add character to line. */
+ *cp++ = c;
+ if (cp >= command + sizeof command - 1)
+ goto got_cmd;
+ break;
+ }