]> git.lyx.org Git - lyx.git/blobdiff - src/vc-backend.C
* GuiView.C (updateTab): do not update early if current tab has
[lyx.git] / src / vc-backend.C
index d58ea5e62420398c0a712ffaf780d63f1209a1cc..5fb8f6bb921d24fbd3c93246978a327cd4e8af48 100644 (file)
 
 #include <fstream>
 
-using lyx::support::AddName;
-using lyx::support::AddPath;
-using lyx::support::contains;
-using lyx::support::OnlyFilename;
-using lyx::support::OnlyPath;
-using lyx::support::Path;
-using lyx::support::QuoteName;
-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::FileName;
+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;
@@ -57,50 +60,48 @@ 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;
 }
 
 
-RCS::RCS(string const & m)
+RCS::RCS(FileName const & m)
 {
        master_ = m;
        scanMaster();
 }
 
 
-string const RCS::find_file(string const & file)
+FileName const RCS::find_file(FileName const & file)
 {
-       string tmp(file);
        // Check if *,v exists.
-       tmp += ",v";
+       FileName tmp(file.absFilename() + ",v");
        lyxerr[Debug::LYXVC] << "Checking if file is under rcs: "
                             << tmp << endl;
-       if (fs::is_readable(tmp)) {
+       if (fs::is_readable(tmp.toFilesystemEncoding())) {
                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 += ",v";
+               tmp = FileName(addName(addPath(onlyPath(file.absFilename()), "RCS"), file.absFilename()) + ",v");
                lyxerr[Debug::LYXVC] << "Checking if file is under rcs: "
                                     << tmp << endl;
-               if (fs::is_readable(tmp)) {
+               if (fs::is_readable(tmp.toFilesystemEncoding())) {
                        lyxerr[Debug::LYXVC] << "Yes " << file
                                             << " it is under rcs."<< endl;
                        return tmp;
                }
        }
-       return string();
+       return FileName();
 }
 
 
-void RCS::retrieve(string const & file)
+void RCS::retrieve(FileName const & file)
 {
        lyxerr[Debug::LYXVC] << "LyXVC::RCS: retrieve.\n\t" << file << endl;
-       VCS::doVCCommand("co -q -r " + QuoteName(file),
+       VCS::doVCCommand("co -q -r " + quoteName(file.toFilesystemEncoding()),
                         string());
 }
 
@@ -109,7 +110,7 @@ void RCS::scanMaster()
 {
        lyxerr[Debug::LYXVC] << "LyXVC::RCS: scanMaster." << endl;
 
-       ifstream ifs(master_.c_str());
+       ifstream ifs(master_.toFilesystemEncoding().c_str());
 
        string token;
        bool read_enough = false;
@@ -174,7 +175,7 @@ void RCS::registrer(string const & msg)
        string cmd = "ci -q -u -i -t-\"";
        cmd += msg;
        cmd += "\" ";
-       cmd += QuoteName(OnlyFilename(owner_->fileName()));
+       cmd += quoteName(onlyFilename(owner_->fileName()));
        doVCCommand(cmd, owner_->filePath());
 }
 
@@ -182,7 +183,7 @@ void RCS::registrer(string const & msg)
 void RCS::checkIn(string const & msg)
 {
        doVCCommand("ci -q -u -m\"" + msg + "\" "
-                   + QuoteName(OnlyFilename(owner_->fileName())),
+                   + quoteName(onlyFilename(owner_->fileName())),
                    owner_->filePath());
 }
 
@@ -190,7 +191,7 @@ void RCS::checkIn(string const & msg)
 void RCS::checkOut()
 {
        owner_->markClean();
-       doVCCommand("co -q -l " + QuoteName(OnlyFilename(owner_->fileName())),
+       doVCCommand("co -q -l " + quoteName(onlyFilename(owner_->fileName())),
                    owner_->filePath());
 }
 
@@ -198,7 +199,7 @@ void RCS::checkOut()
 void RCS::revert()
 {
        doVCCommand("co -f -u" + version() + " "
-                   + QuoteName(OnlyFilename(owner_->fileName())),
+                   + quoteName(onlyFilename(owner_->fileName())),
                    owner_->filePath());
        // We ignore changes and just reload!
        owner_->markClean();
@@ -209,20 +210,20 @@ void RCS::undoLast()
 {
        lyxerr[Debug::LYXVC] << "LyXVC: undoLast" << endl;
        doVCCommand("rcs -o" + version() + " "
-                   + QuoteName(OnlyFilename(owner_->fileName())),
+                   + quoteName(onlyFilename(owner_->fileName())),
                    owner_->filePath());
 }
 
 
-void RCS::getLog(string const & tmpf)
+void RCS::getLog(FileName const & tmpf)
 {
-       doVCCommand("rlog " + QuoteName(OnlyFilename(owner_->fileName()))
-                   + " > " + tmpf,
+       doVCCommand("rlog " + quoteName(onlyFilename(owner_->fileName()))
+                   + " > " + tmpf.toFilesystemEncoding(),
                    owner_->filePath());
 }
 
 
-CVS::CVS(string const & m, string const & f)
+CVS::CVS(FileName const & m, FileName const & f)
 {
        master_ = m;
        file_ = f;
@@ -230,26 +231,27 @@ CVS::CVS(string const & m, string const & f)
 }
 
 
-string const CVS::find_file(string const & file)
+FileName const CVS::find_file(FileName 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) + "/";
+       FileName const dir(onlyPath(file.absFilename()) + "/CVS/Entries");
+       string const tmpf = '/' + onlyFilename(file.absFilename()) + '/';
        lyxerr[Debug::LYXVC] << "LyXVC: checking in `" << dir
                             << "' for `" << tmpf << '\'' << endl;
-       if (fs::is_readable(dir)) {
+       if (fs::is_readable(dir.toFilesystemEncoding())) {
                // 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.
-               ifstream ifs(dir.c_str());
+               ifstream ifs(dir.toFilesystemEncoding().c_str());
                string line;
                while (getline(ifs, line)) {
                        lyxerr[Debug::LYXVC] << "\tEntries: " << line << endl;
-                       if (contains(line, tmpf)) return dir;
+                       if (contains(line, tmpf))
+                               return dir;
                }
        }
-       return string();
+       return FileName();
 }
 
 
@@ -258,8 +260,8 @@ void CVS::scanMaster()
        lyxerr[Debug::LYXVC] << "LyXVC::CVS: scanMaster. \n     Checking: "
                             << master_ << endl;
        // Ok now we do the real scan...
-       ifstream ifs(master_.c_str());
-       string tmpf = "/" + OnlyFilename(file_) + "/";
+       ifstream ifs(master_.toFilesystemEncoding().c_str());
+       string tmpf = '/' + onlyFilename(file_.absFilename()) + '/';
        lyxerr[Debug::LYXVC] << "\tlooking for `" << tmpf << '\'' << endl;
        string line;
        static regex const reg("/(.*)/(.*)/(.*)/(.*)/(.*)");
@@ -279,7 +281,7 @@ void CVS::scanMaster()
                        //sm[4]; // options
                        //sm[5]; // tag or tagdate
                        // FIXME: must double check file is stattable/existing
-                       time_t mod = fs::last_write_time(file_);
+                       time_t mod = fs::last_write_time(file_.toFilesystemEncoding());
                        string mod_date = rtrim(asctime(gmtime(&mod)), "\n");
                        lyxerr[Debug::LYXVC]
                                <<  "Date in Entries: `" << file_date
@@ -303,7 +305,7 @@ void CVS::scanMaster()
 void CVS::registrer(string const & msg)
 {
        doVCCommand("cvs -q add -m \"" + msg + "\" "
-                   + QuoteName(OnlyFilename(owner_->fileName())),
+                   + quoteName(onlyFilename(owner_->fileName())),
                    owner_->filePath());
 }
 
@@ -311,7 +313,7 @@ void CVS::registrer(string const & msg)
 void CVS::checkIn(string const & msg)
 {
        doVCCommand("cvs -q commit -m \"" + msg + "\" "
-                   + QuoteName(OnlyFilename(owner_->fileName())),
+                   + quoteName(onlyFilename(owner_->fileName())),
                    owner_->filePath());
 }
 
@@ -327,7 +329,7 @@ void CVS::revert()
 {
        // Reverts to the version in CVS repository and
        // gets the updated version from the repository.
-       string const fil = QuoteName(OnlyFilename(owner_->fileName()));
+       string const fil = quoteName(onlyFilename(owner_->fileName()));
 
        doVCCommand("rm -f " + fil + "; cvs update " + fil,
                    owner_->filePath());
@@ -344,9 +346,12 @@ void CVS::undoLast()
 }
 
 
-void CVS::getLog(string const & tmpf)
+void CVS::getLog(FileName const & tmpf)
 {
-       doVCCommand("cvs log " + QuoteName(OnlyFilename(owner_->fileName()))
-                   + " > " + tmpf,
+       doVCCommand("cvs log " + quoteName(onlyFilename(owner_->fileName()))
+                   + " > " + tmpf.toFilesystemEncoding(),
                    owner_->filePath());
 }
+
+
+} // namespace lyx