AUSAM/source/libS/portli.c
#include "stdio.h"
struct _iobuf *
_ntof(n)
register int n;
{
register int i;
for (i=0; i<_NFILE; i++)
if (n == _iob[i]._file)
return(&_iob[i]);
return(NULL);
}
int cin 0;
int cout 1;
cclose(n)
{
return(fclose(_ntof(n)));
}
ceof(n)
{
return(feof(_ntof(n)));
}
cexit(x)
{
exit(x);
}
cflush(n)
{
return(fflush(_ntof(n)));
}
cgetc(n)
{
register c;
if ((c = getc(_ntof(n))) < 0)
return(0);
return(c);
}
copen(f, m)
char m;
{
register struct _iobuf *iop;
if ((iop = fopen(f, &m)) == NULL)
return(-1);
return(fileno(iop));
}
cputc(c, n)
{
putc(c, _ntof(n));
}
cread(a, b, c, n)
{
return(fread(a, b, c, _ntof(n)));
}
cwrite(a, b, c, n)
{
return(fwrite(a, b, c, _ntof(n)));
}
getcharz()
{
register c;
if ((c = getc(_ntof(cin))) < 0)
return(0);
return(c);
}
printf(a, b, c, d)
{
struct _iobuf _strbuf;
if (a==-1) {
_strbuf._flag = _IOWRT+_IOSTRG;
_strbuf._ptr = b;
_strbuf._cnt = 32767;
_doprnt(c, &d, &_strbuf);
putc('\0', &_strbuf);
} else if (a<=10) {
_doprnt(b, &c, _ntof(a));
} else
_doprnt(a, &b, _ntof(cout));
}
putcharz(c)
{
return(putc(c, _ntof(cout)));
}
gets(s)
char *s;
{
register c;
register char *cs;
cs = s;
while ((c = getc(_ntof(cin))) != '\n' && c>=0)
*cs++ = c;
if (c<0 && cs==s)
return(NULL);
*cs++ = '\0';
return(s);
}
puts(s)
char *s;
{
register c;
while (c = *s++)
putc(c, _ntof(cout));
putc('\n', _ntof(cout));
}
rew(n)
{
rewind(_ntof(n));
}
scanf(a, b, c, d)
{
struct _iobuf strbuf;
register char *s;
if (a == -1) {
strbuf._flag = _IOREAD|_IOSTRG;
strbuf._ptr = strbuf._base = b;
strbuf._cnt = 0;
s = b;
while (*s++)
strbuf._cnt++;
return(_doscan(&strbuf, c, &d));
} else if (a<=10)
return(_doscan(_ntof(a), b, &c));
else
return(_doscan(_ntof(cin), a, &b));
}