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