]> git.lyx.org Git - lyx.git/blobdiff - src/VCBackend.cpp
document my LFUN changes in the past
[lyx.git] / src / VCBackend.cpp
index 91c4fc2253b52b473338bde6ea651edb35084ab5..0fd2094822a42b5a09ba3afa5273ffe968e496b7 100644 (file)
 #include <config.h>
 
 #include "VCBackend.h"
-#include "debug.h"
+#include "support/debug.h"
 #include "Buffer.h"
 
-#include "support/path.h"
+#include "support/Path.h"
 #include "support/filetools.h"
-#include "support/fs_extras.h"
 #include "support/lstrings.h"
-#include "support/systemcall.h"
+#include "support/Systemcall.h"
 
-#include <boost/filesystem/operations.hpp>
 #include <boost/regex.hpp>
 
 #include <fstream>
@@ -53,19 +51,23 @@ using std::getline;
 using std::string;
 using std::ifstream;
 
-namespace fs = boost::filesystem;
-
 
 int VCS::doVCCommand(string const & cmd, FileName const & path)
 {
-       LYXERR(Debug::LYXVC) << "doVCCommand: " << cmd << endl;
+       LYXERR(Debug::LYXVC, "doVCCommand: " << cmd);
        Systemcall one;
-       support::Path p(path);
+       support::PathChanger p(path);
        int const ret = one.startscript(Systemcall::Wait, cmd);
        return ret;
 }
 
 
+/////////////////////////////////////////////////////////////////////
+//
+// RCS
+//
+/////////////////////////////////////////////////////////////////////
+
 RCS::RCS(FileName const & m)
 {
        master_ = m;
@@ -73,34 +75,31 @@ RCS::RCS(FileName const & m)
 }
 
 
-FileName const RCS::find_file(FileName const & file)
+FileName const RCS::findFile(FileName const & file)
 {
        // Check if *,v exists.
        FileName tmp(file.absFilename() + ",v");
-       LYXERR(Debug::LYXVC) << "Checking if file is under rcs: "
-                            << tmp << endl;
-       if (fs::is_readable(tmp.toFilesystemEncoding())) {
-               LYXERR(Debug::LYXVC) << "Yes " << file
-                                    << " is under rcs." << endl;
+       LYXERR(Debug::LYXVC, "Checking if file is under rcs: " << tmp);
+       if (tmp.isReadableFile()) {
+               LYXERR(Debug::LYXVC, "Yes " << file << " is under rcs.");
+               return tmp;
+       }
+
+       // Check if RCS/*,v exists.
+       tmp = FileName(addName(addPath(onlyPath(file.absFilename()), "RCS"), file.absFilename()) + ",v");
+       LYXERR(Debug::LYXVC, "Checking if file is under rcs: " << tmp);
+       if (tmp.isReadableFile()) {
+               LYXERR(Debug::LYXVC, "Yes " << file << " it is under rcs.");
                return tmp;
-       } else {
-               // Check if RCS/*,v exists.
-               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.toFilesystemEncoding())) {
-                       LYXERR(Debug::LYXVC) << "Yes " << file
-                                            << " it is under rcs."<< endl;
-                       return tmp;
-               }
        }
+
        return FileName();
 }
 
 
 void RCS::retrieve(FileName const & file)
 {
-       LYXERR(Debug::LYXVC) << "LyXVC::RCS: retrieve.\n\t" << file << endl;
+       LYXERR(Debug::LYXVC, "LyXVC::RCS: retrieve.\n\t" << file);
        VCS::doVCCommand("co -q -r " + quoteName(file.toFilesystemEncoding()),
                         FileName());
 }
@@ -108,7 +107,7 @@ void RCS::retrieve(FileName const & file)
 
 void RCS::scanMaster()
 {
-       LYXERR(Debug::LYXVC) << "LyXVC::RCS: scanMaster." << endl;
+       LYXERR(Debug::LYXVC, "LyXVC::RCS: scanMaster.");
 
        ifstream ifs(master_.toFilesystemEncoding().c_str());
 
@@ -116,9 +115,8 @@ void RCS::scanMaster()
        bool read_enough = false;
 
        while (!read_enough && ifs >> token) {
-               LYXERR(Debug::LYXVC)
-                       << "LyXVC::scanMaster: current lex text: `"
-                       << token << '\'' << endl;
+               LYXERR(Debug::LYXVC, "LyXVC::scanMaster: current lex text: `"
+                       << token << '\'');
 
                if (token.empty())
                        continue;
@@ -128,8 +126,7 @@ void RCS::scanMaster()
                        ifs >> tmv;
                        tmv = rtrim(tmv, ";");
                        version_ = tmv;
-                       LYXERR(Debug::LYXVC) << "LyXVC: version found to be "
-                                            << tmv << endl;
+                       LYXERR(Debug::LYXVC, "LyXVC: version found to be " << tmv);
                } else if (contains(token, "access")
                           || contains(token, "symbols")
                           || contains(token, "strict")) {
@@ -162,9 +159,7 @@ void RCS::scanMaster()
                        read_enough = true;
                } else {
                        // unexpected
-                       LYXERR(Debug::LYXVC)
-                               << "LyXVC::scanMaster(): unexpected token"
-                               << endl;
+                       LYXERR(Debug::LYXVC, "LyXVC::scanMaster(): unexpected token");
                }
        }
 }
@@ -175,7 +170,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_->absFileName()));
        doVCCommand(cmd, FileName(owner_->filePath()));
 }
 
@@ -183,7 +178,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_->absFileName())),
                    FileName(owner_->filePath()));
 }
 
@@ -191,7 +186,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_->absFileName())),
                    FileName(owner_->filePath()));
 }
 
@@ -199,7 +194,7 @@ void RCS::checkOut()
 void RCS::revert()
 {
        doVCCommand("co -f -u" + version() + " "
-                   + quoteName(onlyFilename(owner_->fileName())),
+                   + quoteName(onlyFilename(owner_->absFileName())),
                    FileName(owner_->filePath()));
        // We ignore changes and just reload!
        owner_->markClean();
@@ -208,21 +203,27 @@ void RCS::revert()
 
 void RCS::undoLast()
 {
-       LYXERR(Debug::LYXVC) << "LyXVC: undoLast" << endl;
+       LYXERR(Debug::LYXVC, "LyXVC: undoLast");
        doVCCommand("rcs -o" + version() + " "
-                   + quoteName(onlyFilename(owner_->fileName())),
+                   + quoteName(onlyFilename(owner_->absFileName())),
                    FileName(owner_->filePath()));
 }
 
 
 void RCS::getLog(FileName const & tmpf)
 {
-       doVCCommand("rlog " + quoteName(onlyFilename(owner_->fileName()))
+       doVCCommand("rlog " + quoteName(onlyFilename(owner_->absFileName()))
                    + " > " + tmpf.toFilesystemEncoding(),
                    FileName(owner_->filePath()));
 }
 
 
+/////////////////////////////////////////////////////////////////////
+//
+// CVS
+//
+/////////////////////////////////////////////////////////////////////
+
 CVS::CVS(FileName const & m, FileName const & f)
 {
        master_ = m;
@@ -231,22 +232,22 @@ CVS::CVS(FileName const & m, FileName const & f)
 }
 
 
-FileName const CVS::find_file(FileName const & file)
+FileName const CVS::findFile(FileName const & file)
 {
        // First we look for the CVS/Entries in the same dir
        // where we have 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.toFilesystemEncoding())) {
+       LYXERR(Debug::LYXVC, "LyXVC: checking in `" << dir
+                            << "' for `" << tmpf << '\'');
+       if (dir.isReadableDirectory()) {
                // 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.toFilesystemEncoding().c_str());
                string line;
                while (getline(ifs, line)) {
-                       LYXERR(Debug::LYXVC) << "\tEntries: " << line << endl;
+                       LYXERR(Debug::LYXVC, "\tEntries: " << line);
                        if (contains(line, tmpf))
                                return dir;
                }
@@ -257,16 +258,15 @@ FileName const CVS::find_file(FileName const & file)
 
 void CVS::scanMaster()
 {
-       LYXERR(Debug::LYXVC) << "LyXVC::CVS: scanMaster. \n     Checking: "
-                            << master_ << endl;
+       LYXERR(Debug::LYXVC, "LyXVC::CVS: scanMaster. \n     Checking: " << master_);
        // Ok now we do the real scan...
        ifstream ifs(master_.toFilesystemEncoding().c_str());
        string tmpf = '/' + onlyFilename(file_.absFilename()) + '/';
-       LYXERR(Debug::LYXVC) << "\tlooking for `" << tmpf << '\'' << endl;
+       LYXERR(Debug::LYXVC, "\tlooking for `" << tmpf << '\'');
        string line;
        static regex const reg("/(.*)/(.*)/(.*)/(.*)/(.*)");
        while (getline(ifs, line)) {
-               LYXERR(Debug::LYXVC) << "\t  line: " << line << endl;
+               LYXERR(Debug::LYXVC, "\t  line: " << line);
                if (contains(line, tmpf)) {
                        // Ok extract the fields.
                        smatch sm;
@@ -281,12 +281,10 @@ 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_.toFilesystemEncoding());
+                       time_t mod = file_.lastModified();
                        string mod_date = rtrim(asctime(gmtime(&mod)), "\n");
-                       LYXERR(Debug::LYXVC)
-                               <<  "Date in Entries: `" << file_date
-                               << "'\nModification date of file: `"
-                               << mod_date << '\'' << endl;
+                       LYXERR(Debug::LYXVC, "Date in Entries: `" << file_date
+                               << "'\nModification date of file: `" << mod_date << '\'');
                        if (file_date == mod_date) {
                                locker_ = "Unlocked";
                                vcstatus = UNLOCKED;
@@ -305,7 +303,7 @@ void CVS::scanMaster()
 void CVS::registrer(string const & msg)
 {
        doVCCommand("cvs -q add -m \"" + msg + "\" "
-                   + quoteName(onlyFilename(owner_->fileName())),
+                   + quoteName(onlyFilename(owner_->absFileName())),
                    FileName(owner_->filePath()));
 }
 
@@ -313,7 +311,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_->absFileName())),
                    FileName(owner_->filePath()));
 }
 
@@ -329,7 +327,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_->absFileName()));
 
        doVCCommand("rm -f " + fil + "; cvs update " + fil,
                    FileName(owner_->filePath()));
@@ -348,7 +346,7 @@ void CVS::undoLast()
 
 void CVS::getLog(FileName const & tmpf)
 {
-       doVCCommand("cvs log " + quoteName(onlyFilename(owner_->fileName()))
+       doVCCommand("cvs log " + quoteName(onlyFilename(owner_->absFileName()))
                    + " > " + tmpf.toFilesystemEncoding(),
                    FileName(owner_->filePath()));
 }