xref: /plan9/sys/src/cmd/aux/rdwr.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
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