mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 00:14:25 +00:00
93 lines
1.4 KiB
C
93 lines
1.4 KiB
C
#define BLEN 512
|
||
#include <klib.h>
|
||
struct iob {
|
||
int fd; /*file descriptor*/
|
||
int cc; /*char count*/
|
||
char *cp; /*ptr to next char*/
|
||
char cbuf[BLEN]; /*char buffer*/
|
||
};
|
||
|
||
fcreat(fname,ibuf,x)
|
||
char *fname;
|
||
int x;
|
||
register struct iob *ibuf;
|
||
{
|
||
|
||
ibuf->cc = BLEN; /*no chars*/
|
||
ibuf->cp = &(ibuf->cbuf[0]);
|
||
x = (x == 0) ? 0 : 1;
|
||
return(ibuf->fd=creat(fname,2,x));
|
||
}
|
||
|
||
putc(c,ibuf)
|
||
char c;
|
||
register struct iob *ibuf;
|
||
{
|
||
|
||
if(ibuf->cc<=0) {
|
||
ibuf->cp = &(ibuf->cbuf[0]);
|
||
if(write(ibuf->fd,ibuf->cp,BLEN) != BLEN)
|
||
__outerr();
|
||
ibuf->cc = BLEN;
|
||
}
|
||
*(ibuf->cp)++ = c;
|
||
ibuf->cc--;
|
||
return(c);
|
||
}
|
||
|
||
putw(w,ibuf)
|
||
int w;
|
||
register struct iob *ibuf;
|
||
{
|
||
|
||
register j;
|
||
int i;
|
||
|
||
putc((w>>8)&0xff,ibuf);
|
||
putc(w&0xff,ibuf);
|
||
return(w);
|
||
}
|
||
lputw(x,buff)
|
||
int *x;
|
||
struct iobuf *buff;
|
||
{
|
||
return(putw(*x,buff));
|
||
}
|
||
|
||
myfflush(ibuf)
|
||
register struct iob *ibuf;
|
||
{
|
||
|
||
register i;
|
||
|
||
i = BLEN - ibuf->cc;
|
||
ibuf->cc = BLEN;
|
||
ibuf->cp = &(ibuf->cbuf[0]);
|
||
if(write(ibuf->fd,ibuf->cp,i) != i)
|
||
__outerr();
|
||
return(0);
|
||
}
|
||
,ibuf);
|
||
putc((int)l &0xff,ibuf);
|
||
return(l);
|
||
}
|
||
|
||
|