+ if (locked_mode_)
+ return isLocked();
+ else
+ return true;
+}
+
+
+// FIXME Correctly return code should be checked instead of this.
+// This would need another solution than just plain startscript.
+// Hint from Andre': QProcess::readAllStandardError()...
+string SVN::scanLogFile(FileName const & f, string & status)
+{
+ ifstream ifs(f.toFilesystemEncoding().c_str());
+ string line;
+
+ while (ifs) {
+ getline(ifs, line);
+ lyxerr << line << "\n";
+ if (!line.empty()) status += line + "; ";
+ if (prefixIs(line, "C ") || contains(line, "Commit failed")) {
+ ifs.close();
+ return line;
+ }
+ if (contains(line, "svn:needs-lock")) {
+ ifs.close();
+ return line;
+ }
+ }
+ ifs.close();
+ return string();
+}
+
+
+void SVN::fileLock(bool lock, FileName const & tmpf, string &status)
+{
+ if (!locked_mode_ || (isLocked() == lock))
+ return;
+
+ string arg = lock ? "lock " : "unlock ";
+ doVCCommand("svn "+ arg + quoteName(onlyFilename(owner_->absFileName()))
+ + " > " + quoteName(tmpf.toFilesystemEncoding()),
+ FileName(owner_->filePath()));
+
+ ifstream ifs(tmpf.toFilesystemEncoding().c_str());
+ string line;
+ while (ifs) {
+ getline(ifs, line);
+ if (!line.empty()) status += line + "; ";
+ }
+ ifs.close();
+
+ if (!isLocked() && lock)
+ frontend::Alert::error(_("Revision control error."),
+ _("Error when acquiring write lock.\n"
+ "Most probably another user is editing\n"
+ "the current document now!\n"
+ "Also check the access to the repository."));
+ if (isLocked() && !lock)
+ frontend::Alert::error(_("Revision control error."),
+ _("Error when releasing write lock.\n"
+ "Check the access to the repository."));