#include <libloc/database.h>
#include <libloc/format.h>
#include <libloc/network.h>
+#include <libloc/network-tree.h>
#include <libloc/private.h>
#include <libloc/writer.h>
static int loc_database_write_networks(struct loc_writer* writer,
struct loc_database_header_v1* header, off_t* offset, FILE* f) {
+ int r;
+
// Write the network tree
DEBUG(writer->ctx, "Network tree starts at %jd bytes\n", (intmax_t)*offset);
header->network_tree_offset = htobe32(*offset);
TAILQ_HEAD(network_t, network) networks;
TAILQ_INIT(&networks);
+ // Cleanup the tree before writing it
+ r = loc_network_tree_cleanup(writer->networks);
+ if (r)
+ return r;
+
// Add root
struct loc_network_tree_node* root = loc_network_tree_get_root(writer->networks);
node = make_node(root);
TAILQ_REMOVE(&networks, nw, networks);
// Prepare what we are writing to disk
- int r = loc_network_to_database_v1(nw->network, &db_network);
+ r = loc_network_to_database_v1(nw->network, &db_network);
if (r)
return r;
if (writer->signature2_length) {
DEBUG(writer->ctx, "Copying second signature of %zu byte(s)\n",
- writer->signature1_length);
+ writer->signature2_length);
memcpy(header.signature2, writer->signature2, writer->signature2_length);
header.signature2_length = htobe16(writer->signature2_length);