X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=exp%2Fexpression-parser.l;h=50bd38320bbaedc2eec487d0e8d09b95d95faa7b;hp=856596acfa21aee603f0dc81fba70b7ca5ee03af;hb=88038bc7193e648cef39061e0b8d6ef8203a1e63;hpb=77b451cc30ab109050235e80b4988ab3abbe6d13 diff --git a/exp/expression-parser.l b/exp/expression-parser.l index 856596ac..50bd3832 100644 --- a/exp/expression-parser.l +++ b/exp/expression-parser.l @@ -42,6 +42,9 @@ extern int yyerror(long long *result, double *dresult, static void __attribute__((unused)) yyunput(int c, char *buf_ptr); static int __attribute__((unused)) input(void); +/* set by parser -- this is another thing which makes the parser thread-unsafe :(. */ +int lexer_value_is_time = 0; /* for determining if "m" suffix means mega- or minutes */ + #define set_suffix_value(yylval, i_val, d_val, has_d_val) \ (yylval).v.dval = (d_val); \ (yylval).v.ival = (i_val); \ @@ -57,7 +60,7 @@ static int __attribute__((unused)) input(void); set_suffix_value(yylval, 1024, 1024.0, 0); return SUFFIX; } -[Mm]|[Mm][bB] { +[Mm][bB] { set_suffix_value(yylval, 1024 * 1024, 1024.0 * 1024.0, 0); return SUFFIX; } @@ -103,6 +106,14 @@ static int __attribute__((unused)) input(void); set_suffix_value(yylval, 1000000LL, 1000000.0 , 0); return SUFFIX; } +[mM] { + if (!lexer_value_is_time) { + set_suffix_value(yylval, 1024 * 1024, 1024.0 * 1024.0, 0); + } else { + set_suffix_value(yylval, 60LL * 1000000LL, 60.0 * 1000000.0, 0); + } + return SUFFIX; + } [dD] { set_suffix_value(yylval, 60LL * 60LL * 24LL * 1000000LL, 60.0 * 60.0 * 24.0 * 1000000.0, 0);