Allow ircd.conf to control the list_chan privilege.
[ircu2.10.12-pk.git] / ircd / ircd_lexer.l
index 458e571cdd867cd1a4052c7725514d3524e2e7f0..d2e2443de50d17bf132ffd33ac72a6863100e3fb 100644 (file)
 #include <unistd.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include "config.h"
 #include "ircd.h"
+#include "ircd_alloc.h"
 #include "ircd_string.h"
 #include "s_debug.h"
 #include "y.tab.h"
@@ -46,9 +48,12 @@ static struct lexer_token {
   TOKEN(CONNECT),
   TOKEN(CONNECTFREQ),
   TOKEN(MAXLINKS),
+  TOKEN(MAXHOPS),
   TOKEN(SENDQ),
   TOKEN(NAME),
   TOKEN(HOST),
+  TOKEN(IP),
+  TOKEN(USERNAME),
   TOKEN(PASS),
   TOKEN(SECONDS),
   TOKEN(MINUTES),
@@ -85,7 +90,6 @@ static struct lexer_token {
   TOKEN(REASON),
   TOKEN(RULE),
   TOKEN(ALL),
-  TOKEN(IP),
   TOKEN(CRULE),
   TOKEN(KILL),
   TOKEN(QUARANTINE),
@@ -96,8 +100,13 @@ static struct lexer_token {
   TOKEN(PSEUDO),
   TOKEN(PREPEND),
   TOKEN(USERMODE),
+  TOKEN(FAST),
+  TOKEN(AUTOCONNECT),
+  TOKEN(PROGRAM),
 #undef TOKEN
   { "administrator", ADMIN },
+  { "apass_opmode", TPRIV_APASS_OPMODE },
+  { "auto", AUTOCONNECT },
   { "b", BYTES },
   { "badchan", TPRIV_BADCHAN },
   { "chan_limit", TPRIV_CHAN_LIMIT },
@@ -110,10 +119,12 @@ static struct lexer_token {
   { "gline", TPRIV_GLINE },
   { "kb", KBYTES },
   { "kilobytes", KBYTES },
+  { "list_chan", TPRIV_LIST_CHAN },
   { "local_badchan", TPRIV_LOCAL_BADCHAN },
   { "local_gline", TPRIV_LOCAL_GLINE },
   { "local_jupe", TPRIV_LOCAL_JUPE },
   { "local_kill", TPRIV_LOCAL_KILL },
+  { "local_opmode", TPRIV_LOCAL_OPMODE },
   { "mb", MBYTES },
   { "megabytes", MBYTES },
   { "mode_lchan", TPRIV_MODE_LCHAN },
@@ -197,7 +208,7 @@ NUMBER [0-9]+
 QSTRING \"[^"\n]+[\"\n]
 %%
 
-{QSTRING} {yytext[yyleng-1] = 0; yylval.text = yytext+1; return QSTRING;}
+{QSTRING} {yytext[yyleng-1] = 0; DupString(yylval.text, yytext+1); return QSTRING;}
 {NUMBER} {yylval.num = strtoul(yytext, NULL, 10); return NUMBER;}
 {WHITE} ;
 {SHCOMMENT} ;