for x in line.strip(' ,').split(', '):
if ' ' in x:
val, var = x.split(' ', 1)
+ if val == 'no':
+ val = False
+ elif val.endswith('-bit'):
+ var = var[:-1] + '_bits'
+ val = int(val.split('-')[0])
if var == 'protect-args':
var = 'secluded-args'
- var = var.replace(' ', '_').replace('-', '_')
- info[sect_name][var] = False if val == 'no' else val
else:
- x = x.replace('-', '_')
- info[sect_name][x] = True
+ var = x
+ val = True
+ var = var.replace(' ', '_').replace('-', '_')
+ info[sect_name][var] = val
else:
info[sect_name] += [ x for x in line.split() if not x.startswith('(') ]
elif line == '':
else if (as_json) {
char *space = strchr(str, ' ');
int is_no = space && strncmp(str, "no ", 3) == 0;
- char *quot = space && !is_no ? "\"" : "";
+ int is_bits = space && isDigit(str);
+ char *quot = space && !is_no && !is_bits ? "\"" : "";
char *item = space ? space + 1 : str;
char *val = !space ? "true" : is_no ? "false" : str;
int val_len = !space ? 4 : is_no ? 5 : space - str;
+ if (is_bits && (space = strchr(val, '-')) != NULL)
+ val_len = space - str;
item_len = snprintf(item_buf, sizeof item_buf,
- " \"%s\": %s%.*s%s%s", item, quot, val_len, val, quot,
- need_comma ? "," : "");
+ " \"%s%s\": %s%.*s%s%s", item, is_bits ? "bits" : "",
+ quot, val_len, val, quot, need_comma ? "," : "");
+ if (is_bits)
+ item_buf[strlen(item)+2-1] = '_'; /* Turn the 's' into a '_' */
for (space = item; (space = strpbrk(space, " -")) != NULL; space++)
item_buf[space - item + 2] = '_';
} else