X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLexer.cpp;h=06a3408f41e9591d77afabfbb3074d2f3b18d9de;hb=4e69b9bac5e970572b9cf9169e3db9060c47e3b6;hp=e99875b28660286882eea04638e53b0848df2b3a;hpb=e31e71a7a9d978778b9c1f39b71a2491c1e31498;p=lyx.git diff --git a/src/Lexer.cpp b/src/Lexer.cpp index e99875b286..06a3408f41 100644 --- a/src/Lexer.cpp +++ b/src/Lexer.cpp @@ -14,6 +14,7 @@ #include #include "Lexer.h" +#include "Format.h" #include "support/convert.h" #include "support/debug.h" @@ -237,10 +238,14 @@ void Lexer::Pimpl::popTable() bool Lexer::Pimpl::setFile(FileName const & filename) { +#ifdef TEX2LYX + // tex2lyx does not read lyxrc and therefore can't really check for + // zipped formats. + if (false) { +#else // Check the format of the file. - string const format = filename.guessFormatFromContents(); - - if (format == "gzip" || format == "zip" || format == "compress") { + if (formats.isZippedFile(filename)) { +#endif 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 @@ -250,7 +255,7 @@ bool Lexer::Pimpl::setFile(FileName const & filename) "file or stream already set."); gz_.open(filename.toFilesystemEncoding().c_str(), ios::in); is.rdbuf(&gz_); - name = filename.absFilename(); + name = filename.absFileName(); lineno = 0; if (!gz_.is_open() || !is.good()) return false; @@ -264,9 +269,9 @@ bool Lexer::Pimpl::setFile(FileName const & filename) LYXERR(Debug::LYXLEX, "Error in Lexer::setFile: " "file or stream already set."); } - fb_.open(filename.toFilesystemEncoding().c_str(), ios::in); + fb_.open(filename.toSafeFilesystemEncoding().c_str(), ios::in); is.rdbuf(&fb_); - name = filename.absFilename(); + name = filename.absFileName(); lineno = 0; if (!fb_.is_open() || !is.good()) return false; @@ -274,9 +279,9 @@ bool Lexer::Pimpl::setFile(FileName const & filename) // Skip byte order mark. if (is.peek() == 0xef) { - int c = is.get(); + is.get(); if (is.peek() == 0xbb) { - c = is.get(); + is.get(); LASSERT(is.get() == 0xbf, /**/); } else is.unget(); @@ -473,7 +478,7 @@ bool Lexer::Pimpl::eatLine() is.get(cc); c = cc; //LYXERR(Debug::LYXLEX, "Lexer::EatLine read char: `" << c << '\''); - if (c != '\r') + if (c != '\r' && is) buff.push_back(c); }