diff options
Diffstat (limited to 'src/PropSet.cxx')
-rw-r--r-- | src/PropSet.cxx | 78 |
1 files changed, 4 insertions, 74 deletions
diff --git a/src/PropSet.cxx b/src/PropSet.cxx index 48b6cc782..caa8c6b2c 100644 --- a/src/PropSet.cxx +++ b/src/PropSet.cxx @@ -36,40 +36,10 @@ inline unsigned int HashString(const char *s) { return ret; } -// Get a line of input. If end of line escaped with '\\' then continue reading. -static bool GetFullLine(const char *&fpc, int &lenData, char *s, int len) { - bool continuation = true; - s[0] = '\0'; - while ((len > 1) && lenData > 0) { - char ch = *fpc; - fpc++; - lenData--; - if ((ch == '\r') || (ch == '\n')) { - if (!continuation) { - if ((lenData > 0) && (ch == '\r') && ((*fpc) == '\n')) { - // munch the second half of a crlf - fpc++; - lenData--; - } - *s = '\0'; - return true; - } - } else if ((ch == '\\') && (lenData > 0) && ((*fpc == '\r') || (*fpc == '\n'))) { - continuation = true; - } else { - continuation = false; - *s++ = ch; - *s = '\0'; - len--; - } - } - return false; -} - PropSet::PropSet() { superPS = 0; - for (int root=0; root < hashRoots; root++) - props[root] = 0; + for (int root=0; root < hashRoots; root++) + props[root] = 0; } PropSet::~PropSet() { @@ -162,7 +132,7 @@ int PropSet::GetInt(const char *key, int defaultValue) { return defaultValue; } -inline bool isprefix(const char *target, const char *prefix) { +bool isprefix(const char *target, const char *prefix) { while (*target && *prefix) { if (*target != *prefix) return false; @@ -288,47 +258,6 @@ void PropSet::Clear() { } } -void PropSet::ReadFromMemory(const char *data, int len, const char *directoryForImports) { - const char *pd = data; - char linebuf[60000]; - bool ifIsTrue = true; - while (len > 0) { - GetFullLine(pd, len, linebuf, sizeof(linebuf)); - if (isalpha(linebuf[0])) // If clause ends with first non-indented line - ifIsTrue = true; - if (isprefix(linebuf, "if ")) { - const char *expr = linebuf + strlen("if") + 1; - ifIsTrue = GetInt(expr); - } else if (isprefix(linebuf, "import ") && directoryForImports) { - char importPath[1024]; - strcpy(importPath, directoryForImports); - strcat(importPath, linebuf + strlen("import") + 1); - strcat(importPath, ".properties"); - Read(importPath,directoryForImports); - } else if (isalpha(linebuf[0])) { - Set(linebuf); - } else if (isspace(linebuf[0]) && ifIsTrue) { - Set(linebuf); - } - } -} - -void PropSet::Read(const char *filename, const char *directoryForImports) { - char propsData[60000]; -#ifdef __vms - FILE *rcfile = fopen(filename, "r"); -#else - FILE *rcfile = fopen(filename, "rb"); -#endif - if (rcfile) { - int lenFile = fread(propsData, 1, sizeof(propsData), rcfile); - fclose(rcfile); - ReadFromMemory(propsData, lenFile, directoryForImports); - } else { - //printf("Could not open <%s>\n", filename); - } -} - static bool iswordsep(char ch, bool onlyLineEnds) { if (!isspace(ch)) return false; @@ -744,3 +673,4 @@ char *WordList::GetNearestWords(const char *wordStart, int searchLen /*= -1*/, b free(buffer); return NULL; } + |