added base src
[xv6-db.git] / wc.c
blobb728d2752d79386b947bce4ed1694c8620ce31ab
1 #include "types.h"
2 #include "stat.h"
3 #include "user.h"
5 char buf[512];
7 void
8 wc(int fd, char *name)
10 int i, n;
11 int l, w, c, inword;
13 l = w = c = 0;
14 inword = 0;
15 while((n = read(fd, buf, sizeof(buf))) > 0){
16 for(i=0; i<n; i++){
17 c++;
18 if(buf[i] == '\n')
19 l++;
20 if(strchr(" \r\t\n\v", buf[i]))
21 inword = 0;
22 else if(!inword){
23 w++;
24 inword = 1;
28 if(n < 0){
29 printf(1, "wc: read error\n");
30 exit();
32 printf(1, "%d %d %d %s\n", l, w, c, name);
35 int
36 main(int argc, char *argv[])
38 int fd, i;
40 if(argc <= 1){
41 wc(0, "");
42 exit();
45 for(i = 1; i < argc; i++){
46 if((fd = open(argv[i], 0)) < 0){
47 printf(1, "cat: cannot open %s\n", argv[i]);
48 exit();
50 wc(fd, argv[i]);
51 close(fd);
53 exit();