1 #include <u.h> 2 #include <libc.h> 3 4 int wrrd; 5 6 void 7 usage(void) 8 { 9 fprint(2, "usage: rdwr [-w] file\n"); 10 exits("usage"); 11 } 12 13 void 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