- for (DepList::iterator itr = deplist.begin();
- itr != deplist.end();
- ++itr) {
- unsigned long const one = (*itr).second.second;
- unsigned long const two = lyx::sum((*itr).first);
- (*itr).second = make_pair(one, two);
+ lyxerr[Debug::DEPEND] << "Updating DepTable..." << endl;
+ lyx::time_type const start_time = lyx::current_time();
+
+ DepList::iterator itr = deplist.begin();
+ while (itr != deplist.end()) {
+ dep_info &di = itr->second;
+
+ struct stat f_info;
+ if (stat(itr->first.c_str(), &f_info) == 0) {
+ if (di.mtime_cur == f_info.st_mtime) {
+ di.crc_prev = di.crc_cur;
+ lyxerr[Debug::DEPEND] << itr->first << " same mtime";
+ } else {
+ di.crc_prev = di.crc_cur;
+ lyxerr[Debug::DEPEND] << itr->first << " CRC... ";
+ di.crc_cur = sum(itr->first);
+ lyxerr[Debug::DEPEND] << "done";
+ }
+ } else {
+ // file doesn't exist
+ // remove stale files - if it's re-created, it
+ // will be re-inserted by deplog.
+ lyxerr[Debug::DEPEND] << itr->first
+ << " doesn't exist. removing from DepTable." << endl;
+ DepList::iterator doomed = itr++;
+ deplist.erase(doomed);
+ continue;
+ }
+