1 #include <u.h>
2 #include <libc.h>
3
4 int wrrd;
5
6 void
usage(void)7 usage(void)
8 {
9 fprint(2, "usage: rdwr [-w] file\n");
10 exits("usage");
11 }
12
13 void
main(int argc,char ** argv)14 main(int argc, char **argv)
15 {
16 int fd;
17 char buf[8192];
18 int n;
19
20 ARGBEGIN{
21 case 'w':
22 wrrd = 1;
23 break;
24 default:
25 usage();
26 }ARGEND;
27
28 if(argc != 1)
29 usage();
30
31 if((fd = open(argv[0], ORDWR)) < 0)
32 sysfatal("open: %r");
33
34 if(wrrd){
35 n = read(fd, buf, sizeof buf);
36 if(n < 0)
37 fprint(2, "read error: %r\n");
38 else{
39 write(1, buf, n);
40 print("\n");
41 }
42 }
43
44 while(print("> "), (n = read(0, buf, 1000)) > 0) {
45 seek(fd, 0, 0);
46 if(write(fd, buf, n-1) != n-1) /* n-1: no newline */
47 fprint(2, "write error: %r\n");
48 seek(fd, 0, 0);
49 n = read(fd, buf, sizeof buf);
50 if(n < 0)
51 fprint(2, "read error: %r\n");
52 else{
53 write(1, buf, n);
54 print("\n");
55 }
56 }
57 }
58