From 8b5e3e0a8f9ec8852cf2f15dab53bfa4436bea87 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Thu, 9 Mar 2017 02:24:54 +0300 Subject: Add mventry(), mvfile() and mvdir() --- tests/mventry/driver.cxx | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tests/mventry/driver.cxx (limited to 'tests/mventry/driver.cxx') diff --git a/tests/mventry/driver.cxx b/tests/mventry/driver.cxx new file mode 100644 index 0000000..cf6099c --- /dev/null +++ b/tests/mventry/driver.cxx @@ -0,0 +1,49 @@ +// file : tests/mventry/driver.cxx -*- C++ -*- +// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#include +#include + +#include +#include // operator<<(ostream, exception) +#include + +using namespace std; +using namespace butl; + +// Usage: argv[0] +// +// Rename a file, directory or symlink or move it to the specified directory. +// For the later case the destination path must have a trailing directory +// separator. If succeed then exits with the zero code, otherwise prints the +// error descriptions and exits with the one code. +// +int +main (int argc, const char* argv[]) +try +{ + assert (argc == 3); + + path from (argv[1]); + path to (argv[2]); + + cpflags fl (cpflags::overwrite_permissions | cpflags::overwrite_content); + + if (to.to_directory ()) + mventry_into (from, path_cast (move (to)), fl); + else + mventry (from, to, fl); + + return 0; +} +catch (const invalid_path& e) +{ + cerr << e << ": " << e.path << endl; + return 1; +} +catch (const system_error& e) +{ + cerr << e << endl; + return 1; +} -- cgit v1.1