diff --git a/src/Session.cpp b/src/Session.cpp index 8043646517..f09d2f6b73 100644 --- a/src/Session.cpp +++ b/src/Session.cpp @@ -14,7 +14,6 @@ #include "Session.h" #include "support/debug.h" -#include "support/FileNameList.h" #include "support/filetools.h" #include "support/Package.h" @@ -103,23 +102,31 @@ void LastFilesSection::setNumberOfLastFiles(unsigned int no) } -void LastOpenedSection::read(istream & /*is*/) +void LastOpenedSection::read(istream & is) { - lastopened.clear(); - FileNameList list;// = theApp()->fileNameListFromSession("last_opened"); - for (size_t i = 0; i != list.size(); ++i) { - FileName const & file = list[i]; - if (!file.isAbsolute() || !file.exists() || file.isDirectory()) - LYXERR(Debug::INIT, "Warning: invalid last opened file: " << file); - else + string tmp; + do { + char c = is.peek(); + if (c == '[') + break; + getline(is, tmp); + FileName const file(tmp); + if (tmp == "" || tmp[0] == '#' || tmp[0] == ' ' || !file.isAbsolute()) + continue; + + if (file.exists() && !file.isDirectory()) lastopened.push_back(file); - } + else + LYXERR(Debug::INIT, "LyX: Warning: Ignore last opened file: " << tmp); + } while (is.good()); } -void LastOpenedSection::write(ostream & /*os*/) const +void LastOpenedSection::write(ostream & os) const { - //theApp()->toSession(lastopened); + os << '\n' << sec_lastopened << '\n'; + copy(lastopened.begin(), lastopened.end(), + ostream_iterator(os, "\n")); }