From e816026faa1ae11f0e9d26d27f420a304d4ad210 Mon Sep 17 00:00:00 2001 From: Jan Breuer <jan.breuer@jaybee.cz> Date: 周五, 16 10月 2015 06:16:45 +0800 Subject: [PATCH] Resolve #59: input buffer overrun handling --- libscpi/src/lexer.c | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 40 insertions(+), 3 deletions(-) diff --git a/libscpi/src/lexer.c b/libscpi/src/lexer.c index 755c4bf..ee4696c 100644 --- a/libscpi/src/lexer.c +++ b/libscpi/src/lexer.c @@ -865,6 +865,46 @@ } /** + * Detect token colon + * @param state + * @param token + * @return + */ +int scpiLex_Colon(lex_state_t * state, scpi_token_t * token) { + token->ptr = state->pos; + + if (skipChr(state, ':')) { + token->len = 1; + token->type = SCPI_TOKEN_COLON; + } else { + token->len = 0; + token->type = SCPI_TOKEN_UNKNOWN; + } + + return token->len; +} + +/** + * Detect specified character + * @param state + * @param token + * @return + */ +int scpiLex_SpecificCharacter(lex_state_t * state, scpi_token_t * token, char chr) { + token->ptr = state->pos; + + if (skipChr(state, chr)) { + token->len = 1; + token->type = SCPI_TOKEN_SPECIFIC_CHARACTER; + } else { + token->len = 0; + token->type = SCPI_TOKEN_UNKNOWN; + } + + return token->len; +} + +/** * Detect token New line * @param state * @param token @@ -888,6 +928,3 @@ return token->len; } - - - -- Gitblit v1.9.1