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