diff options
author | Willem Jan Palenstijn | 2011-12-26 21:56:40 +0100 |
---|---|---|
committer | Willem Jan Palenstijn | 2011-12-26 21:58:17 +0100 |
commit | 2cd0b29de182be4f01caddaa4e66582ab780bcd4 (patch) | |
tree | 92c49c84149e9522946497f291745e237a47a567 /engines/dreamweb/monitor.cpp | |
parent | 2ec65882e885730e05b074063ce71caaba7cd2fc (diff) | |
download | scummvm-rg350-2cd0b29de182be4f01caddaa4e66582ab780bcd4.tar.gz scummvm-rg350-2cd0b29de182be4f01caddaa4e66582ab780bcd4.tar.bz2 scummvm-rg350-2cd0b29de182be4f01caddaa4e66582ab780bcd4.zip |
DREAMWEB: Convert searchForString
Diffstat (limited to 'engines/dreamweb/monitor.cpp')
-rw-r--r-- | engines/dreamweb/monitor.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/engines/dreamweb/monitor.cpp b/engines/dreamweb/monitor.cpp index db3401e078..f1b870d9c0 100644 --- a/engines/dreamweb/monitor.cpp +++ b/engines/dreamweb/monitor.cpp @@ -662,5 +662,45 @@ const char *DreamBase::parser() { return output; } +void DreamGenContext::searchForString() { + const char *topic = (const char*)es.ptr(di, 0); + const char *text = (const char*)ds.ptr(si, 0); + const char *found = searchForString(topic, text); + if (!found) { + al = 1; + } else { + es = ds; + bx = si + (found - text); + si = bx; + al = 0; + } +} + +// input: es:di : topic +// ds:si : monitor text +const char *DreamBase::searchForString(const char *topic, const char *text) { + char delim = *topic; + + while (true) { + const char *s = topic; + int delimCount = 0; + + char c; + do { + c = makeCaps(*text++); + + if (c == '*' || (delim == '=' && c == 34)) + return 0; + + if (c == delim) { + delimCount++; + if (delimCount == 2) + return text; + } + + } while (c == *s++); + } +} + } // End of namespace DreamGen |