summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
424fa8d)
AC_PREREQ(2.57)
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
#AC_WITH_LTDL # not needed ?
AC_PREREQ(2.57)
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
#AC_WITH_LTDL # not needed ?
-AM_INIT_AUTOMAKE(LinuxTraceToolkitViewer,0.8.21-22022006)
+AM_INIT_AUTOMAKE(LinuxTraceToolkitViewer,0.8.22-27022006)
AM_CONFIG_HEADER(config.h)
AM_PROG_LIBTOOL
AM_CONFIG_HEADER(config.h)
AM_PROG_LIBTOOL
unsigned long long int getSize(parse_file_t *in)
{
char *token;
unsigned long long int getSize(parse_file_t *in)
{
char *token;
+ int has_quotes = 0;
+ unsigned long long int ret;
+ if(token[0] == '"') {
+ has_quotes = 1;
+ token = getToken(in);
+ }
- return strtoull(token, NULL, 0);
- }
+ ret = strtoull(token, NULL, 0);
+ } else {
+ goto error;
+ }
+ if(has_quotes) {
+ token = getToken(in);
+ if(token[0] != '"') goto error;
+ }
+
+ return ret;
+error:
in->error(in,"incorrect size specification");
return -1;
}
in->error(in,"incorrect size specification");
return -1;
}
//for <label name=label_name value=n format="..."/>, value is an option
//for <label name=label_name value=n format="..."/>, value is an option
-char * getValueStrAttribute(parse_file_t *in)
+//Return value : 0 : no value, 1 : has a value
+int getValueAttribute(parse_file_t *in, long long *value)
token = getToken(in);
if(strcmp("/",token) == 0){
ungetToken(in);
token = getToken(in);
if(strcmp("/",token) == 0){
ungetToken(in);
}
if(strcmp("value",token))in->error(in,"value was expected");
getEqual(in);
token = getToken(in);
}
if(strcmp("value",token))in->error(in,"value was expected");
getEqual(in);
token = getToken(in);
- if(in->type != NUMBER) in->error(in,"number was expected");
- return token;
+
+ if(token[0] == '"') {
+ has_quotes = 1;
+ token = getToken(in);
+ }
+ if(in->type == NUMBER) {
+ *value = strtoll(token, NULL, 0);
+ } else {
+ goto error;
+ }
+ if(has_quotes) {
+ token = getToken(in);
+ if(token[0] != '"') goto error;
+ }
+ return 1;
+
+error:
+ in->error(in,"incorrect size specification");
+ return 0;
}
char * getDescription(parse_file_t *in)
}
char * getDescription(parse_file_t *in)
}
else if(strcmp(token,"enum") == 0) {
char * str;
}
else if(strcmp(token,"enum") == 0) {
char * str;
t->type = ENUM;
sequence_init(&(t->labels));
t->type = ENUM;
sequence_init(&(t->labels));
token = getToken(in); //"label" or "/"
while(strcmp("label",token) == 0){
int *label_value = malloc(sizeof(int));
token = getToken(in); //"label" or "/"
while(strcmp("label",token) == 0){
int *label_value = malloc(sizeof(int));
+ int has_value = 0;
+ long long loc_value;
str = allocAndCopy(getNameAttribute(in));
str = allocAndCopy(getNameAttribute(in));
- token = getValueStrAttribute(in);
+ has_value = getValueAttribute(in, &loc_value);
sequence_push(&(t->labels),str);
sequence_push(&(t->labels),str);
- if(token) value = strtol(token, NULL, 0);
+ if(has_value) value = loc_value;
else value++;
*label_value = value;
else value++;
*label_value = value;
char * getNameAttribute(parse_file_t *in);
char * getFormatAttribute(parse_file_t *in);
int getSizeAttribute(parse_file_t *in);
char * getNameAttribute(parse_file_t *in);
char * getFormatAttribute(parse_file_t *in);
int getSizeAttribute(parse_file_t *in);
-int getValueAttribute(parse_file_t *in);
-char * getValueStrAttribute(parse_file_t *in);
+int getValueAttribute(parse_file_t *in, long long *value);
char * getDescription(parse_file_t *in);
char * getDescription(parse_file_t *in);