Remove in-place translations support.
[dcpomatic.git] / src / lib / file_log.cc
index 5cc9c556942b4868de44a835ce305f2b0eebab12..5265e2a9dddfd8704e5f4e649809a4f1c3b6a051 100644 (file)
@@ -22,6 +22,8 @@
 #include "file_log.h"
 #include "cross.h"
 #include "config.h"
+#include <dcp/file.h>
+#include <dcp/filesystem.h>
 #include <cstdio>
 #include <iostream>
 #include <cerrno>
@@ -51,14 +53,13 @@ FileLog::FileLog (boost::filesystem::path file, int types)
 void
 FileLog::do_log (shared_ptr<const LogEntry> entry)
 {
-       auto f = fopen_boost (_file, "a");
+       dcp::File f(_file, "a");
        if (!f) {
                cout << "(could not log to " << _file.string() << " error " << errno << "): " << entry->get() << "\n";
                return;
        }
 
-       fprintf (f, "%s\n", entry->get().c_str());
-       fclose (f);
+       fprintf(f.get(), "%s\n", entry->get().c_str());
 }
 
 
@@ -69,38 +70,39 @@ FileLog::head_and_tail (int amount) const
 
        uintmax_t head_amount = amount;
        uintmax_t tail_amount = amount;
-       uintmax_t size = boost::filesystem::file_size (_file);
+       boost::system::error_code ec;
+       uintmax_t size = dcp::filesystem::file_size(_file, ec);
+       if (size == static_cast<uintmax_t>(-1)) {
+               return "";
+       }
 
        if (size < (head_amount + tail_amount)) {
                head_amount = size;
                tail_amount = 0;
        }
 
-       auto f = fopen_boost (_file, "r");
+       dcp::File f(_file, "r");
        if (!f) {
                return "";
        }
 
        string out;
 
-       auto buffer = new char[max(head_amount, tail_amount) + 1];
+       std::vector<char> buffer(max(head_amount, tail_amount) + 1);
 
-       int N = fread (buffer, 1, head_amount, f);
+       int N = f.read(buffer.data(), 1, head_amount);
        buffer[N] = '\0';
-       out += string (buffer);
+       out += string (buffer.data());
 
        if (tail_amount > 0) {
                out +=  "\n .\n .\n .\n";
 
-               fseek (f, - tail_amount - 1, SEEK_END);
+               f.seek(- tail_amount - 1, SEEK_END);
 
-               N = fread (buffer, 1, tail_amount, f);
+               N = f.read(buffer.data(), 1, tail_amount);
                buffer[N] = '\0';
-               out += string (buffer) + "\n";
+               out += string(buffer.data()) + "\n";
        }
 
-       delete[] buffer;
-       fclose (f);
-
        return out;
 }