aboutsummaryrefslogtreecommitdiff
path: root/rcynic-ng/show.awk
diff options
context:
space:
mode:
Diffstat (limited to 'rcynic-ng/show.awk')
-rw-r--r--rcynic-ng/show.awk75
1 files changed, 75 insertions, 0 deletions
diff --git a/rcynic-ng/show.awk b/rcynic-ng/show.awk
new file mode 100644
index 00000000..2e13dce2
--- /dev/null
+++ b/rcynic-ng/show.awk
@@ -0,0 +1,75 @@
+# $Id$
+#
+# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC")
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+# Prettyprint tab-delimited rcynic summary data. This is intended as
+# a postprocessor for show.xsl.
+
+BEGIN {
+ FS = "\t";
+}
+
+NR == 1 {
+ nf = NF;
+ for (i = 1; i <= nf; i++) {
+ nh = split($i, h, /[ \t]+/);
+ for (j = 1; j <= nh; j++) {
+ head[i, j] = h[j];
+ if (length(h[j]) > width[i])
+ width[i] = length(h[j]);
+ }
+ }
+}
+
+NR > 1 {
+ nr = NR - 1;
+ for (j = 1; j <= NF; j++) {
+ data[nr, j] = $j;
+ sum[j] += $j;
+ if (length($j) > width[j])
+ width[j] = length($j);
+ }
+}
+
+END {
+ for (i = 1;; i++) {
+ blank = 1;
+ for (j = 2; j <= nf; j++)
+ if (head[j, i] && sum[j] > 0)
+ blank = 0;
+ if (blank)
+ break;
+ for (j = 1; j <= nf; j++)
+ if (j == 1)
+ printf "%*s", width[j], head[j, i];
+ else if (sum[j] > 0)
+ printf " %*s", width[j], head[j, i];
+ print "";
+ }
+ for (i = 1; i <= nr; i++) {
+ for (j = 1; j <= nf; j++)
+ if (j == 1)
+ printf "%*s", width[j], data[i, j];
+ else if (sum[j] > 0)
+ printf " %*s", width[j], data[i, j];
+ print "";
+ }
+ for (j = 1; j <= nf; j++)
+ if (j == 1)
+ printf "%*s", width[j], "Total";
+ else if (sum[j] > 0)
+ printf " %*s", width[j], sum[j];
+ print "";
+}