X-Git-Url: http://git.ipfire.org/?p=people%2Fms%2Flibloc.git;a=blobdiff_plain;f=src%2Fdatabase.c;h=a263d0270dba16d422ea28e85d52fa49f800847f;hp=d4f27e02368b95198fc8f83d0ac5910c91f7a623;hb=8f5b676af42606975d5473c17bd8474527566b16;hpb=78ace4ed4d7cbc6eddd8f59554905adf75644b4e diff --git a/src/database.c b/src/database.c index d4f27e0..a263d02 100644 --- a/src/database.c +++ b/src/database.c @@ -346,6 +346,12 @@ static void loc_database_make_magic(struct loc_database* db, struct loc_database magic->version = htons(LOC_DATABASE_VERSION); } +static void loc_database_align_page_boundary(off_t* offset, FILE* f) { + // Move to next page boundary + while (*offset % LOC_DATABASE_PAGE_SIZE > 0) + *offset += fwrite("", 1, 1, f); +} + static int loc_database_write_pool(struct loc_database* db, struct loc_database_header_v0* header, off_t* offset, FILE* f) { // Save the offset of the pool section DEBUG(db->ctx, "Pool starts at %jd bytes\n", *offset); @@ -412,15 +418,15 @@ LOC_EXPORT int loc_database_write(struct loc_database* db, FILE* f) { } offset += sizeof(header); - // Move to next page boundary - while (offset % LOC_DATABASE_PAGE_SIZE > 0) - offset += fwrite("", 1, 1, f); + loc_database_align_page_boundary(&offset, f); // Write pool r = loc_database_write_pool(db, &header, &offset, f); if (r) return r; + loc_database_align_page_boundary(&offset, f); + // Write all ASes r = loc_database_write_as_section(db, &header, &offset, f); if (r)