diff options
Diffstat (limited to 'build2/version/utility.cxx')
-rw-r--r-- | build2/version/utility.cxx | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/build2/version/utility.cxx b/build2/version/utility.cxx deleted file mode 100644 index 8286ff8..0000000 --- a/build2/version/utility.cxx +++ /dev/null @@ -1,81 +0,0 @@ -// file : build2/version/utility.cxx -*- C++ -*- -// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#include <build2/version/utility.hxx> - -#include <libbutl/manifest-parser.mxx> -#include <libbutl/manifest-serializer.mxx> - -#include <libbuild2/diagnostics.hxx> - -using namespace butl; - -namespace build2 -{ - namespace version - { - auto_rmfile - fixup_manifest (const path& in, path out, const standard_version& v) - { - auto_rmfile r (move (out), !dry_run /* active */); - - if (!dry_run) - { - try - { - permissions perm (path_permissions (in)); - - ifdstream ifs (in); - manifest_parser p (ifs, in.string ()); - - auto_fd ofd (fdopen (r.path, - fdopen_mode::out | - fdopen_mode::create | - fdopen_mode::exclusive | - fdopen_mode::binary, - perm)); - - ofdstream ofs (move (ofd)); - manifest_serializer s (ofs, r.path.string ()); - - manifest_name_value nv (p.next ()); - assert (nv.name.empty () && nv.value == "1"); // We just loaded it. - s.next (nv.name, nv.value); - - for (nv = p.next (); !nv.empty (); nv = p.next ()) - { - if (nv.name == "version") - nv.value = v.string (); - - s.next (nv.name, nv.value); - } - - s.next (nv.name, nv.value); // End of manifest. - s.next (nv.name, nv.value); // End of stream. - - ofs.close (); - ifs.close (); - } - catch (const manifest_parsing& e) - { - location l (&in, e.line, e.column); - fail (l) << e.description; - } - catch (const manifest_serialization& e) - { - location l (&r.path); - fail (l) << e.description; - } - catch (const io_error& e) - { - fail << "io error: " << e << - info << "while reading " << in << - info << "while writing " << r.path; - } - } - - return r; - } - } -} |