X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FDepTable.C;h=90849bb0d770ca7e2e5687a8abadcda0eab15609;hb=09e01879979643949f1f2c7216023f1f35d5ada2;hp=8a7d03c1a83b74c005f1989881f894d8c6179310;hpb=36aa4ee109d91ccd49398b5bf5927ab72abc42bd;p=lyx.git diff --git a/src/DepTable.C b/src/DepTable.C index 8a7d03c1a8..90849bb0d7 100644 --- a/src/DepTable.C +++ b/src/DepTable.C @@ -1,6 +1,6 @@ /* This file is part of - * ====================================================== - * + * ====================================================== + * * LyX, The Document Processor * Copyright 1995 Matthias Ettrich * Copyright 1995-2001 The LyX Team. @@ -9,49 +9,57 @@ * Lars Gullik Bjønnes * Ben Stanley * - * ====================================================== + * ====================================================== */ #include -#ifdef __GNUG__ -#pragma implementation -#endif - #include "DepTable.h" #include "debug.h" #include "support/lyxlib.h" #include "support/filetools.h" #include "support/lstrings.h" +#include "support/lyxtime.h" #include #include #include #include +#include + +#ifndef CXX_GLOBAL_CSTD +using std::time; +#endif + +using namespace lyx::support; using std::make_pair; using std::ofstream; using std::ifstream; +using std::flush; using std::endl; +using std::getline; + -inline bool DepTable::dep_info::changed() const +inline +bool DepTable::dep_info::changed() const { return crc_prev != crc_cur && crc_cur != 0; } -void DepTable::insert(string const & fi, - bool upd) + +void DepTable::insert(string const & fi, bool upd) { // not quite sure if this is the correct place for MakeAbsPath - string f = MakeAbsPath(fi); + string const f = MakeAbsPath(fi); if (deplist.find(f) == deplist.end()) { dep_info di; di.crc_prev = 0; if (upd) { lyxerr[Debug::DEPEND] << " CRC..." << flush; - di.crc_cur = lyx::sum(f); + di.crc_cur = sum(f); lyxerr[Debug::DEPEND] << "done." << endl; struct stat f_info; stat(fi.c_str(), &f_info); @@ -65,39 +73,39 @@ void DepTable::insert(string const & fi, lyxerr[Debug::DEPEND] << " Already in DepTable" << endl; } } - + void DepTable::update() { lyxerr[Debug::DEPEND] << "Updating DepTable..." << endl; - time_t start_time = time(0); + 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 (0 == stat(itr->first.c_str(), &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 = lyx::sum(itr->first); + 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 + lyxerr[Debug::DEPEND] << itr->first << " doesn't exist. removing from DepTable." << endl; DepList::iterator doomed = itr++; deplist.erase(doomed); continue; } - + if (lyxerr.debugging(Debug::DEPEND)) { if (di.changed()) lyxerr << " +"; @@ -105,7 +113,7 @@ void DepTable::update() } ++itr; } - time_t time_sec = time(0) - start_time; + lyx::time_type const time_sec = lyx::current_time() - start_time; lyxerr[Debug::DEPEND] << "Finished updating DepTable (" << time_sec << " sec)." << endl; } @@ -113,10 +121,10 @@ void DepTable::update() bool DepTable::sumchange() const { - for (DepList::const_iterator cit = deplist.begin(); - cit != deplist.end(); - ++cit) { - if ((*cit).second.changed()) return true; + DepList::const_iterator cit = deplist.begin(); + DepList::const_iterator end = deplist.end(); + for (; cit != end; ++cit) { + if (cit->second.changed()) return true; } return false; } @@ -125,7 +133,7 @@ bool DepTable::sumchange() const bool DepTable::haschanged(string const & f) const { // not quite sure if this is the correct place for MakeAbsPath - string fil = MakeAbsPath(f); + string const fil = MakeAbsPath(f); DepList::const_iterator cit = deplist.find(fil); if (cit != deplist.end()) { if (cit->second.changed()) @@ -137,9 +145,9 @@ bool DepTable::haschanged(string const & f) const bool DepTable::extchanged(string const & ext) const { - for (DepList::const_iterator cit = deplist.begin(); - cit != deplist.end(); - ++cit) { + DepList::const_iterator cit = deplist.begin(); + DepList::const_iterator end = deplist.end(); + for (; cit != end; ++cit) { if (suffixIs(cit->first, ext)) { if (cit->second.changed()) return true; @@ -149,18 +157,19 @@ bool DepTable::extchanged(string const & ext) const } -bool DepTable::ext_exist(const string& ext ) const +bool DepTable::ext_exist(string const & ext) const { - for (DepList::const_iterator cit = deplist.begin(); - cit != deplist.end(); ++cit ) { - - if ( suffixIs(cit->first, ext) ) { + DepList::const_iterator cit = deplist.begin(); + DepList::const_iterator end = deplist.end(); + for (; cit != end; ++cit) { + if (suffixIs(cit->first, ext)) { return true; } } return false; } + bool DepTable::exist(string const & fil) const { return deplist.find(fil) != deplist.end(); @@ -170,15 +179,18 @@ bool DepTable::exist(string const & fil) const void DepTable::remove_files_with_extension(string const & suf) { DepList::iterator cit = deplist.begin(); - while (cit != deplist.end()) { + DepList::iterator end = deplist.end(); + while (cit != end) { if (suffixIs(cit->first, suf)) { - // Can't erase the current iterator, but we can increment and then erase. - // deplist is a map so only the erased iterator is invalidated. + // Can't erase the current iterator, but we + // can increment and then erase. + // Deplist is a map so only the erased + // iterator is invalidated. DepList::iterator doomed = cit++; deplist.erase(doomed); continue; } - cit++; + ++cit; } } @@ -186,15 +198,18 @@ void DepTable::remove_files_with_extension(string const & suf) void DepTable::remove_file(string const & filename) { DepList::iterator cit = deplist.begin(); - while (cit != deplist.end()) { + DepList::iterator end = deplist.end(); + while (cit != end) { if (OnlyFilename(cit->first) == filename) { - // Can't erase the current iterator, but we can increment and then erase. - // deplist is a map so only the erased iterator is invalidated. + // Can't erase the current iterator, but we + // can increment and then erase. + // deplist is a map so only the erased + // iterator is invalidated. DepList::iterator doomed = cit++; deplist.erase(doomed); continue; } - cit++; + ++cit; } } @@ -202,39 +217,42 @@ void DepTable::remove_file(string const & filename) void DepTable::write(string const & f) const { ofstream ofs(f.c_str()); - for (DepList::const_iterator cit = deplist.begin(); - cit != deplist.end(); ++cit) { + DepList::const_iterator cit = deplist.begin(); + DepList::const_iterator end = deplist.end(); + for (; cit != end; ++cit) { if (lyxerr.debugging(Debug::DEPEND)) { - // Store the second (most recently calculated) CRC value. + // Store the second (most recently calculated) + // CRC value. // The older one is effectively set to 0 upon re-load. lyxerr << "Write dep: " - << cit->first << " " - << cit->second.crc_cur << " " - << cit->second.mtime_cur << endl; + << cit->second.crc_cur << ' ' + << cit->second.mtime_cur << ' ' + << cit->first << endl; } - ofs << cit->first << " " - << cit->second.crc_cur << " " - << cit->second.mtime_cur << endl; + ofs << cit->second.crc_cur << ' ' + << cit->second.mtime_cur << ' ' + << cit->first << endl; } } -void DepTable::read(string const & f) +bool DepTable::read(string const & f) { ifstream ifs(f.c_str()); string nome; dep_info di; // This doesn't change through the loop. di.crc_prev = 0; - - while (ifs >> nome >> di.crc_cur >> di.mtime_cur) { + + while (ifs >> di.crc_cur >> di.mtime_cur && getline(ifs, nome)) { + nome = ltrim(nome); if (lyxerr.debugging(Debug::DEPEND)) { lyxerr << "Read dep: " - << nome << " " - << di.crc_cur << " " - << di.mtime_cur << endl; + << di.crc_cur << ' ' + << di.mtime_cur << ' ' + << nome << endl; } deplist[nome] = di; } + return deplist.size(); } -