| #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"); |
| } |