mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-15 11:20:03 +00:00
61 lines
745 B
C
61 lines
745 B
C
|
#include "sam.h"
|
||
|
|
||
|
static int inerror=FALSE;
|
||
|
|
||
|
/*
|
||
|
* A reasonable interface to the system calls
|
||
|
*/
|
||
|
|
||
|
void
|
||
|
resetsys(void)
|
||
|
{
|
||
|
inerror = FALSE;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
syserror(char *a)
|
||
|
{
|
||
|
char buf[ERRMAX];
|
||
|
|
||
|
if(!inerror){
|
||
|
inerror=TRUE;
|
||
|
errstr(buf, sizeof buf);
|
||
|
dprint("%s: ", a);
|
||
|
error_s(Eio, buf);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int
|
||
|
Read(int f, void *a, int n)
|
||
|
{
|
||
|
char buf[ERRMAX];
|
||
|
|
||
|
if(read(f, (char *)a, n)!=n) {
|
||
|
if (lastfile)
|
||
|
lastfile->rescuing = 1;
|
||
|
errstr(buf, sizeof buf);
|
||
|
if (downloaded)
|
||
|
fprint(2, "read error: %s\n", buf);
|
||
|
rescue();
|
||
|
exits("read");
|
||
|
}
|
||
|
return n;
|
||
|
}
|
||
|
|
||
|
int
|
||
|
Write(int f, void *a, int n)
|
||
|
{
|
||
|
int m;
|
||
|
|
||
|
if((m=write(f, (char *)a, n))!=n)
|
||
|
syserror("write");
|
||
|
return m;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
Seek(int f, long n, int w)
|
||
|
{
|
||
|
if(seek(f, n, w)==-1)
|
||
|
syserror("seek");
|
||
|
}
|