/* -*- mode: c -*-
 * $Id: wc.gcc,v 1.4 2001/05/24 20:55:35 doug Exp $
 * http://www.bagley.org/~doug/shootout/
 *
 * this program is modified from:
 *   http://cm.bell-labs.com/cm/cs/who/bwk/interps/pap.html
 * Timing Trials, or, the Trials of Timing: Experiments with Scripting
 * and User-Interface Languages</a> by Brian W. Kernighan and
 * Christopher J. Van Wyk.
 *
 */

#include <stdio.h>
#include <stdlib.h>

#define    IN    1    
#define    OUT    0    

int
main() {
    int i, c, nl, nw, nc, state, nread;
    char buf[4096];

    state = OUT;
    nl = nw = nc = 0;
    while ((nread = read(0, buf, sizeof(buf))) > 0) {
        nc += nread;
        for (i=0; i<nread; i++) {
            c = buf[i];
            if (c == '\n')
            ++nl;
            if (c == ' ' || c == '\r' || c == '\n' || c == '\t')
            state = OUT;
            else if (state == OUT) {
            state = IN;
            ++nw;
            }
        }
    }
    printf("%d %d %d\n", nl, nw, nc);
    return(0);
}