13e12c5d1SDavid du Colombier #include "sam.h" 23e12c5d1SDavid du Colombier 33e12c5d1SDavid du Colombier static int inerror=FALSE; 43e12c5d1SDavid du Colombier 53e12c5d1SDavid du Colombier /* 63e12c5d1SDavid du Colombier * A reasonable interface to the system calls 73e12c5d1SDavid du Colombier */ 83e12c5d1SDavid du Colombier 93e12c5d1SDavid du Colombier void 103e12c5d1SDavid du Colombier resetsys(void) 113e12c5d1SDavid du Colombier { 123e12c5d1SDavid du Colombier inerror = FALSE; 133e12c5d1SDavid du Colombier } 143e12c5d1SDavid du Colombier 153e12c5d1SDavid du Colombier void 163e12c5d1SDavid du Colombier syserror(char *a) 173e12c5d1SDavid du Colombier { 18*9a747e4fSDavid du Colombier char buf[ERRMAX]; 193e12c5d1SDavid du Colombier 203e12c5d1SDavid du Colombier if(!inerror){ 213e12c5d1SDavid du Colombier inerror=TRUE; 22*9a747e4fSDavid du Colombier errstr(buf, sizeof buf); 233e12c5d1SDavid du Colombier dprint("%s: ", a); 243e12c5d1SDavid du Colombier error_s(Eio, buf); 253e12c5d1SDavid du Colombier } 263e12c5d1SDavid du Colombier } 273e12c5d1SDavid du Colombier 283e12c5d1SDavid du Colombier int 293e12c5d1SDavid du Colombier Read(int f, void *a, int n) 303e12c5d1SDavid du Colombier { 31*9a747e4fSDavid du Colombier char buf[ERRMAX]; 32bd389b36SDavid du Colombier 33bd389b36SDavid du Colombier if(read(f, (char *)a, n)!=n) { 34bd389b36SDavid du Colombier if (lastfile) 357dd7cddfSDavid du Colombier lastfile->rescuing = 1; 36*9a747e4fSDavid du Colombier errstr(buf, sizeof buf); 37bd389b36SDavid du Colombier if (downloaded) 38bd389b36SDavid du Colombier fprint(2, "read error: %s\n", buf); 39bd389b36SDavid du Colombier rescue(); 40bd389b36SDavid du Colombier exits("read"); 41bd389b36SDavid du Colombier } 423e12c5d1SDavid du Colombier return n; 433e12c5d1SDavid du Colombier } 443e12c5d1SDavid du Colombier 453e12c5d1SDavid du Colombier int 463e12c5d1SDavid du Colombier Write(int f, void *a, int n) 473e12c5d1SDavid du Colombier { 483e12c5d1SDavid du Colombier int m; 493e12c5d1SDavid du Colombier 503e12c5d1SDavid du Colombier if((m=write(f, (char *)a, n))!=n) 513e12c5d1SDavid du Colombier syserror("write"); 523e12c5d1SDavid du Colombier return m; 533e12c5d1SDavid du Colombier } 543e12c5d1SDavid du Colombier 553e12c5d1SDavid du Colombier void 563e12c5d1SDavid du Colombier Seek(int f, long n, int w) 573e12c5d1SDavid du Colombier { 583e12c5d1SDavid du Colombier if(seek(f, n, w)==-1) 593e12c5d1SDavid du Colombier syserror("seek"); 603e12c5d1SDavid du Colombier } 61