X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxlex_pimpl.C;h=0f7d57a6732214403adde4e8e669cae6e7626c9b;hb=f268743f8c014ef2dadd260fd1a3873cb1d2038b;hp=2962302d062b789ef82297bf0839133851f5d577;hpb=92d522b7f1be6046adcac062c558bbf0bf021612;p=lyx.git diff --git a/src/lyxlex_pimpl.C b/src/lyxlex_pimpl.C index 2962302d06..0f7d57a673 100644 --- a/src/lyxlex_pimpl.C +++ b/src/lyxlex_pimpl.C @@ -1,3 +1,15 @@ +/** + * \file lyxlex_pimpl.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author Lars Gullik Bjønnes + * \author Jean-Marc Lasgouttes + * \author Jürgen Vigna + * + * Full author contact details are available in file CREDITS. + */ + #include #include "lyxlex_pimpl.h" @@ -58,7 +70,7 @@ void LyXLex::Pimpl::printError(string const & message) const void LyXLex::Pimpl::printTable(ostream & os) { - os << "\nNumber of tags: " << no_items << '\n'; + os << "\nNumber of tags: " << no_items << endl; for (int i= 0; i < no_items; ++i) os << "table[" << i << "]: tag: `" << table[i].tag @@ -75,11 +87,11 @@ void LyXLex::Pimpl::verifyTable() lyxerr << "The table passed to LyXLex is not sorted!\n" << "Tell the developers to fix it!" << endl; // We sort it anyway to avoid problems. - lyxerr << "\nUnsorted:\n"; + lyxerr << "\nUnsorted:" << endl; printTable(lyxerr); sort(table, table + no_items, compare_tags()); - lyxerr << "\nSorted:\n"; + lyxerr << "\nSorted:" << endl; printTable(lyxerr); } } @@ -113,17 +125,39 @@ void LyXLex::Pimpl::popTable() bool LyXLex::Pimpl::setFile(string const & filename) { - // 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() || is.tellg() > 0) - lyxerr[Debug::LYXLEX] << "Error in LyXLex::setFile: " - "file or stream already set." << endl; - fb__.open(filename.c_str(), ios::in); - is.rdbuf(&fb__); - name = filename; - lineno = 0; - return fb__.is_open() && is.good(); + + // Check the format of the file. + string const format = getExtFromContents(filename); + + if (format == "gzip" || format == "zip" || format == "compress") { + lyxerr << "lyxlex: compressed" << endl; + + // 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() || is.tellg() > 0) + lyxerr[Debug::LYXLEX] << "Error in LyXLex::setFile: " + "file or stream already set." << endl; + gz__.open(filename.c_str(), ios::in); + is.rdbuf(&gz__); + name = filename; + lineno = 0; + return gz__.is_open() && is.good(); + } else { + lyxerr << "lyxlex: UNcompressed" << endl; + + // 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() || is.tellg() > 0) + lyxerr[Debug::LYXLEX] << "Error in LyXLex::setFile: " + "file or stream already set." << endl; + fb__.open(filename.c_str(), ios::in); + is.rdbuf(&fb__); + name = filename; + lineno = 0; + return fb__.is_open() && is.good(); + } }