mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 08:24:18 +00:00
45 lines
643 B
C
45 lines
643 B
C
|
|
/*
|
|
Copyright 1983
|
|
Alcyon Corporation
|
|
8716 Production Ave.
|
|
San Diego, CA 92121
|
|
|
|
@(#) getchar.c - Sep 12, 1983 REGULUS 4.1
|
|
*/
|
|
|
|
/* v6 getchar routine */
|
|
|
|
#define BSIZE 512
|
|
|
|
struct iob {
|
|
int fd; /* file descriptor */
|
|
int cc; /* char count */
|
|
char *cp; /* ptr to next character */
|
|
char cbuf[BSIZE]; /* char buffer */
|
|
} fin;
|
|
|
|
getchar()
|
|
{
|
|
char c;
|
|
register int i;
|
|
|
|
if (fin.fd == 0) {
|
|
if (read(0,&c,1) <= 0 || c==4)
|
|
return(0);
|
|
i = c;
|
|
return(i & 0xff);
|
|
}
|
|
if (fin.cc <= 0) {
|
|
fin.cp = &(fin.cbuf[0]);
|
|
fin.cc = read(fin.fd,fin.cp,BSIZE);
|
|
}
|
|
if (fin.cc <= 0)
|
|
return(0);
|
|
fin.cc--;
|
|
i = *(fin.cp)++;
|
|
return(i & 0xff);
|
|
}
|
|
|
|
|