/* @(#)stat.c 1.2 90/01/03 NFS Rev 2 Testsuite */
/* 1.3 Lachman ONC Test Suite source */
* crunch through time stat files. This program will handle two
* 1.7 real 0.0 user 0.4 sys
* ATT format may break out minutes -- 2:03.2
int attfmt
= 0; /* set if using att time format */
fprintf(stderr
, "Usage: %s datafile\n", Prog
);
fprintf(stderr
, "%s: unable to open %s\n",
if ((i
= fgetc(fp
)) == EOF
) {
fprintf(stderr
, "%s: %s is empty\n",
if (c
== '\n' || c
== '\r' || c
== 'r')
fmt
= "%F %*s %F %*s %F %*s"; /* BSD fmt */
if (ungetc(c
, fp
) == EOF
) {
fprintf(stderr
, "%s: can't push char back to %s\n",
for (n
= 0; getattfmt(fp
, n
, 1); n
++) {
while(fscanf(fp
, fmt
, &real
[n
], &user
[n
], &sys
[n
]) == 3)
fprintf(stderr
, "%s: no data in %s\n",
* which: 1: real, 2:user, 3:sys
* returns 0 if no more data, else 1
if (n
< 0 || n
>= MAXINDEX
) {
fprintf(stderr
, "%s: illegal index=%d in getattfmt\n",
fprintf(stderr
, "%s: illegal which=%d in getattfmt\n",
while (fgets(buf
, BUFSIZ
, fp
)) {
for (p
= buf
; *p
&& *p
!= '\n'; p
++)
/* look for blank line and skip it */
for (p
= buf
; *p
&& (*p
== ' ' || *p
== '\t'); p
++)
for (p
= buf
; *p
&& *p
!= ':'; p
++)
if (sscanf(buf
, fmt
, &min
, dp
) != 2)
if (sscanf(buf
, fmt
, dp
) != 1)
fprintf(stderr
, "%s: bad data format in %s (%s)\n",
*dp
+= (double)(min
* 60);
fprintf(stderr
, "%s: premature EOF in %s\n",
sd
+= (array
[i
] - avg
)*(array
[i
] - avg
);
sd
= sd
/ (float) (n
- 1);
printf("\t%.1f (%.1f)", avg
, sd
);