|
|
1.1 root 1: #define MAINLINE
2:
3: #ifdef RCSIDENT
4: static char rcsid[] = "$Header: nfstats.c,v 1.7 85/01/18 15:31:24 notes Rel $";
5: #endif RCSIDENT
6:
7: /*
8: * stats - print out the statistics for some notefiles.
9: * Takes a list of notefiles, and prints the statistics that are
10: * kept about that notefile.
11: * A total summary is also presented.
12: *
13: * Original coding: Ray Essick December 29, 1981
14: * Modified for wildcards: Ray Essick April 8, 1982
15: */
16: #include "parms.h"
17: #include "structs.h"
18:
19: struct when_f ztime;
20: char fmtd[DATELEN]; /* for time of report stuff */
21: int statsdone;
22: int summary; /* summary only flag */
23: long gnotwrit,
24: grspwrit,
25: gnotread,
26: grspread,
27: gnotxmit,
28: grspxmit,
29: gnotdrop,
30: grspdrop,
31: gorphans,
32: gadopted,
33: netwrkouts,
34: netwrkins,
35: gnotrcvd,
36: grsprcvd,
37: totaltime,
38: entries;
39: /* global summaries */
40:
41: statone (nfname)
42: char *nfname;
43: {
44:
45: struct io_f io;
46: if (init (&io, nfname) < 0)
47: return;
48:
49:
50: gnotwrit += io.descr.d_notwrit; /* add in global stats */
51: grspwrit += io.descr.d_rspwrit;
52: gnotread += io.descr.d_notread;
53: grspread += io.descr.d_rspread;
54: gnotxmit += io.descr.d_notxmit;
55: grspxmit += io.descr.d_rspxmit;
56: gnotrcvd += io.descr.d_notrcvd;
57: grsprcvd += io.descr.d_rsprcvd;
58: gnotdrop += io.descr.d_notdrop;
59: grspdrop += io.descr.d_rspdrop;
60: gorphans += io.descr.d_orphans;
61: gadopted += io.descr.d_adopted;
62: netwrkouts += io.descr.netwrkouts;
63: netwrkins += io.descr.netwrkins;
64: totaltime += io.descr.walltime;
65: entries += io.descr.entries;
66: gettime (&ztime);
67: sprdate (&ztime, fmtd); /* get time now */
68:
69: if (summary == 0)
70: {
71: if (statsdone++ != 0)
72: printf ("\n");
73: printf (" %s on %s at %s\n", nfname, io.descr.d_id.sys, fmtd);
74: printf (" \tNOTES\tRESPS\tTOTALS\n");
75: printf ("Local Reads \t%ld\t%ld\t%ld\n", io.descr.d_notread,
76: io.descr.d_rspread, io.descr.d_notread + io.descr.d_rspread);
77: printf ("Local Written \t%ld\t%ld\t%ld\n",
78: io.descr.d_notwrit - io.descr.d_notrcvd,
79: io.descr.d_rspwrit - io.descr.d_rsprcvd,
80: io.descr.d_notwrit + io.descr.d_rspwrit - io.descr.d_notrcvd - io.descr.d_rsprcvd);
81: printf ("Networked in \t%ld\t%ld\t%ld\n", io.descr.d_notrcvd, io.descr.d_rsprcvd,
82: io.descr.d_notrcvd + io.descr.d_rsprcvd);
83: printf ("Networked out \t%ld\t%ld\t%ld\n", io.descr.d_notxmit, io.descr.d_rspxmit,
84: io.descr.d_notxmit + io.descr.d_rspxmit);
85: printf ("Network Dropped \t%ld\t%ld\t%ld\n", io.descr.d_notdrop, io.descr.d_rspdrop,
86: io.descr.d_notdrop + io.descr.d_rspdrop);
87: printf ("Network Transmissions: %ld Network Receptions: %ld\n",
88: io.descr.netwrkouts, io.descr.netwrkins);
89: printf ("Orphaned Responses Received: %ld Orphans Adopted: %ld\n",
90: io.descr.d_orphans, io.descr.d_adopted);
91: printf ("Entries into notesfile: %ld Total time in notefile: %8.2f minutes\n",
92: io.descr.entries, ((float) io.descr.walltime / 60.0));
93: if (io.descr.entries)
94: printf ("Average Time/entry: %6.2f minutes\n",
95: ((float) io.descr.walltime / 60.0 / (float) io.descr.entries));
96: sprdate (&io.descr.d_created, fmtd);
97: printf ("Created at %s, Used on %ld days\n", fmtd, io.descr.d_daysused);
98: }
99:
100: closenf (&io); /* close this notefile */
101: }
102:
103:
104: main (argc, argv)
105: char **argv;
106: {
107: int i;
108: struct nflist_f *nfptr;
109:
110: startup (argc, argv); /* common initialization */
111:
112: if (argc == 1)
113: {
114: printf ("Usage: %s [-s] notefile ...\n", argv[0]);
115: exit (BAD);
116: }
117:
118: gnotwrit = grspwrit = gnotread = grspread = 0;
119: gnotxmit = grspxmit = gnotrcvd = grsprcvd = 0;
120: gnotdrop = grspdrop = gorphans = gadopted = 0;
121: netwrkouts = netwrkins = 0;
122: totaltime = entries = 0;
123: statsdone = 0; /* number of notesfiles reported */
124: summary = 0; /* summary only flag */
125:
126: for (i = 1; i < argc; i++)
127: {
128: if (argv[i][0] == '-')
129: switch (argv[i][1])
130: {
131: case 's': /* summary only */
132: summary = 1;
133: continue;
134:
135: default:
136: printf ("Bad switch `%c'\n", argv[i][1]);
137: exit (BAD);
138: }
139: expand (argv[i]); /* load it */
140: }
141:
142: while ((nfptr = nextgroup ()) != (struct nflist_f *) NULL)
143: statone (nfptr -> nf_name); /* print those stats */
144:
145: if ((statsdone > 1) || (summary == 1))
146: {
147: printf ("\n Totals for all above notefiles\n");
148: printf (" \tNOTES\tRESPS\tTOTALS\n");
149: printf ("Local Read \t%ld\t%ld\t%ld\n", gnotread,
150: grspread, gnotread + grspread);
151: printf ("Local Written \t%ld\t%ld\t%ld\n", gnotwrit - gnotrcvd,
152: grspwrit - grsprcvd, gnotwrit + grspwrit - gnotrcvd - grsprcvd);
153: printf ("Networked in \t%ld\t%ld\t%ld\n", gnotrcvd, grsprcvd,
154: gnotrcvd + grsprcvd);
155: printf ("Networked out \t%ld\t%ld\t%ld\n", gnotxmit, grspxmit,
156: gnotxmit + grspxmit);
157: printf ("Network Dropped \t%ld\t%ld\t%ld\n", gnotdrop, grspdrop,
158: gnotdrop + grspdrop);
159: printf ("Network Transmissions: %ld Network Receptions: %ld\n",
160: netwrkouts, netwrkins);
161: printf ("Orphaned Responses Received: %ld Orphans Adopted: %ld\n",
162: gorphans, gadopted);
163: printf ("Entries into notefile: %ld Total time in notefile: %8.2f minutes\n",
164: entries, ((float) totaltime / 60.0));
165: if (entries)
166: printf ("Average Time/entry: %6.2f minutes\n",
167: ((float) totaltime / 60.0 / (float) entries));
168:
169: }
170: exit (GOOD);
171: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.