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
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 {
name = "iiens";
@ -66,8 +71,8 @@ user {
# The name in bip of the user
# This is used by bip only
name = "nohar";
# this user's password
password = "233a8d53b55a268d4a84a3acdd5ed57d"; # (md5(md5("tata")))
# this user's password (md5(md5("tata"))) plus seed
password = "3880f2b39b3b9cb507b052b695d2680859bfc327";
# A user can have mutiple connections to irc networks.
# define a connection:

View File

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

View File

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

View File

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