@@ -42,7 +42,6 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
4242#include < cstddef>
4343#include < fstream>
4444#include < iostream>
45- #include < memory>
4645#include < string>
4746#include < vector>
4847
@@ -246,7 +245,6 @@ bool CommandGetId::find_relations_in_relations() {
246245 osmium::index::RelationsMapStash stash;
247246
248247 osmium::io::Reader reader{m_input_file, osmium::osm_entity_bits::relation, osmium::io::read_meta::no};
249- open_writer (reader);
250248 while (osmium::memory::Buffer buffer = reader.read ()) {
251249 for (const auto & relation : buffer.select <osmium::Relation>()) {
252250 for (const auto & member : relation.members ()) {
@@ -280,7 +278,6 @@ void CommandGetId::find_nodes_and_ways_in_relations() {
280278 m_vout << " Reading input file to find nodes/ways in relations...\n " ;
281279
282280 osmium::io::Reader reader{m_input_file, osmium::osm_entity_bits::relation, osmium::io::read_meta::no};
283- open_writer (reader);
284281 while (osmium::memory::Buffer buffer = reader.read ()) {
285282 for (const auto & relation : buffer.select <osmium::Relation>()) {
286283 if (m_ids (osmium::item_type::relation).get (relation.positive_id ())) {
@@ -301,7 +298,6 @@ void CommandGetId::find_nodes_in_ways() {
301298 m_vout << " Reading input file to find nodes in ways...\n " ;
302299
303300 osmium::io::Reader reader{m_input_file, osmium::osm_entity_bits::way, osmium::io::read_meta::no};
304- open_writer (reader);
305301 while (osmium::memory::Buffer buffer = reader.read ()) {
306302 for (const auto & way : buffer.select <osmium::Way>()) {
307303 if (m_ids (osmium::item_type::way).get (way.positive_id ())) {
@@ -336,25 +332,19 @@ void CommandGetId::find_referenced_objects() {
336332 m_vout << " Done following references.\n " ;
337333}
338334
339- void CommandGetId::open_writer (osmium::io::Reader& reader) {
340- if (m_writer) {
341- return ;
342- }
343-
344- m_vout << " Opening output file...\n " ;
345- osmium::io::Header header{reader.header ()};
346- setup_header (header);
347- m_writer = std::make_unique<osmium::io::Writer>(m_output_file, header, m_output_overwrite, m_fsync);
348- }
349-
350335bool CommandGetId::run () {
351336 if (m_add_referenced_objects) {
352337 find_referenced_objects ();
353338 }
354339
355340 m_vout << " Opening input file...\n " ;
356341 osmium::io::Reader reader{m_input_file, get_needed_types ()};
357- open_writer (reader);
342+
343+ m_vout << " Opening output file...\n " ;
344+ osmium::io::Header header{reader.header ()};
345+ setup_header (header);
346+
347+ osmium::io::Writer writer{m_output_file, header, m_output_overwrite, m_fsync};
358348
359349 m_vout << " Copying matching objects to output file...\n " ;
360350 osmium::ProgressBar progress_bar{reader.file_size (), display_progress ()};
@@ -365,22 +355,22 @@ bool CommandGetId::run() {
365355 if (!m_work_with_history) {
366356 m_ids (object.type ()).unset (object.positive_id ());
367357 }
368- writer ()( object);
358+ writer (object);
369359 } else if (m_ids (object.type ()).get (object.positive_id ())) {
370360 if (!m_work_with_history) {
371361 m_ids (object.type ()).unset (object.positive_id ());
372362 }
373363 if (m_remove_tags) {
374364 object.remove_tags ();
375365 }
376- writer ()( object);
366+ writer (object);
377367 }
378368 }
379369 }
380370 progress_bar.done ();
381371
382372 m_vout << " Closing output file...\n " ;
383- writer () .close ();
373+ writer.close ();
384374
385375 m_vout << " Closing input file...\n " ;
386376 reader.close ();
0 commit comments