#include "parse_utils.h"
#include "log.h"
#include "quit.h"
+#include "prox_compat.h"
#define UINT32_MAX_STR "4294967295"
if (*pend == '\0') {
return NULL;
}
- /* only numeric characters are valid for section index
- (currently, variables not checked!) */
- if (pend[0] != '$') {
- for (len = 0; pend[len] != '\0'; ++len) {
- if (strchr(valid, pend[len]) == NULL) {
- return NULL;
- }
+
+ /* only numeric characters are valid for section index */
+ char val[MAX_CFG_STRING_LEN];
+ if (pend[0] == '$') {
+ if (parse_vars(val, sizeof(val), pend))
+ return NULL;
+ } else
+ prox_strncpy(val, pend, sizeof(val));
+
+ for (len = 0; val[len] != '\0'; ++len) {
+ if (strchr(valid, val[len]) == NULL) {
+ return NULL;
}
}
do {
ret = fgets(buffer, sizeof(buffer), pcfg->pfile);
+ /* remove comments */
+ if (*ret == ';') {
+ *ret = '\0';
+ }
+
if (ret && *ret != '[') {
size_t l = strlen(buffer);
- strncpy(lines, buffer, max_len);
+ prox_strncpy(lines, buffer, max_len);
max_len -= l;
lines += l;
}
}
while (cfg_get_line(pcfg, buffer, MAX_CFG_STRING_LEN, psec->raw_lines) > 0) {
- strncpy(pcfg->cur_line, buffer, sizeof(pcfg->cur_line));
+ prox_strncpy(pcfg->cur_line, buffer, sizeof(pcfg->cur_line));
if (*buffer == '[') {
if (index_count + 1 < psec->nbindex) {
// Need to loop - go back to recorded postion in file