Variablen des SV nosave erben.

Die Variablen des Standard-Supervisors muessen nicht gespeichert
werden.

Change-Id: Ie19b1c83792d209f14baca5296dc143f7dde9fa9
diff --git a/secure/news.c b/secure/news.c
index 83a73f5..f435089 100644
--- a/secure/news.c
+++ b/secure/news.c
@@ -564,3 +564,30 @@
 #define gl(x) grouplist[name,x]
   return ({name,gl(1),gl(2),gl(3),gl(4),gl(5),gl(6),gl(7),gl(8),gl(9),gl(10),load_group(name)});
 }
+
+public varargs void AllGroups(int details) {
+  if (!ARCH_SECURITY || process_call()) return; // Darf nicht
+
+  string* gnames = sort_array(m_indices(grouplist), #'>);
+
+  printf("%-25s %-11s %12s %3s %3s %3s %3s\n",
+         "Name","Owner","Expire","Max","Rea","Wri","Del");
+  printf("-"*78 + "\n");
+  foreach (string g : gnames)
+  {
+    printf("%-25s %-11s %12s %3d %3d %3d %3d\n",
+      g, grouplist[g,1], time2string("%dd %02h:%02m", grouplist[g,3]),
+      grouplist[g,10], grouplist[g,9], grouplist[g,8], grouplist[g,7]);
+    if (details) {
+      if (sizeof(grouplist[g,6])) // readers
+        printf(break_string(implode(grouplist[g,6], " "), 78, "  Rea: ",
+          BS_INDENT_ONCE));
+      if (sizeof(grouplist[g,5])) // writers
+        printf(break_string(implode(grouplist[g,5], " "), 78, "  Wri: ",
+          BS_INDENT_ONCE));
+      if (sizeof(grouplist[g,4])) // deleters
+        printf(break_string(implode(grouplist[g,5], " "), 78, "  Del: ",
+          BS_INDENT_ONCE));
+    }
+  }
+}
diff --git a/secure/udp/channel.c b/secure/udp/channel.c
index d640484..e330fd7 100644
--- a/secure/udp/channel.c
+++ b/secure/udp/channel.c
@@ -16,7 +16,7 @@
 #define COMMAND                "cmd"
 #define CHANNEL                "channel"
 
-inherit "/std/channel_supervisor";
+nosave variables inherit "/std/channel_supervisor";
 
 private nosave mixed _name_;