]> The Tcpdump Group git mirrors - tcpdump/commitdiff
Do the floating-point tests closer to what we need.
authorGuy Harris <[email protected]>
Wed, 5 Feb 2020 03:45:41 +0000 (19:45 -0800)
committerGuy Harris <[email protected]>
Wed, 5 Feb 2020 03:45:41 +0000 (19:45 -0800)
It's All Very Complicated, so mirror what print-lmp.c does - just do a
calculation based on a particular input value and print the result using
the same format print-lmp.c does, and have tests/TESTrun see what that
result is.

Just do that inside tcpdump.c, so we don't need the fptype stuff.

CMakeLists.txt
Makefile.in
fptype.c [deleted file]
fptype.h [deleted file]
tcpdump.c
tests/TESTrun

index b946c17d373951cb5a41818547bdcca081ed4757..7fa6e900ec8f55d6e20c95f1af9724fb59cb013f 100644 (file)
@@ -1110,7 +1110,7 @@ if(NOT C_ADDITIONAL_FLAGS STREQUAL "")
     set_target_properties(netdissect PROPERTIES COMPILE_FLAGS ${C_ADDITIONAL_FLAGS})
 endif()
 
     set_target_properties(netdissect PROPERTIES COMPILE_FLAGS ${C_ADDITIONAL_FLAGS})
 endif()
 
-set(TCPDUMP_SOURCE_LIST_C fptype.c tcpdump.c)
+set(TCPDUMP_SOURCE_LIST_C tcpdump.c)
 
 if(NOT HAVE_BPF_DUMP)
     set(TCPDUMP_SOURCE_LIST_C ${TCPDUMP_SOURCE_LIST_C} bpf_dump.c)
 
 if(NOT HAVE_BPF_DUMP)
     set(TCPDUMP_SOURCE_LIST_C ${TCPDUMP_SOURCE_LIST_C} bpf_dump.c)
index 2b3b7e3da9a1a7a549ed0ad4d712f641029a9ce3..694fb18b988f185f31ef45a7d38f79865d73cc0f 100644 (file)
@@ -70,7 +70,7 @@ DEPENDENCY_CFLAG = @DEPENDENCY_CFLAG@
        @rm -f $@
        $(CC) $(FULL_CFLAGS) -c $(srcdir)/$*.c
 
        @rm -f $@
        $(CC) $(FULL_CFLAGS) -c $(srcdir)/$*.c
 
-CSRC = fptype.c tcpdump.c
+CSRC = tcpdump.c
 
 LIBNETDISSECT_SRC=\
        addrtoname.c \
 
 LIBNETDISSECT_SRC=\
        addrtoname.c \
diff --git a/fptype.c b/fptype.c
deleted file mode 100644 (file)
index 5191506..0000000
--- a/fptype.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 1982, 1986, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include "netdissect-stdinc.h"
-
-#include "fptype.h"
-
-uint32_t
-float_type_check(uint32_t in)
-{
-       union { /* int to float conversion buffer */
-               float f;
-               uint32_t i;
-       } f;
-
-       f.i = in;
-       f.f = f.f*8/1000000;
-       return (f.i);
-}
diff --git a/fptype.h b/fptype.h
deleted file mode 100644 (file)
index 1d9c58a..0000000
--- a/fptype.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 1982, 1986, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-extern uint32_t float_type_check(uint32_t);
index 40505b2c28c75a3cbda8c6144920738d4e4efb5f..70cbdedfb8759ce95f5ee58abc1ddfd7c788c76d 100644 (file)
--- a/tcpdump.c
+++ b/tcpdump.c
@@ -150,8 +150,6 @@ The Regents of the University of California.  All rights reserved.\n";
 
 #include "print.h"
 
 
 #include "print.h"
 
-#include "fptype.h"
-
 #ifndef PATH_MAX
 #define PATH_MAX 1024
 #endif
 #ifndef PATH_MAX
 #define PATH_MAX 1024
 #endif
@@ -1903,15 +1901,13 @@ main(int argc, char **argv)
                         * may differ (e.g., it might be 32-bit, 64-bit,
                         * or 80-bit).
                         */
                         * may differ (e.g., it might be 32-bit, 64-bit,
                         * or 80-bit).
                         */
-                       switch (float_type_check(0x4e93312d)) {
-
-                       case 0x461a5794:
-                               printf("FPTYPE1\n");
-                               break;
-
-                       default:
-                               printf("FPTYPE2\n");
-                               break;
+                       {
+                               union { /* int to float conversion buffer */
+                                       float f;
+                                       uint32_t i;
+                               } f;
+                               f.i = 0x4e93312d;
+                               printf("%.3f\n", f.f*8/1000000);
                        }
                        return 0;
 
                        }
                        return 0;
 
index ea1389853392e6294abec7a79f5ffea45b3f64a0..79e11fa53b090dcc4c20a870e6266d06cec2caac 100755 (executable)
@@ -69,11 +69,17 @@ sub loadconfighash {
     #print Dumper($main::confighhash);
 
     # also run tcpdump --fp-type to get the type of floating-point
     #print Dumper($main::confighhash);
 
     # also run tcpdump --fp-type to get the type of floating-point
-    # arithmetic we're doing, setting a HAVE_{fptype} key
+    # arithmetic we're doing, setting a HAVE_{fptype} key based
+    # on the value it prints
     open(FPTYPE_PIPE, "./tcpdump --fp-type |") or die("piping tcpdump --fp-type failed\n");
     open(FPTYPE_PIPE, "./tcpdump --fp-type |") or die("piping tcpdump --fp-type failed\n");
-    my $have_fptype = "HAVE_" . <FPTYPE_PIPE>;
+    my $fptype_val = <FPTYPE_PIPE>;
     close(FPTYPE_PIPE);
     close(FPTYPE_PIPE);
-    $have_fptype =~ s/^\s+|\s+$//g;
+    my $have_fptype;
+    if($fptype_val == "9877.895") {
+        $have_fptype = "HAVE_FPTYPE1";
+    } else {
+        $have_fptype = "HAVE_FPTYPE2";
+    }
     $main::confighhash->{$have_fptype} = 1;
 
     return $main::confighhash;
     $main::confighhash->{$have_fptype} = 1;
 
     return $main::confighhash;