aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/parser.cpp
diff options
context:
space:
mode:
authorNicola Mettifogo2007-04-03 22:03:21 +0000
committerNicola Mettifogo2007-04-03 22:03:21 +0000
commite3c25e6d203d22405ed406cd063b28a1aae11074 (patch)
tree09965b9a5e25f3b00ff0a5838a3ab937c3809496 /engines/parallaction/parser.cpp
parent4c151928fa4cbf61f02c424fe98f7473e96e4d39 (diff)
downloadscummvm-rg350-e3c25e6d203d22405ed406cd063b28a1aae11074.tar.gz
scummvm-rg350-e3c25e6d203d22405ed406cd063b28a1aae11074.tar.bz2
scummvm-rg350-e3c25e6d203d22405ed406cd063b28a1aae11074.zip
- added a new archive member variable to Disk, to decouple resource archives from location archives
- made Script use a stream as input with overall simplification of Disk routines svn-id: r26379
Diffstat (limited to 'engines/parallaction/parser.cpp')
-rw-r--r--engines/parallaction/parser.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/engines/parallaction/parser.cpp b/engines/parallaction/parser.cpp
index ee420b2e5f..45b19544a3 100644
--- a/engines/parallaction/parser.cpp
+++ b/engines/parallaction/parser.cpp
@@ -29,13 +29,12 @@ namespace Parallaction {
char _tokens[20][40];
-Script::Script(const char* s, bool disposeSource) : _src(s), _disposeSource(disposeSource) {
- _pos = const_cast<char*>(_src);
+Script::Script(Common::SeekableReadStream *input, bool disposeSource) : _input(input), _disposeSource(disposeSource) {
}
Script::~Script() {
if (_disposeSource)
- free(const_cast<char*>(_src));
+ delete _input;
}
char *Script::readLine(char *buf, size_t bufSize) {
@@ -44,12 +43,13 @@ char *Script::readLine(char *buf, size_t bufSize) {
char v2 = 0;
for ( _si = 0; _si<bufSize; _si++) {
- v2 = *_pos++;
- if (v2 == 0xA || v2 == -1) break;
- if (v2 != -1 && _si < bufSize) buf[_si] = v2;
+ v2 = _input->readSByte();
+
+ if (v2 == 0xA || _input->eos()) break;
+ if (!_input->eos() && _si < bufSize) buf[_si] = v2;
}
- if (_si == 0 && v2 == -1)
+ if (_si == 0 && _input->eos())
return 0;
buf[_si] = 0xA;