005a2a073132360f56fb5b888bb01aaad46440cf
[fw/sdcc] / device / lib / gets.c
1 #include <stdio.h>
2
3 char * gets(const char *str) {
4   char *s=str;
5   char c;
6   unsigned int count=0;
7   
8   while (1) {
9     c=getchar();
10     switch(c) {
11     case '\b': // backspace
12       if (count) {
13         putchar ('\b');
14         putchar (' ');
15         putchar ('\b');
16         s--;
17         count--;
18       }
19       break;
20     case '\n':
21     case '\r': // CR or LF
22       putchar('\r');
23       putchar('\n');
24       *s=0;
25       return str;
26     default:
27       *s++=c;
28       count++;
29       putchar(c);
30       break;
31     }
32   }
33 }