/* * Parse the configuration file 'fcfg' into the array of configuration * elements 'image_cfg', and return the number of configuration * elements in 'cfgn'. */ static int image_create_config_parse(const char *input, struct image_cfg_element *image_cfg, int *cfgn) { int ret; int cfgi = 0; FILE *fcfg; char *configpath = dirname(strdup(input)); fcfg = fopen(input, "r"); if (!fcfg) { fprintf(stderr, "Could not open input file %s\n", input); free(configpath); return -1; } /* Parse the configuration file */ while (!feof(fcfg)) { char *line; char buf[256]; /* Read the current line */ memset(buf, 0, sizeof(buf)); line = fgets(buf, sizeof(buf), fcfg); if (!line) break; /* Ignore useless lines */ if (line[0] == '\n' || line[0] == '#') continue; /* Strip final newline */ if (line[strlen(line) - 1] == '\n') line[strlen(line) - 1] = 0; /* Parse the current line */ ret = image_create_config_parse_oneline(line, &image_cfg[cfgi], configpath); if (ret) goto out; cfgi++; if (cfgi >= IMAGE_CFG_ELEMENT_MAX) { fprintf(stderr, "Too many configuration elements in .cfg file\n"); ret = -1; goto out; } } ret = 0; *cfgn = cfgi; out: fclose(fcfg); free(configpath); return ret; }
/* * Parse the configuration file 'fcfg' into the array of configuration * elements 'image_cfg', and return the number of configuration * elements in 'cfgn'. */ static int image_create_config_parse(FILE *fcfg, struct image_cfg_element *image_cfg, int *cfgn) { int ret; int cfgi = 0; /* Parse the configuration file */ while (!feof(fcfg)) { char *line; char buf[256]; /* Read the current line */ memset(buf, 0, sizeof(buf)); line = fgets(buf, sizeof(buf), fcfg); if (!line) break; /* Ignore useless lines */ if (line[0] == '\n' || line[0] == '#') continue; /* Strip final newline */ if (line[strlen(line) - 1] == '\n') line[strlen(line) - 1] = 0; /* Parse the current line */ ret = image_create_config_parse_oneline(line, &image_cfg[cfgi]); if (ret) return ret; cfgi++; if (cfgi >= IMAGE_CFG_ELEMENT_MAX) { fprintf(stderr, "Too many configuration elements in .cfg file\n"); return -1; } } *cfgn = cfgi; return 0; }