From 11f224baeede709a181a9ccb01558ff39432a994 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Mon, 5 Jul 2021 04:23:19 +0800 Subject: [PATCH] Use C99 format macro constants for timestamp and vlan_tag Since timestamp and vlan_tag in the shm_log_entry struct are C99 fixed width integer types (uint64_t and uint16_t), the cross-platform way to print these values is to use the corresponding format macro constants[1], PRIu64 and PRIu16. This also adjusts the places where the time_t timestamp value is printed, casting it to uint64_t, for consistency. Fixes https://github.com/fln/addrwatch/issues/25 Fixes https://github.com/fln/addrwatch/issues/26 [1]: https://en.cppreference.com/w/c/types/integer#Format_macro_constants --- configure.ac | 2 +- src/addrwatch.c | 2 +- src/addrwatch_stdout.c | 2 +- src/addrwatch_syslog.c | 2 +- src/base64.h | 2 +- src/common.h | 2 +- src/mcache.h | 2 +- src/output_flatfile.c | 4 ++-- src/parse.c | 2 +- src/shm.h | 2 +- src/shm_client.c | 2 +- src/storage.c | 2 +- src/util.h | 2 +- 13 files changed, 14 insertions(+), 14 deletions(-) --- a/configure.ac +++ b/configure.ac @@ -53,7 +53,7 @@ AC_ARG_ENABLE([mysql], ) # Checks for header files. -AC_CHECK_HEADERS([arpa/inet.h netinet/in.h stdint.h stdlib.h syslog.h unistd.h]) +AC_CHECK_HEADERS([arpa/inet.h netinet/in.h inttypes.h stdlib.h syslog.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. AC_C_INLINE --- a/src/addrwatch.c +++ b/src/addrwatch.c @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include #include #include --- a/src/addrwatch_stdout.c +++ b/src/addrwatch_stdout.c @@ -16,7 +16,7 @@ void process_entry(struct shm_log_entry ip4_ntoa(e->ip_address, ip_str); } - printf("%lu %s %u %s %s %s\n", e->timestamp, e->interface, e->vlan_tag, + printf("%" PRIu64 " %s %" PRIu16 " %s %s %s\n", e->timestamp, e->interface, e->vlan_tag, mac_str, ip_str, pkt_origin_str[e->origin]); } --- a/src/addrwatch_syslog.c +++ b/src/addrwatch_syslog.c @@ -18,7 +18,7 @@ void process_entry(struct shm_log_entry ip4_ntoa(e->ip_address, ip_str); } - syslog(LOG_INFO, "%lu %s %u %s %s %s", e->timestamp, e->interface, + syslog(LOG_INFO, "%" PRIu64 " %s %" PRIu16 " %s %s %s", e->timestamp, e->interface, e->vlan_tag, mac_str, ip_str, pkt_origin_str[e->origin]); } --- a/src/base64.h +++ b/src/base64.h @@ -2,7 +2,7 @@ #define BASE64_H #include "addrwatch.h" -#include +#include void base64_encode(const uint8_t *src, char *dst, int ssize, int dsize); char *base64_encode_packet(struct pkt *p); --- a/src/common.h +++ b/src/common.h @@ -2,7 +2,7 @@ #define COMMON_H #include -#include +#include #include #include --- a/src/mcache.h +++ b/src/mcache.h @@ -6,7 +6,7 @@ #include #include -#include +#include struct mcache_node { uint8_t l2_addr[ETHER_ADDR_LEN]; --- a/src/output_flatfile.c +++ b/src/output_flatfile.c @@ -22,8 +22,8 @@ void output_flatfile_reload() void output_flatfile_save(struct pkt *p, char *mac_str, char *ip_str) { if (cfg.data_fd) { - fprintf(cfg.data_fd, "%lu %s %u %s %s %s\n", - p->pcap_header->ts.tv_sec, p->ifc->name, p->vlan_tag, + fprintf(cfg.data_fd, "%" PRIu64 " %s %" PRIu16 " %s %s %s\n", + (uint64_t)p->pcap_header->ts.tv_sec, p->ifc->name, p->vlan_tag, mac_str, ip_str, pkt_origin_str[p->origin]); fflush(cfg.data_fd); } --- a/src/parse.c +++ b/src/parse.c @@ -1,4 +1,4 @@ -//#include +//#include //#include //#include --- a/src/shm.h +++ b/src/shm.h @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #define DEFAULT_SHM_LOG_NAME "/addrwatch-shm-log" --- a/src/shm_client.c +++ b/src/shm_client.c @@ -2,7 +2,7 @@ #include #include -#include +#include #include #include #include --- a/src/storage.c +++ b/src/storage.c @@ -129,7 +129,7 @@ void save_pairing(struct pkt *p) output_shm_save(p, mac_str, ip_str); if (!cfg.quiet) { - printf("%lu %s %u %s %s %s\n", tstamp, p->ifc->name, + printf("%" PRIu64 " %s %" PRIu16 " %s %s %s\n", (uint64_t)tstamp, p->ifc->name, p->vlan_tag, mac_str, ip_str, pkt_origin_str[p->origin]); fflush(stdout); } --- a/src/util.h +++ b/src/util.h @@ -5,7 +5,7 @@ #include "config.h" #endif -#include +#include #include #include