projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
smalloc: fix garbage collection problem
[fio.git]
/
exp
/
expression-parser.y
diff --git
a/exp/expression-parser.y
b/exp/expression-parser.y
index e4373d4db53d4ee2efe90367c61e0c842e36733b..8619025c692c3c914f681e705677e99cadd69ed6 100644
(file)
--- a/
exp/expression-parser.y
+++ b/
exp/expression-parser.y
@@
-14,13
+14,14
@@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 5
9 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Foundation, Inc., 5
1 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#include <stdio.h>
#include <string.h>
#include <math.h>
*
*/
#include <stdio.h>
#include <string.h>
#include <math.h>
+
struct parser_value_type {
double dval;
long long ival;
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 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];
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;
{
int bytes_left = strlen(lexer_input_buffer) - lexer_read_offset;
@@
-202,9
+204,9
@@
static void setup_to_parse_string(const char *string)
{
unsigned int len;
{
unsigned int len;
- len = s
trlen(string)
;
- if (len > s
izeof(lexer_input_buffer) - 3
)
- len = s
izeof(lexer_input_buffer) - 3
;
+ len = s
izeof(lexer_input_buffer) - 3
;
+ if (len > s
trlen(string)
)
+ len = s
trlen(string)
;
strncpy(lexer_input_buffer, string, len);
lexer_input_buffer[len] = '\0';
strncpy(lexer_input_buffer, string, len);
lexer_input_buffer[len] = '\0';
@@
-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,
}
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;
{
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);
setup_to_parse_string(buffer);
rc = yyparse(ival, dval, &has_error, &units_specified);
yyrestart(NULL);