1 /* 2 * Copyright (c) 1988, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 * 7 * @(#)gets.c 8.1 (Berkeley) 06/11/93 8 */ 9 10 gets(buf) 11 char *buf; 12 { 13 register int c; 14 register char *lp; 15 16 for (lp = buf;;) 17 switch(c = getchar() & 0177) { 18 case '\n': 19 case '\r': 20 *lp = '\0'; 21 return; 22 case '\b': 23 case '\177': 24 if (lp > buf) { 25 lp--; 26 putchar('\b'); 27 putchar(' '); 28 putchar('\b'); 29 } 30 break; 31 case '#': 32 if (lp > buf) 33 --lp; 34 break; 35 case 'r'&037: { 36 register char *p; 37 38 putchar('\n'); 39 for (p = buf; p < lp; ++p) 40 putchar(*p); 41 break; 42 } 43 case '@': 44 case 'u'&037: 45 case 'w'&037: 46 lp = buf; 47 putchar('\n'); 48 break; 49 default: 50 *lp++ = c; 51 } 52 /*NOTREACHED*/ 53 } 54