X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Flib%2Fext.cc;fp=src%2Flib%2Fext.cc;h=49e63d6481c1c6300f5d6927aa4e6b0776fc80b5;hb=4bdaccb5ede7d9a1066e0a0665fcfce9b1e3241e;hp=5e2ff7d9cbd93a4463f4c5f05ae661a7f955b7b6;hpb=6d101863c87b34af5c3992168182e80445e56ec7;p=dcpomatic.git diff --git a/src/lib/ext.cc b/src/lib/ext.cc index 5e2ff7d9c..49e63d648 100644 --- a/src/lib/ext.cc +++ b/src/lib/ext.cc @@ -78,16 +78,18 @@ uint64_t constexpr block_size = 4096 * 4096; static void -count (boost::filesystem::path dir, uint64_t& total_bytes) +count (std::vector dirs, uint64_t& total_bytes) { - dir = dcp::fix_long_path (dir); - using namespace boost::filesystem; - for (auto i: directory_iterator(dir)) { - if (is_directory(i)) { - count (i, total_bytes); - } else { - total_bytes += file_size (i); + + for (auto dir: dirs) { + dir = dcp::fix_long_path(dir); + for (auto path: directory_iterator(dir)) { + if (is_directory(path)) { + count({path}, total_bytes); + } else { + total_bytes += file_size(path); + } } } } @@ -277,9 +279,9 @@ format_progress (void* context, float progress) void #ifdef DCPOMATIC_WINDOWS -dcpomatic::write (boost::filesystem::path dcp_path, string device, string, Nanomsg* nanomsg) +dcpomatic::write (vector dcp_paths, string device, string, Nanomsg* nanomsg) #else -dcpomatic::write (boost::filesystem::path dcp_path, string device, string posix_partition, Nanomsg* nanomsg) +dcpomatic::write (vector dcp_paths, string device, string posix_partition, Nanomsg* nanomsg) #endif try { @@ -390,11 +392,13 @@ try LOG_DISK_NC ("Mounted device"); uint64_t total_bytes = 0; - count (dcp_path, total_bytes); + count (dcp_paths, total_bytes); uint64_t total_remaining = total_bytes; vector copied_files; - copy (dcp_path, "/mp", total_remaining, total_bytes, copied_files, nanomsg); + for (auto dcp_path: dcp_paths) { + copy (dcp_path, "/mp", total_remaining, total_bytes, copied_files, nanomsg); + } /* Unmount and re-mount to make sure the write has finished */ r = ext4_umount("/mp/");