diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2020-08-17 12:04:33 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2020-08-17 12:04:33 +0200 |
commit | 5521a0edd9a2ba8429f7d2e48f754c9d6f66cc3b (patch) | |
tree | ec1922b3c804fbd472b8cc977f332ad0f5a4355a /libbuild2/filesystem.cxx | |
parent | 534ca7619a62a74bce8e4b30931aaf99f9c3beb6 (diff) |
Add mvfile() filesystem utility function
Diffstat (limited to 'libbuild2/filesystem.cxx')
-rw-r--r-- | libbuild2/filesystem.cxx | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libbuild2/filesystem.cxx b/libbuild2/filesystem.cxx index 259de26..0072408 100644 --- a/libbuild2/filesystem.cxx +++ b/libbuild2/filesystem.cxx @@ -102,6 +102,27 @@ namespace build2 return ms; } + void + mvfile (const path& f, const path& t, uint16_t v) + { + if (verb >= v) + text << "mv " << f << ' ' << t; + + try + { + butl::mvfile (f, t, (cpflags::overwrite_content | + cpflags::overwrite_permissions)); + } + catch (const io_error& e) + { + fail << "unable to overwrite " << t << " with " << f << ": " << e; + } + catch (const system_error& e) // EACCES, etc. + { + fail << "unable to move " << f << " to " << t << ": " << e; + } + } + fs_status<rmfile_status> rmsymlink (context& ctx, const path& p, bool d, uint16_t v) { |