Support /LIST M to show modes in channels (using the list_chan privilege).
[ircu2.10.12-pk.git] / ircd / ircd_parser.y
index 67fddfcc6a43f3c3fedab746193972cac908f7b0..e3dd3297ea92fdf9fe9e7af1b00ebe9515425cae 100644 (file)
@@ -698,6 +698,14 @@ address_family:
 portblock: PORT '{' portitems '}' ';' {
   struct ListenerFlags flags_here;
   struct SLink *link;
+  if (hosts == NULL) {
+    struct SLink *link;
+    link = make_link();
+    DupString(link->value.cp, "*");
+    link->flags = 0;
+    link->next = hosts;
+    hosts = link;
+  }
   for (link = hosts; link != NULL; link = link->next) {
     memcpy(&flags_here, &listen_flags, sizeof(&flags_here));
     switch (link->flags & (USE_IPV4 | USE_IPV6)) {
@@ -1082,6 +1090,8 @@ pseudoitems '}' ';'
     parse_error("Missing name in pseudo %s block", smap->command);
   else if (!smap->services)
     parse_error("Missing nick in pseudo %s block", smap->command);
+  else if (!strIsAlpha(smap->command))
+    parse_error("Pseudo command %s invalid: must all be letters", smap->command);
   else
     valid = 1;
   if (valid && register_mapping(smap))
@@ -1131,7 +1141,10 @@ iauthblock: IAUTH '{' iauthitems '}' ';'
 {
   auth_spawn(stringno, stringlist);
   while (stringno > 0)
-    MyFree(stringlist[--stringno]);
+  {
+    --stringno;
+    MyFree(stringlist[stringno]);
+  }
 };
 
 iauthitems: iauthitem iauthitems | iauthitem;
@@ -1139,5 +1152,8 @@ iauthitem: iauthprogram;
 iauthprogram: PROGRAM '='
 {
   while (stringno > 0)
-    MyFree(stringlist[--stringno]);
+  {
+    --stringno;
+    MyFree(stringlist[stringno]);
+  }
 } stringlist ';';