]> git.lyx.org Git - lyx.git/blobdiff - src/buffer_funcs.C
- Link against qt-mt333.lib which is what the current qt3 cvs produces
[lyx.git] / src / buffer_funcs.C
index 5d28338ac9a81ba7a1a02630c6a3bdd25c3efc92..8ffce464dfabb885bbfcd7b1322f0885bffc5fbd 100644 (file)
 
 #include "frontends/Alert.h"
 
-#include "support/FileInfo.h"
 #include "support/filetools.h"
+#include "support/fs_extras.h"
 #include "support/lyxlib.h"
 
 #include <boost/bind.hpp>
+#include <boost/filesystem/operations.hpp>
 
 using lyx::support::bformat;
-using lyx::support::FileInfo;
-using lyx::support::IsFileWriteable;
 using lyx::support::LibFileSearch;
 using lyx::support::MakeDisplayPath;
 using lyx::support::OnlyFilename;
@@ -45,16 +44,18 @@ using lyx::support::unlink;
 
 using std::string;
 
+namespace fs = boost::filesystem;
 
 extern BufferList bufferlist;
 
 namespace {
 
-bool readFile(Buffer * b, string const & s)
+bool readFile(Buffer * const b, string const & s)
 {
+       BOOST_ASSERT(b);
+
        // File information about normal file
-       FileInfo fileN(s);
-       if (!fileN.exist()) {
+       if (!fs::exists(s)) {
                string const file = MakeDisplayPath(s, 50);
                string text = bformat(_("The specified document\n%1$s"
                                        "\ncould not be read."), file);
@@ -64,15 +65,15 @@ bool readFile(Buffer * b, string const & s)
 
        // Check if emergency save file exists and is newer.
        string const e = OnlyPath(s) + OnlyFilename(s) + ".emergency";
-       FileInfo fileE(e);
 
-       if (fileE.exist() && fileN.exist()
-           && fileE.getModificationTime() > fileN.getModificationTime())
+       if (fs::exists(e) && fs::exists(s)
+           && fs::last_write_time(e) > fs::last_write_time(s))
        {
                string const file = MakeDisplayPath(s, 20);
-               string text = bformat(_("An emergency save of the document "
-                                       "%1$s exists.\n\n"
-                                       "Recover emergency save?"), file);
+               string const text =
+                       bformat(_("An emergency save of the document "
+                                 "%1$s exists.\n\n"
+                                 "Recover emergency save?"), file);
                switch (Alert::prompt(_("Load emergency save?"), text, 0, 2,
                                      _("&Recover"),  _("&Load Original"),
                                      _("&Cancel")))
@@ -90,15 +91,15 @@ bool readFile(Buffer * b, string const & s)
 
        // Now check if autosave file is newer.
        string const a = OnlyPath(s) + '#' + OnlyFilename(s) + '#';
-       FileInfo fileA(a);
 
-       if (fileA.exist() && fileN.exist()
-           && fileA.getModificationTime() > fileN.getModificationTime())
+       if (fs::exists(a) && fs::exists(s)
+           && fs::last_write_time(a) > fs::last_write_time(s))
        {
                string const file = MakeDisplayPath(s, 20);
-               string text = bformat(_("The backup of the document "
-                                       "%1$s is newer.\n\nLoad the "
-                                       "backup instead?"), file);
+               string const text =
+                       bformat(_("The backup of the document "
+                                 "%1$s is newer.\n\nLoad the "
+                                 "backup instead?"), file);
                switch (Alert::prompt(_("Load backup?"), text, 0, 2,
                                      _("&Load backup"), _("Load &original"),
                                      _("&Cancel") ))
@@ -125,22 +126,22 @@ bool readFile(Buffer * b, string const & s)
 
 bool loadLyXFile(Buffer * b, string const & s)
 {
-       switch (IsFileWriteable(s)) {
-       case 0:
-               b->setReadonly(true);
-               // Fall through
-       case 1:
+       BOOST_ASSERT(b);
+
+       if (fs::is_readable(s)) {
                if (readFile(b, s)) {
                        b->lyxvc().file_found_hook(s);
+                       if (!fs::is_writable(s))
+                               b->setReadonly(true);
                        return true;
                }
-               break;
-       case -1:
+       } else {
                string const file = MakeDisplayPath(s, 20);
                // Here we probably should run
                if (LyXVC::file_not_found_hook(s)) {
-                       string text = bformat(_("Do you want to retrieve the document"
-                               " %1$s from version control?"), file);
+                       string const text =
+                               bformat(_("Do you want to retrieve the document"
+                                         " %1$s from version control?"), file);
                        int const ret = Alert::prompt(_("Retrieve from version control?"),
                                text, 0, 1, _("&Retrieve"), _("&Cancel"));
 
@@ -152,17 +153,17 @@ bool loadLyXFile(Buffer * b, string const & s)
                                return loadLyXFile(b, s);
                        }
                }
-               break;
        }
        return false;
 }
 
 
 Buffer * newFile(string const & filename, string const & templatename,
-                bool isNamed)
+                bool const isNamed)
 {
        // get a free buffer
        Buffer * b = bufferlist.newBuffer(filename);
+       BOOST_ASSERT(b);
 
        string tname;
        // use defaults.lyx as a default template if it exists.
@@ -251,4 +252,3 @@ int countWords(DocIterator const & from, DocIterator const & to)
 
        return count;
 }
-