X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=exp%2Fexpression-parser.y;h=d664b8edd310d3ab36c8b5880158ded0c5507c32;hb=e2c75fc49d028736eccea411fcb34b1d1b9efd36;hp=e4373d4db53d4ee2efe90367c61e0c842e36733b;hpb=3b0d05e8e48d43ee3cf3fe86fcdffb35a8813e63;p=fio.git diff --git a/exp/expression-parser.y b/exp/expression-parser.y index e4373d4d..d664b8ed 100644 --- a/exp/expression-parser.y +++ b/exp/expression-parser.y @@ -21,6 +21,7 @@ #include #include #include + struct parser_value_type { double dval; long long ival; @@ -42,6 +43,7 @@ int yyerror(__attribute__((unused)) long long *result, extern int yylex(void); extern void yyrestart(FILE *file); +extern int lexer_value_is_time; %} @@ -186,7 +188,7 @@ expression: expression '+' expression { static int lexer_read_offset = 0; static char lexer_input_buffer[1000]; -int lexer_input(char* buffer, int *bytes_read, int bytes_requested) +int lexer_input(char* buffer, unsigned int *bytes_read, int bytes_requested) { int bytes_left = strlen(lexer_input_buffer) - lexer_read_offset; @@ -213,10 +215,11 @@ static void setup_to_parse_string(const char *string) } int evaluate_arithmetic_expression(const char *buffer, long long *ival, double *dval, - double implied_units) + double implied_units, int is_time) { int rc, units_specified = 0, has_error = 0; + lexer_value_is_time = is_time; setup_to_parse_string(buffer); rc = yyparse(ival, dval, &has_error, &units_specified); yyrestart(NULL);