Blame


1 ed7c8e8d 2003-09-30 devnull #include "sam.h"
2 ed7c8e8d 2003-09-30 devnull
3 ed7c8e8d 2003-09-30 devnull static int inerror=FALSE;
4 ed7c8e8d 2003-09-30 devnull
5 ed7c8e8d 2003-09-30 devnull /*
6 ed7c8e8d 2003-09-30 devnull * A reasonable interface to the system calls
7 ed7c8e8d 2003-09-30 devnull */
8 ed7c8e8d 2003-09-30 devnull
9 ed7c8e8d 2003-09-30 devnull void
10 ed7c8e8d 2003-09-30 devnull resetsys(void)
11 ed7c8e8d 2003-09-30 devnull {
12 ed7c8e8d 2003-09-30 devnull inerror = FALSE;
13 ed7c8e8d 2003-09-30 devnull }
14 ed7c8e8d 2003-09-30 devnull
15 ed7c8e8d 2003-09-30 devnull void
16 ed7c8e8d 2003-09-30 devnull syserror(char *a)
17 ed7c8e8d 2003-09-30 devnull {
18 ed7c8e8d 2003-09-30 devnull char buf[ERRMAX];
19 ed7c8e8d 2003-09-30 devnull
20 ed7c8e8d 2003-09-30 devnull if(!inerror){
21 ed7c8e8d 2003-09-30 devnull inerror=TRUE;
22 ed7c8e8d 2003-09-30 devnull errstr(buf, sizeof buf);
23 ed7c8e8d 2003-09-30 devnull dprint("%s: ", a);
24 ed7c8e8d 2003-09-30 devnull error_s(Eio, buf);
25 ed7c8e8d 2003-09-30 devnull }
26 ed7c8e8d 2003-09-30 devnull }
27 ed7c8e8d 2003-09-30 devnull
28 ed7c8e8d 2003-09-30 devnull int
29 ed7c8e8d 2003-09-30 devnull Read(int f, void *a, int n)
30 ed7c8e8d 2003-09-30 devnull {
31 ed7c8e8d 2003-09-30 devnull char buf[ERRMAX];
32 ed7c8e8d 2003-09-30 devnull
33 ed7c8e8d 2003-09-30 devnull if(read(f, (char *)a, n)!=n) {
34 ed7c8e8d 2003-09-30 devnull if (lastfile)
35 ed7c8e8d 2003-09-30 devnull lastfile->rescuing = 1;
36 ed7c8e8d 2003-09-30 devnull errstr(buf, sizeof buf);
37 ed7c8e8d 2003-09-30 devnull if (downloaded)
38 ed7c8e8d 2003-09-30 devnull fprint(2, "read error: %s\n", buf);
39 ed7c8e8d 2003-09-30 devnull rescue();
40 ed7c8e8d 2003-09-30 devnull exits("read");
41 ed7c8e8d 2003-09-30 devnull }
42 ed7c8e8d 2003-09-30 devnull return n;
43 ed7c8e8d 2003-09-30 devnull }
44 ed7c8e8d 2003-09-30 devnull
45 ed7c8e8d 2003-09-30 devnull int
46 ed7c8e8d 2003-09-30 devnull Write(int f, void *a, int n)
47 ed7c8e8d 2003-09-30 devnull {
48 ed7c8e8d 2003-09-30 devnull int m;
49 ed7c8e8d 2003-09-30 devnull
50 ed7c8e8d 2003-09-30 devnull if((m=write(f, (char *)a, n))!=n)
51 ed7c8e8d 2003-09-30 devnull syserror("write");
52 ed7c8e8d 2003-09-30 devnull return m;
53 ed7c8e8d 2003-09-30 devnull }
54 ed7c8e8d 2003-09-30 devnull
55 ed7c8e8d 2003-09-30 devnull void
56 ed7c8e8d 2003-09-30 devnull Seek(int f, long n, int w)
57 ed7c8e8d 2003-09-30 devnull {
58 ed7c8e8d 2003-09-30 devnull if(seek(f, n, w)==-1)
59 ed7c8e8d 2003-09-30 devnull syserror("seek");
60 ed7c8e8d 2003-09-30 devnull }