mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-21 23:09:40 +00:00
gzstream is able to read uncompressed files too
This allows to simplify the code in Lexer and to remove the dependency on Formats class. As a consequence, a pair of dummy definitions of isZippedFile can be removed.
This commit is contained in:
parent
2311f42f41
commit
4dec64dba4
@ -14,7 +14,6 @@
|
||||
#include <config.h>
|
||||
|
||||
#include "Lexer.h"
|
||||
#include "Format.h"
|
||||
|
||||
#include "support/convert.h"
|
||||
#include "support/debug.h"
|
||||
@ -81,9 +80,6 @@ public:
|
||||
bool inputAvailable();
|
||||
///
|
||||
void pushToken(string const &);
|
||||
/// fb_ is only used to open files, the stream is accessed through is.
|
||||
filebuf fb_;
|
||||
|
||||
/// gz_ is only used to open files, the stream is accessed through is.
|
||||
gz::gzstreambuf gz_;
|
||||
|
||||
@ -149,7 +145,7 @@ bool compareTags(LexerKeyword const & a, LexerKeyword const & b)
|
||||
|
||||
|
||||
Lexer::Pimpl::Pimpl(LexerKeyword * tab, int num)
|
||||
: is(&fb_), table(tab), no_items(num),
|
||||
: is(&gz_), table(tab), no_items(num),
|
||||
status(0), lineno(0), commentChar('#')
|
||||
{
|
||||
verifyTable();
|
||||
@ -235,38 +231,14 @@ void Lexer::Pimpl::popTable()
|
||||
|
||||
bool Lexer::Pimpl::setFile(FileName const & filename)
|
||||
{
|
||||
// Check the format of the file.
|
||||
if (theFormats().isZippedFile(filename)) {
|
||||
LYXERR(Debug::LYXLEX, "lyxlex: compressed");
|
||||
// The check only outputs a debug message, because it triggers
|
||||
// a bug in compaq cxx 6.2, where is_open() returns 'true' for
|
||||
// a fresh new filebuf. (JMarc)
|
||||
if (gz_.is_open() || istream::off_type(is.tellg()) > -1)
|
||||
LYXERR(Debug::LYXLEX, "Error in LyXLex::setFile: "
|
||||
"file or stream already set.");
|
||||
LYXERR0("Error in LyXLex::setFile: file or stream already set.");
|
||||
gz_.open(filename.toFilesystemEncoding().c_str(), ios::in);
|
||||
is.rdbuf(&gz_);
|
||||
name = filename.absFileName();
|
||||
lineno = 0;
|
||||
if (!gz_.is_open() || !is.good())
|
||||
return false;
|
||||
} else {
|
||||
LYXERR(Debug::LYXLEX, "lyxlex: UNcompressed");
|
||||
|
||||
// The check only outputs a debug message, because it triggers
|
||||
// a bug in compaq cxx 6.2, where is_open() returns 'true' for
|
||||
// a fresh new filebuf. (JMarc)
|
||||
if (fb_.is_open() || istream::off_type(is.tellg()) > 0) {
|
||||
LYXERR(Debug::LYXLEX, "Error in Lexer::setFile: "
|
||||
"file or stream already set.");
|
||||
}
|
||||
fb_.open(filename.toSafeFilesystemEncoding().c_str(), ios::in);
|
||||
is.rdbuf(&fb_);
|
||||
name = filename.absFileName();
|
||||
lineno = 0;
|
||||
if (!fb_.is_open() || !is.good())
|
||||
return false;
|
||||
}
|
||||
|
||||
// Skip byte order mark.
|
||||
if (is.peek() == 0xef) {
|
||||
@ -284,10 +256,8 @@ bool Lexer::Pimpl::setFile(FileName const & filename)
|
||||
|
||||
void Lexer::Pimpl::setStream(istream & i)
|
||||
{
|
||||
if (fb_.is_open() || istream::off_type(is.tellg()) > 0) {
|
||||
LYXERR(Debug::LYXLEX, "Error in Lexer::setStream: "
|
||||
"file or stream already set.");
|
||||
}
|
||||
if (gz_.is_open() || istream::off_type(is.tellg()) > 0)
|
||||
LYXERR0("Error in Lexer::setStream: file or stream already set.");
|
||||
is.rdbuf(i.rdbuf());
|
||||
lineno = 0;
|
||||
}
|
||||
|
@ -3,7 +3,6 @@
|
||||
#include "../support/debug.h"
|
||||
#include "../support/FileName.h"
|
||||
#include "../support/filetools.h"
|
||||
#include "../Format.h"
|
||||
#include "../LayoutFile.h"
|
||||
#include "../LaTeXFeatures.h"
|
||||
#include "../Lexer.h"
|
||||
@ -34,11 +33,6 @@ bool LaTeXFeatures::isAvailable(std::string const &)
|
||||
return false;
|
||||
}
|
||||
|
||||
Formats formats;
|
||||
bool Formats::isZippedFile(support::FileName const &) const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
} // namespace lyx
|
||||
|
||||
|
||||
|
@ -18,7 +18,6 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "Format.h"
|
||||
#include "LaTeXFeatures.h"
|
||||
#include "LyXRC.h"
|
||||
#include "output_xhtml.h"
|
||||
@ -73,23 +72,6 @@ Messages const & getGuiMessages()
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Dummy formats support (needed by Lexer)
|
||||
//
|
||||
|
||||
|
||||
Formats & theFormats()
|
||||
{
|
||||
static Formats dummy_formats;
|
||||
return dummy_formats;
|
||||
}
|
||||
|
||||
bool Formats::isZippedFile(support::FileName const&) const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Dummy features support (needed by ModuleList)
|
||||
//
|
||||
|
Loading…
x
Reference in New Issue
Block a user