]> git.lyx.org Git - lyx.git/blobdiff - src/vc-backend.C
ws cleanup
[lyx.git] / src / vc-backend.C
index 3b4ef26a23132ff2248c66059c5156f3567e7f04..c4336d48e7fda94429b2f919bbf1a9fba06c9c3f 100644 (file)
@@ -4,17 +4,22 @@
 #pragma implementation
 #endif
 
-#include <fstream>
-
 #include "vc-backend.h"
 #include "debug.h"
+#include "buffer.h"
+#include "BufferView.h"
+#include "LyXView.h"
+#include "lyxfunc.h"
+
 #include "support/FileInfo.h"
 #include "support/LRegex.h"
 #include "support/LSubstring.h"
 #include "support/path.h"
-#include "buffer.h"
-#include "LyXView.h"
-#include "lyxfunc.h"
+#include "support/filetools.h"
+#include "support/lstrings.h"
+#include "support/systemcall.h"
+
+#include <fstream>
 
 using std::endl;
 using std::ifstream;
@@ -23,9 +28,9 @@ using std::getline;
 int VCS::doVCCommand(string const & cmd, string const & path)
 {
        lyxerr[Debug::LYXVC] << "doVCCommand: " << cmd << endl;
-        Systemcalls one;
+       Systemcall one;
        Path p(path);
-       int ret = one.startscript(Systemcalls::System, cmd);
+       int const ret = one.startscript(Systemcall::Wait, cmd);
        return ret;
 }
 
@@ -37,7 +42,7 @@ RCS::RCS(string const & m)
 }
 
 
-string RCS::find_file(string const & file)
+string const RCS::find_file(string const & file)
 {
        string tmp(file);
        // Check if *,v exists.
@@ -65,9 +70,9 @@ string RCS::find_file(string const & file)
 }
 
 
-void RCS::retrive(string const & file)
+void RCS::retrieve(string const & file)
 {
-       lyxerr[Debug::LYXVC] << "LyXVC::RCS: retrive.\n\t" << file << endl;
+       lyxerr[Debug::LYXVC] << "LyXVC::RCS: retrieve.\n\t" << file << endl;
        VCS::doVCCommand("co -q -r \""
                         + file + "\"",
                         string());
@@ -109,7 +114,9 @@ void RCS::scanMaster()
                                vcstatus = UNLOCKED;
                                continue;
                        }
-                       string tmpt, s1, s2;
+                       string tmpt;
+                       string s1;
+                       string s2;
                        do {
                                ifs >> tmpt;
                                s1 = strip(tmpt, ';');
@@ -122,7 +129,7 @@ void RCS::scanMaster()
                                        break;
                                }
                        } while (!contains(tmpt, ";"));
-                       
+
                } else if (token == "comment") {
                        // we don't need to read any further than this.
                        read_enough = true;
@@ -133,7 +140,6 @@ void RCS::scanMaster()
                                << endl;
                }
        }
-       version_ = "RCS: " + version_;
 }
 
 
@@ -144,16 +150,16 @@ void RCS::registrer(string const & msg)
        cmd += "\" \"";
        cmd += OnlyFilename(owner_->fileName());
        cmd += "\"";
-       doVCCommand(cmd, owner_->filepath);
-       owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload");
+       doVCCommand(cmd, owner_->filePath());
+       owner_->getUser()->owner()->getLyXFunc()->dispatch(LFUN_MENURELOAD);
 }
 
 
 void RCS::checkIn(string const & msg)
 {
        doVCCommand("ci -q -u -m\"" + msg + "\" \""
-                   + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath);
-       owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload");
+                   + OnlyFilename(owner_->fileName()) + "\"", owner_->filePath());
+       owner_->getUser()->owner()->getLyXFunc()->dispatch(LFUN_MENURELOAD);
 }
 
 
@@ -161,19 +167,19 @@ void RCS::checkOut()
 {
        owner_->markLyxClean();
        doVCCommand("co -q -l \""
-                   + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath);
-       owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload");
+                   + OnlyFilename(owner_->fileName()) + "\"", owner_->filePath());
+       owner_->getUser()->owner()->getLyXFunc()->dispatch(LFUN_MENURELOAD);
 }
 
 
 void RCS::revert()
 {
        doVCCommand("co -f -u" + version() + " \""
-                   + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath);
+                   + OnlyFilename(owner_->fileName()) + "\"", owner_->filePath());
        // We ignore changes and just reload!
        owner_->markLyxClean();
        owner_->getUser()->owner()
-               ->getLyXFunc()->Dispatch("buffer-reload");
+               ->getLyXFunc()->dispatch(LFUN_MENURELOAD);
 }
 
 
@@ -181,14 +187,15 @@ void RCS::undoLast()
 {
        lyxerr[Debug::LYXVC] << "LyXVC: undoLast" << endl;
        doVCCommand("rcs -o" + version() + " \""
-                   + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath);
+                   + OnlyFilename(owner_->fileName()) + "\"",
+                   owner_->filePath());
 }
 
 
 void RCS::getLog(string const & tmpf)
 {
        doVCCommand("rlog \""
-                   + OnlyFilename(owner_->fileName()) + "\" > " + tmpf, owner_->filepath);
+                   + OnlyFilename(owner_->fileName()) + "\" > " + tmpf, owner_->filePath());
 }
 
 
@@ -200,16 +207,15 @@ CVS::CVS(string const & m, string const & f)
 }
 
 
-string CVS::find_file(string const & file)
+string const CVS::find_file(string const & file)
 {
        // First we look for the CVS/Entries in the same dir
        // where we have file.
-       string dir = OnlyPath(file);
-       string tmpf = "/" + OnlyFilename(file) + "/";
-       dir += "/CVS/Entries";
+       string const dir = OnlyPath(file) + "/CVS/Entries";
+       string const tmpf = "/" + OnlyFilename(file) + "/";
        lyxerr[Debug::LYXVC] << "LyXVC: checking in `" << dir
                             << "' for `" << tmpf << "'" << endl;
-       FileInfo f(dir);
+       FileInfo const f(dir);
        if (f.readable()) {
                // 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
@@ -235,21 +241,21 @@ void CVS::scanMaster()
        lyxerr[Debug::LYXVC] << "\tlooking for `" << tmpf << "'" << endl;
        string line;
        LRegex reg("/(.*)/(.*)/(.*)/(.*)/(.*)");
-       while(getline(ifs, line)) {
+       while (getline(ifs, line)) {
                lyxerr[Debug::LYXVC] << "\t  line: " << line << endl;
                if (contains(line, tmpf)) {
                        // Ok extract the fields.
                        LRegex::SubMatches const & sm = reg.exec(line);
                        //sm[0]; // whole matched string
                        //sm[1]; // filename
-                       version_ = "CVS: ";
-                       version_ += LSubstring(line, sm[2].first,
+                       version_ = LSubstring(line, sm[2].first,
                                              sm[2].second);
                        string file_date = LSubstring(line, sm[3].first,
                                                      sm[3].second);
                        //sm[4]; // options
                        //sm[5]; // tag or tagdate
                        FileInfo fi(file_);
+                       // FIXME: must double check file is stattable/existing
                        time_t mod = fi.getModificationTime();
                        string mod_date = strip(asctime(gmtime(&mod)), '\n');
                        lyxerr[Debug::LYXVC]
@@ -274,16 +280,17 @@ void CVS::scanMaster()
 void CVS::registrer(string const & msg)
 {
        doVCCommand("cvs -q add -m \"" + msg + "\" \""
-                   + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath);
-       owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload");
+                   + OnlyFilename(owner_->fileName()) + "\"", owner_->filePath());
+       owner_->getUser()->owner()->getLyXFunc()->dispatch(LFUN_MENURELOAD);
 }
 
 
 void CVS::checkIn(string const & msg)
 {
        doVCCommand("cvs -q commit -m \"" + msg + "\" \""
-                   + OnlyFilename(owner_->fileName()) + "\"", owner_->filepath);
-       owner_->getUser()->owner()->getLyXFunc()->Dispatch("buffer-reload");
+                   + OnlyFilename(owner_->fileName()) + "\"",
+                   owner_->filePath());
+       owner_->getUser()->owner()->getLyXFunc()->dispatch(LFUN_MENURELOAD);
 }
 
 
@@ -296,10 +303,15 @@ void CVS::checkOut()
 
 void CVS::revert()
 {
-       // not sure how to do this...
-       // rm file
-       // cvs update
-       lyxerr << "Sorry not implemented." << endl;
+       // Reverts to the version in CVS repository and
+       // gets the updated version from the repository.
+       string const fil = OnlyFilename(owner_->fileName());
+
+       doVCCommand("rm -f \"" + fil + "\"; cvs update \"" + fil + "\"",
+                   owner_->filePath());
+       owner_->markLyxClean();
+       owner_->getUser()->owner()
+               ->getLyXFunc()->dispatch(LFUN_MENURELOAD);
 }
 
 
@@ -312,7 +324,9 @@ void CVS::undoLast()
 }
 
 
-void CVS::getLog(string const &)
+void CVS::getLog(string const & tmpf)
 {
-       lyxerr << "Sorry not implemented." << endl;
+       doVCCommand("cvs log \""
+                   + OnlyFilename(owner_->fileName()) + "\" > " + tmpf,
+                   owner_->filePath());
 }