This is an automated email from the git hooks/post-receive script. sebastic pushed a commit to branch master in repository osmium-tool.
commit a639f2272c331277c55318d222cb4a09ccb300e1 Author: Bas Couwenberg <[email protected]> Date: Sun Nov 20 19:56:35 2016 +0100 Drop patches, applied upstream. --- debian/changelog | 1 + debian/patches/libosmium-2.10.2.patch | 1336 --------------------------------- debian/patches/series | 2 - debian/patches/spelling-errors.patch | 47 -- 4 files changed, 1 insertion(+), 1385 deletions(-) diff --git a/debian/changelog b/debian/changelog index d6e234e..a5773ae 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ osmium-tool (1.4.1-1) UNRELEASED; urgency=medium * New upstream release. + * Drop patches, applied upstream. -- Bas Couwenberg <[email protected]> Sun, 20 Nov 2016 19:55:52 +0100 diff --git a/debian/patches/libosmium-2.10.2.patch b/debian/patches/libosmium-2.10.2.patch deleted file mode 100644 index 840b686..0000000 --- a/debian/patches/libosmium-2.10.2.patch +++ /dev/null @@ -1,1336 +0,0 @@ -Description: Add support for libosmium 2.10.2. -Origin: https://github.com/osmcode/osmium-tool - ---- a/CHANGELOG.md -+++ b/CHANGELOG.md -@@ -8,10 +8,28 @@ This project adheres to [Semantic Versio - - ### Added - -+- Add hint to error message about `--overwrite` option when trying to open -+ an existing file. -+- Check the required libosmium version in CMake build. -+ - ### Changed - -+- Add --ignore-missing-nodes to `add-locations-to-ways` subcommand. If this -+ is not set, the command will now fail if there are missing nodes needed -+ for ways. -+- The `check-refs` and `getid` subcommands now use the IdSet class from the -+ newest libosmium making them more efficient (especially on very large input -+ files). -+- Improved error messages for low-level errors. -+ - ### Fixed - -+- Consistently handle `--output-header` option in all commands that create -+ standard OSM files. -+- Handling of some output options was not correct in `diff` command. They -+ do now what is documented and it is documented what they do. -+- Progress bar and output from verbose mode will now be kept separate. -+ - - ## [1.4.0] - 2016-09-15 - -@@ -27,7 +45,7 @@ This project adheres to [Semantic Versio - shown in verbose mode. - - Added `iwyu` target to CMake config. - - Progress bars will be shown on some commands. (This is configurable at -- run time with the --progress and --no-progress options.) -+ run time with the `--progress` and `--no-progress` options.) - - ### Changed - ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -44,7 +44,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) - find_package(Boost 1.55.0 REQUIRED COMPONENTS program_options) - include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) - --find_package(Osmium REQUIRED COMPONENTS io) -+find_package(Osmium 2.10.2 REQUIRED COMPONENTS io) - include_directories(SYSTEM ${OSMIUM_INCLUDE_DIRS}) - - ---- a/README.md -+++ b/README.md -@@ -4,8 +4,8 @@ - A multipurpose command line tool for working with OpenStreetMap data based on - the Osmium library. - --[](http://travis-ci.org/osmcode/osmium-tool) --[](https://ci.appveyor.com/project/Mapbox/osmium-tool) -+[](http://travis-ci.org/osmcode/osmium-tool) -+[](https://ci.appveyor.com/project/Mapbox/osmium-tool) - - ## Prerequisites - -@@ -14,11 +14,11 @@ later are known to work. It also works o - - You also need the following libraries: - -- Libosmium (>= 2.9.0) -+ Libosmium (>= 2.10.2) - http://osmcode.org/libosmium - Debian/Ubuntu: libosmium2-dev - -- Protozero (>= 1.4.0) -+ Protozero (>= 1.4.4) - This is included in the libosmium repository and might or might not - have been installed with it. See the libosmium README. - https://github.com/mapbox/protozero -@@ -112,7 +112,7 @@ More extensive tests of the libosmium I/ - - ## License - --Copyright (C) 2013-2016 Jochen Topf <[email protected]> -+Copyright (C) 2013-2016 Jochen Topf ([email protected]) - - This program is available under the GNU GENERAL PUBLIC LICENSE Version 3. - See the file LICENSE.txt for the complete text of the license. -@@ -120,5 +120,5 @@ See the file LICENSE.txt for the complet - - ## Authors - --This program was written and is maintained by Jochen Topf <[email protected]>. -+This program was written and is maintained by Jochen Topf ([email protected]). - ---- a/cmake/FindOsmium.cmake -+++ b/cmake/FindOsmium.cmake -@@ -2,8 +2,8 @@ - # - # FindOsmium.cmake - # --# Find the Libosmium headers and, optionally, several components needed for --# different Libosmium functions. -+# Find the Libosmium headers and, optionally, several components needed -+# for different Libosmium functions. - # - #---------------------------------------------------------------------- - # -@@ -18,9 +18,12 @@ - # - # Then add the following in your CMakeLists.txt: - # --# find_package(Osmium REQUIRED COMPONENTS <XXX>) -+# find_package(Osmium [version] REQUIRED COMPONENTS <XXX>) - # include_directories(SYSTEM ${OSMIUM_INCLUDE_DIRS}) - # -+# The version number is optional. If it is not set, any version of -+# libosmium will do. -+# - # For the <XXX> substitute a space separated list of one or more of the - # following components: - # -@@ -51,10 +54,9 @@ - # - #---------------------------------------------------------------------- - --# Look for the header file. --find_path(OSMIUM_INCLUDE_DIR osmium/osm.hpp -- PATH_SUFFIXES include -- PATHS -+# This is the list of directories where we look for osmium and protozero -+# includes. -+set(_osmium_include_path - ../libosmium - ~/Library/Frameworks - /Library/Frameworks -@@ -62,6 +64,22 @@ find_path(OSMIUM_INCLUDE_DIR osmium/osm. - /opt - ) - -+# Look for the header file. -+find_path(OSMIUM_INCLUDE_DIR osmium/version.hpp -+ PATH_SUFFIXES include -+ PATHS ${_osmium_include_path} -+) -+ -+# Check libosmium version number -+if(Osmium_FIND_VERSION) -+ file(STRINGS "${OSMIUM_INCLUDE_DIR}/osmium/version.hpp" _libosmium_version_define REGEX "#define LIBOSMIUM_VERSION_STRING") -+ if("${_libosmium_version_define}" MATCHES "#define LIBOSMIUM_VERSION_STRING \"([0-9.]+)\"") -+ set(_libosmium_version "${CMAKE_MATCH_1}") -+ else() -+ set(_libosmium_version "unknown") -+ endif() -+endif() -+ - set(OSMIUM_INCLUDE_DIRS "${OSMIUM_INCLUDE_DIR}") - - #---------------------------------------------------------------------- -@@ -95,17 +113,31 @@ if(Osmium_USE_PBF) - find_package(ZLIB) - find_package(Threads) - -- list(APPEND OSMIUM_EXTRA_FIND_VARS ZLIB_FOUND Threads_FOUND) -- if(ZLIB_FOUND AND Threads_FOUND) -+ message(STATUS "Looking for protozero") -+ find_path(PROTOZERO_INCLUDE_DIR protozero/version.hpp -+ PATH_SUFFIXES include -+ PATHS ${_osmium_include_path} -+ ${OSMIUM_INCLUDE_DIR} -+ ) -+ if(PROTOZERO_INCLUDE_DIR) -+ message(STATUS "Looking for protozero - found") -+ else() -+ message(STATUS "Looking for protozero - not found") -+ endif() -+ -+ list(APPEND OSMIUM_EXTRA_FIND_VARS ZLIB_FOUND Threads_FOUND PROTOZERO_INCLUDE_DIR) -+ if(ZLIB_FOUND AND Threads_FOUND AND PROTOZERO_INCLUDE_DIR) - list(APPEND OSMIUM_PBF_LIBRARIES - ${ZLIB_LIBRARIES} - ${CMAKE_THREAD_LIBS_INIT} - ) - if(WIN32) -+ # This is needed for the ntohl() function - list(APPEND OSMIUM_PBF_LIBRARIES ws2_32) - endif() - list(APPEND OSMIUM_INCLUDE_DIRS - ${ZLIB_INCLUDE_DIR} -+ ${PROTOZERO_INCLUDE_DIR} - ) - else() - message(WARNING "Osmium: Can not find some libraries for PBF input/output, please install them or configure the paths.") -@@ -203,7 +235,7 @@ if(Osmium_USE_SPARSEHASH) - if(SPARSEHASH_INCLUDE_DIR) - # Find size of sparsetable::size_type. This does not work on older - # CMake versions because they can do this check only in C, not in C++. -- if (NOT CMAKE_VERSION VERSION_LESS 3.0) -+ if(NOT CMAKE_VERSION VERSION_LESS 3.0) - include(CheckTypeSize) - set(CMAKE_REQUIRED_INCLUDES ${SPARSEHASH_INCLUDE_DIR}) - set(CMAKE_EXTRA_INCLUDE_FILES "google/sparsetable") -@@ -253,13 +285,15 @@ endif() - # Check that all required libraries are available - # - #---------------------------------------------------------------------- --if (OSMIUM_EXTRA_FIND_VARS) -+if(OSMIUM_EXTRA_FIND_VARS) - list(REMOVE_DUPLICATES OSMIUM_EXTRA_FIND_VARS) - endif() --# Handle the QUIETLY and REQUIRED arguments and set OSMIUM_FOUND to TRUE if --# all listed variables are TRUE. -+# Handle the QUIETLY and REQUIRED arguments and the optional version check -+# and set OSMIUM_FOUND to TRUE if all listed variables are TRUE. - include(FindPackageHandleStandardArgs) --find_package_handle_standard_args(Osmium REQUIRED_VARS OSMIUM_INCLUDE_DIR ${OSMIUM_EXTRA_FIND_VARS}) -+find_package_handle_standard_args(Osmium -+ REQUIRED_VARS OSMIUM_INCLUDE_DIR ${OSMIUM_EXTRA_FIND_VARS} -+ VERSION_VAR _libosmium_version) - unset(OSMIUM_EXTRA_FIND_VARS) - - #---------------------------------------------------------------------- ---- a/man/osmium-add-locations-to-ways.md -+++ b/man/osmium-add-locations-to-ways.md -@@ -16,6 +16,10 @@ IDs of the nodes. This program will copy - taking the locations from the nodes and adding them to the ways. This makes - it easier for other programs to assemble the way geometries. - -+The input file must contain all nodes needed for the ways, otherwise there will -+be an error. You can change this behaviour using the `--ignore-missing-nodes` -+option. -+ - Nodes without any tags will not be copied (unless the **--keep-untagged-nodes**, - **-n** option is used). The size of the output file will be similar or a bit - smaller than the input file (unless the **--keep-untagged-nodes**, -@@ -46,6 +50,11 @@ This program will not work on full histo - -n, --keep-untagged-nodes - : Keep the untagged nodes in the output file. - -+--ignore-missing-nodes -+: If this is not set a missing node needed for a way results in an error. -+ If this is set, errors are ignored and the way will have an invalid -+ location set for the missing node. -+ - @MAN_COMMON_OPTIONS@ - @MAN_PROGRESS_OPTIONS@ - @MAN_INPUT_OPTIONS@ ---- a/man/osmium-getid.md -+++ b/man/osmium-getid.md -@@ -58,6 +58,8 @@ If referenced objects are missing from t - of those objects is written out to *stderr* at the end of the program unless - the **-H**, **--history** option was given. - -+This command will not work with negative IDs. -+ - - # OPTIONS - ---- a/src/cmd.hpp -+++ b/src/cmd.hpp -@@ -47,6 +47,10 @@ const char* yes_no(bool choice) noexcept - void warning(const char* text); - std::size_t file_size_sum(std::vector<osmium::io::File> files); - -+namespace osmium { namespace io { -+ class Header; -+}} -+ - /** - * Virtual base class for commands that can be called from the command line. - */ -@@ -62,7 +66,6 @@ class Command { - - protected: - -- bool m_debug {false}; - osmium::util::VerboseOutput m_vout {false}; - - public: -@@ -175,10 +178,11 @@ public: - - class with_osm_output { - --protected: -- - std::string m_generator; - std::vector<std::string> m_output_headers; -+ -+protected: -+ - std::string m_output_filename = "-"; // default: stdout - std::string m_output_format; - osmium::io::File m_output_file; -@@ -202,13 +206,7 @@ public: - return m_output_file; - } - -- const std::string& generator() const { -- return m_generator; -- } -- -- const std::vector<std::string>& output_headers() const { -- return m_output_headers; -- } -+ void setup_header(osmium::io::Header& header) const; - - osmium::io::overwrite output_overwrite() const { - return m_output_overwrite; ---- a/src/command_add_locations_to_ways.cpp -+++ b/src/command_add_locations_to_ways.cpp -@@ -54,6 +54,7 @@ bool CommandAddLocationsToWays::setup(co - ("index-type,i", po::value<std::string>()->default_value(default_index_type), "Index type to use") - ("show-index-types,I", "Show available index types") - ("keep-untagged-nodes,n", "Keep untagged nodes") -+ ("ignore-missing-nodes", "Ignore missing nodes") - ; - - po::options_description opts_common{add_common_options()}; -@@ -101,6 +102,10 @@ bool CommandAddLocationsToWays::setup(co - m_keep_untagged_nodes = true; - } - -+ if (vm.count("ignore-missing-nodes")) { -+ m_ignore_missing_nodes = true; -+ } -+ - return true; - } - -@@ -114,13 +119,6 @@ void CommandAddLocationsToWays::show_arg - m_vout << "\n"; - } - --void CommandAddLocationsToWays::setup_header(osmium::io::Header& header) const { -- header.set("generator", m_generator); -- for (const auto& h : m_output_headers) { -- header.set(h); -- } --} -- - void CommandAddLocationsToWays::copy_data(osmium::ProgressBar& progress_bar, osmium::io::Reader& reader, osmium::io::Writer& writer, location_handler_type& location_handler) { - while (osmium::memory::Buffer buffer = reader.read()) { - progress_bar.update(reader.offset()); -@@ -142,7 +140,10 @@ bool CommandAddLocationsToWays::run() { - const auto& map_factory = osmium::index::MapFactory<osmium::unsigned_object_id_type, osmium::Location>::instance(); - auto location_index = map_factory.create_map(m_index_type_name); - location_handler_type location_handler(*location_index); -- location_handler.ignore_errors(); // XXX -+ -+ if (m_ignore_missing_nodes) { -+ location_handler.ignore_errors(); -+ } - - m_output_file.set("locations_on_ways"); - -@@ -166,6 +167,7 @@ bool CommandAddLocationsToWays::run() { - - osmium::ProgressBar progress_bar{file_size_sum(m_input_files), display_progress()}; - for (const auto& input_file : m_input_files) { -+ progress_bar.remove(); - m_vout << "Copying input file '" << input_file.filename() << "'\n"; - osmium::io::Reader reader(input_file); - ---- a/src/command_add_locations_to_ways.hpp -+++ b/src/command_add_locations_to_ways.hpp -@@ -45,11 +45,11 @@ using location_handler_type = osmium::ha - - class CommandAddLocationsToWays : public Command, public with_multiple_osm_inputs, public with_osm_output { - -- void setup_header(osmium::io::Header& header) const; - void copy_data(osmium::ProgressBar& progress_bar, osmium::io::Reader& reader, osmium::io::Writer& writer, location_handler_type& location_handler); - - std::string m_index_type_name; - bool m_keep_untagged_nodes = false; -+ bool m_ignore_missing_nodes = false; - - public: - ---- a/src/command_apply_changes.cpp -+++ b/src/command_apply_changes.cpp -@@ -169,7 +169,7 @@ bool CommandApplyChanges::run() { - osmium::io::Reader reader{m_input_file, osmium::osm_entity_bits::object}; - - osmium::io::Header header{reader.header()}; -- header.set("generator", m_generator); -+ setup_header(header); - - m_vout << "Opening output file...\n"; - osmium::io::Writer writer{m_output_file, header, m_output_overwrite, m_fsync}; ---- a/src/command_cat.cpp -+++ b/src/command_cat.cpp -@@ -81,13 +81,6 @@ void CommandCat::show_arguments() { - show_object_types(m_vout); - } - --void CommandCat::setup_header(osmium::io::Header& header) const { -- header.set("generator", m_generator); -- for (const auto& h : m_output_headers) { -- header.set(h); -- } --} -- - bool CommandCat::run() { - if (m_input_files.size() == 1) { // single input file - m_vout << "Copying input file '" << m_input_files[0].filename() << "'\n"; -@@ -112,6 +105,7 @@ bool CommandCat::run() { - - osmium::ProgressBar progress_bar{file_size_sum(m_input_files), display_progress()}; - for (const auto& input_file : m_input_files) { -+ progress_bar.remove(); - m_vout << "Copying input file '" << input_file.filename() << "'\n"; - osmium::io::Reader reader{input_file, osm_entity_bits()}; - while (osmium::memory::Buffer buffer = reader.read()) { ---- a/src/command_cat.hpp -+++ b/src/command_cat.hpp -@@ -34,8 +34,6 @@ namespace osmium { namespace io { - - class CommandCat : public Command, public with_multiple_osm_inputs, public with_osm_output { - -- void setup_header(osmium::io::Header& header) const; -- - public: - - CommandCat() = default; ---- a/src/command_changeset_filter.cpp -+++ b/src/command_changeset_filter.cpp -@@ -205,7 +205,7 @@ bool CommandChangesetFilter::run() { - auto input = osmium::io::make_input_iterator_range<osmium::Changeset>(reader); - - osmium::io::Header header{reader.header()}; -- header.set("generator", m_generator); -+ setup_header(header); - - m_vout << "Opening output file...\n"; - osmium::io::Writer writer{m_output_file, header, m_output_overwrite, m_fsync}; ---- a/src/command_check_refs.cpp -+++ b/src/command_check_refs.cpp -@@ -31,7 +31,7 @@ along with this program. If not, see <h - - #include <osmium/handler.hpp> - #include <osmium/handler/check_order.hpp> --#include <osmium/index/bool_vector.hpp> -+#include <osmium/index/id_set.hpp> - #include <osmium/io/reader.hpp> - #include <osmium/osm.hpp> - #include <osmium/util/progress_bar.hpp> -@@ -92,10 +92,10 @@ void CommandCheckRefs::show_arguments() - - class RefCheckHandler : public osmium::handler::Handler { - -- osmium::index::BoolVector<osmium::unsigned_object_id_type> m_nodes; -- osmium::index::BoolVector<osmium::unsigned_object_id_type> m_ways; -+ osmium::index::IdSetDense<osmium::unsigned_object_id_type> m_nodes; -+ osmium::index::IdSetDense<osmium::unsigned_object_id_type> m_ways; -+ osmium::index::IdSetDense<osmium::unsigned_object_id_type> m_relations; - -- std::vector<uint32_t> m_relation_ids; - std::vector<std::pair<uint32_t, uint32_t>> m_relation_refs; - - osmium::handler::CheckOrder m_check_order; -@@ -109,13 +109,15 @@ class RefCheckHandler : public osmium::h - uint64_t m_missing_ways_in_relations = 0; - - osmium::util::VerboseOutput& m_vout; -+ osmium::ProgressBar& m_progress_bar; - bool m_show_ids; - bool m_check_relations; - - public: - -- RefCheckHandler(osmium::util::VerboseOutput& vout, bool show_ids, bool check_relations) : -+ RefCheckHandler(osmium::util::VerboseOutput& vout, osmium::ProgressBar& progress_bar, bool show_ids, bool check_relations) : - m_vout(vout), -+ m_progress_bar(progress_bar), - m_show_ids(show_ids), - m_check_relations(check_relations) { - } -@@ -153,7 +155,7 @@ public: - - m_relation_refs.erase( - std::remove_if(m_relation_refs.begin(), m_relation_refs.end(), [this](std::pair<uint32_t, uint32_t> refs){ -- return std::binary_search(m_relation_ids.begin(), m_relation_ids.end(), refs.first); -+ return m_relations.get(refs.first); - }), - m_relation_refs.end() - ); -@@ -170,6 +172,7 @@ public: - m_check_order.node(node); - - if (m_node_count == 0) { -+ m_progress_bar.remove(); - m_vout << "Reading nodes...\n"; - } - ++m_node_count; -@@ -181,6 +184,7 @@ public: - m_check_order.way(way); - - if (m_way_count == 0) { -+ m_progress_bar.remove(); - m_vout << "Reading ways...\n"; - } - ++m_way_count; -@@ -203,12 +207,13 @@ public: - m_check_order.relation(relation); - - if (m_relation_count == 0) { -+ m_progress_bar.remove(); - m_vout << "Reading relations...\n"; - } - ++m_relation_count; - - if (m_check_relations) { -- m_relation_ids.push_back(uint32_t(relation.id())); -+ m_relations.set(relation.positive_id()); - for (const auto& member : relation.members()) { - switch (member.type()) { - case osmium::item_type::node: -@@ -230,7 +235,7 @@ public: - } - break; - case osmium::item_type::relation: -- if (member.ref() > relation.id() || !std::binary_search(m_relation_ids.begin(), m_relation_ids.end(), uint32_t(member.ref()))) { -+ if (member.ref() > relation.id() || !m_relations.get(member.positive_ref())) { - m_relation_refs.emplace_back(uint32_t(member.ref()), uint32_t(relation.id())); - } - break; -@@ -251,9 +256,9 @@ public: - - bool CommandCheckRefs::run() { - osmium::io::Reader reader{m_input_file}; -- RefCheckHandler handler{m_vout, m_show_ids, m_check_relations}; -- - osmium::ProgressBar progress_bar{reader.file_size(), display_progress()}; -+ RefCheckHandler handler{m_vout, progress_bar, m_show_ids, m_check_relations}; -+ - while (osmium::memory::Buffer buffer = reader.read()) { - progress_bar.update(reader.offset()); - osmium::apply(buffer, handler); -@@ -270,7 +275,9 @@ bool CommandCheckRefs::run() { - } - } - -- std::cerr << "There are " << handler.node_count() << " nodes, " << handler.way_count() << " ways, and " << handler.relation_count() << " relations in this file.\n"; -+ std::cerr << "There are " << handler.node_count() << " nodes, " -+ << handler.way_count() << " ways, and " -+ << handler.relation_count() << " relations in this file.\n"; - - if (m_check_relations) { - std::cerr << "Nodes in ways missing: " << handler.missing_nodes_in_ways() << "\n"; ---- a/src/command_derive_changes.cpp -+++ b/src/command_derive_changes.cpp -@@ -143,8 +143,10 @@ bool CommandDeriveChanges::run() { - if (m_output_file.format() != osmium::io::file_format::xml || !m_output_file.is_true("xml_change_format")) { - warning("Output format chosen is not the XML change format. Use .osc(.gz|bz2) as suffix or -f option.\n"); - } -+ - osmium::io::Header header; -- header.set("generator", m_generator); -+ setup_header(header); -+ - osmium::io::Writer writer{m_output_file, header}; - - m_vout << "Deriving changes...\n"; ---- a/src/command_diff.cpp -+++ b/src/command_diff.cpp -@@ -49,15 +49,17 @@ along with this program. If not, see <h - bool CommandDiff::setup(const std::vector<std::string>& arguments) { - po::options_description opts_cmd{"COMMAND OPTIONS"}; - opts_cmd.add_options() -- ("suppress-common,c", "Suppress common objects") -+ ("object-type,t", po::value<std::vector<std::string>>(), "Read only objects of given type (node, way, relation)") -+ ("output,o", po::value<std::string>(), "Output file") -+ ("output-format,f", po::value<std::string>(), "Format of output file") -+ ("overwrite,O", "Allow existing output file to be overwritten") - ("quiet,q", "Report only when files differ") - ("summary,s", "Show summary on STDERR") -- ("object-type,t", po::value<std::vector<std::string>>(), "Read only objects of given type (node, way, relation)") -+ ("suppress-common,c", "Suppress common objects") - ; - - po::options_description opts_common{add_common_options()}; - po::options_description opts_input{add_multiple_inputs_options()}; -- po::options_description opts_output{add_output_options()}; - - po::options_description hidden; - hidden.add_options() -@@ -65,7 +67,7 @@ bool CommandDiff::setup(const std::vecto - ; - - po::options_description desc; -- desc.add(opts_cmd).add(opts_common).add(opts_input).add(opts_output); -+ desc.add(opts_cmd).add(opts_common).add(opts_input); - - po::options_description parsed_options; - parsed_options.add(desc).add(hidden); -@@ -93,24 +95,16 @@ bool CommandDiff::setup(const std::vecto - m_output_format = vm["output-format"].as<std::string>(); - } - -- if (vm.count("output-header")) { -- m_output_headers = vm["output-header"].as<std::vector<std::string>>(); -- } -- - if (vm.count("overwrite")) { - m_output_overwrite = osmium::io::overwrite::allow; - } - -- if (vm.count("fsync")) { -- m_fsync = osmium::io::fsync::yes; -- } -- - if (vm.count("summary")) { - m_show_summary = true; - } - - if (vm.count("quiet")) { -- if (vm.count("output") || vm.count("output-format") || vm.count("output-header") || vm.count("overwrite") || vm.count("fsync") || vm.count("suppress-common")) { -+ if (vm.count("output") || vm.count("output-format") || vm.count("overwrite") || vm.count("suppress-common")) { - throw argument_error("Do not use --quiet/-q with any of the output options."); - } - m_output_action = "none"; -@@ -218,8 +212,8 @@ class OutputActionOSM : public OutputAct - - public: - -- OutputActionOSM(const osmium::io::File& file) : -- m_writer(file) { -+ OutputActionOSM(const osmium::io::File& file, osmium::io::overwrite ow) : -+ m_writer(file, ow) { - } - - void left(osmium::OSMObject& object) override { -@@ -254,11 +248,11 @@ bool CommandDiff::run() { - std::unique_ptr<OutputAction> action; - - if (m_output_action == "compact") { -- int fd = osmium::io::detail::open_for_writing(m_output_filename, m_output_overwrite); -+ const int fd = osmium::io::detail::open_for_writing(m_output_filename, m_output_overwrite); - action.reset(new OutputActionCompact{fd}); - } else if (m_output_action == "osm") { - m_output_file.set("diff"); -- action.reset(new OutputActionOSM{m_output_file}); -+ action.reset(new OutputActionOSM{m_output_file, m_output_overwrite}); - } - - uint64_t count_left = 0; ---- a/src/command_fileinfo.cpp -+++ b/src/command_fileinfo.cpp -@@ -157,7 +157,7 @@ off_t filesize(const std::string& filena - - struct stat s; - if (::stat(filename.c_str(), &s) == -1) { -- throw std::system_error{errno, std::system_category(), "stat failed"}; -+ throw std::system_error{errno, std::system_category(), std::string{"Could not get file size of file '"} + filename + "'"}; - } - - return s.st_size; ---- a/src/command_getid.cpp -+++ b/src/command_getid.cpp -@@ -44,17 +44,12 @@ along with this program. If not, see <h - #include "command_getid.hpp" - #include "exception.hpp" - --std::set<osmium::object_id_type>& CommandGetId::ids(osmium::item_type type) noexcept { -- return m_ids[osmium::item_type_to_nwr_index(type)]; --} -- --const std::set<osmium::object_id_type>& CommandGetId::ids(osmium::item_type type) const noexcept { -- return m_ids[osmium::item_type_to_nwr_index(type)]; --} -- - void CommandGetId::parse_and_add_id(const std::string& s) { - auto p = osmium::string_to_object_id(s.c_str(), osmium::osm_entity_bits::nwr, m_default_item_type); -- ids(p.first).insert(p.second); -+ if (p.second < 0) { -+ throw std::runtime_error("osmium-getid does not work with negative IDs"); -+ } -+ m_ids(p.first).set(p.second); - } - - void CommandGetId::read_id_file(std::istream& stream) { -@@ -71,15 +66,15 @@ void CommandGetId::read_id_file(std::ist - } - - bool CommandGetId::no_ids() const { -- return ids(osmium::item_type::node).empty() && -- ids(osmium::item_type::way).empty() && -- ids(osmium::item_type::relation).empty(); -+ return m_ids(osmium::item_type::node).empty() && -+ m_ids(osmium::item_type::way).empty() && -+ m_ids(osmium::item_type::relation).empty(); - } - - std::size_t CommandGetId::count_ids() const { -- return ids(osmium::item_type::node).size() + -- ids(osmium::item_type::way).size() + -- ids(osmium::item_type::relation).size(); -+ return m_ids(osmium::item_type::node).size() + -+ m_ids(osmium::item_type::way).size() + -+ m_ids(osmium::item_type::relation).size(); - } - - bool CommandGetId::setup(const std::vector<std::string>& arguments) { -@@ -203,37 +198,37 @@ void CommandGetId::show_arguments() { - if (m_verbose_ids) { - m_vout << " looking for these ids:\n"; - m_vout << " nodes:"; -- for (osmium::object_id_type id : ids(osmium::item_type::node)) { -+ for (osmium::object_id_type id : m_ids(osmium::item_type::node)) { - m_vout << " " << id; - } - m_vout << "\n"; - m_vout << " ways:"; -- for (osmium::object_id_type id : ids(osmium::item_type::way)) { -+ for (osmium::object_id_type id : m_ids(osmium::item_type::way)) { - m_vout << " " << id; - } - m_vout << "\n"; - m_vout << " relations:"; -- for (osmium::object_id_type id : ids(osmium::item_type::relation)) { -+ for (osmium::object_id_type id : m_ids(osmium::item_type::relation)) { - m_vout << " " << id; - } - m_vout << "\n"; - } else { -- m_vout << " looking for " << ids(osmium::item_type::node).size() << " node ID(s), " -- << ids(osmium::item_type::way).size() << " way ID(s), and " -- << ids(osmium::item_type::relation).size() << " relation ID(s)\n"; -+ m_vout << " looking for " << m_ids(osmium::item_type::node).size() << " node ID(s), " -+ << m_ids(osmium::item_type::way).size() << " way ID(s), and " -+ << m_ids(osmium::item_type::relation).size() << " relation ID(s)\n"; - } - } - - osmium::osm_entity_bits::type CommandGetId::get_needed_types() const { - osmium::osm_entity_bits::type types = osmium::osm_entity_bits::nothing; - -- if (! ids(osmium::item_type::node).empty()) { -+ if (! m_ids(osmium::item_type::node).empty()) { - types |= osmium::osm_entity_bits::node; - } -- if (! ids(osmium::item_type::way).empty()) { -+ if (! m_ids(osmium::item_type::way).empty()) { - types |= osmium::osm_entity_bits::way; - } -- if (! ids(osmium::item_type::relation).empty()) { -+ if (! m_ids(osmium::item_type::relation).empty()) { - types |= osmium::osm_entity_bits::relation; - } - -@@ -242,17 +237,17 @@ osmium::osm_entity_bits::type CommandGet - - void CommandGetId::add_nodes(const osmium::Way& way) { - for (const auto& nr : way.nodes()) { -- ids(osmium::item_type::node).insert(nr.ref()); -+ m_ids(osmium::item_type::node).set(nr.positive_ref()); - } - } - - void CommandGetId::add_members(const osmium::Relation& relation) { - for (const auto& member : relation.members()) { -- ids(member.type()).insert(member.ref()); -+ m_ids(member.type()).set(member.positive_ref()); - } - } - --static void print_missing_ids(const char* type, std::set<osmium::object_id_type>& set) { -+static void print_missing_ids(const char* type, const osmium::index::IdSetDense<osmium::unsigned_object_id_type>& set) { - if (set.empty()) { - return; - } -@@ -268,7 +263,7 @@ void CommandGetId::read_id_osm_file(cons - osmium::io::Reader reader{file_name, osmium::osm_entity_bits::object}; - while (osmium::memory::Buffer buffer = reader.read()) { - for (const auto& object : buffer.select<osmium::OSMObject>()) { -- ids(object.type()).insert(object.id()); -+ m_ids(object.type()).set(object.positive_id()); - if (object.type() == osmium::item_type::way) { - add_nodes(static_cast<const osmium::Way&>(object)); - } else if (object.type() == osmium::item_type::relation) { -@@ -282,8 +277,7 @@ void CommandGetId::read_id_osm_file(cons - void CommandGetId::mark_rel_ids(const std::multimap<osmium::object_id_type, osmium::object_id_type>& rel_in_rel, osmium::object_id_type id) { - auto range = rel_in_rel.equal_range(id); - for (auto it = range.first; it != range.second; ++it) { -- if (ids(osmium::item_type::relation).count(it->second) == 0) { -- ids(osmium::item_type::relation).insert(it->second); -+ if (m_ids(osmium::item_type::relation).check_and_set(it->second)) { - mark_rel_ids(rel_in_rel, it->second); - } - } -@@ -299,11 +293,11 @@ bool CommandGetId::find_relations_in_rel - for (const auto& member : relation.members()) { - if (member.type() == osmium::item_type::relation) { - rel_in_rel.emplace(relation.id(), member.ref()); -- } else if (ids(osmium::item_type::relation).count(relation.id())) { -+ } else if (m_ids(osmium::item_type::relation).get(relation.positive_id())) { - if (member.type() == osmium::item_type::node) { -- ids(osmium::item_type::node).insert(member.ref()); -+ m_ids(osmium::item_type::node).set(member.positive_ref()); - } else if (member.type() == osmium::item_type::way) { -- ids(osmium::item_type::way).insert(member.ref()); -+ m_ids(osmium::item_type::way).set(member.positive_ref()); - } - } - } -@@ -315,7 +309,7 @@ bool CommandGetId::find_relations_in_rel - return false; - } - -- for (const osmium::object_id_type id : ids(osmium::item_type::relation)) { -+ for (const osmium::unsigned_object_id_type id : m_ids(osmium::item_type::relation)) { - mark_rel_ids(rel_in_rel, id); - } - -@@ -328,12 +322,12 @@ void CommandGetId::find_nodes_and_ways_i - osmium::io::Reader reader{m_input_file, osmium::osm_entity_bits::relation}; - while (osmium::memory::Buffer buffer = reader.read()) { - for (const auto& relation : buffer.select<osmium::Relation>()) { -- if (ids(osmium::item_type::relation).count(relation.id())) { -+ if (m_ids(osmium::item_type::relation).get(relation.positive_id())) { - for (const auto& member : relation.members()) { - if (member.type() == osmium::item_type::node) { -- ids(osmium::item_type::node).insert(member.ref()); -+ m_ids(osmium::item_type::node).set(member.positive_ref()); - } else if (member.type() == osmium::item_type::way) { -- ids(osmium::item_type::way).insert(member.ref()); -+ m_ids(osmium::item_type::way).set(member.positive_ref()); - } - } - } -@@ -348,7 +342,7 @@ void CommandGetId::find_nodes_in_ways() - osmium::io::Reader reader{m_input_file, osmium::osm_entity_bits::way}; - while (osmium::memory::Buffer buffer = reader.read()) { - for (const auto& way : buffer.select<osmium::Way>()) { -- if (ids(osmium::item_type::way).count(way.id())) { -+ if (m_ids(osmium::item_type::way).get(way.positive_id())) { - add_nodes(way); - } - } -@@ -358,7 +352,7 @@ void CommandGetId::find_nodes_in_ways() - - void CommandGetId::find_referenced_objects() { - m_vout << "Following references...\n"; -- bool todo = !ids(osmium::item_type::relation).empty(); -+ bool todo = !m_ids(osmium::item_type::relation).empty(); - if (todo) { - todo = find_relations_in_relations(); - } -@@ -367,7 +361,7 @@ void CommandGetId::find_referenced_objec - find_nodes_and_ways_in_relations(); - } - -- if (!ids(osmium::item_type::way).empty()) { -+ if (!m_ids(osmium::item_type::way).empty()) { - find_nodes_in_ways(); - } - m_vout << "Done following references.\n"; -@@ -383,7 +377,8 @@ bool CommandGetId::run() { - - m_vout << "Opening output file...\n"; - osmium::io::Header header = reader.header(); -- header.set("generator", m_generator); -+ setup_header(header); -+ - osmium::io::Writer writer{m_output_file, header, m_output_overwrite, m_fsync}; - - m_vout << "Copying from source to output file...\n"; -@@ -391,10 +386,9 @@ bool CommandGetId::run() { - while (osmium::memory::Buffer buffer = reader.read()) { - progress_bar.update(reader.offset()); - for (const auto& object : buffer.select<osmium::OSMObject>()) { -- auto& index = ids(object.type()); -- if (index.count(object.id())) { -+ if (m_ids(object.type()).get(object.positive_id())) { - if (!m_work_with_history) { -- index.erase(object.id()); -+ m_ids(object.type()).unset(object.positive_id()); - } - writer(object); - } -@@ -414,9 +408,9 @@ bool CommandGetId::run() { - } else { - m_vout << "Did not find " << count_ids() << " object(s).\n"; - if (m_verbose_ids) { -- print_missing_ids("node", ids(osmium::item_type::node)); -- print_missing_ids("way", ids(osmium::item_type::way)); -- print_missing_ids("relation", ids(osmium::item_type::relation)); -+ print_missing_ids("node", m_ids(osmium::item_type::node)); -+ print_missing_ids("way", m_ids(osmium::item_type::way)); -+ print_missing_ids("relation", m_ids(osmium::item_type::relation)); - } - } - } ---- a/src/command_getid.hpp -+++ b/src/command_getid.hpp -@@ -29,6 +29,7 @@ along with this program. If not, see <h - #include <vector> - - #include <osmium/fwd.hpp> -+#include <osmium/index/id_set.hpp> - #include <osmium/osm/entity_bits.hpp> - #include <osmium/osm/item_type.hpp> - #include <osmium/osm/types.hpp> -@@ -43,10 +44,7 @@ class CommandGetId : public Command, pub - bool m_work_with_history = false; - bool m_verbose_ids = false; - -- std::set<osmium::object_id_type> m_ids[3]; -- -- std::set<osmium::object_id_type>& ids(osmium::item_type type) noexcept; -- const std::set<osmium::object_id_type>& ids(osmium::item_type type) const noexcept; -+ osmium::index::NWRIdSet<osmium::index::IdSetDense> m_ids; - - void parse_and_add_id(const std::string& s); - ---- a/src/command_merge.cpp -+++ b/src/command_merge.cpp -@@ -147,7 +147,8 @@ bool operator!=(const QueueElement& lhs, - bool CommandMerge::run() { - m_vout << "Opening output file...\n"; - osmium::io::Header header; -- header.set("generator", m_generator); -+ setup_header(header); -+ - osmium::io::Writer writer{m_output_file, header, m_output_overwrite, m_fsync}; - - if (m_input_files.size() == 1) { ---- a/src/command_merge_changes.cpp -+++ b/src/command_merge_changes.cpp -@@ -90,7 +90,8 @@ void CommandMergeChanges::show_arguments - bool CommandMergeChanges::run() { - m_vout << "Opening output file...\n"; - osmium::io::Header header; -- header.set("generator", m_generator); -+ setup_header(header); -+ - osmium::io::Writer writer{m_output_file, header, m_output_overwrite, m_fsync}; - auto out = osmium::io::make_output_iterator(writer); - ---- a/src/command_renumber.cpp -+++ b/src/command_renumber.cpp -@@ -218,7 +218,7 @@ void CommandRenumber::read_index(osmium: - if (errno == ENOENT) { - return; - } -- throw std::runtime_error{std::string{"Can't open file '"} + f + "': " + std::strerror(errno)}; -+ throw std::runtime_error{std::string{"Could not open file '"} + f + "': " + std::strerror(errno)}; - } - #ifdef _WIN32 - _setmode(fd, _O_BINARY); -@@ -227,7 +227,7 @@ void CommandRenumber::read_index(osmium: - const std::size_t file_size = osmium::util::file_size(fd); - - if (file_size % sizeof(osmium::object_id_type) != 0) { -- throw std::runtime_error{std::string{"index file '"} + f + "' has wrong file size"}; -+ throw std::runtime_error{std::string{"Index file '"} + f + "' has wrong file size"}; - } - - map(type).read(fd, file_size); -@@ -243,7 +243,7 @@ void CommandRenumber::write_index(osmium - const std::string f{filename(osmium::item_type_to_name(type))}; - const int fd = ::open(f.c_str(), O_WRONLY | O_CREAT, 0666); - if (fd < 0) { -- throw std::runtime_error{std::string{"Can't open file '"} + f + "': " + std::strerror(errno)}; -+ throw std::runtime_error{std::string{"Could not open file '"} + f + "': " + std::strerror(errno)}; - } - #ifdef _WIN32 - _setmode(fd, _O_BINARY); -@@ -288,11 +288,9 @@ bool CommandRenumber::run() { - osmium::io::Reader reader_pass2{m_input_file}; - - osmium::io::Header header = reader_pass2.header(); -- header.set("generator", m_generator); -+ setup_header(header); - header.set("xml_josm_upload", "false"); -- for (const auto& h : m_output_headers) { -- header.set(h); -- } -+ - osmium::io::Writer writer{m_output_file, header, m_output_overwrite, m_fsync}; - - osmium::ProgressBar progress_bar{reader_pass2.file_size(), display_progress()}; ---- a/src/command_show.cpp -+++ b/src/command_show.cpp -@@ -131,12 +131,12 @@ bool CommandShow::setup(const std::vecto - static int execute_pager(const std::string& pager) { - int pipefd[2]; - if (::pipe(pipefd) < 0) { -- throw std::system_error{errno, std::system_category(), "opening pipe failed"}; -+ throw std::system_error{errno, std::system_category(), "Could not run pager: pipe() call failed"}; - } - - pid_t pid = fork(); - if (pid < 0) { -- throw std::system_error{errno, std::system_category(), "fork failed"}; -+ throw std::system_error{errno, std::system_category(), "Could not run pager: fork() call failed"}; - } - - if (pid == 0) { -@@ -159,7 +159,7 @@ static int execute_pager(const std::stri - ::close(pipefd[0]); // close read end of the pipe - - if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) { -- throw std::system_error{errno, std::system_category(), "signal call failed"}; -+ throw std::system_error{errno, std::system_category(), "Could not run pager: signal() call failed"}; - } - - return pipefd[1]; -@@ -183,7 +183,7 @@ bool CommandShow::run() { - - ::close(1); // close stdout - if (::dup2(fd, 1) < 0) { // put end of pipe as stdout -- throw std::system_error{errno, std::system_category(), "dup2 failed"}; -+ throw std::system_error{errno, std::system_category(), "Could not run pager: dup2() call failed"}; - } - - osmium::io::File file{"-", m_output_format}; -@@ -204,10 +204,10 @@ bool CommandShow::run() { - int status = 0; - const int pid = ::wait(&status); - if (pid < 0) { -- throw std::system_error{errno, std::system_category(), "wait failed"}; -+ throw std::system_error{errno, std::system_category(), "Could not run pager: wait() call failed"}; - } - if (WIFEXITED(status) && WEXITSTATUS(status) == 1) { -- throw argument_error{std::string{"Could not execute pager '"} + m_pager + "'"}; -+ throw argument_error{std::string{"Could not run pager '"} + m_pager + "'"}; - } - #endif - } ---- a/src/command_sort.cpp -+++ b/src/command_sort.cpp -@@ -99,10 +99,11 @@ bool CommandSort::run() { - - m_vout << "Opening output file...\n"; - osmium::io::Header header; -+ setup_header(header); - if (bounding_box) { - header.add_box(bounding_box); - } -- header.set("generator", m_generator); -+ - osmium::io::Writer writer{m_output_file, header, m_output_overwrite, m_fsync}; - - m_vout << "Sorting data...\n"; ---- a/src/command_time_filter.cpp -+++ b/src/command_time_filter.cpp -@@ -126,7 +126,8 @@ bool CommandTimeFilter::run() { - - m_vout << "Opening output file...\n"; - osmium::io::Header header{reader.header()}; -- header.set("generator", m_generator); -+ setup_header(header); -+ - osmium::io::Writer writer{m_output_file, header, m_output_overwrite, m_fsync}; - - m_vout << "Filter data while copying it from input to output...\n"; ---- a/src/io.cpp -+++ b/src/io.cpp -@@ -29,6 +29,7 @@ along with this program. If not, see <h - #include <osmium/io/any_input.hpp> // IWYU pragma: keep - #include <osmium/io/any_output.hpp> // IWYU pragma: keep - #include <osmium/io/file.hpp> -+#include <osmium/io/header.hpp> - #include <osmium/io/writer_options.hpp> - #include <osmium/util/file.hpp> - #include <osmium/util/verbose_output.hpp> -@@ -180,6 +181,13 @@ void with_osm_output::show_output_argume - } - } - -+void with_osm_output::setup_header(osmium::io::Header& header) const { -+ header.set("generator", m_generator); -+ for (const auto& h : m_output_headers) { -+ header.set(h); -+ } -+} -+ - std::size_t file_size_sum(std::vector<osmium::io::File> files) { - std::size_t sum = 0; - ---- a/src/main.cpp -+++ b/src/main.cpp -@@ -20,6 +20,7 @@ along with this program. If not, see <h - - */ - -+#include <cerrno> - #include <exception> - #include <iostream> - #include <memory> -@@ -105,10 +106,10 @@ int main(int argc, char *argv[]) { - return return_code::okay; - } - } catch (const boost::program_options::error& e) { -- std::cerr << "Error parsing command line: " << e.what() << std::endl; -+ std::cerr << "Error parsing command line: " << e.what() << '\n'; - return return_code::fatal; - } catch (const std::exception& e) { -- std::cerr << e.what() << std::endl; -+ std::cerr << e.what() << '\n'; - return return_code::fatal; - } - -@@ -121,11 +122,17 @@ int main(int argc, char *argv[]) { - } catch (const std::bad_alloc&) { - std::cerr << "Out of memory. Read the MEMORY USAGE section of the osmium(1) manpage.\n"; - } catch (const osmium::out_of_order_error& e) { -- std::cerr << e.what() << "\n"; -+ std::cerr << e.what() << '\n'; - std::cerr << "This command expects the input file to be ordered: First nodes in order of ID,\n" - << "then ways in order of ID, then relations in order of ID.\n"; -+ } catch (const std::system_error& e) { -+ std::cerr << e.what(); -+ if (e.code().value() == EEXIST) { -+ std::cerr << ". Try using --overwrite if you are sure you want to overwrite the file."; -+ } -+ std::cerr << '\n'; - } catch (const std::exception& e) { -- std::cerr << e.what() << "\n"; -+ std::cerr << e.what() << '\n'; - } - - return return_code::error; ---- a/test/diff/test_setup.cpp -+++ b/test/diff/test_setup.cpp -@@ -7,7 +7,7 @@ TEST_CASE("diff") { - - CommandDiff cmd; - -- SECTION("no argments - need exactly two arguments") { -+ SECTION("no arguments - need exactly two arguments") { - REQUIRE_THROWS_AS(cmd.setup({}), argument_error); - } - -@@ -27,12 +27,8 @@ TEST_CASE("diff") { - REQUIRE_THROWS_AS(cmd.setup({"-q", "-f", "opl"}), argument_error); - } - -- SECTION("quiet with output parameter --fsync") { -- REQUIRE_THROWS_AS(cmd.setup({"-q", "--fsync"}), argument_error); -- } -- -- SECTION("quiet with output parameter --output-header") { -- REQUIRE_THROWS_AS(cmd.setup({"-q", "--output-header", "foo"}), argument_error); -+ SECTION("parameter --fsync") { -+ REQUIRE_THROWS_AS(cmd.setup({"--fsync"}), boost::program_options::unknown_option); - } - - SECTION("quiet with output parameter -O") { ---- a/test/include/catch.hpp -+++ b/test/include/catch.hpp -@@ -1,6 +1,6 @@ - /* -- * Catch v1.5.6 -- * Generated: 2016-06-09 19:20:41.460328 -+ * Catch v1.5.8 -+ * Generated: 2016-10-26 12:07:30.938259 - * ---------------------------------------------------------- - * This file has been merged from multiple headers. Please don't edit it directly - * Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. -@@ -3223,10 +3223,11 @@ namespace Catch { - - bool matches( TestCaseInfo const& testCase ) const { - // All patterns in a filter must match for the filter to be a match -- for( std::vector<Ptr<Pattern> >::const_iterator it = m_patterns.begin(), itEnd = m_patterns.end(); it != itEnd; ++it ) -+ for( std::vector<Ptr<Pattern> >::const_iterator it = m_patterns.begin(), itEnd = m_patterns.end(); it != itEnd; ++it ) { - if( !(*it)->matches( testCase ) ) - return false; -- return true; -+ } -+ return true; - } - }; - -@@ -4719,8 +4720,11 @@ namespace Catch { - std::string line; - while( std::getline( f, line ) ) { - line = trim(line); -- if( !line.empty() && !startsWith( line, "#" ) ) -- addTestOrTags( config, "\"" + line + "\"," ); -+ if( !line.empty() && !startsWith( line, "#" ) ) { -+ if( !startsWith( line, "\"" ) ) -+ line = "\"" + line + "\""; -+ addTestOrTags( config, line + "," ); -+ } - } - } - -@@ -5368,7 +5372,10 @@ namespace Catch { - ++it ) { - matchedTests++; - TestCaseInfo const& testCaseInfo = it->getTestCaseInfo(); -- Catch::cout() << testCaseInfo.name << std::endl; -+ if( startsWith( testCaseInfo.name, "#" ) ) -+ Catch::cout() << "\"" << testCaseInfo.name << "\"" << std::endl; -+ else -+ Catch::cout() << testCaseInfo.name << std::endl; - } - return matchedTests; - } -@@ -6454,7 +6461,7 @@ namespace Catch { - namespace Catch { - - struct RandomNumberGenerator { -- typedef int result_type; -+ typedef std::ptrdiff_t result_type; - - result_type operator()( result_type n ) const { return std::rand() % n; } - -@@ -7571,7 +7578,7 @@ namespace Catch { - return os; - } - -- Version libraryVersion( 1, 5, 6, "", 0 ); -+ Version libraryVersion( 1, 5, 8, "", 0 ); - - } - -@@ -7802,8 +7809,11 @@ namespace Catch { - bool contains( std::string const& s, std::string const& infix ) { - return s.find( infix ) != std::string::npos; - } -+ char toLowerCh(char c) { -+ return static_cast<char>( ::tolower( c ) ); -+ } - void toLowerInPlace( std::string& s ) { -- std::transform( s.begin(), s.end(), s.begin(), ::tolower ); -+ std::transform( s.begin(), s.end(), s.begin(), toLowerCh ); - } - std::string toLower( std::string const& s ) { - std::string lc = s; -@@ -8951,9 +8961,10 @@ namespace Catch { - break; - - default: -- // Escape control chars - based on contribution by @espenalb in PR #465 -+ // Escape control chars - based on contribution by @espenalb in PR #465 and -+ // by @mrpi PR #588 - if ( ( c < '\x09' ) || ( c > '\x0D' && c < '\x20') || c=='\x7F' ) -- os << "&#x" << std::uppercase << std::hex << static_cast<int>( c ); -+ os << "&#x" << std::uppercase << std::hex << std::setfill('0') << std::setw(2) << static_cast<int>( c ) << ';'; - else - os << c; - } -@@ -9008,13 +9019,20 @@ namespace Catch { - : m_tagIsOpen( false ), - m_needsNewline( false ), - m_os( &Catch::cout() ) -- {} -+ { -+ // We encode control characters, which requires -+ // XML 1.1 -+ // see http://stackoverflow.com/questions/404107/why-are-control-characters-illegal-in-xml-1-0 -+ *m_os << "<?xml version=\"1.1\" encoding=\"UTF-8\"?>\n"; -+ } - - XmlWriter( std::ostream& os ) - : m_tagIsOpen( false ), - m_needsNewline( false ), - m_os( &os ) -- {} -+ { -+ *m_os << "<?xml version=\"1.1\" encoding=\"UTF-8\"?>\n"; -+ } - - ~XmlWriter() { - while( !m_tags.empty() ) -@@ -9181,7 +9199,7 @@ namespace Catch { - - virtual void testCaseStarting( TestCaseInfo const& testInfo ) CATCH_OVERRIDE { - StreamingReporterBase::testCaseStarting(testInfo); -- m_xml.startElement( "TestCase" ).writeAttribute( "name", trim( testInfo.name ) ); -+ m_xml.startElement( "TestCase" ).writeAttribute( "name", testInfo.name ); - - if ( m_config->showDurations() == ShowDurations::Always ) - m_testCaseTimer.start(); -@@ -9243,7 +9261,7 @@ namespace Catch { - .writeText( assertionResult.getMessage() ); - break; - case ResultWas::FatalErrorCondition: -- m_xml.scopedElement( "Fatal Error Condition" ) -+ m_xml.scopedElement( "FatalErrorCondition" ) - .writeAttribute( "filename", assertionResult.getSourceInfo().file ) - .writeAttribute( "line", assertionResult.getSourceInfo().line ) - .writeText( assertionResult.getMessage() ); ---- a/test/io/Makefile.in -+++ b/test/io/Makefile.in -@@ -32,7 +32,8 @@ OSMOSIS := /usr/bin/osmosis - - OSMIUM := @CMAKE_BINARY_DIR@/src/osmium - --OSMIUM_CMD := $(OSMIUM) cat --overwrite -+OSMIUM_CMD := $(OSMIUM) cat --overwrite --no-progress -+OSMIUM_FILEINFO := $(OSMIUM) fileinfo --no-progress -e -g data.crc32 - - ifeq ($(suffix $(INPUT)),.pbf) - OSMOSIS_READ := $(OSMOSIS) --read-pbf -@@ -99,7 +100,7 @@ $(DIR)/osmium-DCbmg-fake.osm.opl: $(DIR) - sed -e 's/ v.* T/ v0 dV c0 t i0 u T/' $^ >$@ - - $(DIR)/osmium-DCbMG-fake.osm.opl: $(DIR)/osmium-DCbMg.osm.opl -- grep '^n' $^ | sed -e 's/[0-9][0-9] y/00 y/' -e 's/[0-9][0-9]$$/00/' >$@ -+ grep '^n' $^ | sed -e 's/[0-9][0-9] y/ y/' -e 's/\(.*\) y\([0-9]\.[0-9][0-9][0-9][0-9][0-9]\).*/\1 y\2/' -e 's/0\+$$//' >$@ - grep '^[wr]' $^ >>$@ - - $(DIR)/report_opl: opl_input opl_files \ -@@ -157,7 +158,7 @@ $(DIR)/report_default: \ - echo "Default:" >$@; \ - for i in $^; do \ - filename=`basename $$i`; \ -- crc=`$(OSMIUM) fileinfo -e -g data.crc32 $$i`; \ -+ crc=`$(OSMIUM_FILEINFO) $$i`; \ - echo $$crc $$filename >>$@; \ - done; \ - echo >>$@ -@@ -167,7 +168,7 @@ $(DIR)/report_granularity: \ - echo "Non-standard granularity:" >$@; \ - for i in $^; do \ - filename=`basename $$i`; \ -- crc=`$(OSMIUM) fileinfo -e -g data.crc32 $$i`; \ -+ crc=`$(OSMIUM_FILEINFO) $$i`; \ - echo $$crc $$filename >>$@; \ - done; \ - echo >>$@ -@@ -180,7 +181,7 @@ $(DIR)/report_without_metadata: \ - echo "Without metadata:" >$@; \ - for i in $^; do \ - filename=`basename $$i`; \ -- crc=`$(OSMIUM) fileinfo -e -g data.crc32 $$i`; \ -+ crc=`$(OSMIUM_FILEINFO) $$i`; \ - echo $$crc $$filename >>$@; \ - done; \ - echo >>$@ diff --git a/debian/patches/series b/debian/patches/series deleted file mode 100644 index 5ad459e..0000000 --- a/debian/patches/series +++ /dev/null @@ -1,2 +0,0 @@ -spelling-errors.patch -libosmium-2.10.2.patch diff --git a/debian/patches/spelling-errors.patch b/debian/patches/spelling-errors.patch deleted file mode 100644 index 6e910ee..0000000 --- a/debian/patches/spelling-errors.patch +++ /dev/null @@ -1,47 +0,0 @@ -Description: Fix spelling errors. - * chnage -> change - * preceeded -> preceded - * noticable -> noticeable -Author: Bas Couwenberg <[email protected]> -Forwarded: https://github.com/osmcode/osmium-tool/pull/35 -Applied-Upstream: https://github.com/osmcode/osmium-tool/commit/6431bcc4b9c23411b08dc69c8e8fda6d73e93a49 - ---- a/man/osmium-derive-changes.md -+++ b/man/osmium-derive-changes.md -@@ -18,7 +18,7 @@ applied on *OSM-FILE1* to re-create *OSM - Objects in both input files must be sorted by type, ID, and version. The first - input file must be from a point in time before the second input file. - --For this command to create a proper chnage file you have to set the -+For this command to create a proper change file you have to set the - **--output** option or **--output-format** option in a way that it will - generate an .osc file, typically by using something like '-o out.osc.gz'. - You can create any other OSM file format, but that is usually not what you ---- a/man/osmium-diff.md -+++ b/man/osmium-diff.md -@@ -40,12 +40,12 @@ compact - file, respectively. - - opl --: The usual OPL format with all lines preceeded by space (' '), minus -+: The usual OPL format with all lines preceded by space (' '), minus - ('-'), or plus ('+') characters depending on whether the object is in both, - the first, or the second file. - - debug --: The usual debug format with all lines preceeded by space (' '), minus -+: The usual debug format with all lines preceded by space (' '), minus - ('-'), or plus ('+') characters depending on whether the object is in both, - the first, or the second file. Color support can be enabled ('debug,color'). - ---- a/man/osmium-merge.md -+++ b/man/osmium-merge.md -@@ -46,7 +46,7 @@ correctly. - # MEMORY USAGE - - **osmium merge** doesn't keep a lot of data in memory, but if you are merging --many files, the buffers might take a noticable amount of memory. -+many files, the buffers might take a noticeable amount of memory. - - - # EXAMPLES -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/osmium-tool.git _______________________________________________ Pkg-grass-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel

