Esempio n. 1
0
// 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);
}
Esempio n. 2
0
// 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);
}
Esempio n. 3
0
int handlePossibleConfigVar(int* argc, char* argv[], int argnum, 
                            int32_t lineno, chpl_string filename) {
  int retval = 0;
  int arglen = strlen(argv[argnum]+2)+1;
  char* argCopy = chpl_mem_allocMany(arglen, sizeof(char),
                                     CHPL_RT_MD_CONFIG_ARG_COPY_DATA, argnum,
                                     "<command-line>");
  char* equalsSign;
  const char* moduleName;
  char* varName;
  configVarType* configVar;

  strcpy(argCopy, argv[argnum]+2);
  configVar = breakIntoPiecesAndLookup(argCopy, &equalsSign, &moduleName,
                                       &varName, lineno, filename);
  if (configVar == NULL) {
    if (argv[argnum][1] == '-') { // this is a -- argument
      retval = handleNonstandardArg(argc, argv, argnum, lineno, filename);
    } else {                      // this is a -s argument
      handleUnexpectedConfigVar(moduleName, varName, lineno, filename);
    }
  } else {
    char* value = equalsSign + 1;
    checkDeprecatedConfig(varName, equalsSign ? value : equalsSign);
    if (equalsSign && *value) {
      initSetValue(varName, value, moduleName, lineno, filename);
    } else if (!strcmp(configVar->defaultValue, "bool")) {
      initSetValue(varName, "true", moduleName, lineno, filename);
    } else {
      if (argnum + 1 >= *argc) {
        char* message = chpl_glom_strings(3, "Configuration variable '", varName, 
                                          "' is missing its initialization value");
        chpl_error(message, lineno, filename);
      } else {
        initSetValue(varName, argv[argnum+1], moduleName, lineno, filename);
        retval = 1;
      }
    }
  }

  chpl_mem_free(argCopy, argnum, "<command-line>");
  return retval;
}