1df2449f1SMasatake YAMATO /*
2df2449f1SMasatake YAMATO * Copyright (c) 1996-2003, Darren Hiebert
3df2449f1SMasatake YAMATO *
4df2449f1SMasatake YAMATO * Author: Darren Hiebert <dhiebert@users.sourceforge.net>
5df2449f1SMasatake YAMATO * http://ctags.sourceforge.net
6df2449f1SMasatake YAMATO *
7df2449f1SMasatake YAMATO * This source code is released for free distribution under the terms of the
8df2449f1SMasatake YAMATO * GNU General Public License version 2 or (at your option) any later version.
9df2449f1SMasatake YAMATO * It is provided on an as-is basis and no responsibility is accepted for its
10df2449f1SMasatake YAMATO * failure to perform as expected.
11df2449f1SMasatake YAMATO */
12df2449f1SMasatake YAMATO
13df2449f1SMasatake YAMATO /*
14df2449f1SMasatake YAMATO * INCLUDE FILES
15df2449f1SMasatake YAMATO */
16df2449f1SMasatake YAMATO #include "general.h" /* must always come first */
17df2449f1SMasatake YAMATO
18df2449f1SMasatake YAMATO #include <stdio.h>
19df2449f1SMasatake YAMATO
20df2449f1SMasatake YAMATO #include "entry_p.h"
21df2449f1SMasatake YAMATO #include "options_p.h"
22df2449f1SMasatake YAMATO #include "stats_p.h"
23df2449f1SMasatake YAMATO
24df2449f1SMasatake YAMATO /*
25df2449f1SMasatake YAMATO * MACROS
26df2449f1SMasatake YAMATO */
27df2449f1SMasatake YAMATO #define plural(value) (((unsigned long)(value) == 1L) ? "" : "s")
28df2449f1SMasatake YAMATO
29df2449f1SMasatake YAMATO /*
30df2449f1SMasatake YAMATO * DATA DEFINITIONS
31df2449f1SMasatake YAMATO */
32df2449f1SMasatake YAMATO static struct { long files, lines, bytes; } Totals = { 0, 0, 0 };
33df2449f1SMasatake YAMATO
34df2449f1SMasatake YAMATO
35df2449f1SMasatake YAMATO /*
36df2449f1SMasatake YAMATO * FUNCTION DEFINITIONS
37df2449f1SMasatake YAMATO */
addTotals(const unsigned int files,const long unsigned int lines,const long unsigned int bytes)38df2449f1SMasatake YAMATO extern void addTotals (
39df2449f1SMasatake YAMATO const unsigned int files, const long unsigned int lines,
40df2449f1SMasatake YAMATO const long unsigned int bytes)
41df2449f1SMasatake YAMATO {
42df2449f1SMasatake YAMATO Totals.files += files;
43df2449f1SMasatake YAMATO Totals.lines += lines;
44df2449f1SMasatake YAMATO Totals.bytes += bytes;
45df2449f1SMasatake YAMATO }
46df2449f1SMasatake YAMATO
printTotals(const clock_t * const timeStamps,bool append,sortType sorted)47df2449f1SMasatake YAMATO extern void printTotals (const clock_t *const timeStamps, bool append, sortType sorted)
48df2449f1SMasatake YAMATO {
49df2449f1SMasatake YAMATO const unsigned long totalTags = numTagsTotal();
50df2449f1SMasatake YAMATO const unsigned long addedTags = numTagsAdded();
51df2449f1SMasatake YAMATO
52df2449f1SMasatake YAMATO fprintf (stderr, "%ld file%s, %ld line%s (%ld kB) scanned",
53df2449f1SMasatake YAMATO Totals.files, plural (Totals.files),
54df2449f1SMasatake YAMATO Totals.lines, plural (Totals.lines),
55df2449f1SMasatake YAMATO Totals.bytes/1024L);
56*288a2fd5SK.Takata
57df2449f1SMasatake YAMATO const double interval = ((double) (timeStamps [1] - timeStamps [0])) /
58df2449f1SMasatake YAMATO CLOCKS_PER_SEC;
59df2449f1SMasatake YAMATO
60df2449f1SMasatake YAMATO fprintf (stderr, " in %.01f seconds", interval);
61df2449f1SMasatake YAMATO if (interval != (double) 0.0)
62df2449f1SMasatake YAMATO fprintf (stderr, " (%lu kB/s)",
63df2449f1SMasatake YAMATO (unsigned long) (Totals.bytes / interval) / 1024L);
64*288a2fd5SK.Takata
65df2449f1SMasatake YAMATO fputc ('\n', stderr);
66df2449f1SMasatake YAMATO
67df2449f1SMasatake YAMATO fprintf (stderr, "%lu tag%s added to tag file",
68df2449f1SMasatake YAMATO addedTags, plural(addedTags));
69df2449f1SMasatake YAMATO if (append)
70df2449f1SMasatake YAMATO fprintf (stderr, " (now %lu tags)", totalTags);
71df2449f1SMasatake YAMATO fputc ('\n', stderr);
72df2449f1SMasatake YAMATO
73df2449f1SMasatake YAMATO if (totalTags > 0 && sorted != SO_UNSORTED)
74df2449f1SMasatake YAMATO {
75df2449f1SMasatake YAMATO fprintf (stderr, "%lu tag%s sorted", totalTags, plural (totalTags));
76df2449f1SMasatake YAMATO fprintf (stderr, " in %.02f seconds",
77df2449f1SMasatake YAMATO ((double) (timeStamps [2] - timeStamps [1])) / CLOCKS_PER_SEC);
78df2449f1SMasatake YAMATO fputc ('\n', stderr);
79df2449f1SMasatake YAMATO }
80df2449f1SMasatake YAMATO
81df2449f1SMasatake YAMATO #ifdef DEBUG
82df2449f1SMasatake YAMATO fprintf (stderr, "longest tag line = %lu\n",
83df2449f1SMasatake YAMATO (unsigned long) maxTagsLine ());
84df2449f1SMasatake YAMATO #endif
85df2449f1SMasatake YAMATO }
86