#define	BELL	007
#define	BS	010
#define	LF	0x0a
#define	CR	0x0d
#define	CNTRLU	'U'-'@'
#define	DEL	0177

gets(buf)
	char *buf; {
	int i = 0;
	char c;

	while(1) {
		c = getchar();
		c &= 0177;
		switch(c) {
		case CR:
		case LF:		
		    if (i)
		      buf[i] = 0;
		    if(c == CR) putchar(LF);
		    return i;
		    break;
		case BS:
		case DEL:
			if(i) {
				buf[i--] = 0;
				putchar(BS); putchar(' '); putchar(BS);
				}
			break;
		case CNTRLU:
			i = 0;
			putchar(LF);
			break;
		default:
			if(i == 79) {
				putchar(BELL);
				break;
				}
			else {
				buf[i++] = c;
				putchar(c);
				break;
				}
		}
	}
	}
