From 24065a3d4a61a136a17996a48df02b0b180bc6f0 Mon Sep 17 00:00:00 2001 From: ajs Date: Thu, 20 Oct 2005 22:28:14 +0000 Subject: 2005-10-20 Andrew J. Schorr * memory.c: (show_memory_vty) Omit zero statistics. Print separators only if some non-zero stats have been printed in between. (show_separator) New function to print a separator. (show_memory_all) Keep track of whether a separator is needed between the different memory statistics groups. --- lib/memory.c | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'lib/memory.c') diff --git a/lib/memory.c b/lib/memory.c index 8ddf3f4d..dae2b9ae 100644 --- a/lib/memory.c +++ b/lib/memory.c @@ -249,22 +249,33 @@ log_memstats(int pri) } } -static struct memory_list memory_list_separator[] = +static void +show_separator(struct vty *vty) { - { 0, NULL}, - {-1, NULL} -}; + vty_out (vty, "-----------------------------\r\n"); +} -static void +static int show_memory_vty (struct vty *vty, struct memory_list *list) { struct memory_list *m; + int needsep = 0; for (m = list; m->index >= 0; m++) if (m->index == 0) - vty_out (vty, "-----------------------------\r\n"); - else - vty_out (vty, "%-30s: %10ld\r\n", m->format, mstat[m->index].alloc); + { + if (needsep) + { + show_separator (vty); + needsep = 0; + } + } + else if (mstat[m->index].alloc) + { + vty_out (vty, "%-30s: %10ld\r\n", m->format, mstat[m->index].alloc); + needsep = 1; + } + return needsep; } DEFUN (show_memory_all, @@ -275,12 +286,13 @@ DEFUN (show_memory_all, "All memory statistics\n") { struct mlist *ml; + int needsep = 0; for (ml = mlists; ml->list; ml++) { - if (ml != mlists) - show_memory_vty (vty, memory_list_separator); - show_memory_vty (vty, ml->list); + if (needsep) + show_separator (vty); + needsep = show_memory_vty (vty, ml->list); } return CMD_SUCCESS; -- cgit v1.2.1