diff options
author | Michael Meeks <mmeeks@src.gnome.org> | 1999-08-19 17:57:59 (GMT) |
---|---|---|
committer | Michael Meeks <mmeeks@src.gnome.org> | 1999-08-19 17:57:59 (GMT) |
commit | bf3b381529f5388bd1bda8ed8fafb247a7b8a9fc (patch) | |
tree | 23e95c805c1d878ba0bf90c68765aba383848139 /pdf/xpdf/Stream.cc | |
parent | 1a49446c08faaab930d3a36bc002b566eadb1ebc (diff) |
Totaly re-hash stream architecture ... again :-)
Now we can compile but not run auxiliary utils.
Diffstat (limited to 'pdf/xpdf/Stream.cc')
-rw-r--r-- | pdf/xpdf/Stream.cc | 117 |
1 files changed, 78 insertions, 39 deletions
diff --git a/pdf/xpdf/Stream.cc b/pdf/xpdf/Stream.cc index 6e52d79..c15d517 100644 --- a/pdf/xpdf/Stream.cc +++ b/pdf/xpdf/Stream.cc @@ -511,8 +511,76 @@ GBool StreamPredictor::getNextLine() { // FileStream //------------------------------------------------------------------------ -FileStream::FileStream(BaseFile f1, int start1, int length1, Object *dict1) { +GBool FileStream::checkHeader() { + char hdrBuf[headerSearchSize+1]; + char *p; + double version; + int i; + + for (i = 0; i < headerSearchSize; ++i) + hdrBuf[i] = getChar(); + hdrBuf[headerSearchSize] = '\0'; + for (i = 0; i < headerSearchSize - 5; ++i) { + if (!strncmp(&hdrBuf[i], "%PDF-", 5)) + break; + } + if (i >= headerSearchSize - 5) { + error(-1, "May not be a PDF file (continuing anyway)"); + return gFalse; + } + start += i; + p = strtok(&hdrBuf[i+5], " \t\n\r"); + version = atof(p); + if (!(hdrBuf[i+5] >= '0' && hdrBuf[i+5] <= '9') || + version > pdfVersionNum + 0.0001) { + error(getPos(), "PDF version %s -- xpdf supports version %s" + " (continuing anyway)", p, pdfVersion); + return gFalse; + } + return gTrue; +} + +FILE *fileOpen (GString *fileName1) { + GString *fileName2; + // try to open file + fileName2 = NULL; + FILE *file; + +#ifdef VMS + if (!(file = fopen(fileName->getCString(), "rb", "ctx=stm"))) { + error(-1, "Couldn't open file '%s'", fileName->getCString()); + return NULL; + } +#else + if (!(file = fopen(fileName1->getCString(), "rb"))) { + fileName2 = fileName1->copy(); + fileName2->lowerCase(); + if (!(file = fopen(fileName2->getCString(), "rb"))) { + fileName2->upperCase(); + if (!(file = fopen(fileName2->getCString(), "rb"))) { + error(-1, "Couldn't open file '%s'", fileName1->getCString()); + delete fileName2; + return NULL; + } + } + delete fileName2; + } +#endif + return file; +} + +FileStream::FileStream(FILE *f1) { f = f1; + start = 0; + length = -1; + bufPtr = bufEnd = buf; + bufPos = start; + savePos = -1; + dict.initNull(); + checkHeader(); +} + +Stream *FileStream::subStream (int start1, int length1, Object *dict1) { start = start1; length = length1; bufPtr = bufEnd = buf; @@ -523,13 +591,13 @@ FileStream::FileStream(BaseFile f1, int start1, int length1, Object *dict1) { FileStream::~FileStream() { if (savePos >= 0) - bfseek(f, savePos, SEEK_SET); + fseek(f, savePos, SEEK_SET); dict.free(); } void FileStream::reset() { - savePos = (int)bftell(f); - bfseek(f, start, SEEK_SET); + savePos = (int)ftell(f); + fseek(f, start, SEEK_SET); bufPtr = bufEnd = buf; bufPos = start; } @@ -545,7 +613,7 @@ GBool FileStream::fillBuf() { n = start + length - bufPos; else n = 256; - n = bfread(buf, 1, n, f); + n = fread(buf, 1, n, f); bufEnd = buf + n; if (bufPtr >= bufEnd) return gFalse; @@ -556,48 +624,19 @@ void FileStream::setPos(int pos1) { long size; if (pos1 >= 0) { - bfseek(f, pos1, SEEK_SET); + fseek(f, pos1, SEEK_SET); bufPos = pos1; } else { - bfseek(f, 0, SEEK_END); - size = bftell(f); + fseek(f, 0, SEEK_END); + size = ftell(f); if (pos1 < -size) pos1 = (int)(-size); - bfseek(f, pos1, SEEK_END); - bufPos = (int)bftell(f); + fseek(f, pos1, SEEK_END); + bufPos = (int)ftell(f); } bufPtr = bufEnd = buf; } -GBool FileStream::checkHeader() { - char hdrBuf[headerSearchSize+1]; - char *p; - double version; - int i; - - for (i = 0; i < headerSearchSize; ++i) - hdrBuf[i] = getChar(); - hdrBuf[headerSearchSize] = '\0'; - for (i = 0; i < headerSearchSize - 5; ++i) { - if (!strncmp(&hdrBuf[i], "%PDF-", 5)) - break; - } - if (i >= headerSearchSize - 5) { - error(-1, "May not be a PDF file (continuing anyway)"); - return gFalse; - } - start += i; - p = strtok(&hdrBuf[i+5], " \t\n\r"); - version = atof(p); - if (!(hdrBuf[i+5] >= '0' && hdrBuf[i+5] <= '9') || - version > pdfVersionNum + 0.0001) { - error(getPos(), "PDF version %s -- xpdf supports version %s" - " (continuing anyway)", p, pdfVersion); - return gFalse; - } - return gTrue; -} - //------------------------------------------------------------------------ // SubStream //------------------------------------------------------------------------ |