diff options
Diffstat (limited to 'libs/pbd')
-rw-r--r-- | libs/pbd/SConscript | 3 | ||||
-rw-r--r-- | libs/pbd/copyfile.cc | 38 | ||||
-rw-r--r-- | libs/pbd/pbd/copyfile.h | 6 |
3 files changed, 46 insertions, 1 deletions
diff --git a/libs/pbd/SConscript b/libs/pbd/SConscript index f5c65c3b2c..afb24a4311 100644 --- a/libs/pbd/SConscript +++ b/libs/pbd/SConscript @@ -20,8 +20,9 @@ pbd.Append(POTFILE=domain + '.pot') pbd_files = Split(""" basename.cc base_ui.cc -convert.cc command.cc +convert.cc +copyfile.cc controllable.cc enumwriter.cc dmalloc.cc diff --git a/libs/pbd/copyfile.cc b/libs/pbd/copyfile.cc new file mode 100644 index 0000000000..d36ecef58a --- /dev/null +++ b/libs/pbd/copyfile.cc @@ -0,0 +1,38 @@ +#include <fstream> +#include <unistd.h> + +#include <pbd/copyfile.h> +#include <pbd/error.h> +#include <pbd/compose.h> + +#include "i18n.h" + +using namespace PBD; +using namespace std; + +int +PBD::copy_file (Glib::ustring from, Glib::ustring to) +{ + ifstream in (from.c_str()); + ofstream out (to.c_str()); + + if (!in) { + error << string_compose (_("Could not open %1 for copy"), from) << endmsg; + return -1; + } + + if (!out) { + error << string_compose (_("Could not open %1 as copy"), to) << endmsg; + return -1; + } + + out << in.rdbuf(); + + if (!in || !out) { + error << string_compose (_("Could not copy existing file %1 to %2"), from, to) << endmsg; + unlink (to.c_str()); + return -1; + } + + return 0; +} diff --git a/libs/pbd/pbd/copyfile.h b/libs/pbd/pbd/copyfile.h new file mode 100644 index 0000000000..8a1bf242bb --- /dev/null +++ b/libs/pbd/pbd/copyfile.h @@ -0,0 +1,6 @@ +#include <glibmm/ustring.h> + +namespace PBD { + + int copy_file (Glib::ustring from, Glib::ustring to); +} |