#include <boost/filesystem.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/optional.hpp>
+#include <boost/function.hpp>
#ifdef DCPOMATIC_WINDOWS
#define WEXITSTATUS(w) (w)
#ifdef DCPOMATIC_DISK
extern boost::filesystem::path disk_writer_path ();
#endif
-#ifdef DCPOMATIC_OSX
-extern boost::filesystem::path app_contents ();
-#endif
#ifdef DCPOMATIC_WINDOWS
extern void maybe_open_console ();
#endif
extern boost::filesystem::path shared_path ();
extern FILE * fopen_boost (boost::filesystem::path, std::string);
extern int dcpomatic_fseek (FILE *, int64_t, int);
-extern void start_batch_converter (boost::filesystem::path dcpomatic);
-extern void start_player (boost::filesystem::path dcpomatic);
+extern void start_batch_converter ();
+extern void start_player ();
extern uint64_t thread_id ();
extern int avio_open_boost (AVIOContext** s, boost::filesystem::path file, int flags);
extern boost::filesystem::path home_directory ();
extern bool running_32_on_64 ();
extern void unprivileged ();
extern boost::filesystem::path config_path ();
+extern boost::filesystem::path directory_containing_executable ();
class PrivilegeEscalator
{
class Drive
{
public:
- Drive (std::string internal_name, uint64_t size, bool mounted, boost::optional<std::string> vendor, boost::optional<std::string> model)
- : _internal_name(internal_name)
+ Drive (std::string device, std::vector<boost::filesystem::path> mount_points, uint64_t size, boost::optional<std::string> vendor, boost::optional<std::string> model)
+ : _device(device)
+ , _mount_points(mount_points)
, _size(size)
- , _mounted(mounted)
, _vendor(vendor)
, _model(model)
{}
+ explicit Drive (std::string);
+
+ std::string as_xml () const;
+
std::string description () const;
- std::string internal_name () const {
- return _internal_name;
+
+ std::string device () const {
+ return _device;
}
+
bool mounted () const {
- return _mounted;
+ return !_mount_points.empty();
}
+ std::string log_summary () const;
+
+ /** Unmount any mounted partitions on a drive.
+ * @return true on success, false on failure.
+ */
+ bool unmount ();
+
+ static std::vector<Drive> get ();
+
private:
- std::string _internal_name;
+ std::string _device;
+ std::vector<boost::filesystem::path> _mount_points;
/** size in bytes */
uint64_t _size;
- bool _mounted;
boost::optional<std::string> _vendor;
boost::optional<std::string> _model;
};
-std::vector<Drive> get_drives ();
-/** Unmount any mounted partitions on a drive.
- * @return true on success, false on failure.
- */
-bool unmount_drive (std::string drive);
+void disk_write_finished ();
#endif