use PRI macros for max portability

This commit is contained in:
yosh 2024-01-27 20:24:51 -05:00
parent 0491250ad7
commit ce8b864293
2 changed files with 9 additions and 8 deletions

View File

@ -1,6 +1,6 @@
.POSIX:
PREFIX = /usr/local
CFLAGS = -O2
CFLAGS = -O2 -Wall -Wpedantic
build: bson2json
bson2json: bson2json.c

View File

@ -4,6 +4,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <inttypes.h>
#define DATABUF_LEN 16
char DATA_BUFFER[DATABUF_LEN]; // data buffer for funny casts
@ -151,13 +152,13 @@ print_bson(uint8_t is_array)
break;
case 0x07: // objectid
fread(&DATA_BUFFER, 4, 1, stdin);
printf("{\"$ObjectId:timestamp\":%u,", *((uint32_t*)DATA_BUFFER));
printf("{\"$ObjectId:timestamp\":%"PRIu32",", *((uint32_t*)DATA_BUFFER));
memset(DATA_BUFFER, 0, 8);
fread(&DATA_BUFFER, 5, 1, stdin);
printf("\"$ObjectId:rand\":%llu,", *((uint64_t*)DATA_BUFFER));
printf("\"$ObjectId:rand\":%"PRIu64",", *((uint64_t*)DATA_BUFFER));
memset(DATA_BUFFER, 0, 4);
fread(&DATA_BUFFER, 3, 1, stdin);
printf("\"$ObjectId:counter\":%u}", *((uint32_t*)DATA_BUFFER));
printf("\"$ObjectId:counter\":%"PRIu32"}", *((uint32_t*)DATA_BUFFER));
size -= 12;
break;
case 0x08: // boolean
@ -173,7 +174,7 @@ print_bson(uint8_t is_array)
break;
case 0x09: case 0x12: // 64 bit ints (utc datetime and int64)
fread(&DATA_BUFFER, 8, 1, stdin);
printf("%lld", *((int64_t*)DATA_BUFFER));
printf("%"PRId64, *((int64_t*)DATA_BUFFER));
size -= 8;
break;
case 0x0A: // null
@ -192,7 +193,7 @@ print_bson(uint8_t is_array)
json_string_stdin(&size);
memset(&DATA_BUFFER, 0, 16);
fread(&DATA_BUFFER, 12, 1, stdin);
printf(",\"$DBPointer:pointer\":%llu}", *((uint64_t*)DATA_BUFFER));
printf(",\"$DBPointer:pointer\":%"PRIu64"}", *((uint64_t*)DATA_BUFFER));
size -= 16;
break;
case 0x0F: // code with scope
@ -206,12 +207,12 @@ print_bson(uint8_t is_array)
break;
case 0x10: // 32 bit int
fread(&DATA_BUFFER, 4, 1, stdin);
printf("%d", *((int32_t*)DATA_BUFFER));
printf("%"PRId32, *((int32_t*)DATA_BUFFER));
size -= 4;
break;
case 0x11: // timestamp (uint64)
fread(&DATA_BUFFER, 8, 1, stdin);
printf("%llu", *((uint64_t*)DATA_BUFFER));
printf("%"PRId64, *((uint64_t*)DATA_BUFFER));
size -= 8;
break;
case 0x13: // 128-bit decimal