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
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);
}
}
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();
+ }
}