1
0
forked from bip/bip

blreset_on_talk, plus a fix in log_reset

This commit is contained in:
nohar 2005-05-30 18:01:00 +00:00
parent 8f09db3184
commit 811d7cb048
9 changed files with 413 additions and 368 deletions

View File

@ -39,6 +39,11 @@ log_level = 3;
backlog_lines = 10; # number of lines in backlog, 0 means no limit backlog_lines = 10; # number of lines in backlog, 0 means no limit
always_backlog = true; # backlog even lines already backlogged always_backlog = true; # backlog even lines already backlogged
# If blreset_on_talk talking on an irc network has the same effect of issuing
# /bip blreset, meaning that stuffed logged before the command won't be read
# back on backlog
#blreset_on_talk = false;
# Network definition, a name and server info # Network definition, a name and server info
network { network {
name = "iiens"; name = "iiens";
@ -66,8 +71,8 @@ user {
# The name in bip of the user # The name in bip of the user
# This is used by bip only # This is used by bip only
name = "nohar"; name = "nohar";
# this user's password # this user's password (md5(md5("tata"))) plus seed
password = "233a8d53b55a268d4a84a3acdd5ed57d"; # (md5(md5("tata"))) password = "3880f2b39b3b9cb507b052b695d2680859bfc327";
# A user can have mutiple connections to irc networks. # A user can have mutiple connections to irc networks.
# define a connection: # define a connection:

View File

@ -54,6 +54,7 @@ int conf_backlog_lines = 10;
/* backlog even lines already backlogged */ /* backlog even lines already backlogged */
int conf_always_backlog; int conf_always_backlog;
int conf_log_sync_interval; int conf_log_sync_interval;
int conf_blreset_on_talk = 0;
list_t *parse_conf(FILE *file); list_t *parse_conf(FILE *file);
static void conf_die(char *fmt, ...); static void conf_die(char *fmt, ...);
@ -678,6 +679,9 @@ int fireup(FILE *conf)
free(conf_pid_file); free(conf_pid_file);
conf_pid_file = t->pdata; conf_pid_file = t->pdata;
break; break;
case LEX_BLRESET_ON_TALK:
conf_blreset_on_talk = t->ndata;
break;
case LEX_NETWORK: case LEX_NETWORK:
r = add_network(t->pdata); r = add_network(t->pdata);
list_free(t->pdata); list_free(t->pdata);
@ -1057,6 +1061,16 @@ void write_user_list(connection_t *c, char *dest)
} }
extern struct link_client *reloading_client; extern struct link_client *reloading_client;
void adm_blreset(struct link_client *ic)
{
hash_iterator_t it;
for (hash_it_init(&LINK(ic)->log->logfgs, &it);
hash_it_item(&it);
hash_it_next(&it)) {
logfilegroup_t *lfg = hash_it_item(&it);
log_reset(lfg);
}
}
void adm_bip(struct link_client *ic, struct line *line) void adm_bip(struct link_client *ic, struct line *line)
{ {
@ -1080,16 +1094,10 @@ void adm_bip(struct link_client *ic, struct line *line)
connection_close(CONN(LINK(ic)->l_server)); connection_close(CONN(LINK(ic)->l_server));
} }
} else if (strcasecmp(line->elemv[1], "BLRESET") == 0) { } else if (strcasecmp(line->elemv[1], "BLRESET") == 0) {
hash_iterator_t it; adm_blreset(ic);
for (hash_it_init(&LINK(ic)->log->logfgs, &it);
hash_it_item(&it);
hash_it_next(&it)) {
logfilegroup_t *lfg = hash_it_item(&it);
log_reset(lfg);
}
} else if (strcasecmp(line->elemv[1], "HELP") == 0) { } else if (strcasecmp(line->elemv[1], "HELP") == 0) {
WRITE_LINE2(CONN(ic), P_IRCMASK, "PRIVMSG", nick, WRITE_LINE2(CONN(ic), P_IRCMASK, "PRIVMSG", nick,
"/BIP (RELOAD|LIST|JUMP|HELP)"); "/BIP (RELOAD|LIST|JUMP|BLRESET|HELP)");
} }
} }

View File

@ -93,9 +93,10 @@
LEX_IGN_FIRST_NICK = 295, LEX_IGN_FIRST_NICK = 295,
LEX_ALWAYS_BACKLOG = 296, LEX_ALWAYS_BACKLOG = 296,
LEX_LOGIN = 297, LEX_LOGIN = 297,
LEX_BOOL = 298, LEX_BLRESET_ON_TALK = 298,
LEX_INT = 299, LEX_BOOL = 299,
LEX_STRING = 300 LEX_INT = 300,
LEX_STRING = 301
}; };
#endif #endif
#define LEX_IP 258 #define LEX_IP 258
@ -138,9 +139,10 @@
#define LEX_IGN_FIRST_NICK 295 #define LEX_IGN_FIRST_NICK 295
#define LEX_ALWAYS_BACKLOG 296 #define LEX_ALWAYS_BACKLOG 296
#define LEX_LOGIN 297 #define LEX_LOGIN 297
#define LEX_BOOL 298 #define LEX_BLRESET_ON_TALK 298
#define LEX_INT 299 #define LEX_BOOL 299
#define LEX_STRING 300 #define LEX_INT 300
#define LEX_STRING 301
@ -251,7 +253,7 @@ typedef union YYSTYPE {
struct tuple *tuple; struct tuple *tuple;
} YYSTYPE; } YYSTYPE;
/* Line 191 of yacc.c. */ /* Line 191 of yacc.c. */
#line 255 "y.tab.c" #line 257 "y.tab.c"
# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_TRIVIAL 1
@ -263,7 +265,7 @@ typedef union YYSTYPE {
/* Line 214 of yacc.c. */ /* Line 214 of yacc.c. */
#line 267 "y.tab.c" #line 269 "y.tab.c"
#if ! defined (yyoverflow) || YYERROR_VERBOSE #if ! defined (yyoverflow) || YYERROR_VERBOSE
@ -369,20 +371,20 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */ /* YYFINAL -- State number of the termination state. */
#define YYFINAL 2 #define YYFINAL 2
/* YYLAST -- Last index in YYTABLE. */ /* YYLAST -- Last index in YYTABLE. */
#define YYLAST 144 #define YYLAST 130
/* YYNTOKENS -- Number of terminals. */ /* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 46 #define YYNTOKENS 47
/* YYNNTS -- Number of nonterminals. */ /* YYNNTS -- Number of nonterminals. */
#define YYNNTS 13 #define YYNNTS 13
/* YYNRULES -- Number of rules. */ /* YYNRULES -- Number of rules. */
#define YYNRULES 52 #define YYNRULES 53
/* YYNRULES -- Number of states. */ /* YYNRULES -- Number of states. */
#define YYNSTATES 137 #define YYNSTATES 140
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2 #define YYUNDEFTOK 2
#define YYMAXUTOK 300 #define YYMAXUTOK 301
#define YYTRANSLATE(YYX) \ #define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@ -420,7 +422,7 @@ static const unsigned char yytranslate[] =
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45 45, 46
}; };
#if YYDEBUG #if YYDEBUG
@ -429,47 +431,47 @@ static const unsigned char yytranslate[] =
static const unsigned char yyprhs[] = static const unsigned char yyprhs[] =
{ {
0, 0, 3, 4, 8, 12, 16, 20, 24, 28, 0, 0, 3, 4, 8, 12, 16, 20, 24, 28,
32, 36, 40, 44, 48, 52, 56, 61, 66, 67, 32, 36, 40, 44, 48, 52, 56, 60, 65, 70,
71, 75, 79, 84, 85, 89, 93, 97, 102, 103, 71, 75, 79, 83, 88, 89, 93, 97, 101, 106,
107, 111, 115, 119, 123, 127, 131, 135, 139, 143, 107, 111, 115, 119, 123, 127, 131, 135, 139, 143,
147, 151, 155, 159, 164, 168, 169, 173, 177, 181, 147, 151, 155, 159, 163, 168, 172, 173, 177, 181,
182, 186, 190 185, 186, 190, 194
}; };
/* YYRHS -- A `-1'-separated list of the rules' RHS. */ /* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yysigned_char yyrhs[] = static const yysigned_char yyrhs[] =
{ {
47, 0, -1, -1, 47, 48, 7, -1, 29, 4, 48, 0, -1, -1, 48, 49, 7, -1, 29, 4,
45, -1, 30, 4, 45, -1, 31, 4, 44, -1, 46, -1, 30, 4, 46, -1, 31, 4, 45, -1,
3, 4, 45, -1, 5, 4, 44, -1, 6, 4, 3, 4, 46, -1, 5, 4, 45, -1, 6, 4,
43, -1, 32, 4, 44, -1, 33, 4, 43, -1, 44, -1, 32, 4, 45, -1, 33, 4, 44, -1,
34, 4, 43, -1, 41, 4, 43, -1, 35, 4, 34, 4, 44, -1, 41, 4, 44, -1, 35, 4,
44, -1, 39, 4, 45, -1, 9, 10, 49, 11, 45, -1, 39, 4, 46, -1, 43, 4, 44, -1,
-1, 12, 10, 51, 11, -1, -1, 49, 50, 7, 9, 10, 50, 11, -1, 12, 10, 52, 11, -1,
-1, 13, 4, 45, -1, 26, 4, 43, -1, 16, -1, 50, 51, 7, -1, 13, 4, 46, -1, 26,
10, 57, 11, -1, -1, 51, 52, 7, -1, 13, 4, 44, -1, 16, 10, 58, 11, -1, -1, 52,
4, 45, -1, 17, 4, 45, -1, 8, 10, 53, 53, 7, -1, 13, 4, 46, -1, 17, 4, 46,
11, -1, -1, 53, 54, 7, -1, 13, 4, 45, -1, 8, 10, 54, 11, -1, -1, 54, 55, 7,
-1, 9, 4, 45, -1, 42, 4, 45, -1, 15, -1, 13, 4, 46, -1, 9, 4, 46, -1, 42,
4, 45, -1, 12, 4, 45, -1, 25, 4, 45, 4, 46, -1, 15, 4, 46, -1, 12, 4, 46,
-1, 17, 4, 45, -1, 20, 4, 45, -1, 21, -1, 25, 4, 46, -1, 17, 4, 46, -1, 20,
4, 44, -1, 26, 4, 43, -1, 38, 4, 45, 4, 46, -1, 21, 4, 45, -1, 26, 4, 44,
-1, 36, 4, 43, -1, 40, 4, 43, -1, 27, -1, 38, 4, 46, -1, 36, 4, 44, -1, 40,
10, 55, 11, -1, 37, 4, 45, -1, -1, 55, 4, 44, -1, 27, 10, 56, 11, -1, 37, 4,
56, 7, -1, 13, 4, 45, -1, 28, 4, 45, 46, -1, -1, 56, 57, 7, -1, 13, 4, 46,
-1, -1, 57, 58, 7, -1, 19, 4, 45, -1, -1, 28, 4, 46, -1, -1, 58, 59, 7, -1,
5, 4, 44, -1 19, 4, 46, -1, 5, 4, 45, -1
}; };
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const unsigned char yyrline[] = static const unsigned char yyrline[] =
{ {
0, 100, 100, 101, 105, 106, 108, 109, 110, 111, 0, 100, 100, 101, 105, 106, 108, 109, 110, 111,
112, 114, 116, 117, 119, 121, 122, 124, 127, 128, 112, 114, 116, 117, 119, 121, 122, 125, 127, 130,
131, 132, 133, 137, 138, 141, 143, 145, 149, 150, 131, 134, 135, 136, 140, 141, 144, 146, 148, 152,
154, 155, 157, 158, 159, 160, 162, 164, 165, 167, 153, 157, 158, 160, 161, 162, 163, 165, 167, 168,
168, 170, 172, 174, 176, 179, 180, 183, 184, 187, 170, 171, 173, 175, 177, 179, 182, 183, 186, 187,
188, 191, 192 190, 191, 194, 195
}; };
#endif #endif
@ -487,10 +489,11 @@ static const char *const yytname[] =
"LEX_LOG_FORMAT", "LEX_LOG_LEVEL", "LEX_BACKLOG_LINES", "LEX_BACKLOG", "LEX_LOG_FORMAT", "LEX_LOG_LEVEL", "LEX_BACKLOG_LINES", "LEX_BACKLOG",
"LEX_LOG", "LEX_LOG_SYNC_INTERVAL", "LEX_FOLLOW_NICK", "LEX_LOG", "LEX_LOG_SYNC_INTERVAL", "LEX_FOLLOW_NICK",
"LEX_ON_CONNECT_SEND", "LEX_AWAY_NICK", "LEX_PID_FILE", "LEX_ON_CONNECT_SEND", "LEX_AWAY_NICK", "LEX_PID_FILE",
"LEX_IGN_FIRST_NICK", "LEX_ALWAYS_BACKLOG", "LEX_LOGIN", "LEX_BOOL", "LEX_IGN_FIRST_NICK", "LEX_ALWAYS_BACKLOG", "LEX_LOGIN",
"LEX_INT", "LEX_STRING", "$accept", "commands", "command", "network", "LEX_BLRESET_ON_TALK", "LEX_BOOL", "LEX_INT", "LEX_STRING", "$accept",
"net_command", "user", "usr_command", "connection", "con_command", "commands", "command", "network", "net_command", "user", "usr_command",
"channel", "cha_command", "server", "ser_command", 0 "connection", "con_command", "channel", "cha_command", "server",
"ser_command", 0
}; };
#endif #endif
@ -503,30 +506,30 @@ static const unsigned short int yytoknum[] =
265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 300 295, 296, 297, 298, 299, 300, 301
}; };
# endif # endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const unsigned char yyr1[] = static const unsigned char yyr1[] =
{ {
0, 46, 47, 47, 48, 48, 48, 48, 48, 48, 0, 47, 48, 48, 49, 49, 49, 49, 49, 49,
48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 50,
50, 50, 50, 51, 51, 52, 52, 52, 53, 53, 50, 51, 51, 51, 52, 52, 53, 53, 53, 54,
54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55,
54, 54, 54, 54, 54, 55, 55, 56, 56, 57, 55, 55, 55, 55, 55, 55, 56, 56, 57, 57,
57, 58, 58 58, 58, 59, 59
}; };
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const unsigned char yyr2[] = static const unsigned char yyr2[] =
{ {
0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 4, 4, 0, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 0,
3, 3, 4, 0, 3, 3, 3, 4, 0, 3, 3, 3, 3, 4, 0, 3, 3, 3, 4, 0,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 4, 3, 0, 3, 3, 3, 0, 3, 3, 3, 3, 4, 3, 0, 3, 3, 3,
3, 3, 3 0, 3, 3, 3
}; };
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@ -536,25 +539,25 @@ static const unsigned char yydefact[] =
{ {
2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 18, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 24, 0, 0, 0, 0, 0, 0,
0, 0, 3, 7, 8, 9, 0, 0, 4, 5, 0, 0, 0, 0, 3, 7, 8, 9, 0, 0,
6, 10, 11, 12, 14, 15, 13, 16, 0, 0, 4, 5, 6, 10, 11, 12, 14, 15, 13, 16,
0, 0, 0, 17, 0, 0, 0, 0, 49, 0, 17, 0, 0, 0, 0, 0, 18, 0, 0, 0,
19, 28, 0, 0, 24, 20, 0, 21, 0, 25, 0, 50, 0, 20, 29, 0, 0, 25, 21, 0,
26, 0, 22, 0, 0, 0, 27, 0, 0, 0, 22, 0, 26, 27, 0, 23, 0, 0, 0, 28,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,
0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0,
29, 52, 51, 31, 34, 30, 33, 36, 37, 38, 0, 0, 0, 30, 53, 52, 32, 35, 31, 34,
35, 39, 0, 41, 44, 40, 42, 32, 43, 0, 37, 38, 39, 36, 40, 0, 42, 45, 41, 43,
0, 0, 0, 0, 46, 47, 48 33, 44, 0, 0, 0, 0, 0, 47, 48, 49
}; };
/* YYDEFGOTO[NTERM-NUM]. */ /* YYDEFGOTO[NTERM-NUM]. */
static const short int yydefgoto[] = static const short int yydefgoto[] =
{ {
-1, 1, 17, 36, 51, 37, 56, 68, 91, 122, -1, 1, 18, 38, 54, 39, 59, 71, 94, 125,
131, 66, 74 134, 69, 77
}; };
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@ -563,19 +566,19 @@ static const short int yydefgoto[] =
static const yysigned_char yypact[] = static const yysigned_char yypact[] =
{ {
-10, 0, -10, 13, 14, 17, 12, 15, 20, 22, -10, 0, -10, 13, 14, 17, 12, 15, 20, 22,
23, 24, 32, 33, 34, 41, 43, 42, 5, 9, 23, 24, 32, 34, 36, 43, 45, 47, 30, 6,
11, -10, -10, 10, 16, 18, 19, 21, 27, 28, 10, 18, -10, -10, 11, 19, 16, 21, 28, 35,
29, 35, -10, -10, -10, -10, -3, 3, -10, -10, 29, 31, 37, 38, -10, -10, -10, -10, -3, 3,
-10, -10, -10, -10, -10, -10, -10, -10, 55, 50,
61, 59, 65, -10, 72, 73, 74, 37, -10, 36,
-10, -10, 38, 39, -10, -10, -4, -10, 31, -10,
-10, 76, -10, 81, 79, 83, -10, 84, 85, 86,
87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
97, 98, 52, 58, -10, 62, 63, 64, 66, 67,
68, 60, 69, 75, -10, 77, 70, 71, 78, 80,
-10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
-10, -10, -9, -10, -10, -10, -10, -10, -10, 102, -10, 52, 53, 60, 61, 57, -10, 72, 74, 73,
106, 110, 82, 99, -10, -10, -10 39, -10, 40, -10, -10, 41, 42, -10, -10, -4,
-10, 33, -10, -10, 79, -10, 82, 83, 85, -10,
87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
97, 98, 99, 100, 101, 54, 63, -10, 64, 65,
66, 67, 68, 69, 62, 70, 75, -10, 76, 71,
77, 78, 80, -10, -10, -10, -10, -10, -10, -10,
-10, -10, -10, -10, -10, -9, -10, -10, -10, -10,
-10, -10, 102, 114, 117, 81, 84, -10, -10, -10
}; };
/* YYPGOTO[NTERM-NUM]. */ /* YYPGOTO[NTERM-NUM]. */
@ -592,21 +595,20 @@ static const yysigned_char yypgoto[] =
#define YYTABLE_NINF -1 #define YYTABLE_NINF -1
static const unsigned char yytable[] = static const unsigned char yytable[] =
{ {
2, 71, 128, 3, 129, 4, 5, 72, 47, 6, 2, 74, 131, 3, 132, 4, 5, 75, 50, 6,
48, 52, 7, 49, 53, 73, 54, 18, 19, 130, 51, 55, 7, 52, 56, 76, 57, 19, 20, 133,
55, 20, 21, 50, 23, 22, 24, 25, 26, 8, 58, 21, 22, 53, 24, 23, 25, 26, 27, 8,
9, 10, 11, 12, 13, 14, 27, 28, 29, 15, 9, 10, 11, 12, 13, 14, 28, 34, 29, 15,
75, 16, 76, 77, 78, 30, 79, 31, 80, 32, 30, 16, 78, 17, 79, 80, 81, 31, 82, 32,
33, 81, 82, 34, 35, 38, 83, 84, 85, 57, 83, 33, 35, 84, 85, 36, 60, 40, 86, 87,
58, 39, 40, 41, 42, 59, 60, 86, 87, 88, 88, 42, 37, 61, 62, 41, 43, 64, 63, 89,
43, 89, 44, 90, 45, 61, 62, 63, 46, 67, 90, 91, 44, 92, 46, 93, 65, 47, 66, 45,
92, 64, 65, 69, 70, 93, 94, 95, 96, 97, 67, 48, 49, 95, 70, 68, 96, 72, 73, 98,
98, 99, 100, 101, 102, 103, 111, 105, 106, 107, 97, 99, 100, 101, 102, 103, 104, 105, 106, 114,
108, 109, 104, 112, 119, 110, 132, 113, 114, 115, 108, 109, 110, 111, 112, 107, 135, 122, 113, 115,
133, 116, 117, 118, 120, 124, 125, 134, 121, 0, 116, 117, 118, 119, 120, 121, 123, 127, 136, 124,
123, 126, 0, 0, 0, 127, 0, 135, 0, 0, 126, 0, 129, 128, 137, 0, 130, 138, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139
0, 0, 0, 0, 136
}; };
static const yysigned_char yycheck[] = static const yysigned_char yycheck[] =
@ -614,38 +616,37 @@ static const yysigned_char yycheck[] =
0, 5, 11, 3, 13, 5, 6, 11, 11, 9, 0, 5, 11, 3, 13, 5, 6, 11, 11, 9,
13, 8, 12, 16, 11, 19, 13, 4, 4, 28, 13, 8, 12, 16, 11, 19, 13, 4, 4, 28,
17, 4, 10, 26, 4, 10, 4, 4, 4, 29, 17, 4, 10, 26, 4, 10, 4, 4, 4, 29,
30, 31, 32, 33, 34, 35, 4, 4, 4, 39, 30, 31, 32, 33, 34, 35, 4, 7, 4, 39,
9, 41, 11, 12, 13, 4, 15, 4, 17, 7, 4, 41, 9, 43, 11, 12, 13, 4, 15, 4,
45, 20, 21, 44, 43, 45, 25, 26, 27, 4, 17, 4, 46, 20, 21, 45, 4, 46, 25, 26,
10, 45, 44, 44, 43, 4, 7, 36, 37, 38, 27, 45, 44, 10, 4, 46, 45, 10, 7, 36,
43, 40, 44, 42, 45, 10, 4, 4, 43, 43, 37, 38, 44, 40, 45, 42, 4, 46, 4, 44,
4, 7, 45, 45, 45, 4, 7, 4, 4, 4, 7, 44, 44, 4, 44, 46, 4, 46, 46, 4,
4, 4, 4, 4, 4, 4, 44, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 4, 45,
4, 4, 10, 45, 44, 7, 4, 45, 45, 45, 4, 4, 4, 4, 4, 10, 4, 45, 7, 46,
4, 45, 45, 45, 45, 45, 45, 7, 43, -1, 46, 46, 46, 46, 46, 46, 46, 46, 4, 44,
43, 43, -1, -1, -1, 45, -1, 45, -1, -1, 44, -1, 44, 46, 7, -1, 46, 46, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46
-1, -1, -1, -1, 45
}; };
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */ symbol of state STATE-NUM. */
static const unsigned char yystos[] = static const unsigned char yystos[] =
{ {
0, 47, 0, 3, 5, 6, 9, 12, 29, 30, 0, 48, 0, 3, 5, 6, 9, 12, 29, 30,
31, 32, 33, 34, 35, 39, 41, 48, 4, 4, 31, 32, 33, 34, 35, 39, 41, 43, 49, 4,
4, 10, 10, 4, 4, 4, 4, 4, 4, 4, 4, 4, 10, 10, 4, 4, 4, 4, 4, 4,
4, 4, 7, 45, 44, 43, 49, 51, 45, 45, 4, 4, 4, 4, 7, 46, 45, 44, 50, 52,
44, 44, 43, 43, 44, 45, 43, 11, 13, 16, 46, 46, 45, 45, 44, 44, 45, 46, 44, 44,
26, 50, 8, 11, 13, 17, 52, 4, 10, 4, 11, 13, 16, 26, 51, 8, 11, 13, 17, 53,
7, 10, 4, 4, 7, 45, 57, 43, 53, 45, 4, 10, 4, 7, 10, 4, 4, 7, 46, 58,
45, 5, 11, 19, 58, 9, 11, 12, 13, 15, 44, 54, 46, 46, 5, 11, 19, 59, 9, 11,
17, 20, 21, 25, 26, 27, 36, 37, 38, 40, 12, 13, 15, 17, 20, 21, 25, 26, 27, 36,
42, 54, 4, 4, 7, 4, 4, 4, 4, 4, 37, 38, 40, 42, 55, 4, 4, 7, 4, 4,
4, 4, 4, 4, 10, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 10, 4, 4,
7, 44, 45, 45, 45, 45, 45, 45, 45, 44, 4, 4, 4, 7, 45, 46, 46, 46, 46, 46,
45, 43, 55, 43, 45, 45, 43, 45, 11, 13, 46, 46, 45, 46, 44, 56, 44, 46, 46, 44,
28, 56, 4, 4, 7, 45, 45 46, 11, 13, 28, 57, 4, 4, 7, 46, 46
}; };
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
@ -1333,201 +1334,208 @@ yyreduce:
case 16: case 16:
#line 122 "conf.y" #line 122 "conf.y"
{
yyval.tuple = tuple_i_new(LEX_BLRESET_ON_TALK, yyvsp[0].number);
}
break;
case 17:
#line 125 "conf.y"
{ yyval.tuple = tuple_l_new(LEX_NETWORK, { yyval.tuple = tuple_l_new(LEX_NETWORK,
yyvsp[-1].list); } yyvsp[-1].list); }
break; break;
case 17: case 18:
#line 124 "conf.y" #line 127 "conf.y"
{ yyval.tuple = tuple_l_new(LEX_USER, yyvsp[-1].list); } { yyval.tuple = tuple_l_new(LEX_USER, yyvsp[-1].list); }
break; break;
case 18:
#line 127 "conf.y"
{ yyval.list = list_new(NULL); }
break;
case 19: case 19:
#line 128 "conf.y" #line 130 "conf.y"
{ list_add_last(yyvsp[-2].list, yyvsp[-1].tuple); yyval.list = yyvsp[-2].list; } { yyval.list = list_new(NULL); }
break; break;
case 20: case 20:
#line 131 "conf.y" #line 131 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_NAME, yyvsp[0].string); } { list_add_last(yyvsp[-2].list, yyvsp[-1].tuple); yyval.list = yyvsp[-2].list; }
break; break;
case 21: case 21:
#line 132 "conf.y" #line 134 "conf.y"
{ yyval.tuple = tuple_i_new(LEX_SSL, yyvsp[0].number); } { yyval.tuple = tuple_s_new(LEX_NAME, yyvsp[0].string); }
break; break;
case 22: case 22:
#line 133 "conf.y" #line 135 "conf.y"
{ yyval.tuple = tuple_i_new(LEX_SSL, yyvsp[0].number); }
break;
case 23:
#line 136 "conf.y"
{ {
yyval.tuple = tuple_l_new(LEX_SERVER, yyvsp[-1].list); } yyval.tuple = tuple_l_new(LEX_SERVER, yyvsp[-1].list); }
break; break;
case 23:
#line 137 "conf.y"
{ yyval.list = list_new(NULL); }
break;
case 24: case 24:
#line 138 "conf.y" #line 140 "conf.y"
{ list_add_last(yyvsp[-2].list, yyvsp[-1].tuple); yyval.list = yyvsp[-2].list; } { yyval.list = list_new(NULL); }
break; break;
case 25: case 25:
#line 141 "conf.y" #line 141 "conf.y"
{ list_add_last(yyvsp[-2].list, yyvsp[-1].tuple); yyval.list = yyvsp[-2].list; }
break;
case 26:
#line 144 "conf.y"
{ {
yyval.tuple = tuple_s_new(LEX_NAME, yyvsp[0].string); } yyval.tuple = tuple_s_new(LEX_NAME, yyvsp[0].string); }
break; break;
case 26: case 27:
#line 143 "conf.y" #line 146 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_PASSWORD, { yyval.tuple = tuple_s_new(LEX_PASSWORD,
yyvsp[0].string); } yyvsp[0].string); }
break; break;
case 27: case 28:
#line 145 "conf.y" #line 148 "conf.y"
{ {
yyval.tuple = tuple_l_new(LEX_CONNECTION, yyvsp[-1].list); } yyval.tuple = tuple_l_new(LEX_CONNECTION, yyvsp[-1].list); }
break; break;
case 28: case 29:
#line 149 "conf.y" #line 152 "conf.y"
{ yyval.list = list_new(NULL); } { yyval.list = list_new(NULL); }
break; break;
case 29: case 30:
#line 150 "conf.y" #line 153 "conf.y"
{ {
list_add_last(yyvsp[-2].list, yyvsp[-1].tuple); yyval.list = yyvsp[-2].list; } list_add_last(yyvsp[-2].list, yyvsp[-1].tuple); yyval.list = yyvsp[-2].list; }
break; break;
case 30: case 31:
#line 154 "conf.y" #line 157 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_NAME, yyvsp[0].string); } { yyval.tuple = tuple_s_new(LEX_NAME, yyvsp[0].string); }
break; break;
case 31: case 32:
#line 155 "conf.y" #line 158 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_NETWORK, { yyval.tuple = tuple_s_new(LEX_NETWORK,
yyvsp[0].string); } yyvsp[0].string); }
break; break;
case 32: case 33:
#line 157 "conf.y" #line 160 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_LOGIN, yyvsp[0].string); } { yyval.tuple = tuple_s_new(LEX_LOGIN, yyvsp[0].string); }
break; break;
case 33: case 34:
#line 158 "conf.y" #line 161 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_NICK, yyvsp[0].string); } { yyval.tuple = tuple_s_new(LEX_NICK, yyvsp[0].string); }
break; break;
case 34: case 35:
#line 159 "conf.y" #line 162 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_USER, yyvsp[0].string); } { yyval.tuple = tuple_s_new(LEX_USER, yyvsp[0].string); }
break; break;
case 35: case 36:
#line 160 "conf.y" #line 163 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_REALNAME, { yyval.tuple = tuple_s_new(LEX_REALNAME,
yyvsp[0].string); } yyvsp[0].string); }
break; break;
case 36: case 37:
#line 162 "conf.y" #line 165 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_PASSWORD, { yyval.tuple = tuple_s_new(LEX_PASSWORD,
yyvsp[0].string); } yyvsp[0].string); }
break; break;
case 37: case 38:
#line 164 "conf.y" #line 167 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_VHOST, yyvsp[0].string); } { yyval.tuple = tuple_s_new(LEX_VHOST, yyvsp[0].string); }
break; break;
case 38: case 39:
#line 165 "conf.y" #line 168 "conf.y"
{ {
yyval.tuple = tuple_i_new(LEX_SOURCE_PORT, yyvsp[0].number); } yyval.tuple = tuple_i_new(LEX_SOURCE_PORT, yyvsp[0].number); }
break; break;
case 39: case 40:
#line 167 "conf.y" #line 170 "conf.y"
{ yyval.tuple = tuple_i_new(LEX_SSL, yyvsp[0].number); } { yyval.tuple = tuple_i_new(LEX_SSL, yyvsp[0].number); }
break; break;
case 40: case 41:
#line 168 "conf.y" #line 171 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_AWAY_NICK, { yyval.tuple = tuple_s_new(LEX_AWAY_NICK,
yyvsp[0].string); } yyvsp[0].string); }
break; break;
case 41: case 42:
#line 170 "conf.y" #line 173 "conf.y"
{ {
yyval.tuple = tuple_i_new(LEX_FOLLOW_NICK, yyvsp[0].number); } yyval.tuple = tuple_i_new(LEX_FOLLOW_NICK, yyvsp[0].number); }
break; break;
case 42: case 43:
#line 172 "conf.y" #line 175 "conf.y"
{ yyval.tuple = tuple_i_new( { yyval.tuple = tuple_i_new(
LEX_IGN_FIRST_NICK, yyvsp[0].number); } LEX_IGN_FIRST_NICK, yyvsp[0].number); }
break; break;
case 43: case 44:
#line 174 "conf.y" #line 177 "conf.y"
{ yyval.tuple = tuple_l_new( { yyval.tuple = tuple_l_new(
LEX_CHANNEL, yyvsp[-1].list); } LEX_CHANNEL, yyvsp[-1].list); }
break; break;
case 44: case 45:
#line 176 "conf.y" #line 179 "conf.y"
{ yyval.tuple = tuple_s_new( { yyval.tuple = tuple_s_new(
LEX_ON_CONNECT_SEND, yyvsp[0].string); } LEX_ON_CONNECT_SEND, yyvsp[0].string); }
break; break;
case 45:
#line 179 "conf.y"
{ yyval.list = list_new(NULL); }
break;
case 46: case 46:
#line 180 "conf.y" #line 182 "conf.y"
{ list_add_last(yyvsp[-2].list, yyvsp[-1].tuple); yyval.list = yyvsp[-2].list; } { yyval.list = list_new(NULL); }
break; break;
case 47: case 47:
#line 183 "conf.y" #line 183 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_NAME, yyvsp[0].string); } { list_add_last(yyvsp[-2].list, yyvsp[-1].tuple); yyval.list = yyvsp[-2].list; }
break; break;
case 48: case 48:
#line 184 "conf.y" #line 186 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_KEY, yyvsp[0].string); } { yyval.tuple = tuple_s_new(LEX_NAME, yyvsp[0].string); }
break; break;
case 49: case 49:
#line 187 "conf.y" #line 187 "conf.y"
{ yyval.list = list_new(NULL); } { yyval.tuple = tuple_s_new(LEX_KEY, yyvsp[0].string); }
break; break;
case 50: case 50:
#line 188 "conf.y" #line 190 "conf.y"
{ list_add_last(yyvsp[-2].list, yyvsp[-1].tuple); yyval.list = yyvsp[-2].list; } { yyval.list = list_new(NULL); }
break; break;
case 51: case 51:
#line 191 "conf.y" #line 191 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_HOST, yyvsp[0].string); } { list_add_last(yyvsp[-2].list, yyvsp[-1].tuple); yyval.list = yyvsp[-2].list; }
break; break;
case 52: case 52:
#line 192 "conf.y" #line 194 "conf.y"
{ yyval.tuple = tuple_s_new(LEX_HOST, yyvsp[0].string); }
break;
case 53:
#line 195 "conf.y"
{ yyval.tuple = tuple_i_new(LEX_PORT, yyvsp[0].number); } { yyval.tuple = tuple_i_new(LEX_PORT, yyvsp[0].number); }
break; break;
@ -1535,7 +1543,7 @@ yyreduce:
} }
/* Line 1010 of yacc.c. */ /* Line 1010 of yacc.c. */
#line 1539 "y.tab.c" #line 1547 "y.tab.c"
yyvsp -= yylen; yyvsp -= yylen;
yyssp -= yylen; yyssp -= yylen;

View File

@ -69,9 +69,10 @@
LEX_IGN_FIRST_NICK = 295, LEX_IGN_FIRST_NICK = 295,
LEX_ALWAYS_BACKLOG = 296, LEX_ALWAYS_BACKLOG = 296,
LEX_LOGIN = 297, LEX_LOGIN = 297,
LEX_BOOL = 298, LEX_BLRESET_ON_TALK = 298,
LEX_INT = 299, LEX_BOOL = 299,
LEX_STRING = 300 LEX_INT = 300,
LEX_STRING = 301
}; };
#endif #endif
#define LEX_IP 258 #define LEX_IP 258
@ -114,9 +115,10 @@
#define LEX_IGN_FIRST_NICK 295 #define LEX_IGN_FIRST_NICK 295
#define LEX_ALWAYS_BACKLOG 296 #define LEX_ALWAYS_BACKLOG 296
#define LEX_LOGIN 297 #define LEX_LOGIN 297
#define LEX_BOOL 298 #define LEX_BLRESET_ON_TALK 298
#define LEX_INT 299 #define LEX_BOOL 299
#define LEX_STRING 300 #define LEX_INT 300
#define LEX_STRING 301
@ -130,7 +132,7 @@ typedef union YYSTYPE {
struct tuple *tuple; struct tuple *tuple;
} YYSTYPE; } YYSTYPE;
/* Line 1285 of yacc.c. */ /* Line 1285 of yacc.c. */
#line 134 "y.tab.h" #line 136 "y.tab.h"
# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_TRIVIAL 1

View File

@ -80,7 +80,7 @@ struct tuple *tuple_l_new(int type, void *p)
%} %}
%token LEX_IP LEX_EQ LEX_PORT LEX_CSS LEX_SEMICOLON LEX_CONNECTION LEX_NETWORK LEX_LBRA LEX_RBRA LEX_USER LEX_NAME LEX_USERNAME LEX_NICK LEX_SERVER LEX_PASSWORD LEX_SRCIP LEX_HOST LEX_VHOST LEX_SOURCE_PORT LEX_NONE LEX_COMMENT LEX_BUNCH LEX_REALNAME LEX_SSL LEX_CHANNEL LEX_KEY LEX_LOG_ROOT LEX_LOG_FORMAT LEX_LOG_LEVEL LEX_BACKLOG_LINES LEX_BACKLOG LEX_LOG LEX_LOG_SYNC_INTERVAL LEX_FOLLOW_NICK LEX_ON_CONNECT_SEND LEX_AWAY_NICK LEX_PID_FILE LEX_IGN_FIRST_NICK LEX_ALWAYS_BACKLOG LEX_LOGIN %token LEX_IP LEX_EQ LEX_PORT LEX_CSS LEX_SEMICOLON LEX_CONNECTION LEX_NETWORK LEX_LBRA LEX_RBRA LEX_USER LEX_NAME LEX_USERNAME LEX_NICK LEX_SERVER LEX_PASSWORD LEX_SRCIP LEX_HOST LEX_VHOST LEX_SOURCE_PORT LEX_NONE LEX_COMMENT LEX_BUNCH LEX_REALNAME LEX_SSL LEX_CHANNEL LEX_KEY LEX_LOG_ROOT LEX_LOG_FORMAT LEX_LOG_LEVEL LEX_BACKLOG_LINES LEX_BACKLOG LEX_LOG LEX_LOG_SYNC_INTERVAL LEX_FOLLOW_NICK LEX_ON_CONNECT_SEND LEX_AWAY_NICK LEX_PID_FILE LEX_IGN_FIRST_NICK LEX_ALWAYS_BACKLOG LEX_LOGIN LEX_BLRESET_ON_TALK
%union { %union {
int number; int number;
@ -119,6 +119,9 @@ command:
| LEX_LOG_SYNC_INTERVAL LEX_EQ LEX_INT { $$ = tuple_i_new( | LEX_LOG_SYNC_INTERVAL LEX_EQ LEX_INT { $$ = tuple_i_new(
LEX_LOG_SYNC_INTERVAL, $3); } LEX_LOG_SYNC_INTERVAL, $3); }
| LEX_PID_FILE LEX_EQ LEX_STRING { $$ = tuple_s_new(LEX_PID_FILE, $3); } | LEX_PID_FILE LEX_EQ LEX_STRING { $$ = tuple_s_new(LEX_PID_FILE, $3); }
| LEX_BLRESET_ON_TALK LEX_EQ LEX_BOOL {
$$ = tuple_i_new(LEX_BLRESET_ON_TALK, $3);
}
| LEX_NETWORK LEX_LBRA network LEX_RBRA { $$ = tuple_l_new(LEX_NETWORK, | LEX_NETWORK LEX_LBRA network LEX_RBRA { $$ = tuple_l_new(LEX_NETWORK,
$3); } $3); }
| LEX_USER LEX_LBRA user LEX_RBRA { $$ = tuple_l_new(LEX_USER, $3); } | LEX_USER LEX_LBRA user LEX_RBRA { $$ = tuple_l_new(LEX_USER, $3); }

View File

@ -47,6 +47,7 @@ extern int conf_backlog;
extern int conf_log_sync_interval; extern int conf_log_sync_interval;
extern int conf_error; extern int conf_error;
extern char conf_errstr[]; extern char conf_errstr[];
extern int conf_blreset_on_talk;
void write_user_list(connection_t *c, char *dest); void write_user_list(connection_t *c, char *dest);
@ -713,10 +714,13 @@ static int irc_cli_quit(struct link_client *ic, struct line *line)
return OK_CLOSE; return OK_CLOSE;
} }
void adm_blreset(struct link_client *ic);
static int irc_cli_privmsg(struct link_client *ic, struct line *line) static int irc_cli_privmsg(struct link_client *ic, struct line *line)
{ {
log_cli_privmsg(LINK(ic)->log, LINK(ic)->l_server->nick, log_cli_privmsg(LINK(ic)->log, LINK(ic)->l_server->nick,
line->elemv[1], line->elemv[2]); line->elemv[1], line->elemv[2]);
if (conf_blreset_on_talk)
adm_blreset(ic);
return OK_COPY_CLI; return OK_COPY_CLI;
} }

317
src/lex.c
View File

@ -351,8 +351,8 @@ static void yy_fatal_error (yyconst char msg[] );
*yy_cp = '\0'; \ *yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp; (yy_c_buf_p) = yy_cp;
#define YY_NUM_RULES 44 #define YY_NUM_RULES 45
#define YY_END_OF_BUFFER 45 #define YY_END_OF_BUFFER 46
/* This struct is not used in this scanner, /* This struct is not used in this scanner,
but its presence is necessary. */ but its presence is necessary. */
struct yy_trans_info struct yy_trans_info
@ -360,35 +360,37 @@ struct yy_trans_info
flex_int32_t yy_verify; flex_int32_t yy_verify;
flex_int32_t yy_nxt; flex_int32_t yy_nxt;
}; };
static yyconst flex_int16_t yy_accept[248] = static yyconst flex_int16_t yy_accept[262] =
{ 0, { 0,
0, 0, 45, 43, 1, 2, 43, 43, 4, 42, 0, 0, 46, 44, 1, 2, 44, 44, 4, 43,
39, 43, 43, 43, 43, 43, 43, 43, 43, 43, 40, 44, 44, 44, 44, 44, 44, 44, 44, 44,
43, 43, 43, 43, 43, 43, 43, 40, 41, 1, 44, 44, 44, 44, 44, 44, 44, 41, 42, 1,
0, 38, 0, 3, 4, 0, 0, 0, 0, 0, 0, 39, 0, 3, 4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 23, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 30, 0, 0, 0, 0,
0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,
12, 0, 17, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 12, 0, 17, 0, 0, 0, 7,
5, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 14, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 9, 0, 0, 0, 0, 29, 24, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 29, 0, 24, 0, 0, 0, 0, 0,
0, 0, 0, 10, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 26, 0, 0, 21, 37, 18, 0, 26, 0, 0, 21, 37, 18, 0, 13, 0, 35,
13, 0, 35, 0, 0, 0, 0, 0, 0, 25,
0, 0, 0, 0, 0, 0, 16, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0,
0, 0, 0, 0, 0, 16, 0, 0, 27, 0,
0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0,
19, 0, 0, 0, 0, 0, 0, 0, 28, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 28,
0, 0, 0, 31, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
0, 36, 0, 0, 34, 32, 0 0, 38, 8, 0, 0, 36, 0, 0, 34, 32,
0
} ; } ;
static yyconst flex_int32_t yy_ec[256] = static yyconst flex_int32_t yy_ec[256] =
@ -431,140 +433,146 @@ static yyconst flex_int32_t yy_meta[35] =
1, 1, 1, 1 1, 1, 1, 1
} ; } ;
static yyconst flex_int16_t yy_base[250] = static yyconst flex_int16_t yy_base[264] =
{ 0, { 0,
0, 0, 259, 260, 33, 260, 253, 254, 249, 260, 0, 0, 273, 274, 33, 274, 267, 268, 263, 274,
260, 15, 244, 20, 28, 230, 23, 238, 228, 32, 274, 15, 27, 21, 29, 245, 24, 253, 243, 32,
228, 31, 235, 30, 223, 221, 229, 260, 260, 54, 243, 33, 250, 35, 238, 236, 244, 274, 274, 52,
241, 260, 242, 260, 237, 212, 231, 228, 229, 220, 256, 274, 257, 274, 252, 227, 246, 243, 229, 243,
215, 216, 215, 208, 211, 260, 201, 215, 209, 202, 234, 229, 230, 229, 222, 225, 274, 215, 229, 223,
216, 218, 200, 212, 199, 213, 197, 193, 200, 191, 216, 230, 232, 214, 226, 213, 227, 211, 207, 214,
204, 194, 206, 184, 195, 191, 198, 189, 184, 189, 205, 218, 208, 220, 198, 209, 213, 204, 211, 202,
181, 184, 260, 43, 192, 175, 185, 191, 176, 192, 197, 202, 194, 197, 274, 45, 205, 188, 198, 204,
173, 179, 169, 172, 260, 182, 170, 168, 162, 183, 189, 205, 186, 192, 182, 185, 274, 195, 183, 181,
171, 168, 167, 174, 173, 163, 260, 160, 43, 162, 175, 196, 184, 177, 180, 179, 186, 185, 175, 274,
260, 160, 260, 159, 151, 165, 260, 157, 164, 165, 172, 42, 174, 274, 172, 274, 171, 163, 177, 274,
260, 154, 148, 148, 151, 149, 157, 143, 157, 138, 169, 176, 177, 274, 166, 160, 160, 163, 161, 169,
153, 143, 151, 141, 132, 260, 137, 139, 137, 141, 168, 154, 168, 149, 164, 154, 162, 152, 143, 274,
148, 132, 142, 145, 260, 145, 135, 136, 131, 141, 148, 150, 148, 152, 159, 143, 153, 156, 274, 156,
122, 139, 138, 121, 116, 121, 121, 123, 119, 115, 146, 147, 135, 141, 151, 132, 149, 148, 131, 126,
119, 117, 260, 128, 115, 124, 122, 124, 260, 106, 131, 131, 133, 129, 125, 129, 127, 274, 138, 125,
113, 108, 114, 107, 113, 99, 113, 260, 110, 110, 134, 132, 134, 133, 274, 115, 122, 117, 123, 116,
108, 107, 96, 105, 108, 98, 96, 97, 91, 95, 122, 108, 122, 274, 119, 119, 117, 116, 105, 114,
94, 101, 90, 260, 100, 96, 260, 260, 260, 84, 117, 107, 105, 101, 105, 99, 103, 102, 109, 98,
260, 94, 260, 87, 91, 81, 90, 76, 73, 260, 274, 108, 104, 274, 274, 274, 92, 274, 102, 274,
81, 71, 72, 77, 73, 80, 260, 74, 66, 260, 95, 90, 98, 88, 97, 83, 80, 274, 88, 78,
69, 81, 62, 68, 73, 77, 260, 58, 57, 57, 79, 84, 80, 92, 86, 274, 80, 72, 274, 75,
260, 59, 55, 54, 70, 64, 63, 60, 260, 49, 87, 68, 74, 79, 65, 82, 274, 63, 62, 62,
52, 48, 50, 260, 51, 52, 38, 53, 260, 53, 274, 64, 60, 75, 58, 74, 68, 67, 64, 274,
54, 260, 43, 40, 260, 260, 260, 59, 48 59, 52, 55, 51, 53, 274, 55, 53, 54, 42,
57, 274, 274, 57, 56, 274, 46, 44, 274, 274,
274, 60, 59
} ; } ;
static yyconst flex_int16_t yy_def[250] = static yyconst flex_int16_t yy_def[264] =
{ 0, { 0,
247, 1, 247, 247, 247, 247, 248, 249, 247, 247, 261, 1, 261, 261, 261, 261, 262, 263, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
248, 247, 249, 247, 247, 247, 247, 247, 247, 247, 262, 261, 263, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 0, 247, 247 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
0, 261, 261
} ; } ;
static yyconst flex_int16_t yy_nxt[295] = static yyconst flex_int16_t yy_nxt[309] =
{ 0, { 0,
4, 5, 6, 5, 7, 8, 9, 10, 11, 4, 4, 5, 6, 5, 7, 8, 9, 10, 11, 4,
12, 13, 14, 4, 4, 15, 4, 16, 17, 18, 12, 13, 14, 4, 4, 15, 4, 16, 17, 18,
19, 4, 20, 21, 22, 23, 24, 25, 26, 27, 19, 4, 20, 21, 22, 23, 24, 25, 26, 27,
4, 4, 28, 29, 30, 36, 30, 39, 42, 45, 4, 4, 28, 29, 30, 36, 30, 38, 40, 43,
40, 53, 49, 41, 57, 37, 50, 46, 33, 54, 46, 41, 50, 54, 42, 37, 51, 39, 47, 58,
51, 43, 99, 58, 55, 30, 59, 30, 122, 31, 52, 55, 44, 30, 102, 30, 56, 126, 59, 33,
246, 100, 245, 123, 244, 243, 242, 241, 124, 125, 31, 60, 127, 103, 260, 259, 258, 128, 129, 257,
240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 256, 255, 254, 253, 252, 251, 250, 249, 248, 247,
230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 246, 245, 244, 243, 242, 241, 240, 239, 238, 237,
220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227,
210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217,
200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207,
190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197,
180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187,
170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177,
160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167,
150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157,
140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147,
130, 129, 128, 127, 126, 121, 120, 111, 119, 118, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137,
117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 136, 135, 134, 133, 132, 131, 130, 125, 124, 114,
107, 106, 105, 104, 103, 102, 101, 98, 97, 96, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114,
95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104,
85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92,
75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82,
65, 64, 63, 35, 34, 32, 62, 61, 60, 56, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72,
52, 48, 47, 44, 38, 35, 34, 32, 247, 3, 71, 70, 69, 68, 67, 66, 65, 64, 35, 34,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 32, 63, 62, 61, 57, 53, 49, 48, 45, 35,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 34, 32, 261, 3, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
261, 261, 261, 261, 261, 261, 261, 261
} ; } ;
static yyconst flex_int16_t yy_chk[295] = static yyconst flex_int16_t yy_chk[309] =
{ 0, { 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 5, 12, 5, 14, 15, 17, 1, 1, 1, 1, 5, 12, 5, 13, 14, 15,
14, 22, 20, 14, 24, 12, 20, 17, 249, 22, 17, 14, 20, 22, 14, 12, 20, 13, 17, 24,
20, 15, 74, 24, 22, 30, 24, 30, 99, 248, 20, 22, 15, 30, 76, 30, 22, 102, 24, 263,
244, 74, 243, 99, 241, 240, 238, 237, 99, 99, 262, 24, 102, 76, 258, 257, 255, 102, 102, 254,
236, 235, 233, 232, 231, 230, 228, 227, 226, 225, 251, 250, 249, 248, 247, 245, 244, 243, 242, 241,
224, 223, 222, 220, 219, 218, 216, 215, 214, 213, 239, 238, 237, 236, 235, 234, 233, 232, 230, 229,
212, 211, 209, 208, 206, 205, 204, 203, 202, 201, 228, 226, 225, 224, 223, 222, 221, 220, 218, 217,
199, 198, 197, 196, 195, 194, 192, 190, 186, 185, 215, 214, 213, 212, 211, 210, 209, 207, 206, 205,
183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 204, 203, 202, 201, 199, 197, 193, 192, 190, 189,
173, 172, 171, 170, 169, 167, 166, 165, 164, 163, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179,
162, 161, 160, 158, 157, 156, 155, 154, 152, 151, 178, 177, 176, 175, 173, 172, 171, 170, 169, 168,
150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 167, 166, 164, 163, 162, 161, 160, 159, 157, 156,
140, 139, 138, 137, 136, 134, 133, 132, 131, 130, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146,
129, 128, 127, 125, 124, 123, 122, 121, 120, 119, 145, 144, 143, 142, 141, 140, 138, 137, 136, 135,
118, 117, 116, 115, 114, 113, 112, 110, 109, 108, 134, 133, 132, 131, 129, 128, 127, 126, 125, 124,
106, 105, 104, 102, 100, 98, 96, 95, 94, 93, 123, 122, 121, 120, 119, 118, 117, 116, 115, 113,
92, 91, 90, 89, 88, 87, 86, 84, 83, 82, 112, 111, 109, 108, 107, 105, 103, 101, 99, 98,
81, 80, 79, 78, 77, 76, 75, 72, 71, 70, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88,
69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77,
59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65,
49, 48, 47, 45, 44, 43, 42, 41, 40, 39, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55,
38, 37, 36, 35, 33, 31, 27, 26, 25, 23, 54, 53, 52, 51, 50, 49, 48, 46, 45, 44,
21, 19, 18, 16, 13, 9, 8, 7, 3, 247, 43, 42, 41, 40, 39, 38, 37, 36, 35, 33,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 31, 27, 26, 25, 23, 21, 19, 18, 16, 9,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 8, 7, 3, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
247, 247, 247, 247 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
261, 261, 261, 261, 261, 261, 261, 261
} ; } ;
static yy_state_type yy_last_accepting_state; static yy_state_type yy_last_accepting_state;
@ -616,7 +624,7 @@ list_t *parse_conf(FILE *file)
} }
return root_list; return root_list;
} }
#line 620 "lex.yy.c" #line 628 "lex.yy.c"
#define INITIAL 0 #define INITIAL 0
@ -769,7 +777,7 @@ YY_DECL
#line 36 "lex.l" #line 36 "lex.l"
#line 773 "lex.yy.c" #line 781 "lex.yy.c"
if ( (yy_init) ) if ( (yy_init) )
{ {
@ -822,13 +830,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 248 ) if ( yy_current_state >= 262 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp; ++yy_cp;
} }
while ( yy_base[yy_current_state] != 260 ); while ( yy_base[yy_current_state] != 274 );
yy_find_action: yy_find_action:
yy_act = yy_accept[yy_current_state]; yy_act = yy_accept[yy_current_state];
@ -1049,9 +1057,14 @@ YY_RULE_SETUP
{ return LEX_PID_FILE; } { return LEX_PID_FILE; }
YY_BREAK YY_BREAK
case 38: case 38:
/* rule 38 can match eol */
YY_RULE_SETUP YY_RULE_SETUP
#line 81 "lex.l" #line 81 "lex.l"
{ return LEX_BLRESET_ON_TALK; }
YY_BREAK
case 39:
/* rule 39 can match eol */
YY_RULE_SETUP
#line 82 "lex.l"
{ {
size_t len = strlen(yytext) - 2; size_t len = strlen(yytext) - 2;
yylval.string = malloc(len + 1); yylval.string = malloc(len + 1);
@ -1062,38 +1075,38 @@ YY_RULE_SETUP
return LEX_STRING; return LEX_STRING;
} }
YY_BREAK YY_BREAK
case 39:
YY_RULE_SETUP
#line 90 "lex.l"
{ return LEX_EQ; }
YY_BREAK
case 40: case 40:
YY_RULE_SETUP YY_RULE_SETUP
#line 91 "lex.l" #line 91 "lex.l"
{ return LEX_LBRA; } { return LEX_EQ; }
YY_BREAK YY_BREAK
case 41: case 41:
YY_RULE_SETUP YY_RULE_SETUP
#line 92 "lex.l" #line 92 "lex.l"
{ return LEX_RBRA; } { return LEX_LBRA; }
YY_BREAK YY_BREAK
case 42: case 42:
YY_RULE_SETUP YY_RULE_SETUP
#line 93 "lex.l" #line 93 "lex.l"
{ return LEX_SEMICOLON; } { return LEX_RBRA; }
YY_BREAK YY_BREAK
case 43: case 43:
YY_RULE_SETUP YY_RULE_SETUP
#line 94 "lex.l" #line 94 "lex.l"
{ printf("Parse error line %d, unknown character '%s'\n", linec + 1, yytext); { return LEX_SEMICOLON; }
return LEX_BUNCH; }
YY_BREAK YY_BREAK
case 44: case 44:
YY_RULE_SETUP YY_RULE_SETUP
#line 96 "lex.l" #line 95 "lex.l"
{ printf("Parse error line %d, unknown character '%s'\n", linec + 1, yytext);
return LEX_BUNCH; }
YY_BREAK
case 45:
YY_RULE_SETUP
#line 97 "lex.l"
ECHO; ECHO;
YY_BREAK YY_BREAK
#line 1097 "lex.yy.c" #line 1110 "lex.yy.c"
case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(INITIAL):
yyterminate(); yyterminate();
@ -1377,7 +1390,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 248 ) if ( yy_current_state >= 262 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@ -1405,11 +1418,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{ {
yy_current_state = (int) yy_def[yy_current_state]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 248 ) if ( yy_current_state >= 262 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
yy_is_jam = (yy_current_state == 247); yy_is_jam = (yy_current_state == 261);
return yy_is_jam ? 0 : yy_current_state; return yy_is_jam ? 0 : yy_current_state;
} }
@ -2059,7 +2072,7 @@ void yyfree (void * ptr )
#undef YY_DECL_IS_OURS #undef YY_DECL_IS_OURS
#undef YY_DECL #undef YY_DECL
#endif #endif
#line 96 "lex.l" #line 97 "lex.l"

View File

@ -78,6 +78,7 @@ list_t *parse_conf(FILE *file)
"away_nick" { return LEX_AWAY_NICK; } "away_nick" { return LEX_AWAY_NICK; }
"on_connect_send" { return LEX_ON_CONNECT_SEND; } "on_connect_send" { return LEX_ON_CONNECT_SEND; }
"pid_file" { return LEX_PID_FILE; } "pid_file" { return LEX_PID_FILE; }
"blreset_on_talk" { return LEX_BLRESET_ON_TALK; }
\"[^"]*\" { \"[^"]*\" {
size_t len = strlen(yytext) - 2; size_t len = strlen(yytext) - 2;
yylval.string = malloc(len + 1); yylval.string = malloc(len + 1);

View File

@ -181,6 +181,7 @@ void log_updatelast(logfile_t *lf)
void log_reset(logfilegroup_t *lfg) void log_reset(logfilegroup_t *lfg)
{ {
logfile_t *olf; logfile_t *olf;
lfg->skip_advance = 0;
if (lfg->memlog) { if (lfg->memlog) {
while (!list_is_empty(lfg->memlog)) while (!list_is_empty(lfg->memlog))