diff options
Diffstat (limited to 'src/conf_parser.y')
-rw-r--r-- | src/conf_parser.y | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/conf_parser.y b/src/conf_parser.y index d71324b..750a200 100644 --- a/src/conf_parser.y +++ b/src/conf_parser.y @@ -1710,12 +1710,18 @@ resv_entry: RESV reset_block_state(); strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf)); -} '{' resv_items '}' ';'; +} '{' resv_items '}' ';' +{ + if (IsChanPrefix(block_state.name.buf[0])) + create_channel_resv(block_state.name.buf, block_state.rpass.buf, 1); + else if (block_state.name.buf[0]) + create_nick_resv(block_state.name.buf, block_state.rpass.buf, 1); +}; resv_items: resv_items resv_item | resv_item; -resv_item: resv_creason | resv_channel | resv_nick | error ';' ; +resv_item: resv_reason | resv_channel | resv_nick | error ';' ; -resv_creason: REASON '=' QSTRING ';' +resv_reason: REASON '=' QSTRING ';' { if (conf_parser_ctx.pass == 2) strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf)); @@ -1723,17 +1729,14 @@ resv_creason: REASON '=' QSTRING ';' resv_channel: CHANNEL '=' QSTRING ';' { - if (conf_parser_ctx.pass != 2) - break; - - if (IsChanPrefix(*yylval.string)) - create_channel_resv(yylval.string, block_state.rpass.buf, 1); + if (conf_parser_ctx.pass == 2) + strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf)); }; resv_nick: NICK '=' QSTRING ';' { if (conf_parser_ctx.pass == 2) - create_nick_resv(yylval.string, block_state.rpass.buf, 1); + strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf)); }; /*************************************************************************** |