]> The Tcpdump Group git mirrors - tcpdump/commitdiff
Add --time-t-size option to print the size of time_t in bits
authorFrancois-Xavier Le Bail <[email protected]>
Wed, 25 Sep 2024 11:47:06 +0000 (13:47 +0200)
committerfxlb <[email protected]>
Fri, 27 Sep 2024 21:32:36 +0000 (21:32 +0000)
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).

tcpdump.c
tests/TESTrun

index d31872f7ee7c85b79e4df76007afe9a0e0ea0575..ca4babf221575e871f1b65ccbe8b011867f5e609 100644 (file)
--- 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);
index e7bf6ce1b2930c74321a7445609d355554e1114c..eeffa6238c4283caefb41eb30b8fabfff2a8f8fc 100755 (executable)
@@ -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 = <TIMETSIZE_PIPE>;
+    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