diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2015-06-11 16:53:03 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2015-06-11 16:53:03 +0200 |
commit | f4660720e3ab0dc70d31fd39d48199590810ab03 (patch) | |
tree | b8396646af57e03855aa93d798920d987fa3b0b7 /tests/manifest-roundtrip/driver.cxx | |
parent | 2ffe5ac2998b90c004de4f13e199c7ee965c3f75 (diff) |
Implement manifest serializer
Diffstat (limited to 'tests/manifest-roundtrip/driver.cxx')
-rw-r--r-- | tests/manifest-roundtrip/driver.cxx | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/manifest-roundtrip/driver.cxx b/tests/manifest-roundtrip/driver.cxx new file mode 100644 index 0000000..45abc67 --- /dev/null +++ b/tests/manifest-roundtrip/driver.cxx @@ -0,0 +1,57 @@ +// file : tests/manifest-roundtrip/driver.cxx -*- C++ -*- +// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#include <fstream> +#include <iostream> + +#include <bpkg/manifest-parser> +#include <bpkg/manifest-serializer> + +using namespace std; +using namespace bpkg; + +int +main (int argc, char* argv[]) +{ + if (argc != 2) + { + cerr << "usage: " << argv[0] << " <file>" << endl; + return 1; + } + + try + { + ifstream ifs; + ifs.exceptions (ifstream::badbit | ifstream::failbit); + ifs.open (argv[1], ifstream::in | ifstream::binary); + + manifest_parser p (ifs, ""); + manifest_serializer s (cout, "stdout"); + + for (bool eom (true), eos (false); !eos; ) + { + auto nv (p.next ()); + + if (nv.empty ()) // End pair. + { + eos = eom; + eom = true; + } + else + eom = false; + + s.next (nv.name, nv.value); + } + } + catch (const ios_base::failure&) + { + cerr << "io failure" << endl; + return 1; + } + catch (const std::exception& e) + { + cerr << e.what () << endl; + return 1; + } +} |