/* * Copyright (c) 1988 Regents of the University of California. * All rights reserved. * * Redistribution is only permitted until one year after the first shipment * of 4.4BSD by the Regents. Otherwise, redistribution and use in source and * binary forms are permitted provided that: (1) source distributions retain * this entire copyright notice and comment, and (2) distributions including * binaries display the following acknowledgement: This product includes * software developed by the University of California, Berkeley and its * contributors'' in the documentation or other materials provided with the * distribution and in all advertising materials mentioning features or use * of this software. Neither the name of the University nor the names of * its contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * @(#)gets.c 7.5 (Berkeley) 6/28/90 */ gets(buf) char *buf; { register int c; register char *lp; for (lp = buf;;) switch(c = getchar() & 0177) { case '\n': case '\r': *lp = '\0'; return; case '\b': case '\177': if (lp > buf) { lp--; putchar('\b'); putchar(' '); putchar('\b'); } break; case '#': if (lp > buf) --lp; break; case 'r'&037: { register char *p; putchar('\n'); for (p = buf; p < lp; ++p) putchar(*p); break; } case '@': case 'u'&037: case 'w'&037: lp = buf; putchar('\n'); break; default: *lp++ = c; } /*NOTREACHED*/ }