#define YYSTYPE PARSER_VALUE_TYPE
-extern int lexer_input(char *buffer, size_t *nbytes, int buffersize);
+extern int lexer_input(char *buffer, unsigned int *nbytes, int buffersize);
#undef YY_INPUT
#define YY_INPUT(buffer, bytes_read, bytes_requested) \
({ \
int __ret; \
- size_t __bread = bytes_read; \
+ unsigned int __bread = bytes_read; \
__ret = lexer_input((buffer), &__bread, (bytes_requested)); \
bytes_read = __bread; \
__ret; \
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); \
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;
}
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);