X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fvc-backend.C;h=8ec387e2975d00c89a3c2e43676a1c92d52a45e8;hb=35204f8f33d7400a5fefeffea533fb4cb4097211;hp=46b8b6d55764461cce54c02d31e7c70948e1408e;hpb=cd03e2b7db8379a91f3d31eac2c5bc25b159c541;p=lyx.git diff --git a/src/vc-backend.C b/src/vc-backend.C index 46b8b6d557..8ec387e297 100644 --- a/src/vc-backend.C +++ b/src/vc-backend.C @@ -14,26 +14,29 @@ #include "debug.h" #include "buffer.h" -#include "support/FileInfo.h" #include "support/path.h" #include "support/filetools.h" +#include "support/fs_extras.h" #include "support/lstrings.h" #include "support/systemcall.h" +#include #include #include -using lyx::support::AddName; -using lyx::support::AddPath; -using lyx::support::contains; -using lyx::support::FileInfo; -using lyx::support::OnlyFilename; -using lyx::support::OnlyPath; -using lyx::support::Path; -using lyx::support::rtrim; -using lyx::support::split; -using lyx::support::Systemcall; + +namespace lyx { + +using support::addName; +using support::addPath; +using support::contains; +using support::onlyFilename; +using support::onlyPath; +using support::quoteName; +using support::rtrim; +using support::split; +using support::Systemcall; using boost::regex; using boost::regex_match; @@ -46,15 +49,17 @@ using std::gmtime; using std::endl; using std::getline; - +using std::string; using std::ifstream; +namespace fs = boost::filesystem; + int VCS::doVCCommand(string const & cmd, string const & path) { lyxerr[Debug::LYXVC] << "doVCCommand: " << cmd << endl; Systemcall one; - Path p(path); + support::Path p(path); int const ret = one.startscript(Systemcall::Wait, cmd); return ret; } @@ -69,23 +74,22 @@ RCS::RCS(string const & m) string const RCS::find_file(string const & file) { - string tmp(file); + string tmp = file; // Check if *,v exists. tmp += ",v"; - FileInfo f; lyxerr[Debug::LYXVC] << "Checking if file is under rcs: " << tmp << endl; - if (f.newFile(tmp).readable()) { + if (fs::is_readable(tmp)) { lyxerr[Debug::LYXVC] << "Yes " << file << " is under rcs." << endl; return tmp; } else { // Check if RCS/*,v exists. - tmp = AddName(AddPath(OnlyPath(file), "RCS"), file); + tmp = addName(addPath(onlyPath(file), "RCS"), file); tmp += ",v"; lyxerr[Debug::LYXVC] << "Checking if file is under rcs: " << tmp << endl; - if (f.newFile(tmp).readable()) { + if (fs::is_readable(tmp)) { lyxerr[Debug::LYXVC] << "Yes " << file << " it is under rcs."<< endl; return tmp; @@ -98,8 +102,7 @@ string const RCS::find_file(string const & file) void RCS::retrieve(string const & file) { lyxerr[Debug::LYXVC] << "LyXVC::RCS: retrieve.\n\t" << file << endl; - VCS::doVCCommand("co -q -r \"" - + file + '"', + VCS::doVCCommand("co -q -r " + quoteName(file), string()); } @@ -134,7 +137,7 @@ void RCS::scanMaster() // nothing } else if (contains(token, "locks")) { // get locker here - if (contains(token, ";")) { + if (contains(token, ';')) { locker_ = "Unlocked"; vcstatus = UNLOCKED; continue; @@ -153,7 +156,7 @@ void RCS::scanMaster() vcstatus = LOCKED; break; } - } while (!contains(tmpt, ";")); + } while (!contains(tmpt, ';')); } else if (token == "comment") { // we don't need to read any further than this. @@ -172,17 +175,16 @@ void RCS::registrer(string const & msg) { string cmd = "ci -q -u -i -t-\""; cmd += msg; - cmd += "\" \""; - cmd += OnlyFilename(owner_->fileName()); - cmd += '"'; + cmd += "\" "; + cmd += quoteName(onlyFilename(owner_->fileName())); doVCCommand(cmd, owner_->filePath()); } void RCS::checkIn(string const & msg) { - doVCCommand("ci -q -u -m\"" + msg + "\" \"" - + OnlyFilename(owner_->fileName()) + '"', + doVCCommand("ci -q -u -m\"" + msg + "\" " + + quoteName(onlyFilename(owner_->fileName())), owner_->filePath()); } @@ -190,16 +192,15 @@ void RCS::checkIn(string const & msg) void RCS::checkOut() { owner_->markClean(); - doVCCommand("co -q -l \"" - + OnlyFilename(owner_->fileName()) + '"', + doVCCommand("co -q -l " + quoteName(onlyFilename(owner_->fileName())), owner_->filePath()); } void RCS::revert() { - doVCCommand("co -f -u" + version() + " \"" - + OnlyFilename(owner_->fileName()) + '"', + doVCCommand("co -f -u" + version() + " " + + quoteName(onlyFilename(owner_->fileName())), owner_->filePath()); // We ignore changes and just reload! owner_->markClean(); @@ -209,17 +210,17 @@ void RCS::revert() void RCS::undoLast() { lyxerr[Debug::LYXVC] << "LyXVC: undoLast" << endl; - doVCCommand("rcs -o" + version() + " \"" - + OnlyFilename(owner_->fileName()) + '"', + doVCCommand("rcs -o" + version() + " " + + quoteName(onlyFilename(owner_->fileName())), owner_->filePath()); } void RCS::getLog(string const & tmpf) { - doVCCommand("rlog \"" - + OnlyFilename(owner_->fileName()) + "\" > " - + tmpf, owner_->filePath()); + doVCCommand("rlog " + quoteName(onlyFilename(owner_->fileName())) + + " > " + tmpf, + owner_->filePath()); } @@ -235,12 +236,11 @@ string const CVS::find_file(string const & file) { // First we look for the CVS/Entries in the same dir // where we have file. - string const dir = OnlyPath(file) + "/CVS/Entries"; - string const tmpf = "/" + OnlyFilename(file) + "/"; + string const dir = onlyPath(file) + "/CVS/Entries"; + string const tmpf = "/" + onlyFilename(file) + "/"; lyxerr[Debug::LYXVC] << "LyXVC: checking in `" << dir << "' for `" << tmpf << '\'' << endl; - FileInfo const f(dir); - if (f.readable()) { + if (fs::is_readable(dir)) { // Ok we are at least in a CVS dir. Parse the CVS/Entries // and see if we can find this file. We do a fast and // dirty parse here. @@ -261,10 +261,10 @@ void CVS::scanMaster() << master_ << endl; // Ok now we do the real scan... ifstream ifs(master_.c_str()); - string tmpf = "/" + OnlyFilename(file_) + "/"; + string tmpf = "/" + onlyFilename(file_) + "/"; lyxerr[Debug::LYXVC] << "\tlooking for `" << tmpf << '\'' << endl; string line; - regex reg("/(.*)/(.*)/(.*)/(.*)/(.*)"); + static regex const reg("/(.*)/(.*)/(.*)/(.*)/(.*)"); while (getline(ifs, line)) { lyxerr[Debug::LYXVC] << "\t line: " << line << endl; if (contains(line, tmpf)) { @@ -280,9 +280,8 @@ void CVS::scanMaster() //sm[4]; // options //sm[5]; // tag or tagdate - FileInfo fi(file_); // FIXME: must double check file is stattable/existing - time_t mod = fi.getModificationTime(); + time_t mod = fs::last_write_time(file_); string mod_date = rtrim(asctime(gmtime(&mod)), "\n"); lyxerr[Debug::LYXVC] << "Date in Entries: `" << file_date @@ -305,16 +304,16 @@ void CVS::scanMaster() void CVS::registrer(string const & msg) { - doVCCommand("cvs -q add -m \"" + msg + "\" \"" - + OnlyFilename(owner_->fileName()) + '"', + doVCCommand("cvs -q add -m \"" + msg + "\" " + + quoteName(onlyFilename(owner_->fileName())), owner_->filePath()); } void CVS::checkIn(string const & msg) { - doVCCommand("cvs -q commit -m \"" + msg + "\" \"" - + OnlyFilename(owner_->fileName()) + '"', + doVCCommand("cvs -q commit -m \"" + msg + "\" " + + quoteName(onlyFilename(owner_->fileName())), owner_->filePath()); } @@ -330,9 +329,9 @@ void CVS::revert() { // Reverts to the version in CVS repository and // gets the updated version from the repository. - string const fil = OnlyFilename(owner_->fileName()); + string const fil = quoteName(onlyFilename(owner_->fileName())); - doVCCommand("rm -f \"" + fil + "\"; cvs update \"" + fil + '"', + doVCCommand("rm -f " + fil + "; cvs update " + fil, owner_->filePath()); owner_->markClean(); } @@ -349,7 +348,10 @@ void CVS::undoLast() void CVS::getLog(string const & tmpf) { - doVCCommand("cvs log \"" - + OnlyFilename(owner_->fileName()) + "\" > " + tmpf, + doVCCommand("cvs log " + quoteName(onlyFilename(owner_->fileName())) + + " > " + tmpf, owner_->filePath()); } + + +} // namespace lyx