From: Michael Tremer Date: Tue, 12 Dec 2017 17:06:18 +0000 (+0000) Subject: Use be*toh and htobe* to convert to big-endian X-Git-Tag: 0.9.0~164 X-Git-Url: http://git.ipfire.org/?p=people%2Fms%2Flibloc.git;a=commitdiff_plain;h=0676cd80d138ede098fe655ab73500efc66f5df2;hp=028791000ca77b4bc4740332d8dc7d3f512a86f6;ds=sidebyside Use be*toh and htobe* to convert to big-endian Signed-off-by: Michael Tremer --- diff --git a/configure.ac b/configure.ac index d6e978b..b27e11b 100644 --- a/configure.ac +++ b/configure.ac @@ -40,6 +40,12 @@ AS_IF([test "x$enable_debug" = "xyes"], [ ]) AC_CHECK_FUNCS([ \ + be16toh \ + be32toh \ + be64toh \ + htobe16 \ + htobe32 \ + htobe64 \ mmap \ munmap \ __secure_getenv \ diff --git a/src/database.c b/src/database.c index 1512fd2..4340e1c 100644 --- a/src/database.c +++ b/src/database.c @@ -14,7 +14,7 @@ Lesser General Public License for more details. */ -#include +#include #include #include #include @@ -69,7 +69,7 @@ static int loc_database_read_magic(struct loc_database* db) { DEBUG(db->ctx, "Magic value matches\n"); // Parse version - db->version = ntohs(magic.version); + db->version = be16toh(magic.version); DEBUG(db->ctx, "Database version is %u\n", db->version); return 0; @@ -113,12 +113,12 @@ static int loc_database_read_header_v0(struct loc_database* db) { // Copy over data db->created_at = be64toh(header.created_at); - db->vendor = ntohl(header.vendor); - db->description = ntohl(header.description); + db->vendor = be32toh(header.vendor); + db->description = be32toh(header.description); // Open pool - off_t pool_offset = ntohl(header.pool_offset); - size_t pool_length = ntohl(header.pool_length); + off_t pool_offset = be32toh(header.pool_offset); + size_t pool_length = be32toh(header.pool_length); int r = loc_stringpool_open(db->ctx, &db->pool, db->file, pool_length, pool_offset); @@ -126,8 +126,8 @@ static int loc_database_read_header_v0(struct loc_database* db) { return r; // AS section - off_t as_offset = ntohl(header.as_offset); - size_t as_length = ntohl(header.as_length); + off_t as_offset = be32toh(header.as_offset); + size_t as_length = be32toh(header.as_length); r = loc_database_read_as_section_v0(db, as_offset, as_length); if (r) diff --git a/src/writer.c b/src/writer.c index 1774646..da6959a 100644 --- a/src/writer.c +++ b/src/writer.c @@ -14,7 +14,6 @@ Lesser General Public License for more details. */ -#include #include #include #include @@ -148,7 +147,7 @@ static void make_magic(struct loc_writer* writer, struct loc_database_magic* mag magic->magic[i] = LOC_DATABASE_MAGIC[i]; // Set version - magic->version = htons(LOC_DATABASE_VERSION); + magic->version = htobe16(LOC_DATABASE_VERSION); } static void align_page_boundary(off_t* offset, FILE* f) { @@ -161,14 +160,14 @@ static int loc_database_write_pool(struct loc_writer* writer, struct loc_database_header_v0* header, off_t* offset, FILE* f) { // Save the offset of the pool section DEBUG(writer->ctx, "Pool starts at %jd bytes\n", *offset); - header->pool_offset = htonl(*offset); + header->pool_offset = htobe32(*offset); // Write the pool size_t pool_length = loc_stringpool_write(writer->pool, f); *offset += pool_length; DEBUG(writer->ctx, "Pool has a length of %zu bytes\n", pool_length); - header->pool_length = htonl(pool_length); + header->pool_length = htobe32(pool_length); return 0; } @@ -176,7 +175,7 @@ static int loc_database_write_pool(struct loc_writer* writer, static int loc_database_write_as_section(struct loc_writer* writer, struct loc_database_header_v0* header, off_t* offset, FILE* f) { DEBUG(writer->ctx, "AS section starts at %jd bytes\n", *offset); - header->as_offset = htonl(*offset); + header->as_offset = htobe32(*offset); size_t as_length = 0; @@ -191,7 +190,7 @@ static int loc_database_write_as_section(struct loc_writer* writer, } DEBUG(writer->ctx, "AS section has a length of %zu bytes\n", as_length); - header->as_length = htonl(as_length); + header->as_length = htobe32(as_length); return 0; } @@ -202,8 +201,8 @@ LOC_EXPORT int loc_writer_write(struct loc_writer* writer, FILE* f) { // Make the header struct loc_database_header_v0 header; - header.vendor = htonl(writer->vendor); - header.description = htonl(writer->description); + header.vendor = htobe32(writer->vendor); + header.description = htobe32(writer->description); time_t now = time(NULL); header.created_at = htobe64(now);