diff options
-rw-r--r-- | config.h.in | 62 | ||||
-rwxr-xr-x | configure | 571 | ||||
-rw-r--r-- | configure.in | 85 | ||||
-rw-r--r-- | netdissect-stdinc.h | 202 |
4 files changed, 143 insertions, 777 deletions
diff --git a/config.h.in b/config.h.in index db5227e9..bc123628 100644 --- a/config.h.in +++ b/config.h.in @@ -142,6 +142,9 @@ /* Define to 1 if you have the <pcap/nflog.h> header file. */ #undef HAVE_PCAP_NFLOG_H +/* Define to 1 if you have the <pcap/pcap-inttypes.h> header file. */ +#undef HAVE_PCAP_PCAP_INTTYPES_H + /* Define to 1 if you have the `pcap_setdirection' function. */ #undef HAVE_PCAP_SETDIRECTION @@ -277,18 +280,6 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* define if the platform doesn't define PRId64 */ -#undef PRId64 - -/* define if the platform doesn't define PRIo64 */ -#undef PRIo64 - -/* define if the platform doesn't define PRIx64 */ -#undef PRIu64 - -/* define if the platform doesn't define PRIu64 */ -#undef PRIx64 - /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE @@ -319,21 +310,6 @@ /* define on AIX to get certain functions */ #undef _SUN -/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>, - <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the - #define below would cause a syntax error. */ -#undef _UINT32_T - -/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>, - <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the - #define below would cause a syntax error. */ -#undef _UINT64_T - -/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>, - <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the - #define below would cause a syntax error. */ -#undef _UINT8_T - /* define if your compiler allows __attribute__((fallthrough)) without a warning */ #undef __ATTRIBUTE___FALLTHROUGH_OK @@ -344,22 +320,6 @@ /* Define as token for inline if inlining supported */ #undef inline -/* Define to the type of a signed integer type of width exactly 16 bits if - such a type exists and the standard includes do not define it. */ -#undef int16_t - -/* Define to the type of a signed integer type of width exactly 32 bits if - such a type exists and the standard includes do not define it. */ -#undef int32_t - -/* Define to the type of a signed integer type of width exactly 64 bits if - such a type exists and the standard includes do not define it. */ -#undef int64_t - -/* Define to the type of a signed integer type of width exactly 8 bits if such - a type exists and the standard includes do not define it. */ -#undef int8_t - /* Define to `uint16_t' if u_int16_t not defined. */ #undef u_int16_t @@ -372,22 +332,6 @@ /* Define to `uint8_t' if u_int8_t not defined. */ #undef u_int8_t -/* Define to the type of an unsigned integer type of width exactly 16 bits if - such a type exists and the standard includes do not define it. */ -#undef uint16_t - -/* Define to the type of an unsigned integer type of width exactly 32 bits if - such a type exists and the standard includes do not define it. */ -#undef uint32_t - -/* Define to the type of an unsigned integer type of width exactly 64 bits if - such a type exists and the standard includes do not define it. */ -#undef uint64_t - -/* Define to the type of an unsigned integer type of width exactly 8 bits if - such a type exists and the standard includes do not define it. */ -#undef uint8_t - /* Define to the type of an unsigned integer type wide enough to hold a pointer, if such a type exists, and if the system does not define it. */ #undef uintptr_t @@ -1884,136 +1884,6 @@ $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type - -# ac_fn_c_find_intX_t LINENO BITS VAR -# ----------------------------------- -# Finds a signed integer type with width BITS, setting cache variable VAR -# accordingly. -ac_fn_c_find_intX_t () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5 -$as_echo_n "checking for int$2_t... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - # Order is important - never check a type that is potentially smaller - # than half of the expected target width. - for ac_type in int$2_t 'int' 'long int' \ - 'long long int' 'short int' 'signed char'; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default - enum { N = $2 / 2 - 1 }; -int -main () -{ -static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default - enum { N = $2 / 2 - 1 }; -int -main () -{ -static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) - < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - case $ac_type in #( - int$2_t) : - eval "$3=yes" ;; #( - *) : - eval "$3=\$ac_type" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if eval test \"x\$"$3"\" = x"no"; then : - -else - break -fi - done -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_find_intX_t - -# ac_fn_c_find_uintX_t LINENO BITS VAR -# ------------------------------------ -# Finds an unsigned integer type with width BITS, setting cache variable VAR -# accordingly. -ac_fn_c_find_uintX_t () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 -$as_echo_n "checking for uint$2_t... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - # Order is important - never check a type that is potentially smaller - # than half of the expected target width. - for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ - 'unsigned long long int' 'unsigned short int' 'unsigned char'; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - case $ac_type in #( - uint$2_t) : - eval "$3=yes" ;; #( - *) : - eval "$3=\$ac_type" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if eval test \"x\$"$3"\" = x"no"; then : - -else - break -fi - done -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_find_uintX_t cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. @@ -6455,109 +6325,6 @@ if test -f /dev/bpf0 ; then fi # -# Make sure we have definitions for all the C99 specified-width types -# (regardless of whether the environment is a C99 environment or not). -# -ac_fn_c_find_intX_t "$LINENO" "8" "ac_cv_c_int8_t" -case $ac_cv_c_int8_t in #( - no|yes) ;; #( - *) - -cat >>confdefs.h <<_ACEOF -#define int8_t $ac_cv_c_int8_t -_ACEOF -;; -esac - -ac_fn_c_find_intX_t "$LINENO" "16" "ac_cv_c_int16_t" -case $ac_cv_c_int16_t in #( - no|yes) ;; #( - *) - -cat >>confdefs.h <<_ACEOF -#define int16_t $ac_cv_c_int16_t -_ACEOF -;; -esac - -ac_fn_c_find_intX_t "$LINENO" "32" "ac_cv_c_int32_t" -case $ac_cv_c_int32_t in #( - no|yes) ;; #( - *) - -cat >>confdefs.h <<_ACEOF -#define int32_t $ac_cv_c_int32_t -_ACEOF -;; -esac - -ac_fn_c_find_intX_t "$LINENO" "64" "ac_cv_c_int64_t" -case $ac_cv_c_int64_t in #( - no|yes) ;; #( - *) - -cat >>confdefs.h <<_ACEOF -#define int64_t $ac_cv_c_int64_t -_ACEOF -;; -esac - -ac_fn_c_find_uintX_t "$LINENO" "8" "ac_cv_c_uint8_t" -case $ac_cv_c_uint8_t in #( - no|yes) ;; #( - *) - -$as_echo "#define _UINT8_T 1" >>confdefs.h - - -cat >>confdefs.h <<_ACEOF -#define uint8_t $ac_cv_c_uint8_t -_ACEOF -;; - esac - -ac_fn_c_find_uintX_t "$LINENO" "16" "ac_cv_c_uint16_t" -case $ac_cv_c_uint16_t in #( - no|yes) ;; #( - *) - - -cat >>confdefs.h <<_ACEOF -#define uint16_t $ac_cv_c_uint16_t -_ACEOF -;; - esac - -ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t" -case $ac_cv_c_uint32_t in #( - no|yes) ;; #( - *) - -$as_echo "#define _UINT32_T 1" >>confdefs.h - - -cat >>confdefs.h <<_ACEOF -#define uint32_t $ac_cv_c_uint32_t -_ACEOF -;; - esac - -ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t" -case $ac_cv_c_uint64_t in #( - no|yes) ;; #( - *) - -$as_echo "#define _UINT64_T 1" >>confdefs.h - - -cat >>confdefs.h <<_ACEOF -#define uint64_t $ac_cv_c_uint64_t -_ACEOF -;; - esac - - -# # Make sure we have a definition for C99's uintptr_t (regardless of # whether the environment is a C99 environment or not). # @@ -6600,6 +6367,26 @@ fi # +# Check whether we have pcap/pcap-inttypes.h. +# If we do, we use that to get the C99 types defined. +# +savedcppflags="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $V_INCLS" +for ac_header in pcap/pcap-inttypes.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "pcap/pcap-inttypes.h" "ac_cv_header_pcap_pcap_inttypes_h" "$ac_includes_default" +if test "x$ac_cv_header_pcap_pcap_inttypes_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_PCAP_PCAP_INTTYPES_H 1 +_ACEOF + +fi + +done + +CPPFLAGS="$savedcppflags" + +# # Define the old BSD specified-width types in terms of the C99 types; # we may need them with libpcap include files. # @@ -6653,325 +6440,11 @@ fi # -# Check for <inttypes.h> -# -for ac_header in inttypes.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" -if test "x$ac_cv_header_inttypes_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_INTTYPES_H 1 -_ACEOF - - # - # OK, we have inttypes.h, but does it define all the PRI[doxu]64 macros? - # Some systems have an inttypes.h that doesn't define all of them. - # - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether inttypes.h defines the PRI[doxu]64 macros" >&5 -$as_echo_n "checking whether inttypes.h defines the PRI[doxu]64 macros... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include <inttypes.h> - #include <stdio.h> - #include <sys/types.h> - - main() - { - printf("%" PRId64 "\n", (uint64_t)1); - printf("%" PRIo64 "\n", (uint64_t)1); - printf("%" PRIx64 "\n", (uint64_t)1); - printf("%" PRIu64 "\n", (uint64_t)1); - } - - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - ac_lbl_inttypes_h_defines_formats=yes - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ac_lbl_inttypes_h_defines_formats=no - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -else - - # - # We don't have inttypes.h, so it obviously can't define those - # macros. - # - ac_lbl_inttypes_h_defines_formats=no - -fi - -done - -if test "$ac_lbl_inttypes_h_defines_formats" = no; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether %lx can be used to format 64-bit integers" >&5 -$as_echo_n "checking whether %lx can be used to format 64-bit integers... " >&6; } - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -# ifdef HAVE_INTTYPES_H - #include <inttypes.h> -# endif - #include <stdio.h> - #include <sys/types.h> - - main() - { - uint64_t t = 1; - char strbuf[16+1]; - sprintf(strbuf, "%016lx", t << 32); - if (strcmp(strbuf, "0000000100000000") == 0) - exit(0); - else - exit(1); - } - - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - - -$as_echo "#define PRId64 \"ld\"" >>confdefs.h - - -$as_echo "#define PRIo64 \"lo\"" >>confdefs.h - - -$as_echo "#define PRIx64 \"lx\"" >>confdefs.h - - -$as_echo "#define PRIu64 \"lu\"" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether %llx can be used to format 64-bit integers" >&5 -$as_echo_n "checking whether %llx can be used to format 64-bit integers... " >&6; } - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -# ifdef HAVE_INTTYPES_H - #include <inttypes.h> -# endif - #include <stdio.h> - #include <sys/types.h> - - main() - { - uint64_t t = 1; - char strbuf[16+1]; - sprintf(strbuf, "%016llx", t << 32); - if (strcmp(strbuf, "0000000100000000") == 0) - exit(0); - else - exit(1); - } - - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - - -$as_echo "#define PRId64 \"lld\"" >>confdefs.h - - -$as_echo "#define PRIo64 \"llo\"" >>confdefs.h - - -$as_echo "#define PRIx64 \"llx\"" >>confdefs.h - - -$as_echo "#define PRIu64 \"llu\"" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether %Lx can be used to format 64-bit integers" >&5 -$as_echo_n "checking whether %Lx can be used to format 64-bit integers... " >&6; } - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -# ifdef HAVE_INTTYPES_H - #include <inttypes.h> -# endif - #include <stdio.h> - #include <sys/types.h> - - main() - { - uint64_t t = 1; - char strbuf[16+1]; - sprintf(strbuf, "%016Lx", t << 32); - if (strcmp(strbuf, "0000000100000000") == 0) - exit(0); - else - exit(1); - } - - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - - -$as_echo "#define PRId64 \"Ld\"" >>confdefs.h - - -$as_echo "#define PRIo64 \"Lo\"" >>confdefs.h - - -$as_echo "#define PRIx64 \"Lx\"" >>confdefs.h - - -$as_echo "#define PRIu64 \"Lu\"" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether %qx can be used to format 64-bit integers" >&5 -$as_echo_n "checking whether %qx can be used to format 64-bit integers... " >&6; } - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -# ifdef HAVE_INTTYPES_H - #include <inttypes.h> -# endif - #include <stdio.h> - #include <sys/types.h> - - main() - { - uint64_t t = 1; - char strbuf[16+1]; - sprintf(strbuf, "%016qx", t << 32); - if (strcmp(strbuf, "0000000100000000") == 0) - exit(0); - else - exit(1); - } - - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - - -$as_echo "#define PRId64 \"qd\"" >>confdefs.h - - -$as_echo "#define PRIo64 \"qo\"" >>confdefs.h - - -$as_echo "#define PRIx64 \"qx\"" >>confdefs.h - - -$as_echo "#define PRIu64 \"qu\"" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - - as_fn_error $? "neither %llx nor %Lx nor %qx worked on a 64-bit integer" "$LINENO" 5 - - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - - - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - - - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - - - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -fi - -# # Check for some headers introduced in later versions of libpcap # and used by some printers. # -# Those headers use the {u_}intN_t types, so we must do this after -# we check for what's needed to get them defined. +# Those headers might use the {u_}intN_t types, so we must do this +# after we check for what's needed to get them defined. # savedcppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $V_INCLS" diff --git a/configure.in b/configure.in index 8681daa5..6686983e 100644 --- a/configure.in +++ b/configure.in @@ -754,25 +754,21 @@ if test -f /dev/bpf0 ; then fi # -# Make sure we have definitions for all the C99 specified-width types -# (regardless of whether the environment is a C99 environment or not). -# -AC_TYPE_INT8_T -AC_TYPE_INT16_T -AC_TYPE_INT32_T -AC_TYPE_INT64_T -AC_TYPE_UINT8_T -AC_TYPE_UINT16_T -AC_TYPE_UINT32_T -AC_TYPE_UINT64_T - -# # Make sure we have a definition for C99's uintptr_t (regardless of # whether the environment is a C99 environment or not). # AC_TYPE_UINTPTR_T # +# Check whether we have pcap/pcap-inttypes.h. +# If we do, we use that to get the C99 types defined. +# +savedcppflags="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $V_INCLS" +AC_CHECK_HEADERS(pcap/pcap-inttypes.h) +CPPFLAGS="$savedcppflags" + +# # Define the old BSD specified-width types in terms of the C99 types; # we may need them with libpcap include files. # @@ -802,70 +798,11 @@ AC_CHECK_TYPE([u_int64_t], , ]) # -# Check for <inttypes.h> -# -AC_CHECK_HEADERS(inttypes.h, - [ - # - # OK, we have inttypes.h, but does it define all the PRI[doxu]64 macros? - # Some systems have an inttypes.h that doesn't define all of them. - # - AC_MSG_CHECKING([[whether inttypes.h defines the PRI[doxu]64 macros]]) - AC_COMPILE_IFELSE( - [ - AC_LANG_SOURCE( - [[ - #include <inttypes.h> - #include <stdio.h> - #include <sys/types.h> - - main() - { - printf("%" PRId64 "\n", (uint64_t)1); - printf("%" PRIo64 "\n", (uint64_t)1); - printf("%" PRIx64 "\n", (uint64_t)1); - printf("%" PRIu64 "\n", (uint64_t)1); - } - ]]) - ], - [ - AC_MSG_RESULT(yes) - ac_lbl_inttypes_h_defines_formats=yes - ], - [ - AC_MSG_RESULT(no) - ac_lbl_inttypes_h_defines_formats=no - ]) - ], - [ - # - # We don't have inttypes.h, so it obviously can't define those - # macros. - # - ac_lbl_inttypes_h_defines_formats=no - ]) -if test "$ac_lbl_inttypes_h_defines_formats" = no; then - AC_LBL_CHECK_64BIT_FORMAT(l, - [ - AC_LBL_CHECK_64BIT_FORMAT(ll, - [ - AC_LBL_CHECK_64BIT_FORMAT(L, - [ - AC_LBL_CHECK_64BIT_FORMAT(q, - [ - AC_MSG_ERROR([neither %llx nor %Lx nor %qx worked on a 64-bit integer]) - ]) - ]) - ]) - ]) -fi - -# # Check for some headers introduced in later versions of libpcap # and used by some printers. # -# Those headers use the {u_}intN_t types, so we must do this after -# we check for what's needed to get them defined. +# Those headers might use the {u_}intN_t types, so we must do this +# after we check for what's needed to get them defined. # savedcppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $V_INCLS" diff --git a/netdissect-stdinc.h b/netdissect-stdinc.h index 9af1ca17..9b88ce9e 100644 --- a/netdissect-stdinc.h +++ b/netdissect-stdinc.h @@ -41,13 +41,119 @@ #include <errno.h> +/* + * Get the C99 types, and the PRI[doux]64 format strings, defined. + */ +#ifdef HAVE_PCAP_PCAP_INTTYPES_H + /* + * We have pcap/pcap-inttypes.h; use that, as it'll do all the + * work, and won't cause problems if a file includes this file + * and later includes a pcap header file that also includes + * pcap/pcap-inttypes.h. + */ + #include <pcap/pcap-inttypes.h> +#else + /* + * OK, we don't have pcap/pcap-inttypes.h, so we'll have to + * do the work ourselves, but at least we don't have to + * worry about other headers including it and causing + * clashes. + */ + #if defined(_MSC_VER) + /* + * Compiler is MSVC. + */ + #if _MSC_VER >= 1800 + /* + * VS 2013 or newer; we have <inttypes.h>. + */ + #include <inttypes.h> + #else + /* + * Earlier VS; we have to define this stuff ourselves. + */ + typedef unsigned char uint8_t; + typedef signed char int8_t; + typedef unsigned short uint16_t; + typedef signed short int16_t; + typedef unsigned int uint32_t; + typedef signed int int32_t; + #ifdef _MSC_EXTENSIONS + typedef unsigned _int64 uint64_t; + typedef _int64 int64_t; + #else /* _MSC_EXTENSIONS */ + typedef unsigned long long uint64_t; + typedef long long int64_t; + #endif + #endif + + /* + * Suppress definition of intN_t in bittypes.h, which might be included + * by <pcap/pcap.h> in older versions of WinPcap. + * (Yes, HAVE_U_INTn_T, as the definition guards are UN*X-oriented, and + * we check for u_intN_t in the UN*X configure script.) + */ + #define HAVE_U_INT8_T + #define HAVE_U_INT16_T + #define HAVE_U_INT32_T + #define HAVE_U_INT64_T + + /* + * These may be defined by <inttypes.h>. If not, define them + * ourselves. + * + * XXX - for MSVC, we always want the _MSC_EXTENSIONS versions. + * What about other compilers? If, as the MinGW Web site says MinGW + * does, the other compilers just use Microsoft's run-time library, + * then they should probably use the _MSC_EXTENSIONS even if the + * compiler doesn't define _MSC_EXTENSIONS. + */ + #ifndef PRId64 + #ifdef _MSC_EXTENSIONS + #define PRId64 "I64d" + #else + #define PRId64 "lld" + #endif + #endif /* PRId64 */ + + #ifndef PRIo64 + #ifdef _MSC_EXTENSIONS + #define PRIo64 "I64o" + #else + #define PRIo64 "llo" + #endif + #endif /* PRIo64 */ + + #ifndef PRIx64 + #ifdef _MSC_EXTENSIONS + #define PRIx64 "I64x" + #else + #define PRIx64 "llx" + #endif + #endif + + #ifndef PRIu64 + #ifdef _MSC_EXTENSIONS + #define PRIu64 "I64u" + #else + #define PRIu64 "llu" + #endif + #endif + #elif defined(__MINGW32__) || !defined(_WIN32) + /* + * Compiler is MinGW or target is UN*X or MS-DOS. Just use + * <inttypes.h>. + */ + #include <inttypes.h> + #endif +#endif /* HAVE_PCAP_PCAP_INTTYPES_H */ + #ifdef _WIN32 /* * Includes and definitions for Windows. */ -#include <stdint.h> #include <stdio.h> #include <winsock2.h> #include <ws2tcpip.h> @@ -57,95 +163,6 @@ #include <fcntl.h> #include <sys/types.h> -#ifndef uint8_t -#define uint8_t unsigned char -#endif - -#ifndef int8_t -#define int8_t signed char -#endif - -#ifndef uint16_t -#define uint16_t unsigned short -#endif - -#ifndef int16_t -#define int16_t signed short -#endif - -#ifndef uint32_t -#define uint32_t unsigned int -#endif - -#ifndef int32_t -#define int32_t signed int -#endif - -#ifdef _MSC_EXTENSIONS - -#ifndef uint64_t -#define uint64_t unsigned _int64 -#endif - -#ifndef int64_t -#define int64_t _int64 -#endif - -#ifndef PRId64 -#define PRId64 "I64d" -#endif - -#ifndef PRIo64 -#define PRIo64 "I64o" -#endif - -#ifndef PRIu64 -#define PRIu64 "I64u" -#endif - -#ifndef PRIx64 -#define PRIx64 "I64x" -#endif - -#else /* _MSC_EXTENSIONS */ - -#ifndef uint64_t -#define uint64_t unsigned long long -#endif - -#ifndef int64_t -#define int64_t long long -#endif - -#ifndef PRId64 -#define PRId64 "lld" -#endif - -#ifndef PRIo64 -#define PRIo64 "llo" -#endif - -#ifndef PRIu64 -#define PRIu64 "llu" -#endif - -#ifndef PRIx64 -#define PRIx64 "llx" -#endif - -#endif /* _MSC_EXTENSIONS */ - -/* - * Suppress definition of intN_t in bittypes.h, as included by <pcap/pcap.h> - * on Windows. - * (Yes, HAVE_U_INTn_T, as the definition guards are UN*X-oriented, and - * we check for u_intN_t in the UN*X configure script.) - */ -#define HAVE_U_INT8_T -#define HAVE_U_INT16_T -#define HAVE_U_INT32_T -#define HAVE_U_INT64_T - #ifdef _MSC_VER #define stat _stat #define open _open @@ -194,11 +211,6 @@ typedef char* caddr_t; #include <ctype.h> #include <unistd.h> #include <netdb.h> -#if HAVE_INTTYPES_H -#include <inttypes.h> -#elif HAVE_STDINT_H -#include <stdint.h> -#endif #include <sys/param.h> #include <sys/types.h> /* concession to AIX */ #include <sys/time.h> |