Use be*toh and htobe* to convert to big-endian
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 12 Dec 2017 17:06:18 +0000 (17:06 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 12 Dec 2017 17:06:18 +0000 (17:06 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
configure.ac
src/database.c
src/writer.c

index d6e978b..b27e11b 100644 (file)
@@ -40,6 +40,12 @@ AS_IF([test "x$enable_debug" = "xyes"], [
 ])
 
 AC_CHECK_FUNCS([ \
 ])
 
 AC_CHECK_FUNCS([ \
+        be16toh \
+        be32toh \
+        be64toh \
+        htobe16 \
+        htobe32 \
+        htobe64 \
         mmap \
         munmap \
        __secure_getenv \
         mmap \
         munmap \
        __secure_getenv \
index 1512fd2..4340e1c 100644 (file)
@@ -14,7 +14,7 @@
        Lesser General Public License for more details.
 */
 
        Lesser General Public License for more details.
 */
 
-#include <arpa/inet.h>
+#include <endian.h>
 #include <errno.h>
 #include <stddef.h>
 #include <stdint.h>
 #include <errno.h>
 #include <stddef.h>
 #include <stdint.h>
@@ -69,7 +69,7 @@ static int loc_database_read_magic(struct loc_database* db) {
                DEBUG(db->ctx, "Magic value matches\n");
 
                // Parse version
                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;
                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);
 
        // 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
 
        // 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);
 
        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
                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)
 
        r = loc_database_read_as_section_v0(db, as_offset, as_length);
        if (r)
index 1774646..da6959a 100644 (file)
@@ -14,7 +14,6 @@
        Lesser General Public License for more details.
 */
 
        Lesser General Public License for more details.
 */
 
-#include <arpa/inet.h>
 #include <endian.h>
 #include <errno.h>
 #include <stdio.h>
 #include <endian.h>
 #include <errno.h>
 #include <stdio.h>
@@ -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->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) {
 }
 
 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);
                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);
 
        // 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;
 }
 
        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);
 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;
 
 
        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);
        }
 
        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;
 }
 
        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;
 
        // 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);
 
        time_t now = time(NULL);
        header.created_at = htobe64(now);