// TODO: Change all the 0 linenos below into real line numbers void parseConfigFile(const char* configFilename, int32_t lineno, int32_t filename) { FILE* argFile = fopen(configFilename, "r"); if (!argFile) { char* message = chpl_glom_strings(2, "Unable to open ", configFilename); chpl_error(message, lineno, filename); } chpl_saveFilename(configFilename); // CHPL_FILE_IDX_SAVED_FILENAME will now // give us configFilename while (!feof(argFile)) { int numScans = 0; char setConfigBuffer[_default_string_length]; numScans = fscanf(argFile, _default_format_read_string, setConfigBuffer); if (numScans == 1) { if (*setConfigBuffer == '#') { if (!feof(argFile)) { do { char ch = fgetc(argFile); if (ch == '\n') break; } while (!feof(argFile)); } } else if (!aParsedString(argFile, setConfigBuffer, 0, CHPL_FILE_IDX_SAVED_FILENAME)) { char* equalsSign; const char* moduleName; char* varName; configVarType *configVar = breakIntoPiecesAndLookup(setConfigBuffer, &equalsSign, &moduleName, &varName, 0, CHPL_FILE_IDX_SAVED_FILENAME); if (configVar == NULL) { handleUnexpectedConfigVar(moduleName, varName, 0, CHPL_FILE_IDX_SAVED_FILENAME); } else { char* value = equalsSign + 1; if (equalsSign && *value) { initSetValue(varName, value, moduleName, 0, CHPL_FILE_IDX_SAVED_FILENAME); } else { char configValBuffer[_default_string_length]; numScans = fscanf(argFile, _default_format_read_string, configValBuffer); if (numScans != 1) { char *message = chpl_glom_strings(3, "Configuration variable '", varName, "' is missing its initialization value"); chpl_error(message, 0, CHPL_FILE_IDX_SAVED_FILENAME); } else { initSetValue(varName, configValBuffer, moduleName, 0, CHPL_FILE_IDX_SAVED_FILENAME); } } } } } } fclose(argFile); }
// TODO: Change all the 0 linenos below into real line numbers void parseConfigFile(const char* configFilename, int32_t lineno, chpl_string filename) { FILE* argFile = fopen(configFilename, "r"); if (!argFile) { char* message = chpl_glom_strings(2, "Unable to open ", configFilename); chpl_error(message, lineno, filename); } while (!feof(argFile)) { int numScans = 0; char setConfigBuffer[_default_string_length]; numScans = fscanf(argFile, _default_format_read_string, setConfigBuffer); if (numScans == 1) { if (!aParsedString(argFile, setConfigBuffer, 0, configFilename)) { char* equalsSign; const char* moduleName; char* varName; configVarType* configVar = breakIntoPiecesAndLookup(setConfigBuffer, &equalsSign, &moduleName, &varName, 0, configFilename); if (configVar == NULL) { handleUnexpectedConfigVar(moduleName, varName, 0, configFilename); } else { char* value = equalsSign + 1; checkDeprecatedConfig(varName, equalsSign ? value : equalsSign); if (equalsSign && *value) { initSetValue(varName, value, moduleName, 0, configFilename); } else { char configValBuffer[_default_string_length]; numScans = fscanf(argFile, _default_format_read_string, configValBuffer); if (numScans != 1) { char* message = chpl_glom_strings(3, "Configuration variable '", varName, "' is missing its initialization value"); chpl_error(message, 0, configFilename); } else { initSetValue(varName, configValBuffer, moduleName, 0, configFilename); } } } } } } fclose(argFile); }