version 1.88, 2015/10/27 09:18:06 |
version 1.89, 2015/10/27 09:28:31 |
|
|
char *copy, *copy0, *endptr, *ptr, *saved, *trimmed, *value; |
char *copy, *copy0, *endptr, *ptr, *saved, *trimmed, *value; |
size_t valuelen; |
size_t valuelen; |
u_long limit = 0; |
u_long limit = 0; |
int modifiers = 0; |
int modifiers = 0, brackets; |
|
|
/* Make a copy of the key. */ |
/* Make a copy of the key. */ |
copy0 = copy = xmalloc(keylen + 1); |
copy0 = copy = xmalloc(keylen + 1); |
|
|
goto fail; |
goto fail; |
*ptr = '\0'; |
*ptr = '\0'; |
|
|
value = saved = format_find(ft, copy + 1, modifiers); |
value = ptr + 1; |
if (value != NULL && *value != '\0' && |
saved = format_find(ft, copy + 1, modifiers); |
(value[0] != '0' || value[1] != '\0')) { |
|
value = ptr + 1; |
brackets = 0; |
ptr = strchr(value, ','); |
for (ptr = ptr + 1; *ptr != '\0'; ptr++) { |
if (ptr == NULL) |
if (*ptr == '{') |
goto fail; |
brackets++; |
|
if (*ptr == '}') |
|
brackets--; |
|
if (*ptr == ',' && brackets == 0) |
|
break; |
|
} |
|
if (*ptr == '\0') |
|
goto fail; |
|
|
|
if (saved != NULL && *saved != '\0' && |
|
(saved[0] != '0' || saved[1] != '\0')) { |
*ptr = '\0'; |
*ptr = '\0'; |
} else { |
} else |
ptr = strchr(ptr + 1, ','); |
|
if (ptr == NULL) |
|
goto fail; |
|
value = ptr + 1; |
value = ptr + 1; |
} |
|
value = format_expand(ft, value); |
value = format_expand(ft, value); |
free(saved); |
free(saved); |
saved = value; |
saved = value; |