mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-15 11:20:03 +00:00
60 lines
745 B
C
60 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");
|
|
}
|