SCCS-vsn: usr.bin/wc/wc.c 4.6
-static char *sccsid = "@(#)wc.c 4.5 (Berkeley) %G%";
+static char *sccsid = "@(#)wc.c 4.6 (Berkeley) %G%";
/* wc line and word count */
#include <stdio.h>
long linect, wordct, charct, pagect;
long tlinect, twordct, tcharct, tpagect;
/* wc line and word count */
#include <stdio.h>
long linect, wordct, charct, pagect;
long tlinect, twordct, tcharct, tpagect;
-int baud=300; /* baud rate */
-int cps=30; /* # of chars per second */
-int lpp=66; /* # of lines per page */
main(argc, argv)
char **argv;
main(argc, argv)
char **argv;
while (argc > 1 && *argv[1] == '-') {
switch (argv[1][1]) {
while (argc > 1 && *argv[1] == '-') {
switch (argv[1][1]) {
- case 'l': case 'w': case 'c': case 'p': case 't':
+ case 'l': case 'w': case 'c':
- case 's':
- lpp = atoi(argv[1]+2);
- if (lpp <= 0)
- goto usage;
- break;
- case 'v':
- verbose++;
- wd = "lwcpt";
- break;
- case 'u':
- uucp++;
- break;
- case 'b':
- baud = atoi(argv[1]+2);
- if (baud == 110)
- cps = 10;
- else
- cps = baud / 10;
- if (cps <= 0)
- goto usage;
- break;
- fprintf(stderr, "Usage: wc [-lwcpt] [-v] [-u] [-spagesize] [-bbaudrate]\n");
+ fprintf(stderr, "Usage: wc [-lwc] [files]\n");
exit(1);
}
argc--;
argv++;
}
exit(1);
}
argc--;
argv++;
}
- if (uucp)
- cps = cps * 9 / 10; /* 27 cps at 300 baud */
-
- if (verbose) {
- for (p=wd; *p; p++)
- switch(*p) {
- case 'l':
- printf("lines\t");
- break;
- case 'w':
- printf("words\t");
- break;
- case 'c':
- printf("chars\t");
- break;
- case 'p':
- printf("pages\t");
- break;
- case 't':
- printf("time@%d\t",baud);
- break;
- }
- printf("\n");
- }
-
linect = 0;
wordct = 0;
charct = 0;
linect = 0;
wordct = 0;
charct = 0;
token = 0;
for(;;) {
c = getc(fp);
token = 0;
for(;;) {
c = getc(fp);
}
if(c=='\n') {
linect++;
}
if(c=='\n') {
linect++;
- if (linect % lpp == 1)
- pagect++;
}
else if(c!=' '&&c!='\t')
continue;
token = 0;
}
/* print lines, words, chars */
}
else if(c!=' '&&c!='\t')
continue;
token = 0;
}
/* print lines, words, chars */
- wcp(wd, charct, wordct, linect, pagect);
+ wcp(wd, charct, wordct, linect);
if(argc>1) {
printf(" %s\n", argv[i]);
} else
if(argc>1) {
printf(" %s\n", argv[i]);
} else
tlinect += linect;
twordct += wordct;
tcharct += charct;
tlinect += linect;
twordct += wordct;
tcharct += charct;
} while(++i<argc);
if(argc > 2) {
} while(++i<argc);
if(argc > 2) {
- wcp(wd, tcharct, twordct, tlinect, tpagect);
+ wcp(wd, tcharct, twordct, tlinect);
printf(" total\n");
}
exit(0);
}
printf(" total\n");
}
exit(0);
}
-wcp(wd, charct, wordct, linect, pagect)
+wcp(wd, charct, wordct, linect)
-long charct; long wordct; long linect, pagect;
+long charct; long wordct; long linect;
{
while (*wd) switch (*wd++) {
case 'l':
{
while (*wd) switch (*wd++) {
case 'l':
- case 'p':
- ipr(pagect);
- break;
-
- case 't':
- prttime(charct/cps);
- break;
- if (verbose)
- printf("%ld\t", num);
- else
- printf(" %7ld", num);
-prttime(secs)
-long secs;
-{
- int hrs,mins;
- float t;
- long osecs;
- char *units;
-
- osecs = secs;
- hrs = secs / (60*60);
- secs = secs % (60*60);
- mins = secs / 60;
- secs = secs % 60;
-
- t = osecs;
- if (hrs) {
- t /= (60*60);
- units = "hr";
- } else if (mins) {
- t /= 60;
- units = "mi";
- } else {
- units = "se";
- }
- if (verbose)
- printf("%4.1f %2s\t", t, units);
- else
- printf(" %4.1f %2s", t, units);
-}