From: Francois-Xavier Le Bail Date: Wed, 25 Sep 2024 11:47:06 +0000 (+0200) Subject: Add --time-t-size option to print the size of time_t in bits X-Git-Url: https://git.tcpdump.org/tcpdump/commitdiff_plain/aacc29d06ccccd15b6b07bba0858e6fa32e97edd Add --time-t-size option to print the size of time_t in bits Have tests/TESTrun run "./tcpdump --time-t-size and set HAVE_TIME_T_64 key based on that. This will permit to run tests based on time_t size (32-bit or 64-bit). --- diff --git a/tcpdump.c b/tcpdump.c index d31872f7..ca4babf2 100644 --- a/tcpdump.c +++ b/tcpdump.c @@ -641,6 +641,7 @@ show_remote_devices_and_exit(void) #define OPTION_COUNT 136 #define OPTION_PRINT_SAMPLING 137 #define OPTION_LENGTHS 138 +#define OPTION_TIME_T_SIZE 139 static const struct option longopts[] = { { "buffer-size", required_argument, NULL, 'B' }, @@ -682,6 +683,7 @@ static const struct option longopts[] = { { "print", no_argument, NULL, OPTION_PRINT }, { "print-sampling", required_argument, NULL, OPTION_PRINT_SAMPLING }, { "lengths", no_argument, NULL, OPTION_LENGTHS }, + { "time-t-size", no_argument, NULL, OPTION_TIME_T_SIZE }, { "version", no_argument, NULL, OPTION_VERSION }, { NULL, 0, NULL, 0 } }; @@ -1870,6 +1872,10 @@ main(int argc, char **argv) ndo->ndo_lengths = 1; break; + case OPTION_TIME_T_SIZE: + printf("%zu\n", sizeof(time_t) * 8); + return 0; + case OPTION_VERSION: print_version(stdout); exit_tcpdump(S_SUCCESS); diff --git a/tests/TESTrun b/tests/TESTrun index e7bf6ce1..eeffa623 100755 --- a/tests/TESTrun +++ b/tests/TESTrun @@ -390,6 +390,17 @@ sub loadconfighash { printf "$TCPDUMP --fp-type => %s\n", $have_fptype; $main::confighhash->{$have_fptype} = 1; + # run tcpdump --time-t-size to get the size of size_t in bits + open(TIMETSIZE_PIPE, "$TCPDUMP --time-t-size |") or die("piping tcpdump --time-t-size failed\n"); + my $time_t_size = ; + close(TIMETSIZE_PIPE); + my $have_time_t_64; + if($time_t_size == "64") { + $have_time_t_64 = "HAVE_TIME_T_64"; + } + printf "$TCPDUMP --time-t-size => %s\n", $time_t_size; + $main::confighhash->{$have_time_t_64} = 1; + # and check whether this is OpenBSD, as one test fails in OpenBSD # due to the sad hellscape of low-numbered DLT_ values, due to # 12 meaning "OpenBSD loopback" rather than "raw IP" on OpenBSD