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