*/
#define BEGIN_PARSE(line) \
{ \
+ int p = 0; \
int rc = 0; \
char *pt = line; \
while (1) { \
@param buf preallocated storage
*/
#define PARSE_INT(name, buf) \
- else if (strcmp (var, name) == 0) { \
+ else if (p++, strcmp (var, name) == 0) { \
buf = parse_int (val); \
+ rc |= 1 << p; \
}
/**
@ingroup MESSAGES
@param buf preallocated storage
*/
#define PARSE_DOUBLE(name, buf) \
- else if (strcmp (var, name) == 0) { \
+ else if (p++, strcmp (var, name) == 0) { \
buf = parse_double (val); \
+ rc |= 1 << p; \
}
/**
@param optinal parameter to use defined length
*/
#define PARSE_ARRAY(name, buf, ...) \
- else if (strcmp (var, name) == 0) { \
+ else if (p++, strcmp (var, name) == 0) { \
buf##_len = parse_array (val, buf, (__VA_ARGS__ + 0) ? buf##_len : (int)sizeof (buf)); \
+ rc |= 1 << p; \
}
/**
@param buf preallocated storage
*/
#define PARSE_TAB(name, buf) \
- else if (strcmp (var, name) == 0) { \
+ else if (p++, strcmp (var, name) == 0) { \
parse_array (val, buf, sizeof (buf)); \
+ rc |= 1 << p; \
}
/**
#define END_PARSE() \
else { \
VERBOSE (morep, WARNING, PRINTF ("can't understand '%s'\n", var)); \
- rc = 1; \
+ rc = -1; \
break; \
} \
} \