aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2011-02-20 00:48:52 -0800
committerPaul Eggert2011-02-20 00:48:52 -0800
commit61353ac8cdbdda53d75f5ab9aa7f0b637aee5a00 (patch)
tree2cfc088246ad9c97eea1ba1c7a1b7e5af64bea2d
parent01baa1e6f227a87530f65b7e45049968a1afc12a (diff)
parentff05203ec64be4e2148ca607d4f7e04375426916 (diff)
downloademacs-61353ac8cdbdda53d75f5ab9aa7f0b637aee5a00.tar.gz
emacs-61353ac8cdbdda53d75f5ab9aa7f0b637aee5a00.zip
Merge: Import crypto/md5 and stdint modules from gnulib.
-rw-r--r--ChangeLog14
-rw-r--r--Makefile.in3
-rw-r--r--aclocal.m43
-rw-r--r--admin/notes/copyright4
-rwxr-xr-xconfigure1359
-rw-r--r--lib/Makefile.in95
-rw-r--r--lib/gnulib.mk55
-rw-r--r--lib/md5.c462
-rw-r--r--lib/md5.h126
-rw-r--r--lib/stdint.in.h592
-rw-r--r--m4/gl-comp.m412
-rw-r--r--m4/longlong.m4113
-rw-r--r--m4/md5.m415
-rw-r--r--m4/stdint.m4479
-rw-r--r--src/ChangeLog10
-rw-r--r--src/Makefile.in2
-rw-r--r--src/config.in59
-rw-r--r--src/deps.mk9
-rw-r--r--src/md5.c429
-rw-r--r--src/md5.h148
20 files changed, 3343 insertions, 646 deletions
diff --git a/ChangeLog b/ChangeLog
index e6675449001..5b45cc2eabd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
12011-02-20 Paul Eggert <eggert@cs.ucla.edu>
2
3 Import crypto/md5 and stdint modules from gnulib.
4 * aclocal.m4, configure, lib/Makefile.in, lib/gnulib.mk, m4/gl-comp.m4:
5 Regenerate.
6 * lib/md5.c, lib/md5.h: Rename from src/md5.h and lib/md5.h.
7 Import the new versions from gnulib; they assume a C99-style
8 <stdint.h>, supplied by the stdint module.
9 * lib/stdint.in.h, m4/longlong.m4, m4/stdint.m4, m4/md5.m4: New files,
10 imported from gnulib.
11 * Makefile.in (MAKEFILE_MODULES): Add crypto/md5.
12 * admin/notes/copyright: Remove src/md5.c and src/md5.h as
13 special cases.
14
12011-02-19 Eli Zaretskii <eliz@gnu.org> 152011-02-19 Eli Zaretskii <eliz@gnu.org>
2 16
3 * .bzrignore: Ignore cxxdefs.h and lib/*.in-h files. 17 * .bzrignore: Ignore cxxdefs.h and lib/*.in-h files.
diff --git a/Makefile.in b/Makefile.in
index 126304cc4e5..8e1eb1e3b1a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -330,7 +330,8 @@ DOS_gnulib_comp.m4 = gl-comp.m4
330# Update modules from gnulib, for maintainers, who should have it in 330# Update modules from gnulib, for maintainers, who should have it in
331# $(gnulib_srcdir) (relative to $(srcdir) and should have build tools 331# $(gnulib_srcdir) (relative to $(srcdir) and should have build tools
332# as per $(gnulib_srcdir)/DEPENDENCIES. 332# as per $(gnulib_srcdir)/DEPENDENCIES.
333GNULIB_MODULES = dtoastr getloadavg getopt-gnu ignore-value mktime strftime 333GNULIB_MODULES = \
334 crypto/md5 dtoastr getloadavg getopt-gnu ignore-value mktime strftime
334GNULIB_TOOL_FLAGS = \ 335GNULIB_TOOL_FLAGS = \
335 --import --no-changelog --no-vc-files --makefile-name=gnulib.mk 336 --import --no-changelog --no-vc-files --makefile-name=gnulib.mk
336sync-from-gnulib: $(gnulib_srcdir) 337sync-from-gnulib: $(gnulib_srcdir)
diff --git a/aclocal.m4 b/aclocal.m4
index f299e4ab11e..2468e83d25a 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -992,10 +992,13 @@ m4_include([m4/getopt.m4])
992m4_include([m4/gl-comp.m4]) 992m4_include([m4/gl-comp.m4])
993m4_include([m4/gnulib-common.m4]) 993m4_include([m4/gnulib-common.m4])
994m4_include([m4/include_next.m4]) 994m4_include([m4/include_next.m4])
995m4_include([m4/longlong.m4])
996m4_include([m4/md5.m4])
995m4_include([m4/mktime.m4]) 997m4_include([m4/mktime.m4])
996m4_include([m4/multiarch.m4]) 998m4_include([m4/multiarch.m4])
997m4_include([m4/stdbool.m4]) 999m4_include([m4/stdbool.m4])
998m4_include([m4/stddef_h.m4]) 1000m4_include([m4/stddef_h.m4])
1001m4_include([m4/stdint.m4])
999m4_include([m4/stdlib_h.m4]) 1002m4_include([m4/stdlib_h.m4])
1000m4_include([m4/strftime.m4]) 1003m4_include([m4/strftime.m4])
1001m4_include([m4/time_h.m4]) 1004m4_include([m4/time_h.m4])
diff --git a/admin/notes/copyright b/admin/notes/copyright
index 32a096c928d..54d97adaf1c 100644
--- a/admin/notes/copyright
+++ b/admin/notes/copyright
@@ -557,7 +557,7 @@ Note: erring on the side of caution, I also added notices to some
557files I thought might be considered non-trivial (if one includes 557files I thought might be considered non-trivial (if one includes
558comment) in s/: 558comment) in s/:
559 aix4-1.h hpux10.h irix6-0.h irix6-5.h 559 aix4-1.h hpux10.h irix6-0.h irix6-5.h
560 ptx4.h sol2.h 560 ptx4.h sol2.h
561 561
562(everything with > 30 non-blank lines, which at least is _some_ kind of 562(everything with > 30 non-blank lines, which at least is _some_ kind of
563system) 563system)
@@ -632,8 +632,6 @@ alone (may import them from Gnulib again). These are:
632 lib/*.[ch] 632 lib/*.[ch]
633 lib/gnulib.mk 633 lib/gnulib.mk
634 src/gmalloc.c 634 src/gmalloc.c
635 src/md5.c
636 src/md5.h
637 src/termcap.c 635 src/termcap.c
638 src/tparam.c 636 src/tparam.c
639 637
diff --git a/configure b/configure
index a9cec714412..d3607aec316 100755
--- a/configure
+++ b/configure
@@ -679,6 +679,30 @@ NEXT_AS_FIRST_DIRECTIVE_TIME_H
679NEXT_TIME_H 679NEXT_TIME_H
680NEXT_AS_FIRST_DIRECTIVE_STDLIB_H 680NEXT_AS_FIRST_DIRECTIVE_STDLIB_H
681NEXT_STDLIB_H 681NEXT_STDLIB_H
682STDINT_H
683WINT_T_SUFFIX
684WCHAR_T_SUFFIX
685SIG_ATOMIC_T_SUFFIX
686SIZE_T_SUFFIX
687PTRDIFF_T_SUFFIX
688HAVE_SIGNED_WINT_T
689HAVE_SIGNED_WCHAR_T
690HAVE_SIGNED_SIG_ATOMIC_T
691BITSIZEOF_WINT_T
692BITSIZEOF_WCHAR_T
693BITSIZEOF_SIG_ATOMIC_T
694BITSIZEOF_SIZE_T
695BITSIZEOF_PTRDIFF_T
696HAVE_SYS_BITYPES_H
697HAVE_SYS_INTTYPES_H
698HAVE_STDINT_H
699NEXT_AS_FIRST_DIRECTIVE_STDINT_H
700NEXT_STDINT_H
701HAVE_SYS_TYPES_H
702HAVE_INTTYPES_H
703HAVE_WCHAR_H
704HAVE_UNSIGNED_LONG_LONG_INT
705HAVE_LONG_LONG_INT
682NEXT_AS_FIRST_DIRECTIVE_STDDEF_H 706NEXT_AS_FIRST_DIRECTIVE_STDDEF_H
683NEXT_STDDEF_H 707NEXT_STDDEF_H
684STDDEF_H 708STDDEF_H
@@ -2431,6 +2455,184 @@ $as_echo "$ac_res" >&6; }
2431 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno 2455 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
2432 2456
2433} # ac_fn_c_check_type 2457} # ac_fn_c_check_type
2458
2459# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
2460# --------------------------------------------
2461# Tries to find the compile-time value of EXPR in a program that includes
2462# INCLUDES, setting VAR accordingly. Returns whether the value could be
2463# computed
2464ac_fn_c_compute_int ()
2465{
2466 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
2467 if test "$cross_compiling" = yes; then
2468 # Depending upon the size, compute the lo and hi bounds.
2469cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2470/* end confdefs.h. */
2471$4
2472int
2473main ()
2474{
2475static int test_array [1 - 2 * !(($2) >= 0)];
2476test_array [0] = 0
2477
2478 ;
2479 return 0;
2480}
2481_ACEOF
2482if ac_fn_c_try_compile "$LINENO"; then :
2483 ac_lo=0 ac_mid=0
2484 while :; do
2485 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2486/* end confdefs.h. */
2487$4
2488int
2489main ()
2490{
2491static int test_array [1 - 2 * !(($2) <= $ac_mid)];
2492test_array [0] = 0
2493
2494 ;
2495 return 0;
2496}
2497_ACEOF
2498if ac_fn_c_try_compile "$LINENO"; then :
2499 ac_hi=$ac_mid; break
2500else
2501 as_fn_arith $ac_mid + 1 && ac_lo=$as_val
2502 if test $ac_lo -le $ac_mid; then
2503 ac_lo= ac_hi=
2504 break
2505 fi
2506 as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
2507fi
2508rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2509 done
2510else
2511 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2512/* end confdefs.h. */
2513$4
2514int
2515main ()
2516{
2517static int test_array [1 - 2 * !(($2) < 0)];
2518test_array [0] = 0
2519
2520 ;
2521 return 0;
2522}
2523_ACEOF
2524if ac_fn_c_try_compile "$LINENO"; then :
2525 ac_hi=-1 ac_mid=-1
2526 while :; do
2527 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2528/* end confdefs.h. */
2529$4
2530int
2531main ()
2532{
2533static int test_array [1 - 2 * !(($2) >= $ac_mid)];
2534test_array [0] = 0
2535
2536 ;
2537 return 0;
2538}
2539_ACEOF
2540if ac_fn_c_try_compile "$LINENO"; then :
2541 ac_lo=$ac_mid; break
2542else
2543 as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
2544 if test $ac_mid -le $ac_hi; then
2545 ac_lo= ac_hi=
2546 break
2547 fi
2548 as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
2549fi
2550rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2551 done
2552else
2553 ac_lo= ac_hi=
2554fi
2555rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2556fi
2557rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2558# Binary search between lo and hi bounds.
2559while test "x$ac_lo" != "x$ac_hi"; do
2560 as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
2561 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2562/* end confdefs.h. */
2563$4
2564int
2565main ()
2566{
2567static int test_array [1 - 2 * !(($2) <= $ac_mid)];
2568test_array [0] = 0
2569
2570 ;
2571 return 0;
2572}
2573_ACEOF
2574if ac_fn_c_try_compile "$LINENO"; then :
2575 ac_hi=$ac_mid
2576else
2577 as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
2578fi
2579rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2580done
2581case $ac_lo in #((
2582?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
2583'') ac_retval=1 ;;
2584esac
2585 else
2586 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2587/* end confdefs.h. */
2588$4
2589static long int longval () { return $2; }
2590static unsigned long int ulongval () { return $2; }
2591#include <stdio.h>
2592#include <stdlib.h>
2593int
2594main ()
2595{
2596
2597 FILE *f = fopen ("conftest.val", "w");
2598 if (! f)
2599 return 1;
2600 if (($2) < 0)
2601 {
2602 long int i = longval ();
2603 if (i != ($2))
2604 return 1;
2605 fprintf (f, "%ld", i);
2606 }
2607 else
2608 {
2609 unsigned long int i = ulongval ();
2610 if (i != ($2))
2611 return 1;
2612 fprintf (f, "%lu", i);
2613 }
2614 /* Do not output a trailing newline, as this causes \r\n confusion
2615 on some platforms. */
2616 return ferror (f) || fclose (f) != 0;
2617
2618 ;
2619 return 0;
2620}
2621_ACEOF
2622if ac_fn_c_try_run "$LINENO"; then :
2623 echo >>conftest.val; read $3 <conftest.val; ac_retval=0
2624else
2625 ac_retval=1
2626fi
2627rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
2628 conftest.$ac_objext conftest.beam conftest.$ac_ext
2629rm -f conftest.val
2630
2631 fi
2632 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
2633 as_fn_set_status $ac_retval
2634
2635} # ac_fn_c_compute_int
2434cat >config.log <<_ACEOF 2636cat >config.log <<_ACEOF
2435This file contains any messages produced by compilers while 2637This file contains any messages produced by compilers while
2436running configure, to aid debugging if configure makes a mistake. 2638running configure, to aid debugging if configure makes a mistake.
@@ -2721,6 +2923,8 @@ as_fn_append ac_header_list " sys/param.h"
2721gl_getopt_required=GNU 2923gl_getopt_required=GNU
2722as_fn_append ac_header_list " getopt.h" 2924as_fn_append ac_header_list " getopt.h"
2723as_fn_append ac_func_list " alarm" 2925as_fn_append ac_func_list " alarm"
2926as_fn_append ac_header_list " wchar.h"
2927as_fn_append ac_header_list " stdint.h"
2724as_fn_append ac_func_list " tzset" 2928as_fn_append ac_func_list " tzset"
2725as_fn_append ac_header_list " sys/time.h" 2929as_fn_append ac_header_list " sys/time.h"
2726as_fn_append ac_func_list " localtime_r" 2930as_fn_append ac_func_list " localtime_r"
@@ -5881,6 +6085,7 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
5881 6085
5882 # Code from module arg-nonnull: 6086 # Code from module arg-nonnull:
5883 # Code from module c++defs: 6087 # Code from module c++defs:
6088 # Code from module crypto/md5:
5884 # Code from module dtoastr: 6089 # Code from module dtoastr:
5885 # Code from module extensions: 6090 # Code from module extensions:
5886 6091
@@ -5895,6 +6100,7 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
5895 # Code from module multiarch: 6100 # Code from module multiarch:
5896 # Code from module stdbool: 6101 # Code from module stdbool:
5897 # Code from module stddef: 6102 # Code from module stddef:
6103 # Code from module stdint:
5898 # Code from module stdlib: 6104 # Code from module stdlib:
5899 # Code from module strftime: 6105 # Code from module strftime:
5900 # Code from module time: 6106 # Code from module time:
@@ -13201,6 +13407,274 @@ fi
13201 export LIBC_FATAL_STDERR_ 13407 export LIBC_FATAL_STDERR_
13202 13408
13203 13409
13410 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
13411$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
13412if ${ac_cv_c_bigendian+:} false; then :
13413 $as_echo_n "(cached) " >&6
13414else
13415 ac_cv_c_bigendian=unknown
13416 # See if we're dealing with a universal compiler.
13417 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13418/* end confdefs.h. */
13419#ifndef __APPLE_CC__
13420 not a universal capable compiler
13421 #endif
13422 typedef int dummy;
13423
13424_ACEOF
13425if ac_fn_c_try_compile "$LINENO"; then :
13426
13427 # Check for potential -arch flags. It is not universal unless
13428 # there are at least two -arch flags with different values.
13429 ac_arch=
13430 ac_prev=
13431 for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
13432 if test -n "$ac_prev"; then
13433 case $ac_word in
13434 i?86 | x86_64 | ppc | ppc64)
13435 if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
13436 ac_arch=$ac_word
13437 else
13438 ac_cv_c_bigendian=universal
13439 break
13440 fi
13441 ;;
13442 esac
13443 ac_prev=
13444 elif test "x$ac_word" = "x-arch"; then
13445 ac_prev=arch
13446 fi
13447 done
13448fi
13449rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
13450 if test $ac_cv_c_bigendian = unknown; then
13451 # See if sys/param.h defines the BYTE_ORDER macro.
13452 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13453/* end confdefs.h. */
13454#include <sys/types.h>
13455 #include <sys/param.h>
13456
13457int
13458main ()
13459{
13460#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
13461 && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
13462 && LITTLE_ENDIAN)
13463 bogus endian macros
13464 #endif
13465
13466 ;
13467 return 0;
13468}
13469_ACEOF
13470if ac_fn_c_try_compile "$LINENO"; then :
13471 # It does; now see whether it defined to BIG_ENDIAN or not.
13472 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13473/* end confdefs.h. */
13474#include <sys/types.h>
13475 #include <sys/param.h>
13476
13477int
13478main ()
13479{
13480#if BYTE_ORDER != BIG_ENDIAN
13481 not big endian
13482 #endif
13483
13484 ;
13485 return 0;
13486}
13487_ACEOF
13488if ac_fn_c_try_compile "$LINENO"; then :
13489 ac_cv_c_bigendian=yes
13490else
13491 ac_cv_c_bigendian=no
13492fi
13493rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
13494fi
13495rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
13496 fi
13497 if test $ac_cv_c_bigendian = unknown; then
13498 # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
13499 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13500/* end confdefs.h. */
13501#include <limits.h>
13502
13503int
13504main ()
13505{
13506#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
13507 bogus endian macros
13508 #endif
13509
13510 ;
13511 return 0;
13512}
13513_ACEOF
13514if ac_fn_c_try_compile "$LINENO"; then :
13515 # It does; now see whether it defined to _BIG_ENDIAN or not.
13516 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13517/* end confdefs.h. */
13518#include <limits.h>
13519
13520int
13521main ()
13522{
13523#ifndef _BIG_ENDIAN
13524 not big endian
13525 #endif
13526
13527 ;
13528 return 0;
13529}
13530_ACEOF
13531if ac_fn_c_try_compile "$LINENO"; then :
13532 ac_cv_c_bigendian=yes
13533else
13534 ac_cv_c_bigendian=no
13535fi
13536rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
13537fi
13538rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
13539 fi
13540 if test $ac_cv_c_bigendian = unknown; then
13541 # Compile a test program.
13542 if test "$cross_compiling" = yes; then :
13543 # Try to guess by grepping values from an object file.
13544 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13545/* end confdefs.h. */
13546short int ascii_mm[] =
13547 { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
13548 short int ascii_ii[] =
13549 { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
13550 int use_ascii (int i) {
13551 return ascii_mm[i] + ascii_ii[i];
13552 }
13553 short int ebcdic_ii[] =
13554 { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
13555 short int ebcdic_mm[] =
13556 { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
13557 int use_ebcdic (int i) {
13558 return ebcdic_mm[i] + ebcdic_ii[i];
13559 }
13560 extern int foo;
13561
13562int
13563main ()
13564{
13565return use_ascii (foo) == use_ebcdic (foo);
13566 ;
13567 return 0;
13568}
13569_ACEOF
13570if ac_fn_c_try_compile "$LINENO"; then :
13571 if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
13572 ac_cv_c_bigendian=yes
13573 fi
13574 if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
13575 if test "$ac_cv_c_bigendian" = unknown; then
13576 ac_cv_c_bigendian=no
13577 else
13578 # finding both strings is unlikely to happen, but who knows?
13579 ac_cv_c_bigendian=unknown
13580 fi
13581 fi
13582fi
13583rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
13584else
13585 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13586/* end confdefs.h. */
13587$ac_includes_default
13588int
13589main ()
13590{
13591
13592 /* Are we little or big endian? From Harbison&Steele. */
13593 union
13594 {
13595 long int l;
13596 char c[sizeof (long int)];
13597 } u;
13598 u.l = 1;
13599 return u.c[sizeof (long int) - 1] == 1;
13600
13601 ;
13602 return 0;
13603}
13604_ACEOF
13605if ac_fn_c_try_run "$LINENO"; then :
13606 ac_cv_c_bigendian=no
13607else
13608 ac_cv_c_bigendian=yes
13609fi
13610rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
13611 conftest.$ac_objext conftest.beam conftest.$ac_ext
13612fi
13613
13614 fi
13615fi
13616{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
13617$as_echo "$ac_cv_c_bigendian" >&6; }
13618 case $ac_cv_c_bigendian in #(
13619 yes)
13620 $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
13621;; #(
13622 no)
13623 ;; #(
13624 universal)
13625
13626$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
13627
13628 ;; #(
13629 *)
13630 as_fn_error $? "unknown endianness
13631 presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
13632 esac
13633
13634
13635{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
13636$as_echo_n "checking for inline... " >&6; }
13637if ${ac_cv_c_inline+:} false; then :
13638 $as_echo_n "(cached) " >&6
13639else
13640 ac_cv_c_inline=no
13641for ac_kw in inline __inline__ __inline; do
13642 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13643/* end confdefs.h. */
13644#ifndef __cplusplus
13645typedef int foo_t;
13646static $ac_kw foo_t static_foo () {return 0; }
13647$ac_kw foo_t foo () {return 0; }
13648#endif
13649
13650_ACEOF
13651if ac_fn_c_try_compile "$LINENO"; then :
13652 ac_cv_c_inline=$ac_kw
13653fi
13654rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
13655 test "$ac_cv_c_inline" != no && break
13656done
13657
13658fi
13659{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
13660$as_echo "$ac_cv_c_inline" >&6; }
13661
13662case $ac_cv_c_inline in
13663 inline | yes) ;;
13664 *)
13665 case $ac_cv_c_inline in
13666 no) ac_val=;;
13667 *) ac_val=$ac_cv_c_inline;;
13668 esac
13669 cat >>confdefs.h <<_ACEOF
13670#ifndef __cplusplus
13671#define inline $ac_val
13672#endif
13673_ACEOF
13674 ;;
13675esac
13676
13677
13204 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strtold conforms to C99" >&5 13678 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strtold conforms to C99" >&5
13205$as_echo_n "checking whether strtold conforms to C99... " >&6; } 13679$as_echo_n "checking whether strtold conforms to C99... " >&6; }
13206if ${gl_cv_func_c99_strtold+:} false; then : 13680if ${gl_cv_func_c99_strtold+:} false; then :
@@ -13964,48 +14438,6 @@ $as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h
13964fi 14438fi
13965 14439
13966 14440
13967{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
13968$as_echo_n "checking for inline... " >&6; }
13969if ${ac_cv_c_inline+:} false; then :
13970 $as_echo_n "(cached) " >&6
13971else
13972 ac_cv_c_inline=no
13973for ac_kw in inline __inline__ __inline; do
13974 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13975/* end confdefs.h. */
13976#ifndef __cplusplus
13977typedef int foo_t;
13978static $ac_kw foo_t static_foo () {return 0; }
13979$ac_kw foo_t foo () {return 0; }
13980#endif
13981
13982_ACEOF
13983if ac_fn_c_try_compile "$LINENO"; then :
13984 ac_cv_c_inline=$ac_kw
13985fi
13986rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
13987 test "$ac_cv_c_inline" != no && break
13988done
13989
13990fi
13991{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
13992$as_echo "$ac_cv_c_inline" >&6; }
13993
13994case $ac_cv_c_inline in
13995 inline | yes) ;;
13996 *)
13997 case $ac_cv_c_inline in
13998 no) ac_val=;;
13999 *) ac_val=$ac_cv_c_inline;;
14000 esac
14001 cat >>confdefs.h <<_ACEOF
14002#ifndef __cplusplus
14003#define inline $ac_val
14004#endif
14005_ACEOF
14006 ;;
14007esac
14008
14009 14441
14010 GNULIB_MKTIME=0; 14442 GNULIB_MKTIME=0;
14011 GNULIB_NANOSLEEP=0; 14443 GNULIB_NANOSLEEP=0;
@@ -14206,6 +14638,127 @@ $as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
14206 fi 14638 fi
14207 14639
14208 14640
14641 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
14642$as_echo_n "checking for unsigned long long int... " >&6; }
14643if ${ac_cv_type_unsigned_long_long_int+:} false; then :
14644 $as_echo_n "(cached) " >&6
14645else
14646 ac_cv_type_unsigned_long_long_int=yes
14647 if test "x${ac_cv_prog_cc_c99-no}" = xno; then
14648 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
14649/* end confdefs.h. */
14650
14651 /* For now, do not test the preprocessor; as of 2007 there are too many
14652 implementations with broken preprocessors. Perhaps this can
14653 be revisited in 2012. In the meantime, code should not expect
14654 #if to work with literals wider than 32 bits. */
14655 /* Test literals. */
14656 long long int ll = 9223372036854775807ll;
14657 long long int nll = -9223372036854775807LL;
14658 unsigned long long int ull = 18446744073709551615ULL;
14659 /* Test constant expressions. */
14660 typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
14661 ? 1 : -1)];
14662 typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
14663 ? 1 : -1)];
14664 int i = 63;
14665int
14666main ()
14667{
14668/* Test availability of runtime routines for shift and division. */
14669 long long int llmax = 9223372036854775807ll;
14670 unsigned long long int ullmax = 18446744073709551615ull;
14671 return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
14672 | (llmax / ll) | (llmax % ll)
14673 | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
14674 | (ullmax / ull) | (ullmax % ull));
14675 ;
14676 return 0;
14677}
14678
14679_ACEOF
14680if ac_fn_c_try_link "$LINENO"; then :
14681
14682else
14683 ac_cv_type_unsigned_long_long_int=no
14684fi
14685rm -f core conftest.err conftest.$ac_objext \
14686 conftest$ac_exeext conftest.$ac_ext
14687 fi
14688fi
14689{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
14690$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
14691 if test $ac_cv_type_unsigned_long_long_int = yes; then
14692
14693$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
14694
14695 fi
14696
14697
14698
14699 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
14700$as_echo_n "checking for long long int... " >&6; }
14701if ${ac_cv_type_long_long_int+:} false; then :
14702 $as_echo_n "(cached) " >&6
14703else
14704 ac_cv_type_long_long_int=yes
14705 if test "x${ac_cv_prog_cc_c99-no}" = xno; then
14706 ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
14707 if test $ac_cv_type_long_long_int = yes; then
14708 if test "$cross_compiling" = yes; then :
14709 :
14710else
14711 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
14712/* end confdefs.h. */
14713#include <limits.h>
14714 #ifndef LLONG_MAX
14715 # define HALF \
14716 (1LL << (sizeof (long long int) * CHAR_BIT - 2))
14717 # define LLONG_MAX (HALF - 1 + HALF)
14718 #endif
14719int
14720main ()
14721{
14722long long int n = 1;
14723 int i;
14724 for (i = 0; ; i++)
14725 {
14726 long long int m = n << i;
14727 if (m >> i != n)
14728 return 1;
14729 if (LLONG_MAX / 2 < m)
14730 break;
14731 }
14732 return 0;
14733 ;
14734 return 0;
14735}
14736_ACEOF
14737if ac_fn_c_try_run "$LINENO"; then :
14738
14739else
14740 ac_cv_type_long_long_int=no
14741fi
14742rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
14743 conftest.$ac_objext conftest.beam conftest.$ac_ext
14744fi
14745
14746 fi
14747 fi
14748fi
14749{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
14750$as_echo "$ac_cv_type_long_long_int" >&6; }
14751 if test $ac_cv_type_long_long_int = yes; then
14752
14753$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
14754
14755 fi
14756
14757
14758
14759
14760
14761
14209 ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "#include <time.h> 14762 ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "#include <time.h>
14210" 14763"
14211if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then : 14764if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then :
@@ -14460,6 +15013,23 @@ fi
14460 gl_source_base='lib' 15013 gl_source_base='lib'
14461 # Code from module arg-nonnull: 15014 # Code from module arg-nonnull:
14462 # Code from module c++defs: 15015 # Code from module c++defs:
15016 # Code from module crypto/md5:
15017
15018
15019
15020
15021
15022
15023
15024
15025
15026 gl_LIBOBJS="$gl_LIBOBJS md5.$ac_objext"
15027
15028
15029
15030
15031 :
15032
14463 # Code from module dtoastr: 15033 # Code from module dtoastr:
14464 15034
14465 # Code from module extensions: 15035 # Code from module extensions:
@@ -15424,6 +15994,710 @@ $as_echo "$gl_cv_next_stddef_h" >&6; }
15424 15994
15425 fi 15995 fi
15426 15996
15997 # Code from module stdint:
15998
15999
16000
16001 if test $ac_cv_type_long_long_int = yes; then
16002 HAVE_LONG_LONG_INT=1
16003 else
16004 HAVE_LONG_LONG_INT=0
16005 fi
16006
16007
16008 if test $ac_cv_type_unsigned_long_long_int = yes; then
16009 HAVE_UNSIGNED_LONG_LONG_INT=1
16010 else
16011 HAVE_UNSIGNED_LONG_LONG_INT=0
16012 fi
16013
16014
16015
16016 if test $ac_cv_header_wchar_h = yes; then
16017 HAVE_WCHAR_H=1
16018 else
16019 HAVE_WCHAR_H=0
16020 fi
16021
16022
16023 if test $ac_cv_header_inttypes_h = yes; then
16024 HAVE_INTTYPES_H=1
16025 else
16026 HAVE_INTTYPES_H=0
16027 fi
16028
16029
16030 if test $ac_cv_header_sys_types_h = yes; then
16031 HAVE_SYS_TYPES_H=1
16032 else
16033 HAVE_SYS_TYPES_H=0
16034 fi
16035
16036
16037
16038
16039
16040
16041
16042
16043
16044
16045
16046 if test $gl_cv_have_include_next = yes; then
16047 gl_cv_next_stdint_h='<'stdint.h'>'
16048 else
16049 { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdint.h>" >&5
16050$as_echo_n "checking absolute name of <stdint.h>... " >&6; }
16051if ${gl_cv_next_stdint_h+:} false; then :
16052 $as_echo_n "(cached) " >&6
16053else
16054
16055 if test $ac_cv_header_stdint_h = yes; then
16056
16057
16058 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
16059/* end confdefs.h. */
16060#include <stdint.h>
16061
16062_ACEOF
16063 case "$host_os" in
16064 aix*) gl_absname_cpp="$ac_cpp -C" ;;
16065 *) gl_absname_cpp="$ac_cpp" ;;
16066 esac
16067 gl_cv_next_stdint_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
16068 sed -n '\#/stdint.h#{
16069 s#.*"\(.*/stdint.h\)".*#\1#
16070 s#^/[^/]#//&#
16071 p
16072 q
16073 }'`'"'
16074 else
16075 gl_cv_next_stdint_h='<'stdint.h'>'
16076 fi
16077
16078
16079fi
16080{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdint_h" >&5
16081$as_echo "$gl_cv_next_stdint_h" >&6; }
16082 fi
16083 NEXT_STDINT_H=$gl_cv_next_stdint_h
16084
16085 if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
16086 # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
16087 gl_next_as_first_directive='<'stdint.h'>'
16088 else
16089 # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
16090 gl_next_as_first_directive=$gl_cv_next_stdint_h
16091 fi
16092 NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive
16093
16094
16095
16096
16097 if test $ac_cv_header_stdint_h = yes; then
16098 HAVE_STDINT_H=1
16099 else
16100 HAVE_STDINT_H=0
16101 fi
16102
16103
16104 if test $ac_cv_header_stdint_h = yes; then
16105 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5
16106$as_echo_n "checking whether stdint.h conforms to C99... " >&6; }
16107if ${gl_cv_header_working_stdint_h+:} false; then :
16108 $as_echo_n "(cached) " >&6
16109else
16110 gl_cv_header_working_stdint_h=no
16111 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
16112/* end confdefs.h. */
16113
16114
16115#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
16116#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
16117#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
16118#include <stdint.h>
16119/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
16120#if !(defined WCHAR_MIN && defined WCHAR_MAX)
16121#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
16122#endif
16123
16124
16125 /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
16126 included before <wchar.h>. */
16127 #include <stddef.h>
16128 #include <signal.h>
16129 #if HAVE_WCHAR_H
16130 # include <stdio.h>
16131 # include <time.h>
16132 # include <wchar.h>
16133 #endif
16134
16135
16136#ifdef INT8_MAX
16137int8_t a1 = INT8_MAX;
16138int8_t a1min = INT8_MIN;
16139#endif
16140#ifdef INT16_MAX
16141int16_t a2 = INT16_MAX;
16142int16_t a2min = INT16_MIN;
16143#endif
16144#ifdef INT32_MAX
16145int32_t a3 = INT32_MAX;
16146int32_t a3min = INT32_MIN;
16147#endif
16148#ifdef INT64_MAX
16149int64_t a4 = INT64_MAX;
16150int64_t a4min = INT64_MIN;
16151#endif
16152#ifdef UINT8_MAX
16153uint8_t b1 = UINT8_MAX;
16154#else
16155typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
16156#endif
16157#ifdef UINT16_MAX
16158uint16_t b2 = UINT16_MAX;
16159#endif
16160#ifdef UINT32_MAX
16161uint32_t b3 = UINT32_MAX;
16162#endif
16163#ifdef UINT64_MAX
16164uint64_t b4 = UINT64_MAX;
16165#endif
16166int_least8_t c1 = INT8_C (0x7f);
16167int_least8_t c1max = INT_LEAST8_MAX;
16168int_least8_t c1min = INT_LEAST8_MIN;
16169int_least16_t c2 = INT16_C (0x7fff);
16170int_least16_t c2max = INT_LEAST16_MAX;
16171int_least16_t c2min = INT_LEAST16_MIN;
16172int_least32_t c3 = INT32_C (0x7fffffff);
16173int_least32_t c3max = INT_LEAST32_MAX;
16174int_least32_t c3min = INT_LEAST32_MIN;
16175int_least64_t c4 = INT64_C (0x7fffffffffffffff);
16176int_least64_t c4max = INT_LEAST64_MAX;
16177int_least64_t c4min = INT_LEAST64_MIN;
16178uint_least8_t d1 = UINT8_C (0xff);
16179uint_least8_t d1max = UINT_LEAST8_MAX;
16180uint_least16_t d2 = UINT16_C (0xffff);
16181uint_least16_t d2max = UINT_LEAST16_MAX;
16182uint_least32_t d3 = UINT32_C (0xffffffff);
16183uint_least32_t d3max = UINT_LEAST32_MAX;
16184uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
16185uint_least64_t d4max = UINT_LEAST64_MAX;
16186int_fast8_t e1 = INT_FAST8_MAX;
16187int_fast8_t e1min = INT_FAST8_MIN;
16188int_fast16_t e2 = INT_FAST16_MAX;
16189int_fast16_t e2min = INT_FAST16_MIN;
16190int_fast32_t e3 = INT_FAST32_MAX;
16191int_fast32_t e3min = INT_FAST32_MIN;
16192int_fast64_t e4 = INT_FAST64_MAX;
16193int_fast64_t e4min = INT_FAST64_MIN;
16194uint_fast8_t f1 = UINT_FAST8_MAX;
16195uint_fast16_t f2 = UINT_FAST16_MAX;
16196uint_fast32_t f3 = UINT_FAST32_MAX;
16197uint_fast64_t f4 = UINT_FAST64_MAX;
16198#ifdef INTPTR_MAX
16199intptr_t g = INTPTR_MAX;
16200intptr_t gmin = INTPTR_MIN;
16201#endif
16202#ifdef UINTPTR_MAX
16203uintptr_t h = UINTPTR_MAX;
16204#endif
16205intmax_t i = INTMAX_MAX;
16206uintmax_t j = UINTMAX_MAX;
16207
16208#include <limits.h> /* for CHAR_BIT */
16209#define TYPE_MINIMUM(t) \
16210 ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
16211#define TYPE_MAXIMUM(t) \
16212 ((t) ((t) 0 < (t) -1 \
16213 ? (t) -1 \
16214 : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
16215struct s {
16216 int check_PTRDIFF:
16217 PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
16218 && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
16219 ? 1 : -1;
16220 /* Detect bug in FreeBSD 6.0 / ia64. */
16221 int check_SIG_ATOMIC:
16222 SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
16223 && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
16224 ? 1 : -1;
16225 int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
16226 int check_WCHAR:
16227 WCHAR_MIN == TYPE_MINIMUM (wchar_t)
16228 && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
16229 ? 1 : -1;
16230 /* Detect bug in mingw. */
16231 int check_WINT:
16232 WINT_MIN == TYPE_MINIMUM (wint_t)
16233 && WINT_MAX == TYPE_MAXIMUM (wint_t)
16234 ? 1 : -1;
16235
16236 /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */
16237 int check_UINT8_C:
16238 (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
16239 int check_UINT16_C:
16240 (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
16241
16242 /* Detect bugs in OpenBSD 3.9 stdint.h. */
16243#ifdef UINT8_MAX
16244 int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
16245#endif
16246#ifdef UINT16_MAX
16247 int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
16248#endif
16249#ifdef UINT32_MAX
16250 int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
16251#endif
16252#ifdef UINT64_MAX
16253 int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
16254#endif
16255 int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
16256 int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
16257 int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
16258 int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
16259 int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
16260 int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
16261 int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
16262 int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
16263 int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
16264 int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
16265 int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
16266};
16267
16268int
16269main ()
16270{
16271
16272 ;
16273 return 0;
16274}
16275_ACEOF
16276if ac_fn_c_try_compile "$LINENO"; then :
16277 if test "$cross_compiling" = yes; then :
16278 gl_cv_header_working_stdint_h=yes
16279
16280else
16281 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
16282/* end confdefs.h. */
16283
16284
16285#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
16286#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
16287#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
16288#include <stdint.h>
16289
16290
16291 /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
16292 included before <wchar.h>. */
16293 #include <stddef.h>
16294 #include <signal.h>
16295 #if HAVE_WCHAR_H
16296 # include <stdio.h>
16297 # include <time.h>
16298 # include <wchar.h>
16299 #endif
16300
16301
16302#include <stdio.h>
16303#include <string.h>
16304#define MVAL(macro) MVAL1(macro)
16305#define MVAL1(expression) #expression
16306static const char *macro_values[] =
16307 {
16308#ifdef INT8_MAX
16309 MVAL (INT8_MAX),
16310#endif
16311#ifdef INT16_MAX
16312 MVAL (INT16_MAX),
16313#endif
16314#ifdef INT32_MAX
16315 MVAL (INT32_MAX),
16316#endif
16317#ifdef INT64_MAX
16318 MVAL (INT64_MAX),
16319#endif
16320#ifdef UINT8_MAX
16321 MVAL (UINT8_MAX),
16322#endif
16323#ifdef UINT16_MAX
16324 MVAL (UINT16_MAX),
16325#endif
16326#ifdef UINT32_MAX
16327 MVAL (UINT32_MAX),
16328#endif
16329#ifdef UINT64_MAX
16330 MVAL (UINT64_MAX),
16331#endif
16332 NULL
16333 };
16334
16335int
16336main ()
16337{
16338
16339 const char **mv;
16340 for (mv = macro_values; *mv != NULL; mv++)
16341 {
16342 const char *value = *mv;
16343 /* Test whether it looks like a cast expression. */
16344 if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
16345 || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
16346 || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
16347 || strncmp (value, "((int)"/*)*/, 6) == 0
16348 || strncmp (value, "((signed short)"/*)*/, 15) == 0
16349 || strncmp (value, "((signed char)"/*)*/, 14) == 0)
16350 return mv - macro_values + 1;
16351 }
16352 return 0;
16353
16354 ;
16355 return 0;
16356}
16357_ACEOF
16358if ac_fn_c_try_run "$LINENO"; then :
16359 gl_cv_header_working_stdint_h=yes
16360fi
16361rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
16362 conftest.$ac_objext conftest.beam conftest.$ac_ext
16363fi
16364
16365
16366fi
16367rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
16368
16369fi
16370{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_stdint_h" >&5
16371$as_echo "$gl_cv_header_working_stdint_h" >&6; }
16372 fi
16373 if test "$gl_cv_header_working_stdint_h" = yes; then
16374 STDINT_H=
16375 else
16376 for ac_header in sys/inttypes.h sys/bitypes.h
16377do :
16378 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
16379ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
16380if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
16381 cat >>confdefs.h <<_ACEOF
16382#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
16383_ACEOF
16384
16385fi
16386
16387done
16388
16389 if test $ac_cv_header_sys_inttypes_h = yes; then
16390 HAVE_SYS_INTTYPES_H=1
16391 else
16392 HAVE_SYS_INTTYPES_H=0
16393 fi
16394
16395 if test $ac_cv_header_sys_bitypes_h = yes; then
16396 HAVE_SYS_BITYPES_H=1
16397 else
16398 HAVE_SYS_BITYPES_H=0
16399 fi
16400
16401
16402
16403
16404 if test $APPLE_UNIVERSAL_BUILD = 0; then
16405
16406
16407 for gltype in ptrdiff_t size_t ; do
16408 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
16409$as_echo_n "checking for bit size of $gltype... " >&6; }
16410if eval \${gl_cv_bitsizeof_${gltype}+:} false; then :
16411 $as_echo_n "(cached) " >&6
16412else
16413 if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" "
16414 /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
16415 included before <wchar.h>. */
16416 #include <stddef.h>
16417 #include <signal.h>
16418 #if HAVE_WCHAR_H
16419 # include <stdio.h>
16420 # include <time.h>
16421 # include <wchar.h>
16422 #endif
16423
16424#include <limits.h>"; then :
16425
16426else
16427 result=unknown
16428fi
16429
16430 eval gl_cv_bitsizeof_${gltype}=\$result
16431
16432fi
16433eval ac_res=\$gl_cv_bitsizeof_${gltype}
16434 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
16435$as_echo "$ac_res" >&6; }
16436 eval result=\$gl_cv_bitsizeof_${gltype}
16437 if test $result = unknown; then
16438 result=0
16439 fi
16440 GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
16441 cat >>confdefs.h <<_ACEOF
16442#define BITSIZEOF_${GLTYPE} $result
16443_ACEOF
16444
16445 eval BITSIZEOF_${GLTYPE}=\$result
16446 done
16447
16448
16449 fi
16450
16451
16452 for gltype in sig_atomic_t wchar_t wint_t ; do
16453 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
16454$as_echo_n "checking for bit size of $gltype... " >&6; }
16455if eval \${gl_cv_bitsizeof_${gltype}+:} false; then :
16456 $as_echo_n "(cached) " >&6
16457else
16458 if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" "
16459 /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
16460 included before <wchar.h>. */
16461 #include <stddef.h>
16462 #include <signal.h>
16463 #if HAVE_WCHAR_H
16464 # include <stdio.h>
16465 # include <time.h>
16466 # include <wchar.h>
16467 #endif
16468
16469#include <limits.h>"; then :
16470
16471else
16472 result=unknown
16473fi
16474
16475 eval gl_cv_bitsizeof_${gltype}=\$result
16476
16477fi
16478eval ac_res=\$gl_cv_bitsizeof_${gltype}
16479 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
16480$as_echo "$ac_res" >&6; }
16481 eval result=\$gl_cv_bitsizeof_${gltype}
16482 if test $result = unknown; then
16483 result=0
16484 fi
16485 GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
16486 cat >>confdefs.h <<_ACEOF
16487#define BITSIZEOF_${GLTYPE} $result
16488_ACEOF
16489
16490 eval BITSIZEOF_${GLTYPE}=\$result
16491 done
16492
16493
16494
16495
16496 for gltype in sig_atomic_t wchar_t wint_t ; do
16497 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5
16498$as_echo_n "checking whether $gltype is signed... " >&6; }
16499if eval \${gl_cv_type_${gltype}_signed+:} false; then :
16500 $as_echo_n "(cached) " >&6
16501else
16502 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
16503/* end confdefs.h. */
16504
16505 /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
16506 included before <wchar.h>. */
16507 #include <stddef.h>
16508 #include <signal.h>
16509 #if HAVE_WCHAR_H
16510 # include <stdio.h>
16511 # include <time.h>
16512 # include <wchar.h>
16513 #endif
16514
16515 int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
16516int
16517main ()
16518{
16519
16520 ;
16521 return 0;
16522}
16523_ACEOF
16524if ac_fn_c_try_compile "$LINENO"; then :
16525 result=yes
16526else
16527 result=no
16528fi
16529rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
16530 eval gl_cv_type_${gltype}_signed=\$result
16531
16532fi
16533eval ac_res=\$gl_cv_type_${gltype}_signed
16534 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
16535$as_echo "$ac_res" >&6; }
16536 eval result=\$gl_cv_type_${gltype}_signed
16537 GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
16538 if test "$result" = yes; then
16539 cat >>confdefs.h <<_ACEOF
16540#define HAVE_SIGNED_${GLTYPE} 1
16541_ACEOF
16542
16543 eval HAVE_SIGNED_${GLTYPE}=1
16544 else
16545 eval HAVE_SIGNED_${GLTYPE}=0
16546 fi
16547 done
16548
16549
16550 gl_cv_type_ptrdiff_t_signed=yes
16551 gl_cv_type_size_t_signed=no
16552 if test $APPLE_UNIVERSAL_BUILD = 0; then
16553
16554
16555 for gltype in ptrdiff_t size_t ; do
16556 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
16557$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
16558if eval \${gl_cv_type_${gltype}_suffix+:} false; then :
16559 $as_echo_n "(cached) " >&6
16560else
16561 eval gl_cv_type_${gltype}_suffix=no
16562 eval result=\$gl_cv_type_${gltype}_signed
16563 if test "$result" = yes; then
16564 glsufu=
16565 else
16566 glsufu=u
16567 fi
16568 for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
16569 case $glsuf in
16570 '') gltype1='int';;
16571 l) gltype1='long int';;
16572 ll) gltype1='long long int';;
16573 i64) gltype1='__int64';;
16574 u) gltype1='unsigned int';;
16575 ul) gltype1='unsigned long int';;
16576 ull) gltype1='unsigned long long int';;
16577 ui64)gltype1='unsigned __int64';;
16578 esac
16579 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
16580/* end confdefs.h. */
16581
16582 /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
16583 included before <wchar.h>. */
16584 #include <stddef.h>
16585 #include <signal.h>
16586 #if HAVE_WCHAR_H
16587 # include <stdio.h>
16588 # include <time.h>
16589 # include <wchar.h>
16590 #endif
16591
16592 extern $gltype foo;
16593 extern $gltype1 foo;
16594int
16595main ()
16596{
16597
16598 ;
16599 return 0;
16600}
16601_ACEOF
16602if ac_fn_c_try_compile "$LINENO"; then :
16603 eval gl_cv_type_${gltype}_suffix=\$glsuf
16604fi
16605rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
16606 eval result=\$gl_cv_type_${gltype}_suffix
16607 test "$result" != no && break
16608 done
16609fi
16610eval ac_res=\$gl_cv_type_${gltype}_suffix
16611 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
16612$as_echo "$ac_res" >&6; }
16613 GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
16614 eval result=\$gl_cv_type_${gltype}_suffix
16615 test "$result" = no && result=
16616 eval ${GLTYPE}_SUFFIX=\$result
16617 cat >>confdefs.h <<_ACEOF
16618#define ${GLTYPE}_SUFFIX $result
16619_ACEOF
16620
16621 done
16622
16623
16624 fi
16625
16626
16627 for gltype in sig_atomic_t wchar_t wint_t ; do
16628 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
16629$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
16630if eval \${gl_cv_type_${gltype}_suffix+:} false; then :
16631 $as_echo_n "(cached) " >&6
16632else
16633 eval gl_cv_type_${gltype}_suffix=no
16634 eval result=\$gl_cv_type_${gltype}_signed
16635 if test "$result" = yes; then
16636 glsufu=
16637 else
16638 glsufu=u
16639 fi
16640 for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
16641 case $glsuf in
16642 '') gltype1='int';;
16643 l) gltype1='long int';;
16644 ll) gltype1='long long int';;
16645 i64) gltype1='__int64';;
16646 u) gltype1='unsigned int';;
16647 ul) gltype1='unsigned long int';;
16648 ull) gltype1='unsigned long long int';;
16649 ui64)gltype1='unsigned __int64';;
16650 esac
16651 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
16652/* end confdefs.h. */
16653
16654 /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
16655 included before <wchar.h>. */
16656 #include <stddef.h>
16657 #include <signal.h>
16658 #if HAVE_WCHAR_H
16659 # include <stdio.h>
16660 # include <time.h>
16661 # include <wchar.h>
16662 #endif
16663
16664 extern $gltype foo;
16665 extern $gltype1 foo;
16666int
16667main ()
16668{
16669
16670 ;
16671 return 0;
16672}
16673_ACEOF
16674if ac_fn_c_try_compile "$LINENO"; then :
16675 eval gl_cv_type_${gltype}_suffix=\$glsuf
16676fi
16677rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
16678 eval result=\$gl_cv_type_${gltype}_suffix
16679 test "$result" != no && break
16680 done
16681fi
16682eval ac_res=\$gl_cv_type_${gltype}_suffix
16683 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
16684$as_echo "$ac_res" >&6; }
16685 GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
16686 eval result=\$gl_cv_type_${gltype}_suffix
16687 test "$result" = no && result=
16688 eval ${GLTYPE}_SUFFIX=\$result
16689 cat >>confdefs.h <<_ACEOF
16690#define ${GLTYPE}_SUFFIX $result
16691_ACEOF
16692
16693 done
16694
16695
16696
16697 STDINT_H=stdint.h
16698 fi
16699
16700
15427 # Code from module stdlib: 16701 # Code from module stdlib:
15428 16702
15429 16703
@@ -17861,6 +19135,7 @@ if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
17861Usually this means the macro was only invoked conditionally." "$LINENO" 5 19135Usually this means the macro was only invoked conditionally." "$LINENO" 5
17862fi 19136fi
17863 19137
19138
17864 gl_libobjs= 19139 gl_libobjs=
17865 gl_ltlibobjs= 19140 gl_ltlibobjs=
17866 if test -n "$gl_LIBOBJS"; then 19141 if test -n "$gl_LIBOBJS"; then
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 82e23967865..0029719373a 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -24,7 +24,7 @@
24# the same distribution terms as the rest of that program. 24# the same distribution terms as the rest of that program.
25# 25#
26# Generated by gnulib-tool. 26# Generated by gnulib-tool.
27# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=. --makefile-name=gnulib.mk --no-libtool --macro-prefix=gl --no-vc-files dtoastr getloadavg getopt-gnu ignore-value mktime strftime 27# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=. --makefile-name=gnulib.mk --no-libtool --macro-prefix=gl --no-vc-files crypto/md5 dtoastr getloadavg getopt-gnu ignore-value mktime strftime
28 28
29VPATH = @srcdir@ 29VPATH = @srcdir@
30pkgdatadir = $(datadir)/@PACKAGE@ 30pkgdatadir = $(datadir)/@PACKAGE@
@@ -53,13 +53,14 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
53 $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/extensions.m4 \ 53 $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/extensions.m4 \
54 $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getopt.m4 \ 54 $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getopt.m4 \
55 $(top_srcdir)/m4/gl-comp.m4 $(top_srcdir)/m4/gnulib-common.m4 \ 55 $(top_srcdir)/m4/gl-comp.m4 $(top_srcdir)/m4/gnulib-common.m4 \
56 $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/mktime.m4 \ 56 $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/longlong.m4 \
57 $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/mktime.m4 \
57 $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/stdbool.m4 \ 58 $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/stdbool.m4 \
58 $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \ 59 $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
59 $(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/time_h.m4 \ 60 $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strftime.m4 \
60 $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \ 61 $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
61 $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/wchar_t.m4 \ 62 $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/unistd_h.m4 \
62 $(top_srcdir)/configure.in 63 $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/configure.in
63am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 64am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
64 $(ACLOCAL_M4) 65 $(ACLOCAL_M4)
65mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs 66mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@ -95,6 +96,11 @@ AUTOCONF = @AUTOCONF@
95AUTOHEADER = @AUTOHEADER@ 96AUTOHEADER = @AUTOHEADER@
96AUTOMAKE = @AUTOMAKE@ 97AUTOMAKE = @AUTOMAKE@
97AWK = @AWK@ 98AWK = @AWK@
99BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
100BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
101BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
102BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
103BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
98BLESSMAIL_TARGET = @BLESSMAIL_TARGET@ 104BLESSMAIL_TARGET = @BLESSMAIL_TARGET@
99CANNOT_DUMP = @CANNOT_DUMP@ 105CANNOT_DUMP = @CANNOT_DUMP@
100CC = @CC@ 106CC = @CC@
@@ -244,9 +250,11 @@ HAVE_GETOPT_H = @HAVE_GETOPT_H@
244HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ 250HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
245HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ 251HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
246HAVE_GRANTPT = @HAVE_GRANTPT@ 252HAVE_GRANTPT = @HAVE_GRANTPT@
253HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
247HAVE_LCHOWN = @HAVE_LCHOWN@ 254HAVE_LCHOWN = @HAVE_LCHOWN@
248HAVE_LINK = @HAVE_LINK@ 255HAVE_LINK = @HAVE_LINK@
249HAVE_LINKAT = @HAVE_LINKAT@ 256HAVE_LINKAT = @HAVE_LINKAT@
257HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
250HAVE_MAKEINFO = @HAVE_MAKEINFO@ 258HAVE_MAKEINFO = @HAVE_MAKEINFO@
251HAVE_MKDTEMP = @HAVE_MKDTEMP@ 259HAVE_MKDTEMP = @HAVE_MKDTEMP@
252HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ 260HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
@@ -267,7 +275,11 @@ HAVE_READLINKAT = @HAVE_READLINKAT@
267HAVE_REALPATH = @HAVE_REALPATH@ 275HAVE_REALPATH = @HAVE_REALPATH@
268HAVE_RPMATCH = @HAVE_RPMATCH@ 276HAVE_RPMATCH = @HAVE_RPMATCH@
269HAVE_SETENV = @HAVE_SETENV@ 277HAVE_SETENV = @HAVE_SETENV@
278HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
279HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
280HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
270HAVE_SLEEP = @HAVE_SLEEP@ 281HAVE_SLEEP = @HAVE_SLEEP@
282HAVE_STDINT_H = @HAVE_STDINT_H@
271HAVE_STRPTIME = @HAVE_STRPTIME@ 283HAVE_STRPTIME = @HAVE_STRPTIME@
272HAVE_STRTOD = @HAVE_STRTOD@ 284HAVE_STRTOD = @HAVE_STRTOD@
273HAVE_STRTOLL = @HAVE_STRTOLL@ 285HAVE_STRTOLL = @HAVE_STRTOLL@
@@ -275,13 +287,18 @@ HAVE_STRTOULL = @HAVE_STRTOULL@
275HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ 287HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
276HAVE_SYMLINK = @HAVE_SYMLINK@ 288HAVE_SYMLINK = @HAVE_SYMLINK@
277HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ 289HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
290HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
291HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
278HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ 292HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
279HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ 293HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
294HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
280HAVE_TIMEGM = @HAVE_TIMEGM@ 295HAVE_TIMEGM = @HAVE_TIMEGM@
281HAVE_UNISTD_H = @HAVE_UNISTD_H@ 296HAVE_UNISTD_H = @HAVE_UNISTD_H@
282HAVE_UNLINKAT = @HAVE_UNLINKAT@ 297HAVE_UNLINKAT = @HAVE_UNLINKAT@
283HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ 298HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
299HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
284HAVE_USLEEP = @HAVE_USLEEP@ 300HAVE_USLEEP = @HAVE_USLEEP@
301HAVE_WCHAR_H = @HAVE_WCHAR_H@
285HAVE_WCHAR_T = @HAVE_WCHAR_T@ 302HAVE_WCHAR_T = @HAVE_WCHAR_T@
286HAVE_XSERVER = @HAVE_XSERVER@ 303HAVE_XSERVER = @HAVE_XSERVER@
287HAVE__BOOL = @HAVE__BOOL@ 304HAVE__BOOL = @HAVE__BOOL@
@@ -350,11 +367,13 @@ MOUSE_SUPPORT = @MOUSE_SUPPORT@
350M_FILE = @M_FILE@ 367M_FILE = @M_FILE@
351NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ 368NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
352NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ 369NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
370NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
353NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ 371NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
354NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ 372NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
355NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ 373NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
356NEXT_GETOPT_H = @NEXT_GETOPT_H@ 374NEXT_GETOPT_H = @NEXT_GETOPT_H@
357NEXT_STDDEF_H = @NEXT_STDDEF_H@ 375NEXT_STDDEF_H = @NEXT_STDDEF_H@
376NEXT_STDINT_H = @NEXT_STDINT_H@
358NEXT_STDLIB_H = @NEXT_STDLIB_H@ 377NEXT_STDLIB_H = @NEXT_STDLIB_H@
359NEXT_TIME_H = @NEXT_TIME_H@ 378NEXT_TIME_H = @NEXT_TIME_H@
360NEXT_UNISTD_H = @NEXT_UNISTD_H@ 379NEXT_UNISTD_H = @NEXT_UNISTD_H@
@@ -381,6 +400,7 @@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
381PRE_ALLOC_OBJ = @PRE_ALLOC_OBJ@ 400PRE_ALLOC_OBJ = @PRE_ALLOC_OBJ@
382PROFILING_CFLAGS = @PROFILING_CFLAGS@ 401PROFILING_CFLAGS = @PROFILING_CFLAGS@
383PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ 402PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
403PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
384RALLOC_OBJ = @RALLOC_OBJ@ 404RALLOC_OBJ = @RALLOC_OBJ@
385RANLIB = @RANLIB@ 405RANLIB = @RANLIB@
386REPLACE_CALLOC = @REPLACE_CALLOC@ 406REPLACE_CALLOC = @REPLACE_CALLOC@
@@ -427,9 +447,12 @@ RSVG_CFLAGS = @RSVG_CFLAGS@
427RSVG_LIBS = @RSVG_LIBS@ 447RSVG_LIBS = @RSVG_LIBS@
428SET_MAKE = @SET_MAKE@ 448SET_MAKE = @SET_MAKE@
429SHELL = @SHELL@ 449SHELL = @SHELL@
450SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
451SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
430START_FILES = @START_FILES@ 452START_FILES = @START_FILES@
431STDBOOL_H = @STDBOOL_H@ 453STDBOOL_H = @STDBOOL_H@
432STDDEF_H = @STDDEF_H@ 454STDDEF_H = @STDDEF_H@
455STDINT_H = @STDINT_H@
433STRIP = @STRIP@ 456STRIP = @STRIP@
434SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ 457SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
435S_FILE = @S_FILE@ 458S_FILE = @S_FILE@
@@ -443,8 +466,10 @@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
443UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ 466UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
444VERSION = @VERSION@ 467VERSION = @VERSION@
445VMLIMIT_OBJ = @VMLIMIT_OBJ@ 468VMLIMIT_OBJ = @VMLIMIT_OBJ@
469WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
446WIDGET_OBJ = @WIDGET_OBJ@ 470WIDGET_OBJ = @WIDGET_OBJ@
447WINDOW_SUPPORT = @WINDOW_SUPPORT@ 471WINDOW_SUPPORT = @WINDOW_SUPPORT@
472WINT_T_SUFFIX = @WINT_T_SUFFIX@
448XFT_CFLAGS = @XFT_CFLAGS@ 473XFT_CFLAGS = @XFT_CFLAGS@
449XFT_LIBS = @XFT_LIBS@ 474XFT_LIBS = @XFT_LIBS@
450XMENU_OBJ = @XMENU_OBJ@ 475XMENU_OBJ = @XMENU_OBJ@
@@ -534,23 +559,25 @@ x_default_search_path = @x_default_search_path@
534# present in all Makefile.am that need it. This is ensured by the applicability 559# present in all Makefile.am that need it. This is ensured by the applicability
535# 'all' defined above. 560# 'all' defined above.
536BUILT_SOURCES = arg-nonnull.h c++defs.h $(GETOPT_H) $(STDBOOL_H) \ 561BUILT_SOURCES = arg-nonnull.h c++defs.h $(GETOPT_H) $(STDBOOL_H) \
537 $(STDDEF_H) stdlib.h time.h unistd.h warn-on-use.h 562 $(STDDEF_H) $(STDINT_H) stdlib.h time.h unistd.h warn-on-use.h
538EXTRA_DIST = $(top_srcdir)/./arg-nonnull.h $(top_srcdir)/./c++defs.h \ 563EXTRA_DIST = $(top_srcdir)/./arg-nonnull.h $(top_srcdir)/./c++defs.h \
539 ftoastr.c ftoastr.h getloadavg.c getopt.c getopt.in.h \ 564 md5.c md5.h ftoastr.c ftoastr.h getloadavg.c getopt.c \
540 getopt1.c getopt_int.h intprops.h mktime-internal.h mktime.c \ 565 getopt.in.h getopt1.c getopt_int.h intprops.h \
541 stdbool.in.h stddef.in.h stdlib.in.h strftime.c strftime.h \ 566 mktime-internal.h mktime.c stdbool.in.h stddef.in.h \
542 time.in.h time_r.c unistd.in.h $(top_srcdir)/./warn-on-use.h 567 stdint.in.h stdlib.in.h strftime.c strftime.h time.in.h \
568 time_r.c unistd.in.h $(top_srcdir)/./warn-on-use.h
543MOSTLYCLEANFILES = core *.stackdump arg-nonnull.h arg-nonnull.h-t \ 569MOSTLYCLEANFILES = core *.stackdump arg-nonnull.h arg-nonnull.h-t \
544 c++defs.h c++defs.h-t getopt.h getopt.h-t stdbool.h \ 570 c++defs.h c++defs.h-t getopt.h getopt.h-t stdbool.h \
545 stdbool.h-t stddef.h stddef.h-t stdlib.h stdlib.h-t time.h \ 571 stdbool.h-t stddef.h stddef.h-t stdint.h stdint.h-t stdlib.h \
546 time.h-t unistd.h unistd.h-t warn-on-use.h warn-on-use.h-t 572 stdlib.h-t time.h time.h-t unistd.h unistd.h-t warn-on-use.h \
573 warn-on-use.h-t
547noinst_LIBRARIES = libgnu.a 574noinst_LIBRARIES = libgnu.a
548DEFAULT_INCLUDES = -I. -I../src -I$(top_srcdir)/src 575DEFAULT_INCLUDES = -I. -I../src -I$(top_srcdir)/src
549libgnu_a_SOURCES = dtoastr.c gettext.h ignore-value.h 576libgnu_a_SOURCES = dtoastr.c gettext.h ignore-value.h
550libgnu_a_LIBADD = $(gl_LIBOBJS) 577libgnu_a_LIBADD = $(gl_LIBOBJS)
551libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) 578libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
552EXTRA_libgnu_a_SOURCES = ftoastr.c getloadavg.c getopt.c getopt1.c \ 579EXTRA_libgnu_a_SOURCES = md5.c ftoastr.c getloadavg.c getopt.c \
553 mktime.c strftime.c time_r.c 580 getopt1.c mktime.c strftime.c time_r.c
554ARG_NONNULL_H = arg-nonnull.h 581ARG_NONNULL_H = arg-nonnull.h
555CXXDEFS_H = c++defs.h 582CXXDEFS_H = c++defs.h
556WARN_ON_USE_H = warn-on-use.h 583WARN_ON_USE_H = warn-on-use.h
@@ -608,6 +635,7 @@ distclean-compile:
608@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getloadavg.Po@am__quote@ 635@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getloadavg.Po@am__quote@
609@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ 636@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
610@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@ 637@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@
638@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@
611@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mktime.Po@am__quote@ 639@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mktime.Po@am__quote@
612@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strftime.Po@am__quote@ 640@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strftime.Po@am__quote@
613@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time_r.Po@am__quote@ 641@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time_r.Po@am__quote@
@@ -882,6 +910,41 @@ stddef.h: stddef.in.h
882 } > $@-t && \ 910 } > $@-t && \
883 mv $@-t $@ 911 mv $@-t $@
884 912
913# We need the following in order to create <stdint.h> when the system
914# doesn't have one that works with the given compiler.
915stdint.h: stdint.in.h
916 $(AM_V_GEN)rm -f $@-t $@ && \
917 { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
918 sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
919 -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
920 -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
921 -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
922 -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
923 -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
924 -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
925 -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
926 -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
927 -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
928 -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
929 -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
930 -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
931 -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
932 -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
933 -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
934 -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
935 -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
936 -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
937 -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
938 -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
939 -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
940 -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
941 -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
942 -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
943 -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
944 < $(srcdir)/stdint.in.h; \
945 } > $@-t && \
946 mv $@-t $@
947
885# We need the following in order to create <stdlib.h> when the system 948# We need the following in order to create <stdlib.h> when the system
886# doesn't have one that works with the given compiler. 949# doesn't have one that works with the given compiler.
887stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) 950stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
diff --git a/lib/gnulib.mk b/lib/gnulib.mk
index 0e7263a002b..3e93e12d9bf 100644
--- a/lib/gnulib.mk
+++ b/lib/gnulib.mk
@@ -9,7 +9,7 @@
9# the same distribution terms as the rest of that program. 9# the same distribution terms as the rest of that program.
10# 10#
11# Generated by gnulib-tool. 11# Generated by gnulib-tool.
12# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=. --makefile-name=gnulib.mk --no-libtool --macro-prefix=gl --no-vc-files dtoastr getloadavg getopt-gnu ignore-value mktime strftime 12# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=. --makefile-name=gnulib.mk --no-libtool --macro-prefix=gl --no-vc-files crypto/md5 dtoastr getloadavg getopt-gnu ignore-value mktime strftime
13 13
14 14
15MOSTLYCLEANFILES += core *.stackdump 15MOSTLYCLEANFILES += core *.stackdump
@@ -69,6 +69,15 @@ EXTRA_DIST += $(top_srcdir)/./c++defs.h
69 69
70## end gnulib module c++defs 70## end gnulib module c++defs
71 71
72## begin gnulib module crypto/md5
73
74
75EXTRA_DIST += md5.c md5.h
76
77EXTRA_libgnu_a_SOURCES += md5.c
78
79## end gnulib module crypto/md5
80
72## begin gnulib module dtoastr 81## begin gnulib module dtoastr
73 82
74libgnu_a_SOURCES += dtoastr.c 83libgnu_a_SOURCES += dtoastr.c
@@ -184,6 +193,50 @@ EXTRA_DIST += stddef.in.h
184 193
185## end gnulib module stddef 194## end gnulib module stddef
186 195
196## begin gnulib module stdint
197
198BUILT_SOURCES += $(STDINT_H)
199
200# We need the following in order to create <stdint.h> when the system
201# doesn't have one that works with the given compiler.
202stdint.h: stdint.in.h
203 $(AM_V_GEN)rm -f $@-t $@ && \
204 { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
205 sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
206 -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
207 -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
208 -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
209 -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
210 -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
211 -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
212 -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
213 -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
214 -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
215 -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
216 -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
217 -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
218 -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
219 -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
220 -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
221 -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
222 -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
223 -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
224 -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
225 -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
226 -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
227 -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
228 -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
229 -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
230 -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
231 < $(srcdir)/stdint.in.h; \
232 } > $@-t && \
233 mv $@-t $@
234MOSTLYCLEANFILES += stdint.h stdint.h-t
235
236EXTRA_DIST += stdint.in.h
237
238## end gnulib module stdint
239
187## begin gnulib module stdlib 240## begin gnulib module stdlib
188 241
189BUILT_SOURCES += stdlib.h 242BUILT_SOURCES += stdlib.h
diff --git a/lib/md5.c b/lib/md5.c
new file mode 100644
index 00000000000..b7fad633364
--- /dev/null
+++ b/lib/md5.c
@@ -0,0 +1,462 @@
1/* Functions to compute MD5 message digest of files or memory blocks.
2 according to the definition of MD5 in RFC 1321 from April 1992.
3 Copyright (C) 1995-1997, 1999-2001, 2005-2006, 2008-2011 Free Software
4 Foundation, Inc.
5 This file is part of the GNU C Library.
6
7 This program is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by the
9 Free Software Foundation; either version 3, or (at your option) any
10 later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software Foundation,
19 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
20
21/* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. */
22
23#include <config.h>
24
25#include "md5.h"
26
27#include <stddef.h>
28#include <stdlib.h>
29#include <string.h>
30#include <sys/types.h>
31
32#if USE_UNLOCKED_IO
33# include "unlocked-io.h"
34#endif
35
36#ifdef _LIBC
37# include <endian.h>
38# if __BYTE_ORDER == __BIG_ENDIAN
39# define WORDS_BIGENDIAN 1
40# endif
41/* We need to keep the namespace clean so define the MD5 function
42 protected using leading __ . */
43# define md5_init_ctx __md5_init_ctx
44# define md5_process_block __md5_process_block
45# define md5_process_bytes __md5_process_bytes
46# define md5_finish_ctx __md5_finish_ctx
47# define md5_read_ctx __md5_read_ctx
48# define md5_stream __md5_stream
49# define md5_buffer __md5_buffer
50#endif
51
52#ifdef WORDS_BIGENDIAN
53# define SWAP(n) \
54 (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
55#else
56# define SWAP(n) (n)
57#endif
58
59#define BLOCKSIZE 32768
60#if BLOCKSIZE % 64 != 0
61# error "invalid BLOCKSIZE"
62#endif
63
64/* This array contains the bytes used to pad the buffer to the next
65 64-byte boundary. (RFC 1321, 3.1: Step 1) */
66static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ };
67
68
69/* Initialize structure containing state of computation.
70 (RFC 1321, 3.3: Step 3) */
71void
72md5_init_ctx (struct md5_ctx *ctx)
73{
74 ctx->A = 0x67452301;
75 ctx->B = 0xefcdab89;
76 ctx->C = 0x98badcfe;
77 ctx->D = 0x10325476;
78
79 ctx->total[0] = ctx->total[1] = 0;
80 ctx->buflen = 0;
81}
82
83/* Copy the 4 byte value from v into the memory location pointed to by *cp,
84 If your architecture allows unaligned access this is equivalent to
85 * (uint32_t *) cp = v */
86static inline void
87set_uint32 (char *cp, uint32_t v)
88{
89 memcpy (cp, &v, sizeof v);
90}
91
92/* Put result from CTX in first 16 bytes following RESBUF. The result
93 must be in little endian byte order. */
94void *
95md5_read_ctx (const struct md5_ctx *ctx, void *resbuf)
96{
97 char *r = resbuf;
98 set_uint32 (r + 0 * sizeof ctx->A, SWAP (ctx->A));
99 set_uint32 (r + 1 * sizeof ctx->B, SWAP (ctx->B));
100 set_uint32 (r + 2 * sizeof ctx->C, SWAP (ctx->C));
101 set_uint32 (r + 3 * sizeof ctx->D, SWAP (ctx->D));
102
103 return resbuf;
104}
105
106/* Process the remaining bytes in the internal buffer and the usual
107 prolog according to the standard and write the result to RESBUF. */
108void *
109md5_finish_ctx (struct md5_ctx *ctx, void *resbuf)
110{
111 /* Take yet unprocessed bytes into account. */
112 uint32_t bytes = ctx->buflen;
113 size_t size = (bytes < 56) ? 64 / 4 : 64 * 2 / 4;
114
115 /* Now count remaining bytes. */
116 ctx->total[0] += bytes;
117 if (ctx->total[0] < bytes)
118 ++ctx->total[1];
119
120 /* Put the 64-bit file length in *bits* at the end of the buffer. */
121 ctx->buffer[size - 2] = SWAP (ctx->total[0] << 3);
122 ctx->buffer[size - 1] = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29));
123
124 memcpy (&((char *) ctx->buffer)[bytes], fillbuf, (size - 2) * 4 - bytes);
125
126 /* Process last bytes. */
127 md5_process_block (ctx->buffer, size * 4, ctx);
128
129 return md5_read_ctx (ctx, resbuf);
130}
131
132/* Compute MD5 message digest for bytes read from STREAM. The
133 resulting message digest number will be written into the 16 bytes
134 beginning at RESBLOCK. */
135int
136md5_stream (FILE *stream, void *resblock)
137{
138 struct md5_ctx ctx;
139 size_t sum;
140
141 char *buffer = malloc (BLOCKSIZE + 72);
142 if (!buffer)
143 return 1;
144
145 /* Initialize the computation context. */
146 md5_init_ctx (&ctx);
147
148 /* Iterate over full file contents. */
149 while (1)
150 {
151 /* We read the file in blocks of BLOCKSIZE bytes. One call of the
152 computation function processes the whole buffer so that with the
153 next round of the loop another block can be read. */
154 size_t n;
155 sum = 0;
156
157 /* Read block. Take care for partial reads. */
158 while (1)
159 {
160 n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
161
162 sum += n;
163
164 if (sum == BLOCKSIZE)
165 break;
166
167 if (n == 0)
168 {
169 /* Check for the error flag IFF N == 0, so that we don't
170 exit the loop after a partial read due to e.g., EAGAIN
171 or EWOULDBLOCK. */
172 if (ferror (stream))
173 {
174 free (buffer);
175 return 1;
176 }
177 goto process_partial_block;
178 }
179
180 /* We've read at least one byte, so ignore errors. But always
181 check for EOF, since feof may be true even though N > 0.
182 Otherwise, we could end up calling fread after EOF. */
183 if (feof (stream))
184 goto process_partial_block;
185 }
186
187 /* Process buffer with BLOCKSIZE bytes. Note that
188 BLOCKSIZE % 64 == 0
189 */
190 md5_process_block (buffer, BLOCKSIZE, &ctx);
191 }
192
193process_partial_block:
194
195 /* Process any remaining bytes. */
196 if (sum > 0)
197 md5_process_bytes (buffer, sum, &ctx);
198
199 /* Construct result in desired memory. */
200 md5_finish_ctx (&ctx, resblock);
201 free (buffer);
202 return 0;
203}
204
205/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
206 result is always in little endian byte order, so that a byte-wise
207 output yields to the wanted ASCII representation of the message
208 digest. */
209void *
210md5_buffer (const char *buffer, size_t len, void *resblock)
211{
212 struct md5_ctx ctx;
213
214 /* Initialize the computation context. */
215 md5_init_ctx (&ctx);
216
217 /* Process whole buffer but last len % 64 bytes. */
218 md5_process_bytes (buffer, len, &ctx);
219
220 /* Put result in desired memory area. */
221 return md5_finish_ctx (&ctx, resblock);
222}
223
224
225void
226md5_process_bytes (const void *buffer, size_t len, struct md5_ctx *ctx)
227{
228 /* When we already have some bits in our internal buffer concatenate
229 both inputs first. */
230 if (ctx->buflen != 0)
231 {
232 size_t left_over = ctx->buflen;
233 size_t add = 128 - left_over > len ? len : 128 - left_over;
234
235 memcpy (&((char *) ctx->buffer)[left_over], buffer, add);
236 ctx->buflen += add;
237
238 if (ctx->buflen > 64)
239 {
240 md5_process_block (ctx->buffer, ctx->buflen & ~63, ctx);
241
242 ctx->buflen &= 63;
243 /* The regions in the following copy operation cannot overlap. */
244 memcpy (ctx->buffer,
245 &((char *) ctx->buffer)[(left_over + add) & ~63],
246 ctx->buflen);
247 }
248
249 buffer = (const char *) buffer + add;
250 len -= add;
251 }
252
253 /* Process available complete blocks. */
254 if (len >= 64)
255 {
256#if !_STRING_ARCH_unaligned
257# define alignof(type) offsetof (struct { char c; type x; }, x)
258# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
259 if (UNALIGNED_P (buffer))
260 while (len > 64)
261 {
262 md5_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx);
263 buffer = (const char *) buffer + 64;
264 len -= 64;
265 }
266 else
267#endif
268 {
269 md5_process_block (buffer, len & ~63, ctx);
270 buffer = (const char *) buffer + (len & ~63);
271 len &= 63;
272 }
273 }
274
275 /* Move remaining bytes in internal buffer. */
276 if (len > 0)
277 {
278 size_t left_over = ctx->buflen;
279
280 memcpy (&((char *) ctx->buffer)[left_over], buffer, len);
281 left_over += len;
282 if (left_over >= 64)
283 {
284 md5_process_block (ctx->buffer, 64, ctx);
285 left_over -= 64;
286 memcpy (ctx->buffer, &ctx->buffer[16], left_over);
287 }
288 ctx->buflen = left_over;
289 }
290}
291
292
293/* These are the four functions used in the four steps of the MD5 algorithm
294 and defined in the RFC 1321. The first function is a little bit optimized
295 (as found in Colin Plumbs public domain implementation). */
296/* #define FF(b, c, d) ((b & c) | (~b & d)) */
297#define FF(b, c, d) (d ^ (b & (c ^ d)))
298#define FG(b, c, d) FF (d, b, c)
299#define FH(b, c, d) (b ^ c ^ d)
300#define FI(b, c, d) (c ^ (b | ~d))
301
302/* Process LEN bytes of BUFFER, accumulating context into CTX.
303 It is assumed that LEN % 64 == 0. */
304
305void
306md5_process_block (const void *buffer, size_t len, struct md5_ctx *ctx)
307{
308 uint32_t correct_words[16];
309 const uint32_t *words = buffer;
310 size_t nwords = len / sizeof (uint32_t);
311 const uint32_t *endp = words + nwords;
312 uint32_t A = ctx->A;
313 uint32_t B = ctx->B;
314 uint32_t C = ctx->C;
315 uint32_t D = ctx->D;
316
317 /* First increment the byte count. RFC 1321 specifies the possible
318 length of the file up to 2^64 bits. Here we only compute the
319 number of bytes. Do a double word increment. */
320 ctx->total[0] += len;
321 if (ctx->total[0] < len)
322 ++ctx->total[1];
323
324 /* Process all bytes in the buffer with 64 bytes in each round of
325 the loop. */
326 while (words < endp)
327 {
328 uint32_t *cwp = correct_words;
329 uint32_t A_save = A;
330 uint32_t B_save = B;
331 uint32_t C_save = C;
332 uint32_t D_save = D;
333
334 /* First round: using the given function, the context and a constant
335 the next context is computed. Because the algorithms processing
336 unit is a 32-bit word and it is determined to work on words in
337 little endian byte order we perhaps have to change the byte order
338 before the computation. To reduce the work for the next steps
339 we store the swapped words in the array CORRECT_WORDS. */
340
341#define OP(a, b, c, d, s, T) \
342 do \
343 { \
344 a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \
345 ++words; \
346 CYCLIC (a, s); \
347 a += b; \
348 } \
349 while (0)
350
351 /* It is unfortunate that C does not provide an operator for
352 cyclic rotation. Hope the C compiler is smart enough. */
353#define CYCLIC(w, s) (w = (w << s) | (w >> (32 - s)))
354
355 /* Before we start, one word to the strange constants.
356 They are defined in RFC 1321 as
357
358 T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64
359
360 Here is an equivalent invocation using Perl:
361
362 perl -e 'foreach(1..64){printf "0x%08x\n", int (4294967296 * abs (sin $_))}'
363 */
364
365 /* Round 1. */
366 OP (A, B, C, D, 7, 0xd76aa478);
367 OP (D, A, B, C, 12, 0xe8c7b756);
368 OP (C, D, A, B, 17, 0x242070db);
369 OP (B, C, D, A, 22, 0xc1bdceee);
370 OP (A, B, C, D, 7, 0xf57c0faf);
371 OP (D, A, B, C, 12, 0x4787c62a);
372 OP (C, D, A, B, 17, 0xa8304613);
373 OP (B, C, D, A, 22, 0xfd469501);
374 OP (A, B, C, D, 7, 0x698098d8);
375 OP (D, A, B, C, 12, 0x8b44f7af);
376 OP (C, D, A, B, 17, 0xffff5bb1);
377 OP (B, C, D, A, 22, 0x895cd7be);
378 OP (A, B, C, D, 7, 0x6b901122);
379 OP (D, A, B, C, 12, 0xfd987193);
380 OP (C, D, A, B, 17, 0xa679438e);
381 OP (B, C, D, A, 22, 0x49b40821);
382
383 /* For the second to fourth round we have the possibly swapped words
384 in CORRECT_WORDS. Redefine the macro to take an additional first
385 argument specifying the function to use. */
386#undef OP
387#define OP(f, a, b, c, d, k, s, T) \
388 do \
389 { \
390 a += f (b, c, d) + correct_words[k] + T; \
391 CYCLIC (a, s); \
392 a += b; \
393 } \
394 while (0)
395
396 /* Round 2. */
397 OP (FG, A, B, C, D, 1, 5, 0xf61e2562);
398 OP (FG, D, A, B, C, 6, 9, 0xc040b340);
399 OP (FG, C, D, A, B, 11, 14, 0x265e5a51);
400 OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa);
401 OP (FG, A, B, C, D, 5, 5, 0xd62f105d);
402 OP (FG, D, A, B, C, 10, 9, 0x02441453);
403 OP (FG, C, D, A, B, 15, 14, 0xd8a1e681);
404 OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8);
405 OP (FG, A, B, C, D, 9, 5, 0x21e1cde6);
406 OP (FG, D, A, B, C, 14, 9, 0xc33707d6);
407 OP (FG, C, D, A, B, 3, 14, 0xf4d50d87);
408 OP (FG, B, C, D, A, 8, 20, 0x455a14ed);
409 OP (FG, A, B, C, D, 13, 5, 0xa9e3e905);
410 OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8);
411 OP (FG, C, D, A, B, 7, 14, 0x676f02d9);
412 OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a);
413
414 /* Round 3. */
415 OP (FH, A, B, C, D, 5, 4, 0xfffa3942);
416 OP (FH, D, A, B, C, 8, 11, 0x8771f681);
417 OP (FH, C, D, A, B, 11, 16, 0x6d9d6122);
418 OP (FH, B, C, D, A, 14, 23, 0xfde5380c);
419 OP (FH, A, B, C, D, 1, 4, 0xa4beea44);
420 OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9);
421 OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60);
422 OP (FH, B, C, D, A, 10, 23, 0xbebfbc70);
423 OP (FH, A, B, C, D, 13, 4, 0x289b7ec6);
424 OP (FH, D, A, B, C, 0, 11, 0xeaa127fa);
425 OP (FH, C, D, A, B, 3, 16, 0xd4ef3085);
426 OP (FH, B, C, D, A, 6, 23, 0x04881d05);
427 OP (FH, A, B, C, D, 9, 4, 0xd9d4d039);
428 OP (FH, D, A, B, C, 12, 11, 0xe6db99e5);
429 OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8);
430 OP (FH, B, C, D, A, 2, 23, 0xc4ac5665);
431
432 /* Round 4. */
433 OP (FI, A, B, C, D, 0, 6, 0xf4292244);
434 OP (FI, D, A, B, C, 7, 10, 0x432aff97);
435 OP (FI, C, D, A, B, 14, 15, 0xab9423a7);
436 OP (FI, B, C, D, A, 5, 21, 0xfc93a039);
437 OP (FI, A, B, C, D, 12, 6, 0x655b59c3);
438 OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92);
439 OP (FI, C, D, A, B, 10, 15, 0xffeff47d);
440 OP (FI, B, C, D, A, 1, 21, 0x85845dd1);
441 OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f);
442 OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0);
443 OP (FI, C, D, A, B, 6, 15, 0xa3014314);
444 OP (FI, B, C, D, A, 13, 21, 0x4e0811a1);
445 OP (FI, A, B, C, D, 4, 6, 0xf7537e82);
446 OP (FI, D, A, B, C, 11, 10, 0xbd3af235);
447 OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb);
448 OP (FI, B, C, D, A, 9, 21, 0xeb86d391);
449
450 /* Add the starting values of the context. */
451 A += A_save;
452 B += B_save;
453 C += C_save;
454 D += D_save;
455 }
456
457 /* Put checksum in context given as argument. */
458 ctx->A = A;
459 ctx->B = B;
460 ctx->C = C;
461 ctx->D = D;
462}
diff --git a/lib/md5.h b/lib/md5.h
new file mode 100644
index 00000000000..53e60480292
--- /dev/null
+++ b/lib/md5.h
@@ -0,0 +1,126 @@
1/* Declaration of functions and data types used for MD5 sum computing
2 library functions.
3 Copyright (C) 1995-1997, 1999-2001, 2004-2006, 2008-2011 Free Software
4 Foundation, Inc.
5 This file is part of the GNU C Library.
6
7 This program is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by the
9 Free Software Foundation; either version 3, or (at your option) any
10 later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software Foundation,
19 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
20
21#ifndef _MD5_H
22#define _MD5_H 1
23
24#include <stdio.h>
25#include <stdint.h>
26
27#define MD5_DIGEST_SIZE 16
28#define MD5_BLOCK_SIZE 64
29
30#ifndef __GNUC_PREREQ
31# if defined __GNUC__ && defined __GNUC_MINOR__
32# define __GNUC_PREREQ(maj, min) \
33 ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
34# else
35# define __GNUC_PREREQ(maj, min) 0
36# endif
37#endif
38
39#ifndef __THROW
40# if defined __cplusplus && __GNUC_PREREQ (2,8)
41# define __THROW throw ()
42# else
43# define __THROW
44# endif
45#endif
46
47#ifndef _LIBC
48# define __md5_buffer md5_buffer
49# define __md5_finish_ctx md5_finish_ctx
50# define __md5_init_ctx md5_init_ctx
51# define __md5_process_block md5_process_block
52# define __md5_process_bytes md5_process_bytes
53# define __md5_read_ctx md5_read_ctx
54# define __md5_stream md5_stream
55#endif
56
57# ifdef __cplusplus
58extern "C" {
59# endif
60
61/* Structure to save state of computation between the single steps. */
62struct md5_ctx
63{
64 uint32_t A;
65 uint32_t B;
66 uint32_t C;
67 uint32_t D;
68
69 uint32_t total[2];
70 uint32_t buflen;
71 uint32_t buffer[32];
72};
73
74/*
75 * The following three functions are build up the low level used in
76 * the functions `md5_stream' and `md5_buffer'.
77 */
78
79/* Initialize structure containing state of computation.
80 (RFC 1321, 3.3: Step 3) */
81extern void __md5_init_ctx (struct md5_ctx *ctx) __THROW;
82
83/* Starting with the result of former calls of this function (or the
84 initialization function update the context for the next LEN bytes
85 starting at BUFFER.
86 It is necessary that LEN is a multiple of 64!!! */
87extern void __md5_process_block (const void *buffer, size_t len,
88 struct md5_ctx *ctx) __THROW;
89
90/* Starting with the result of former calls of this function (or the
91 initialization function update the context for the next LEN bytes
92 starting at BUFFER.
93 It is NOT required that LEN is a multiple of 64. */
94extern void __md5_process_bytes (const void *buffer, size_t len,
95 struct md5_ctx *ctx) __THROW;
96
97/* Process the remaining bytes in the buffer and put result from CTX
98 in first 16 bytes following RESBUF. The result is always in little
99 endian byte order, so that a byte-wise output yields to the wanted
100 ASCII representation of the message digest. */
101extern void *__md5_finish_ctx (struct md5_ctx *ctx, void *resbuf) __THROW;
102
103
104/* Put result from CTX in first 16 bytes following RESBUF. The result is
105 always in little endian byte order, so that a byte-wise output yields
106 to the wanted ASCII representation of the message digest. */
107extern void *__md5_read_ctx (const struct md5_ctx *ctx, void *resbuf) __THROW;
108
109
110/* Compute MD5 message digest for bytes read from STREAM. The
111 resulting message digest number will be written into the 16 bytes
112 beginning at RESBLOCK. */
113extern int __md5_stream (FILE *stream, void *resblock) __THROW;
114
115/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
116 result is always in little endian byte order, so that a byte-wise
117 output yields to the wanted ASCII representation of the message
118 digest. */
119extern void *__md5_buffer (const char *buffer, size_t len,
120 void *resblock) __THROW;
121
122# ifdef __cplusplus
123}
124# endif
125
126#endif /* md5.h */
diff --git a/lib/stdint.in.h b/lib/stdint.in.h
new file mode 100644
index 00000000000..b32227bb04c
--- /dev/null
+++ b/lib/stdint.in.h
@@ -0,0 +1,592 @@
1/* Copyright (C) 2001-2002, 2004-2011 Free Software Foundation, Inc.
2 Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
3 This file is part of gnulib.
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3, or (at your option)
8 any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software Foundation,
17 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
18
19/*
20 * ISO C 99 <stdint.h> for platforms that lack it.
21 * <http://www.opengroup.org/susv3xbd/stdint.h.html>
22 */
23
24#ifndef _GL_STDINT_H
25
26#if __GNUC__ >= 3
27@PRAGMA_SYSTEM_HEADER@
28#endif
29@PRAGMA_COLUMNS@
30
31/* When including a system file that in turn includes <inttypes.h>,
32 use the system <inttypes.h>, not our substitute. This avoids
33 problems with (for example) VMS, whose <sys/bitypes.h> includes
34 <inttypes.h>. */
35#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
36
37/* Get those types that are already defined in other system include
38 files, so that we can "#define int8_t signed char" below without
39 worrying about a later system include file containing a "typedef
40 signed char int8_t;" that will get messed up by our macro. Our
41 macros should all be consistent with the system versions, except
42 for the "fast" types and macros, which we recommend against using
43 in public interfaces due to compiler differences. */
44
45#if @HAVE_STDINT_H@
46# if defined __sgi && ! defined __c99
47 /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
48 with "This header file is to be used only for c99 mode compilations"
49 diagnostics. */
50# define __STDINT_H__
51# endif
52 /* Other systems may have an incomplete or buggy <stdint.h>.
53 Include it before <inttypes.h>, since any "#include <stdint.h>"
54 in <inttypes.h> would reinclude us, skipping our contents because
55 _GL_STDINT_H is defined.
56 The include_next requires a split double-inclusion guard. */
57# @INCLUDE_NEXT@ @NEXT_STDINT_H@
58#endif
59
60#if ! defined _GL_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
61#define _GL_STDINT_H
62
63/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
64 IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
65 AIX 5.2 <sys/types.h> isn't needed and causes troubles.
66 MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
67 relies on the system <stdint.h> definitions, so include
68 <sys/types.h> after @NEXT_STDINT_H@. */
69#if @HAVE_SYS_TYPES_H@ && ! defined _AIX
70# include <sys/types.h>
71#endif
72
73/* Get LONG_MIN, LONG_MAX, ULONG_MAX. */
74#include <limits.h>
75
76#if @HAVE_INTTYPES_H@
77 /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
78 int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
79 <inttypes.h> also defines intptr_t and uintptr_t. */
80# include <inttypes.h>
81#elif @HAVE_SYS_INTTYPES_H@
82 /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
83 the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */
84# include <sys/inttypes.h>
85#endif
86
87#if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
88 /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
89 int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is
90 included by <sys/types.h>. */
91# include <sys/bitypes.h>
92#endif
93
94#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
95
96/* Minimum and maximum values for a integer type under the usual assumption.
97 Return an unspecified value if BITS == 0, adding a check to pacify
98 picky compilers. */
99
100#define _STDINT_MIN(signed, bits, zero) \
101 ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero))
102
103#define _STDINT_MAX(signed, bits, zero) \
104 ((signed) \
105 ? ~ _STDINT_MIN (signed, bits, zero) \
106 : /* The expression for the unsigned case. The subtraction of (signed) \
107 is a nop in the unsigned case and avoids "signed integer overflow" \
108 warnings in the signed case. */ \
109 ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
110
111#if !GNULIB_defined_stdint_types
112
113/* 7.18.1.1. Exact-width integer types */
114
115/* Here we assume a standard architecture where the hardware integer
116 types have 8, 16, 32, optionally 64 bits. */
117
118#undef int8_t
119#undef uint8_t
120typedef signed char gl_int8_t;
121typedef unsigned char gl_uint8_t;
122#define int8_t gl_int8_t
123#define uint8_t gl_uint8_t
124
125#undef int16_t
126#undef uint16_t
127typedef short int gl_int16_t;
128typedef unsigned short int gl_uint16_t;
129#define int16_t gl_int16_t
130#define uint16_t gl_uint16_t
131
132#undef int32_t
133#undef uint32_t
134typedef int gl_int32_t;
135typedef unsigned int gl_uint32_t;
136#define int32_t gl_int32_t
137#define uint32_t gl_uint32_t
138
139/* If the system defines INT64_MAX, assume int64_t works. That way,
140 if the underlying platform defines int64_t to be a 64-bit long long
141 int, the code below won't mistakenly define it to be a 64-bit long
142 int, which would mess up C++ name mangling. We must use #ifdef
143 rather than #if, to avoid an error with HP-UX 10.20 cc. */
144
145#ifdef INT64_MAX
146# define GL_INT64_T
147#else
148/* Do not undefine int64_t if gnulib is not being used with 64-bit
149 types, since otherwise it breaks platforms like Tandem/NSK. */
150# if LONG_MAX >> 31 >> 31 == 1
151# undef int64_t
152typedef long int gl_int64_t;
153# define int64_t gl_int64_t
154# define GL_INT64_T
155# elif defined _MSC_VER
156# undef int64_t
157typedef __int64 gl_int64_t;
158# define int64_t gl_int64_t
159# define GL_INT64_T
160# elif @HAVE_LONG_LONG_INT@
161# undef int64_t
162typedef long long int gl_int64_t;
163# define int64_t gl_int64_t
164# define GL_INT64_T
165# endif
166#endif
167
168#ifdef UINT64_MAX
169# define GL_UINT64_T
170#else
171# if ULONG_MAX >> 31 >> 31 >> 1 == 1
172# undef uint64_t
173typedef unsigned long int gl_uint64_t;
174# define uint64_t gl_uint64_t
175# define GL_UINT64_T
176# elif defined _MSC_VER
177# undef uint64_t
178typedef unsigned __int64 gl_uint64_t;
179# define uint64_t gl_uint64_t
180# define GL_UINT64_T
181# elif @HAVE_UNSIGNED_LONG_LONG_INT@
182# undef uint64_t
183typedef unsigned long long int gl_uint64_t;
184# define uint64_t gl_uint64_t
185# define GL_UINT64_T
186# endif
187#endif
188
189/* Avoid collision with Solaris 2.5.1 <pthread.h> etc. */
190#define _UINT8_T
191#define _UINT32_T
192#define _UINT64_T
193
194
195/* 7.18.1.2. Minimum-width integer types */
196
197/* Here we assume a standard architecture where the hardware integer
198 types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
199 are the same as the corresponding N_t types. */
200
201#undef int_least8_t
202#undef uint_least8_t
203#undef int_least16_t
204#undef uint_least16_t
205#undef int_least32_t
206#undef uint_least32_t
207#undef int_least64_t
208#undef uint_least64_t
209#define int_least8_t int8_t
210#define uint_least8_t uint8_t
211#define int_least16_t int16_t
212#define uint_least16_t uint16_t
213#define int_least32_t int32_t
214#define uint_least32_t uint32_t
215#ifdef GL_INT64_T
216# define int_least64_t int64_t
217#endif
218#ifdef GL_UINT64_T
219# define uint_least64_t uint64_t
220#endif
221
222/* 7.18.1.3. Fastest minimum-width integer types */
223
224/* Note: Other <stdint.h> substitutes may define these types differently.
225 It is not recommended to use these types in public header files. */
226
227/* Here we assume a standard architecture where the hardware integer
228 types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
229 are taken from the same list of types. Assume that 'long int'
230 is fast enough for all narrower integers. */
231
232#undef int_fast8_t
233#undef uint_fast8_t
234#undef int_fast16_t
235#undef uint_fast16_t
236#undef int_fast32_t
237#undef uint_fast32_t
238#undef int_fast64_t
239#undef uint_fast64_t
240typedef long int gl_int_fast8_t;
241typedef unsigned long int gl_uint_fast8_t;
242typedef long int gl_int_fast16_t;
243typedef unsigned long int gl_uint_fast16_t;
244typedef long int gl_int_fast32_t;
245typedef unsigned long int gl_uint_fast32_t;
246#define int_fast8_t gl_int_fast8_t
247#define uint_fast8_t gl_uint_fast8_t
248#define int_fast16_t gl_int_fast16_t
249#define uint_fast16_t gl_uint_fast16_t
250#define int_fast32_t gl_int_fast32_t
251#define uint_fast32_t gl_uint_fast32_t
252#ifdef GL_INT64_T
253# define int_fast64_t int64_t
254#endif
255#ifdef GL_UINT64_T
256# define uint_fast64_t uint64_t
257#endif
258
259/* 7.18.1.4. Integer types capable of holding object pointers */
260
261#undef intptr_t
262#undef uintptr_t
263typedef long int gl_intptr_t;
264typedef unsigned long int gl_uintptr_t;
265#define intptr_t gl_intptr_t
266#define uintptr_t gl_uintptr_t
267
268/* 7.18.1.5. Greatest-width integer types */
269
270/* Note: These types are compiler dependent. It may be unwise to use them in
271 public header files. */
272
273#undef intmax_t
274#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
275typedef long long int gl_intmax_t;
276# define intmax_t gl_intmax_t
277#elif defined GL_INT64_T
278# define intmax_t int64_t
279#else
280typedef long int gl_intmax_t;
281# define intmax_t gl_intmax_t
282#endif
283
284#undef uintmax_t
285#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
286typedef unsigned long long int gl_uintmax_t;
287# define uintmax_t gl_uintmax_t
288#elif defined GL_UINT64_T
289# define uintmax_t uint64_t
290#else
291typedef unsigned long int gl_uintmax_t;
292# define uintmax_t gl_uintmax_t
293#endif
294
295/* Verify that intmax_t and uintmax_t have the same size. Too much code
296 breaks if this is not the case. If this check fails, the reason is likely
297 to be found in the autoconf macros. */
298typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
299 ? 1 : -1];
300
301#define GNULIB_defined_stdint_types 1
302#endif /* !GNULIB_defined_stdint_types */
303
304/* 7.18.2. Limits of specified-width integer types */
305
306#if ! defined __cplusplus || defined __STDC_LIMIT_MACROS
307
308/* 7.18.2.1. Limits of exact-width integer types */
309
310/* Here we assume a standard architecture where the hardware integer
311 types have 8, 16, 32, optionally 64 bits. */
312
313#undef INT8_MIN
314#undef INT8_MAX
315#undef UINT8_MAX
316#define INT8_MIN (~ INT8_MAX)
317#define INT8_MAX 127
318#define UINT8_MAX 255
319
320#undef INT16_MIN
321#undef INT16_MAX
322#undef UINT16_MAX
323#define INT16_MIN (~ INT16_MAX)
324#define INT16_MAX 32767
325#define UINT16_MAX 65535
326
327#undef INT32_MIN
328#undef INT32_MAX
329#undef UINT32_MAX
330#define INT32_MIN (~ INT32_MAX)
331#define INT32_MAX 2147483647
332#define UINT32_MAX 4294967295U
333
334#if defined GL_INT64_T && ! defined INT64_MAX
335/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
336 evaluates the latter incorrectly in preprocessor expressions. */
337# define INT64_MIN (- INTMAX_C (1) << 63)
338# define INT64_MAX INTMAX_C (9223372036854775807)
339#endif
340
341#if defined GL_UINT64_T && ! defined UINT64_MAX
342# define UINT64_MAX UINTMAX_C (18446744073709551615)
343#endif
344
345/* 7.18.2.2. Limits of minimum-width integer types */
346
347/* Here we assume a standard architecture where the hardware integer
348 types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
349 are the same as the corresponding N_t types. */
350
351#undef INT_LEAST8_MIN
352#undef INT_LEAST8_MAX
353#undef UINT_LEAST8_MAX
354#define INT_LEAST8_MIN INT8_MIN
355#define INT_LEAST8_MAX INT8_MAX
356#define UINT_LEAST8_MAX UINT8_MAX
357
358#undef INT_LEAST16_MIN
359#undef INT_LEAST16_MAX
360#undef UINT_LEAST16_MAX
361#define INT_LEAST16_MIN INT16_MIN
362#define INT_LEAST16_MAX INT16_MAX
363#define UINT_LEAST16_MAX UINT16_MAX
364
365#undef INT_LEAST32_MIN
366#undef INT_LEAST32_MAX
367#undef UINT_LEAST32_MAX
368#define INT_LEAST32_MIN INT32_MIN
369#define INT_LEAST32_MAX INT32_MAX
370#define UINT_LEAST32_MAX UINT32_MAX
371
372#undef INT_LEAST64_MIN
373#undef INT_LEAST64_MAX
374#ifdef GL_INT64_T
375# define INT_LEAST64_MIN INT64_MIN
376# define INT_LEAST64_MAX INT64_MAX
377#endif
378
379#undef UINT_LEAST64_MAX
380#ifdef GL_UINT64_T
381# define UINT_LEAST64_MAX UINT64_MAX
382#endif
383
384/* 7.18.2.3. Limits of fastest minimum-width integer types */
385
386/* Here we assume a standard architecture where the hardware integer
387 types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
388 are taken from the same list of types. */
389
390#undef INT_FAST8_MIN
391#undef INT_FAST8_MAX
392#undef UINT_FAST8_MAX
393#define INT_FAST8_MIN LONG_MIN
394#define INT_FAST8_MAX LONG_MAX
395#define UINT_FAST8_MAX ULONG_MAX
396
397#undef INT_FAST16_MIN
398#undef INT_FAST16_MAX
399#undef UINT_FAST16_MAX
400#define INT_FAST16_MIN LONG_MIN
401#define INT_FAST16_MAX LONG_MAX
402#define UINT_FAST16_MAX ULONG_MAX
403
404#undef INT_FAST32_MIN
405#undef INT_FAST32_MAX
406#undef UINT_FAST32_MAX
407#define INT_FAST32_MIN LONG_MIN
408#define INT_FAST32_MAX LONG_MAX
409#define UINT_FAST32_MAX ULONG_MAX
410
411#undef INT_FAST64_MIN
412#undef INT_FAST64_MAX
413#ifdef GL_INT64_T
414# define INT_FAST64_MIN INT64_MIN
415# define INT_FAST64_MAX INT64_MAX
416#endif
417
418#undef UINT_FAST64_MAX
419#ifdef GL_UINT64_T
420# define UINT_FAST64_MAX UINT64_MAX
421#endif
422
423/* 7.18.2.4. Limits of integer types capable of holding object pointers */
424
425#undef INTPTR_MIN
426#undef INTPTR_MAX
427#undef UINTPTR_MAX
428#define INTPTR_MIN LONG_MIN
429#define INTPTR_MAX LONG_MAX
430#define UINTPTR_MAX ULONG_MAX
431
432/* 7.18.2.5. Limits of greatest-width integer types */
433
434#undef INTMAX_MIN
435#undef INTMAX_MAX
436#ifdef INT64_MAX
437# define INTMAX_MIN INT64_MIN
438# define INTMAX_MAX INT64_MAX
439#else
440# define INTMAX_MIN INT32_MIN
441# define INTMAX_MAX INT32_MAX
442#endif
443
444#undef UINTMAX_MAX
445#ifdef UINT64_MAX
446# define UINTMAX_MAX UINT64_MAX
447#else
448# define UINTMAX_MAX UINT32_MAX
449#endif
450
451/* 7.18.3. Limits of other integer types */
452
453/* ptrdiff_t limits */
454#undef PTRDIFF_MIN
455#undef PTRDIFF_MAX
456#if @APPLE_UNIVERSAL_BUILD@
457# ifdef _LP64
458# define PTRDIFF_MIN _STDINT_MIN (1, 64, 0l)
459# define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l)
460# else
461# define PTRDIFF_MIN _STDINT_MIN (1, 32, 0)
462# define PTRDIFF_MAX _STDINT_MAX (1, 32, 0)
463# endif
464#else
465# define PTRDIFF_MIN \
466 _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
467# define PTRDIFF_MAX \
468 _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
469#endif
470
471/* sig_atomic_t limits */
472#undef SIG_ATOMIC_MIN
473#undef SIG_ATOMIC_MAX
474#define SIG_ATOMIC_MIN \
475 _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
476 0@SIG_ATOMIC_T_SUFFIX@)
477#define SIG_ATOMIC_MAX \
478 _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
479 0@SIG_ATOMIC_T_SUFFIX@)
480
481
482/* size_t limit */
483#undef SIZE_MAX
484#if @APPLE_UNIVERSAL_BUILD@
485# ifdef _LP64
486# define SIZE_MAX _STDINT_MAX (0, 64, 0ul)
487# else
488# define SIZE_MAX _STDINT_MAX (0, 32, 0ul)
489# endif
490#else
491# define SIZE_MAX _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
492#endif
493
494/* wchar_t limits */
495/* Get WCHAR_MIN, WCHAR_MAX.
496 This include is not on the top, above, because on OSF/1 4.0 we have a
497 sequence of nested includes
498 <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
499 <stdint.h> and assumes its types are already defined. */
500#if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX)
501 /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
502 included before <wchar.h>. */
503# include <stddef.h>
504# include <stdio.h>
505# include <time.h>
506# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
507# include <wchar.h>
508# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
509#endif
510#undef WCHAR_MIN
511#undef WCHAR_MAX
512#define WCHAR_MIN \
513 _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
514#define WCHAR_MAX \
515 _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
516
517/* wint_t limits */
518#undef WINT_MIN
519#undef WINT_MAX
520#define WINT_MIN \
521 _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
522#define WINT_MAX \
523 _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
524
525#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */
526
527/* 7.18.4. Macros for integer constants */
528
529#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
530
531/* 7.18.4.1. Macros for minimum-width integer constants */
532/* According to ISO C 99 Technical Corrigendum 1 */
533
534/* Here we assume a standard architecture where the hardware integer
535 types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */
536
537#undef INT8_C
538#undef UINT8_C
539#define INT8_C(x) x
540#define UINT8_C(x) x
541
542#undef INT16_C
543#undef UINT16_C
544#define INT16_C(x) x
545#define UINT16_C(x) x
546
547#undef INT32_C
548#undef UINT32_C
549#define INT32_C(x) x
550#define UINT32_C(x) x ## U
551
552#undef INT64_C
553#undef UINT64_C
554#if LONG_MAX >> 31 >> 31 == 1
555# define INT64_C(x) x##L
556#elif defined _MSC_VER
557# define INT64_C(x) x##i64
558#elif @HAVE_LONG_LONG_INT@
559# define INT64_C(x) x##LL
560#endif
561#if ULONG_MAX >> 31 >> 31 >> 1 == 1
562# define UINT64_C(x) x##UL
563#elif defined _MSC_VER
564# define UINT64_C(x) x##ui64
565#elif @HAVE_UNSIGNED_LONG_LONG_INT@
566# define UINT64_C(x) x##ULL
567#endif
568
569/* 7.18.4.2. Macros for greatest-width integer constants */
570
571#undef INTMAX_C
572#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
573# define INTMAX_C(x) x##LL
574#elif defined GL_INT64_T
575# define INTMAX_C(x) INT64_C(x)
576#else
577# define INTMAX_C(x) x##L
578#endif
579
580#undef UINTMAX_C
581#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
582# define UINTMAX_C(x) x##ULL
583#elif defined GL_UINT64_T
584# define UINTMAX_C(x) UINT64_C(x)
585#else
586# define UINTMAX_C(x) x##UL
587#endif
588
589#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
590
591#endif /* _GL_STDINT_H */
592#endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
diff --git a/m4/gl-comp.m4 b/m4/gl-comp.m4
index 036b67452c8..43ff36558b5 100644
--- a/m4/gl-comp.m4
+++ b/m4/gl-comp.m4
@@ -28,6 +28,7 @@ AC_DEFUN([gl_EARLY],
28 AC_REQUIRE([AC_PROG_RANLIB]) 28 AC_REQUIRE([AC_PROG_RANLIB])
29 # Code from module arg-nonnull: 29 # Code from module arg-nonnull:
30 # Code from module c++defs: 30 # Code from module c++defs:
31 # Code from module crypto/md5:
31 # Code from module dtoastr: 32 # Code from module dtoastr:
32 # Code from module extensions: 33 # Code from module extensions:
33 AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) 34 AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
@@ -42,6 +43,7 @@ AC_DEFUN([gl_EARLY],
42 # Code from module multiarch: 43 # Code from module multiarch:
43 # Code from module stdbool: 44 # Code from module stdbool:
44 # Code from module stddef: 45 # Code from module stddef:
46 # Code from module stdint:
45 # Code from module stdlib: 47 # Code from module stdlib:
46 # Code from module strftime: 48 # Code from module strftime:
47 # Code from module time: 49 # Code from module time:
@@ -68,6 +70,8 @@ AC_DEFUN([gl_INIT],
68 gl_source_base='lib' 70 gl_source_base='lib'
69 # Code from module arg-nonnull: 71 # Code from module arg-nonnull:
70 # Code from module c++defs: 72 # Code from module c++defs:
73 # Code from module crypto/md5:
74 gl_MD5
71 # Code from module dtoastr: 75 # Code from module dtoastr:
72 AC_REQUIRE([gl_C99_STRTOLD]) 76 AC_REQUIRE([gl_C99_STRTOLD])
73 # Code from module extensions: 77 # Code from module extensions:
@@ -95,6 +99,8 @@ AC_DEFUN([gl_INIT],
95 AM_STDBOOL_H 99 AM_STDBOOL_H
96 # Code from module stddef: 100 # Code from module stddef:
97 gl_STDDEF_H 101 gl_STDDEF_H
102 # Code from module stdint:
103 gl_STDINT_H
98 # Code from module stdlib: 104 # Code from module stdlib:
99 gl_STDLIB_H 105 gl_STDLIB_H
100 # Code from module strftime: 106 # Code from module strftime:
@@ -261,10 +267,13 @@ AC_DEFUN([gl_FILE_LIST], [
261 lib/gettext.h 267 lib/gettext.h
262 lib/ignore-value.h 268 lib/ignore-value.h
263 lib/intprops.h 269 lib/intprops.h
270 lib/md5.c
271 lib/md5.h
264 lib/mktime-internal.h 272 lib/mktime-internal.h
265 lib/mktime.c 273 lib/mktime.c
266 lib/stdbool.in.h 274 lib/stdbool.in.h
267 lib/stddef.in.h 275 lib/stddef.in.h
276 lib/stdint.in.h
268 lib/stdlib.in.h 277 lib/stdlib.in.h
269 lib/strftime.c 278 lib/strftime.c
270 lib/strftime.h 279 lib/strftime.h
@@ -278,10 +287,13 @@ AC_DEFUN([gl_FILE_LIST], [
278 m4/getopt.m4 287 m4/getopt.m4
279 m4/gnulib-common.m4 288 m4/gnulib-common.m4
280 m4/include_next.m4 289 m4/include_next.m4
290 m4/longlong.m4
291 m4/md5.m4
281 m4/mktime.m4 292 m4/mktime.m4
282 m4/multiarch.m4 293 m4/multiarch.m4
283 m4/stdbool.m4 294 m4/stdbool.m4
284 m4/stddef_h.m4 295 m4/stddef_h.m4
296 m4/stdint.m4
285 m4/stdlib_h.m4 297 m4/stdlib_h.m4
286 m4/strftime.m4 298 m4/strftime.m4
287 m4/time_h.m4 299 m4/time_h.m4
diff --git a/m4/longlong.m4 b/m4/longlong.m4
new file mode 100644
index 00000000000..aed816cfa5e
--- /dev/null
+++ b/m4/longlong.m4
@@ -0,0 +1,113 @@
1# longlong.m4 serial 16
2dnl Copyright (C) 1999-2007, 2009-2011 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7dnl From Paul Eggert.
8
9# Define HAVE_LONG_LONG_INT if 'long long int' works.
10# This fixes a bug in Autoconf 2.61, and can be faster
11# than what's in Autoconf 2.62 through 2.68.
12
13# Note: If the type 'long long int' exists but is only 32 bits large
14# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
15# defined. In this case you can treat 'long long int' like 'long int'.
16
17AC_DEFUN([AC_TYPE_LONG_LONG_INT],
18[
19 AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
20 AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
21 [ac_cv_type_long_long_int=yes
22 if test "x${ac_cv_prog_cc_c99-no}" = xno; then
23 ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
24 if test $ac_cv_type_long_long_int = yes; then
25 dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
26 dnl If cross compiling, assume the bug is not important, since
27 dnl nobody cross compiles for this platform as far as we know.
28 AC_RUN_IFELSE(
29 [AC_LANG_PROGRAM(
30 [[@%:@include <limits.h>
31 @%:@ifndef LLONG_MAX
32 @%:@ define HALF \
33 (1LL << (sizeof (long long int) * CHAR_BIT - 2))
34 @%:@ define LLONG_MAX (HALF - 1 + HALF)
35 @%:@endif]],
36 [[long long int n = 1;
37 int i;
38 for (i = 0; ; i++)
39 {
40 long long int m = n << i;
41 if (m >> i != n)
42 return 1;
43 if (LLONG_MAX / 2 < m)
44 break;
45 }
46 return 0;]])],
47 [],
48 [ac_cv_type_long_long_int=no],
49 [:])
50 fi
51 fi])
52 if test $ac_cv_type_long_long_int = yes; then
53 AC_DEFINE([HAVE_LONG_LONG_INT], [1],
54 [Define to 1 if the system has the type `long long int'.])
55 fi
56])
57
58# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
59# This fixes a bug in Autoconf 2.61, and can be faster
60# than what's in Autoconf 2.62 through 2.68.
61
62# Note: If the type 'unsigned long long int' exists but is only 32 bits
63# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
64# will not be defined. In this case you can treat 'unsigned long long int'
65# like 'unsigned long int'.
66
67AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
68[
69 AC_CACHE_CHECK([for unsigned long long int],
70 [ac_cv_type_unsigned_long_long_int],
71 [ac_cv_type_unsigned_long_long_int=yes
72 if test "x${ac_cv_prog_cc_c99-no}" = xno; then
73 AC_LINK_IFELSE(
74 [_AC_TYPE_LONG_LONG_SNIPPET],
75 [],
76 [ac_cv_type_unsigned_long_long_int=no])
77 fi])
78 if test $ac_cv_type_unsigned_long_long_int = yes; then
79 AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
80 [Define to 1 if the system has the type `unsigned long long int'.])
81 fi
82])
83
84# Expands to a C program that can be used to test for simultaneous support
85# of 'long long' and 'unsigned long long'. We don't want to say that
86# 'long long' is available if 'unsigned long long' is not, or vice versa,
87# because too many programs rely on the symmetry between signed and unsigned
88# integer types (excluding 'bool').
89AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
90[
91 AC_LANG_PROGRAM(
92 [[/* For now, do not test the preprocessor; as of 2007 there are too many
93 implementations with broken preprocessors. Perhaps this can
94 be revisited in 2012. In the meantime, code should not expect
95 #if to work with literals wider than 32 bits. */
96 /* Test literals. */
97 long long int ll = 9223372036854775807ll;
98 long long int nll = -9223372036854775807LL;
99 unsigned long long int ull = 18446744073709551615ULL;
100 /* Test constant expressions. */
101 typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
102 ? 1 : -1)];
103 typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
104 ? 1 : -1)];
105 int i = 63;]],
106 [[/* Test availability of runtime routines for shift and division. */
107 long long int llmax = 9223372036854775807ll;
108 unsigned long long int ullmax = 18446744073709551615ull;
109 return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
110 | (llmax / ll) | (llmax % ll)
111 | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
112 | (ullmax / ull) | (ullmax % ull));]])
113])
diff --git a/m4/md5.m4 b/m4/md5.m4
new file mode 100644
index 00000000000..ce7671d6cea
--- /dev/null
+++ b/m4/md5.m4
@@ -0,0 +1,15 @@
1# md5.m4 serial 11
2dnl Copyright (C) 2002-2006, 2008-2011 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7AC_DEFUN([gl_MD5],
8[
9 AC_LIBOBJ([md5])
10
11 dnl Prerequisites of lib/md5.c.
12 AC_REQUIRE([gl_BIGENDIAN])
13 AC_REQUIRE([AC_C_INLINE])
14 :
15])
diff --git a/m4/stdint.m4 b/m4/stdint.m4
new file mode 100644
index 00000000000..e7d0d0765a2
--- /dev/null
+++ b/m4/stdint.m4
@@ -0,0 +1,479 @@
1# stdint.m4 serial 39
2dnl Copyright (C) 2001-2011 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7dnl From Paul Eggert and Bruno Haible.
8dnl Test whether <stdint.h> is supported or must be substituted.
9
10AC_DEFUN([gl_STDINT_H],
11[
12 AC_PREREQ([2.59])dnl
13
14 dnl Check for long long int and unsigned long long int.
15 AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
16 if test $ac_cv_type_long_long_int = yes; then
17 HAVE_LONG_LONG_INT=1
18 else
19 HAVE_LONG_LONG_INT=0
20 fi
21 AC_SUBST([HAVE_LONG_LONG_INT])
22 AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
23 if test $ac_cv_type_unsigned_long_long_int = yes; then
24 HAVE_UNSIGNED_LONG_LONG_INT=1
25 else
26 HAVE_UNSIGNED_LONG_LONG_INT=0
27 fi
28 AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT])
29
30 dnl Check for <wchar.h>, in the same way as gl_WCHAR_H does.
31 AC_CHECK_HEADERS_ONCE([wchar.h])
32 if test $ac_cv_header_wchar_h = yes; then
33 HAVE_WCHAR_H=1
34 else
35 HAVE_WCHAR_H=0
36 fi
37 AC_SUBST([HAVE_WCHAR_H])
38
39 dnl Check for <inttypes.h>.
40 dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h.
41 if test $ac_cv_header_inttypes_h = yes; then
42 HAVE_INTTYPES_H=1
43 else
44 HAVE_INTTYPES_H=0
45 fi
46 AC_SUBST([HAVE_INTTYPES_H])
47
48 dnl Check for <sys/types.h>.
49 dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h.
50 if test $ac_cv_header_sys_types_h = yes; then
51 HAVE_SYS_TYPES_H=1
52 else
53 HAVE_SYS_TYPES_H=0
54 fi
55 AC_SUBST([HAVE_SYS_TYPES_H])
56
57 gl_CHECK_NEXT_HEADERS([stdint.h])
58 if test $ac_cv_header_stdint_h = yes; then
59 HAVE_STDINT_H=1
60 else
61 HAVE_STDINT_H=0
62 fi
63 AC_SUBST([HAVE_STDINT_H])
64
65 dnl Now see whether we need a substitute <stdint.h>.
66 if test $ac_cv_header_stdint_h = yes; then
67 AC_CACHE_CHECK([whether stdint.h conforms to C99],
68 [gl_cv_header_working_stdint_h],
69 [gl_cv_header_working_stdint_h=no
70 AC_COMPILE_IFELSE([
71 AC_LANG_PROGRAM([[
72#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
73#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
74#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
75#include <stdint.h>
76/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
77#if !(defined WCHAR_MIN && defined WCHAR_MAX)
78#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
79#endif
80]
81gl_STDINT_INCLUDES
82[
83#ifdef INT8_MAX
84int8_t a1 = INT8_MAX;
85int8_t a1min = INT8_MIN;
86#endif
87#ifdef INT16_MAX
88int16_t a2 = INT16_MAX;
89int16_t a2min = INT16_MIN;
90#endif
91#ifdef INT32_MAX
92int32_t a3 = INT32_MAX;
93int32_t a3min = INT32_MIN;
94#endif
95#ifdef INT64_MAX
96int64_t a4 = INT64_MAX;
97int64_t a4min = INT64_MIN;
98#endif
99#ifdef UINT8_MAX
100uint8_t b1 = UINT8_MAX;
101#else
102typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
103#endif
104#ifdef UINT16_MAX
105uint16_t b2 = UINT16_MAX;
106#endif
107#ifdef UINT32_MAX
108uint32_t b3 = UINT32_MAX;
109#endif
110#ifdef UINT64_MAX
111uint64_t b4 = UINT64_MAX;
112#endif
113int_least8_t c1 = INT8_C (0x7f);
114int_least8_t c1max = INT_LEAST8_MAX;
115int_least8_t c1min = INT_LEAST8_MIN;
116int_least16_t c2 = INT16_C (0x7fff);
117int_least16_t c2max = INT_LEAST16_MAX;
118int_least16_t c2min = INT_LEAST16_MIN;
119int_least32_t c3 = INT32_C (0x7fffffff);
120int_least32_t c3max = INT_LEAST32_MAX;
121int_least32_t c3min = INT_LEAST32_MIN;
122int_least64_t c4 = INT64_C (0x7fffffffffffffff);
123int_least64_t c4max = INT_LEAST64_MAX;
124int_least64_t c4min = INT_LEAST64_MIN;
125uint_least8_t d1 = UINT8_C (0xff);
126uint_least8_t d1max = UINT_LEAST8_MAX;
127uint_least16_t d2 = UINT16_C (0xffff);
128uint_least16_t d2max = UINT_LEAST16_MAX;
129uint_least32_t d3 = UINT32_C (0xffffffff);
130uint_least32_t d3max = UINT_LEAST32_MAX;
131uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
132uint_least64_t d4max = UINT_LEAST64_MAX;
133int_fast8_t e1 = INT_FAST8_MAX;
134int_fast8_t e1min = INT_FAST8_MIN;
135int_fast16_t e2 = INT_FAST16_MAX;
136int_fast16_t e2min = INT_FAST16_MIN;
137int_fast32_t e3 = INT_FAST32_MAX;
138int_fast32_t e3min = INT_FAST32_MIN;
139int_fast64_t e4 = INT_FAST64_MAX;
140int_fast64_t e4min = INT_FAST64_MIN;
141uint_fast8_t f1 = UINT_FAST8_MAX;
142uint_fast16_t f2 = UINT_FAST16_MAX;
143uint_fast32_t f3 = UINT_FAST32_MAX;
144uint_fast64_t f4 = UINT_FAST64_MAX;
145#ifdef INTPTR_MAX
146intptr_t g = INTPTR_MAX;
147intptr_t gmin = INTPTR_MIN;
148#endif
149#ifdef UINTPTR_MAX
150uintptr_t h = UINTPTR_MAX;
151#endif
152intmax_t i = INTMAX_MAX;
153uintmax_t j = UINTMAX_MAX;
154
155#include <limits.h> /* for CHAR_BIT */
156#define TYPE_MINIMUM(t) \
157 ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
158#define TYPE_MAXIMUM(t) \
159 ((t) ((t) 0 < (t) -1 \
160 ? (t) -1 \
161 : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
162struct s {
163 int check_PTRDIFF:
164 PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
165 && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
166 ? 1 : -1;
167 /* Detect bug in FreeBSD 6.0 / ia64. */
168 int check_SIG_ATOMIC:
169 SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
170 && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
171 ? 1 : -1;
172 int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
173 int check_WCHAR:
174 WCHAR_MIN == TYPE_MINIMUM (wchar_t)
175 && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
176 ? 1 : -1;
177 /* Detect bug in mingw. */
178 int check_WINT:
179 WINT_MIN == TYPE_MINIMUM (wint_t)
180 && WINT_MAX == TYPE_MAXIMUM (wint_t)
181 ? 1 : -1;
182
183 /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */
184 int check_UINT8_C:
185 (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
186 int check_UINT16_C:
187 (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
188
189 /* Detect bugs in OpenBSD 3.9 stdint.h. */
190#ifdef UINT8_MAX
191 int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
192#endif
193#ifdef UINT16_MAX
194 int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
195#endif
196#ifdef UINT32_MAX
197 int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
198#endif
199#ifdef UINT64_MAX
200 int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
201#endif
202 int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
203 int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
204 int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
205 int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
206 int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
207 int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
208 int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
209 int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
210 int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
211 int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
212 int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
213};
214 ]])],
215 [dnl Determine whether the various *_MIN, *_MAX macros are usable
216 dnl in preprocessor expression. We could do it by compiling a test
217 dnl program for each of these macros. It is faster to run a program
218 dnl that inspects the macro expansion.
219 dnl This detects a bug on HP-UX 11.23/ia64.
220 AC_RUN_IFELSE([
221 AC_LANG_PROGRAM([[
222#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
223#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
224#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
225#include <stdint.h>
226]
227gl_STDINT_INCLUDES
228[
229#include <stdio.h>
230#include <string.h>
231#define MVAL(macro) MVAL1(macro)
232#define MVAL1(expression) #expression
233static const char *macro_values[] =
234 {
235#ifdef INT8_MAX
236 MVAL (INT8_MAX),
237#endif
238#ifdef INT16_MAX
239 MVAL (INT16_MAX),
240#endif
241#ifdef INT32_MAX
242 MVAL (INT32_MAX),
243#endif
244#ifdef INT64_MAX
245 MVAL (INT64_MAX),
246#endif
247#ifdef UINT8_MAX
248 MVAL (UINT8_MAX),
249#endif
250#ifdef UINT16_MAX
251 MVAL (UINT16_MAX),
252#endif
253#ifdef UINT32_MAX
254 MVAL (UINT32_MAX),
255#endif
256#ifdef UINT64_MAX
257 MVAL (UINT64_MAX),
258#endif
259 NULL
260 };
261]], [[
262 const char **mv;
263 for (mv = macro_values; *mv != NULL; mv++)
264 {
265 const char *value = *mv;
266 /* Test whether it looks like a cast expression. */
267 if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
268 || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
269 || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
270 || strncmp (value, "((int)"/*)*/, 6) == 0
271 || strncmp (value, "((signed short)"/*)*/, 15) == 0
272 || strncmp (value, "((signed char)"/*)*/, 14) == 0)
273 return mv - macro_values + 1;
274 }
275 return 0;
276]])],
277 [gl_cv_header_working_stdint_h=yes],
278 [],
279 [dnl When cross-compiling, assume it works.
280 gl_cv_header_working_stdint_h=yes
281 ])
282 ])
283 ])
284 fi
285 if test "$gl_cv_header_working_stdint_h" = yes; then
286 STDINT_H=
287 else
288 dnl Check for <sys/inttypes.h>, and for
289 dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5).
290 AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h])
291 if test $ac_cv_header_sys_inttypes_h = yes; then
292 HAVE_SYS_INTTYPES_H=1
293 else
294 HAVE_SYS_INTTYPES_H=0
295 fi
296 AC_SUBST([HAVE_SYS_INTTYPES_H])
297 if test $ac_cv_header_sys_bitypes_h = yes; then
298 HAVE_SYS_BITYPES_H=1
299 else
300 HAVE_SYS_BITYPES_H=0
301 fi
302 AC_SUBST([HAVE_SYS_BITYPES_H])
303
304 gl_STDINT_TYPE_PROPERTIES
305 STDINT_H=stdint.h
306 fi
307 AC_SUBST([STDINT_H])
308])
309
310dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES)
311dnl Determine the size of each of the given types in bits.
312AC_DEFUN([gl_STDINT_BITSIZEOF],
313[
314 dnl Use a shell loop, to avoid bloating configure, and
315 dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
316 dnl config.h.in,
317 dnl - extra AC_SUBST calls, so that the right substitutions are made.
318 m4_foreach_w([gltype], [$1],
319 [AH_TEMPLATE([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
320 [Define to the number of bits in type ']gltype['.])])
321 for gltype in $1 ; do
322 AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}],
323 [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT],
324 [$2
325#include <limits.h>], [result=unknown])
326 eval gl_cv_bitsizeof_${gltype}=\$result
327 ])
328 eval result=\$gl_cv_bitsizeof_${gltype}
329 if test $result = unknown; then
330 dnl Use a nonempty default, because some compilers, such as IRIX 5 cc,
331 dnl do a syntax check even on unused #if conditions and give an error
332 dnl on valid C code like this:
333 dnl #if 0
334 dnl # if > 32
335 dnl # endif
336 dnl #endif
337 result=0
338 fi
339 GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
340 AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result])
341 eval BITSIZEOF_${GLTYPE}=\$result
342 done
343 m4_foreach_w([gltype], [$1],
344 [AC_SUBST([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
345])
346
347dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES)
348dnl Determine the signedness of each of the given types.
349dnl Define HAVE_SIGNED_TYPE if type is signed.
350AC_DEFUN([gl_CHECK_TYPES_SIGNED],
351[
352 dnl Use a shell loop, to avoid bloating configure, and
353 dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
354 dnl config.h.in,
355 dnl - extra AC_SUBST calls, so that the right substitutions are made.
356 m4_foreach_w([gltype], [$1],
357 [AH_TEMPLATE([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
358 [Define to 1 if ']gltype[' is a signed integer type.])])
359 for gltype in $1 ; do
360 AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed],
361 [AC_COMPILE_IFELSE(
362 [AC_LANG_PROGRAM([$2[
363 int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])],
364 result=yes, result=no)
365 eval gl_cv_type_${gltype}_signed=\$result
366 ])
367 eval result=\$gl_cv_type_${gltype}_signed
368 GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
369 if test "$result" = yes; then
370 AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1])
371 eval HAVE_SIGNED_${GLTYPE}=1
372 else
373 eval HAVE_SIGNED_${GLTYPE}=0
374 fi
375 done
376 m4_foreach_w([gltype], [$1],
377 [AC_SUBST([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
378])
379
380dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES)
381dnl Determine the suffix to use for integer constants of the given types.
382dnl Define t_SUFFIX for each such type.
383AC_DEFUN([gl_INTEGER_TYPE_SUFFIX],
384[
385 dnl Use a shell loop, to avoid bloating configure, and
386 dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
387 dnl config.h.in,
388 dnl - extra AC_SUBST calls, so that the right substitutions are made.
389 m4_foreach_w([gltype], [$1],
390 [AH_TEMPLATE(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX],
391 [Define to l, ll, u, ul, ull, etc., as suitable for
392 constants of type ']gltype['.])])
393 for gltype in $1 ; do
394 AC_CACHE_CHECK([for $gltype integer literal suffix],
395 [gl_cv_type_${gltype}_suffix],
396 [eval gl_cv_type_${gltype}_suffix=no
397 eval result=\$gl_cv_type_${gltype}_signed
398 if test "$result" = yes; then
399 glsufu=
400 else
401 glsufu=u
402 fi
403 for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
404 case $glsuf in
405 '') gltype1='int';;
406 l) gltype1='long int';;
407 ll) gltype1='long long int';;
408 i64) gltype1='__int64';;
409 u) gltype1='unsigned int';;
410 ul) gltype1='unsigned long int';;
411 ull) gltype1='unsigned long long int';;
412 ui64)gltype1='unsigned __int64';;
413 esac
414 AC_COMPILE_IFELSE(
415 [AC_LANG_PROGRAM([$2[
416 extern $gltype foo;
417 extern $gltype1 foo;]])],
418 [eval gl_cv_type_${gltype}_suffix=\$glsuf])
419 eval result=\$gl_cv_type_${gltype}_suffix
420 test "$result" != no && break
421 done])
422 GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
423 eval result=\$gl_cv_type_${gltype}_suffix
424 test "$result" = no && result=
425 eval ${GLTYPE}_SUFFIX=\$result
426 AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result])
427 done
428 m4_foreach_w([gltype], [$1],
429 [AC_SUBST(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])])
430])
431
432dnl gl_STDINT_INCLUDES
433AC_DEFUN([gl_STDINT_INCLUDES],
434[[
435 /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
436 included before <wchar.h>. */
437 #include <stddef.h>
438 #include <signal.h>
439 #if HAVE_WCHAR_H
440 # include <stdio.h>
441 # include <time.h>
442 # include <wchar.h>
443 #endif
444]])
445
446dnl gl_STDINT_TYPE_PROPERTIES
447dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t
448dnl of interest to stdint.in.h.
449AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
450[
451 AC_REQUIRE([gl_MULTIARCH])
452 if test $APPLE_UNIVERSAL_BUILD = 0; then
453 gl_STDINT_BITSIZEOF([ptrdiff_t size_t],
454 [gl_STDINT_INCLUDES])
455 fi
456 gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t],
457 [gl_STDINT_INCLUDES])
458 gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t],
459 [gl_STDINT_INCLUDES])
460 gl_cv_type_ptrdiff_t_signed=yes
461 gl_cv_type_size_t_signed=no
462 if test $APPLE_UNIVERSAL_BUILD = 0; then
463 gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t],
464 [gl_STDINT_INCLUDES])
465 fi
466 gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t],
467 [gl_STDINT_INCLUDES])
468])
469
470dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
471dnl Remove this when we can assume autoconf >= 2.61.
472m4_ifdef([AC_COMPUTE_INT], [], [
473 AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
474])
475
476# Hey Emacs!
477# Local Variables:
478# indent-tabs-mode: nil
479# End:
diff --git a/src/ChangeLog b/src/ChangeLog
index 2b4d60f9189..54d912cc15d 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,13 @@
12011-02-20 Paul Eggert <eggert@cs.ucla.edu>
2
3 Import crypto/md5 and stdint modules from gnulib.
4 * Makefile.in (base_obj): Remove md5.o, since this file
5 is in lib now.
6 * config.in: Regenerate.
7 * md5.h, md5.h: Move to ../lib.
8 * deps.mk (md5.o): Remove.
9 (fns.o): Depend on ../lib/md5.h, not md5.h.
10
12011-02-19 Eli Zaretskii <eliz@gnu.org> 112011-02-19 Eli Zaretskii <eliz@gnu.org>
2 12
3 * termcap.c (tputs): Don't declare baud_rate. 13 * termcap.c (tputs): Don't declare baud_rate.
diff --git a/src/Makefile.in b/src/Makefile.in
index fda65be7084..41b6767f26e 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -354,7 +354,7 @@ base_obj = dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
354 syntax.o $(UNEXEC_OBJ) bytecode.o \ 354 syntax.o $(UNEXEC_OBJ) bytecode.o \
355 process.o gnutls.o callproc.o \ 355 process.o gnutls.o callproc.o \
356 region-cache.o sound.o atimer.o \ 356 region-cache.o sound.o atimer.o \
357 doprnt.o intervals.o textprop.o composite.o md5.o xml.o \ 357 doprnt.o intervals.o textprop.o composite.o xml.o \
358 $(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ) 358 $(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ)
359obj = $(base_obj) $(NS_OBJC_OBJ) 359obj = $(base_obj) $(NS_OBJC_OBJ)
360 360
diff --git a/src/config.in b/src/config.in
index 637287a024c..9e8364ec45b 100644
--- a/src/config.in
+++ b/src/config.in
@@ -31,6 +31,21 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
31/* Define if building universal (internal helper macro) */ 31/* Define if building universal (internal helper macro) */
32#undef AC_APPLE_UNIVERSAL_BUILD 32#undef AC_APPLE_UNIVERSAL_BUILD
33 33
34/* Define to the number of bits in type 'ptrdiff_t'. */
35#undef BITSIZEOF_PTRDIFF_T
36
37/* Define to the number of bits in type 'sig_atomic_t'. */
38#undef BITSIZEOF_SIG_ATOMIC_T
39
40/* Define to the number of bits in type 'size_t'. */
41#undef BITSIZEOF_SIZE_T
42
43/* Define to the number of bits in type 'wchar_t'. */
44#undef BITSIZEOF_WCHAR_T
45
46/* Define to the number of bits in type 'wint_t'. */
47#undef BITSIZEOF_WINT_T
48
34/* Define if Emacs cannot be dumped on your system. */ 49/* Define if Emacs cannot be dumped on your system. */
35#undef CANNOT_DUMP 50#undef CANNOT_DUMP
36 51
@@ -440,6 +455,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
440/* Define to 1 if you support file names longer than 14 characters. */ 455/* Define to 1 if you support file names longer than 14 characters. */
441#undef HAVE_LONG_FILE_NAMES 456#undef HAVE_LONG_FILE_NAMES
442 457
458/* Define to 1 if the system has the type `long long int'. */
459#undef HAVE_LONG_LONG_INT
460
443/* Define to 1 if you have the `lrand48' function. */ 461/* Define to 1 if you have the `lrand48' function. */
444#undef HAVE_LRAND48 462#undef HAVE_LRAND48
445 463
@@ -596,6 +614,15 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
596/* Define to 1 if you have the `shutdown' function. */ 614/* Define to 1 if you have the `shutdown' function. */
597#undef HAVE_SHUTDOWN 615#undef HAVE_SHUTDOWN
598 616
617/* Define to 1 if 'sig_atomic_t' is a signed integer type. */
618#undef HAVE_SIGNED_SIG_ATOMIC_T
619
620/* Define to 1 if 'wchar_t' is a signed integer type. */
621#undef HAVE_SIGNED_WCHAR_T
622
623/* Define to 1 if 'wint_t' is a signed integer type. */
624#undef HAVE_SIGNED_WINT_T
625
599/* Define to 1 if the system has the type `size_t'. */ 626/* Define to 1 if the system has the type `size_t'. */
600#undef HAVE_SIZE_T 627#undef HAVE_SIZE_T
601 628
@@ -665,6 +692,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
665/* Define to 1 if you have the `sysinfo' function. */ 692/* Define to 1 if you have the `sysinfo' function. */
666#undef HAVE_SYSINFO 693#undef HAVE_SYSINFO
667 694
695/* Define to 1 if you have the <sys/bitypes.h> header file. */
696#undef HAVE_SYS_BITYPES_H
697
698/* Define to 1 if you have the <sys/inttypes.h> header file. */
699#undef HAVE_SYS_INTTYPES_H
700
668/* Define to 1 if you have the <sys/loadavg.h> header file. */ 701/* Define to 1 if you have the <sys/loadavg.h> header file. */
669#undef HAVE_SYS_LOADAVG_H 702#undef HAVE_SYS_LOADAVG_H
670 703
@@ -745,6 +778,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
745/* Define to 1 if you have the <unistd.h> header file. */ 778/* Define to 1 if you have the <unistd.h> header file. */
746#undef HAVE_UNISTD_H 779#undef HAVE_UNISTD_H
747 780
781/* Define to 1 if the system has the type `unsigned long long int'. */
782#undef HAVE_UNSIGNED_LONG_LONG_INT
783
748/* Define to 1 if you have the <util.h> header file. */ 784/* Define to 1 if you have the <util.h> header file. */
749#undef HAVE_UTIL_H 785#undef HAVE_UTIL_H
750 786
@@ -763,6 +799,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
763/* Define to 1 if you have the <vfork.h> header file. */ 799/* Define to 1 if you have the <vfork.h> header file. */
764#undef HAVE_VFORK_H 800#undef HAVE_VFORK_H
765 801
802/* Define to 1 if you have the <wchar.h> header file. */
803#undef HAVE_WCHAR_H
804
766/* Define if you have the 'wchar_t' type. */ 805/* Define if you have the 'wchar_t' type. */
767#undef HAVE_WCHAR_T 806#undef HAVE_WCHAR_T
768 807
@@ -915,6 +954,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
915/* Define to 1 if the C compiler supports function prototypes. */ 954/* Define to 1 if the C compiler supports function prototypes. */
916#undef PROTOTYPES 955#undef PROTOTYPES
917 956
957/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
958 'ptrdiff_t'. */
959#undef PTRDIFF_T_SUFFIX
960
918/* Define REL_ALLOC if you want to use the relocating allocator for buffer 961/* Define REL_ALLOC if you want to use the relocating allocator for buffer
919 space. */ 962 space. */
920#undef REL_ALLOC 963#undef REL_ALLOC
@@ -922,6 +965,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
922/* Define as the return type of signal handlers (`int' or `void'). */ 965/* Define as the return type of signal handlers (`int' or `void'). */
923#undef RETSIGTYPE 966#undef RETSIGTYPE
924 967
968/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
969 'sig_atomic_t'. */
970#undef SIG_ATOMIC_T_SUFFIX
971
972/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
973 'size_t'. */
974#undef SIZE_T_SUFFIX
975
925/* If using the C implementation of alloca, define if you know the 976/* If using the C implementation of alloca, define if you know the
926 direction of stack growth for your system; otherwise it will be 977 direction of stack growth for your system; otherwise it will be
927 automatically deduced at runtime. 978 automatically deduced at runtime.
@@ -985,6 +1036,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
985/* Version number of package */ 1036/* Version number of package */
986#undef VERSION 1037#undef VERSION
987 1038
1039/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
1040 'wchar_t'. */
1041#undef WCHAR_T_SUFFIX
1042
1043/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
1044 'wint_t'. */
1045#undef WINT_T_SUFFIX
1046
988/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most 1047/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
989 significant byte first (like Motorola and SPARC, unlike Intel). */ 1048 significant byte first (like Motorola and SPARC, unlike Intel). */
990#if defined AC_APPLE_UNIVERSAL_BUILD 1049#if defined AC_APPLE_UNIVERSAL_BUILD
diff --git a/src/deps.mk b/src/deps.mk
index 3cb69bab2d8..5bd4a682bfa 100644
--- a/src/deps.mk
+++ b/src/deps.mk
@@ -9,17 +9,17 @@
9## it under the terms of the GNU General Public License as published by 9## it under the terms of the GNU General Public License as published by
10## the Free Software Foundation, either version 3 of the License, or 10## the Free Software Foundation, either version 3 of the License, or
11## (at your option) any later version. 11## (at your option) any later version.
12## 12##
13## GNU Emacs is distributed in the hope that it will be useful, 13## GNU Emacs is distributed in the hope that it will be useful,
14## but WITHOUT ANY WARRANTY; without even the implied warranty of 14## but WITHOUT ANY WARRANTY; without even the implied warranty of
15## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16## GNU General Public License for more details. 16## GNU General Public License for more details.
17## 17##
18## You should have received a copy of the GNU General Public License 18## You should have received a copy of the GNU General Public License
19## along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. 19## along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
20 20
21## Commentary: 21## Commentary:
22## 22##
23## This file is inserted in src/Makefile if AUTO_DEPEND=no. 23## This file is inserted in src/Makefile if AUTO_DEPEND=no.
24## It defines static dependencies between the various source files. 24## It defines static dependencies between the various source files.
25 25
@@ -144,7 +144,6 @@ gmalloc.o: gmalloc.c $(config_h)
144ralloc.o: ralloc.c lisp.h $(config_h) 144ralloc.o: ralloc.c lisp.h $(config_h)
145vm-limit.o: vm-limit.c mem-limits.h lisp.h globals.h $(config_h) 145vm-limit.o: vm-limit.c mem-limits.h lisp.h globals.h $(config_h)
146marker.o: marker.c buffer.h character.h lisp.h globals.h $(config_h) 146marker.o: marker.c buffer.h character.h lisp.h globals.h $(config_h)
147md5.o: md5.c md5.h $(config_h)
148minibuf.o: minibuf.c syntax.h frame.h window.h keyboard.h systime.h \ 147minibuf.o: minibuf.c syntax.h frame.h window.h keyboard.h systime.h \
149 buffer.h commands.h character.h msdos.h $(INTERVALS_H) keymap.h \ 148 buffer.h commands.h character.h msdos.h $(INTERVALS_H) keymap.h \
150 termhooks.h lisp.h globals.h $(config_h) coding.h 149 termhooks.h lisp.h globals.h $(config_h) coding.h
@@ -283,7 +282,7 @@ eval.o: eval.c commands.h keyboard.h blockinput.h atimer.h systime.h frame.h \
283 msdos.h 282 msdos.h
284floatfns.o: floatfns.c syssignal.h lisp.h globals.h $(config_h) 283floatfns.o: floatfns.c syssignal.h lisp.h globals.h $(config_h)
285fns.o: fns.c commands.h lisp.h $(config_h) frame.h buffer.h character.h \ 284fns.o: fns.c commands.h lisp.h $(config_h) frame.h buffer.h character.h \
286 keyboard.h keymap.h window.h $(INTERVALS_H) coding.h md5.h \ 285 keyboard.h keymap.h window.h $(INTERVALS_H) coding.h ../lib/md5.h \
287 blockinput.h atimer.h systime.h xterm.h ../lib/unistd.h globals.h 286 blockinput.h atimer.h systime.h xterm.h ../lib/unistd.h globals.h
288print.o: print.c process.h frame.h window.h buffer.h keyboard.h character.h \ 287print.o: print.c process.h frame.h window.h buffer.h keyboard.h character.h \
289 lisp.h globals.h $(config_h) termchar.h $(INTERVALS_H) msdos.h termhooks.h \ 288 lisp.h globals.h $(config_h) termchar.h $(INTERVALS_H) msdos.h termhooks.h \
diff --git a/src/md5.c b/src/md5.c
deleted file mode 100644
index 5ac4536cff9..00000000000
--- a/src/md5.c
+++ /dev/null
@@ -1,429 +0,0 @@
1/* Functions to compute MD5 message digest of files or memory blocks.
2 according to the definition of MD5 in RFC 1321 from April 1992.
3 Copyright (C) 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004,
4 2005, 2006, 2007, 2010 Free Software Foundation, Inc.
5
6 This file is part of the GNU C Library.
7
8 The GNU C Library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License as
10 published by the Free Software Foundation; either version 2 of the
11 License, or (at your option) any later version.
12
13 The GNU C Library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with the GNU C Library; see the file COPYING. If not, write to the
20 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 Boston, MA 02110-1301, USA. */
22
23/* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. */
24
25#ifdef HAVE_CONFIG_H
26# include <config.h>
27#endif
28
29#include <sys/types.h>
30
31#if STDC_HEADERS || defined _LIBC
32# include <stdlib.h>
33# include <string.h>
34#else
35# ifndef HAVE_MEMCPY
36# define memcpy(d, s, n) bcopy ((s), (d), (n))
37# endif
38#endif
39
40#ifdef _LIBC
41# include <endian.h>
42# if __BYTE_ORDER == __BIG_ENDIAN
43# define WORDS_BIGENDIAN 1
44# endif
45/* We need to keep the namespace clean so define the MD5 function
46 protected using leading __ . */
47# define md5_init_ctx __md5_init_ctx
48# define md5_process_block __md5_process_block
49# define md5_process_bytes __md5_process_bytes
50# define md5_finish_ctx __md5_finish_ctx
51# define md5_read_ctx __md5_read_ctx
52# define md5_stream __md5_stream
53# define md5_buffer __md5_buffer
54#endif
55
56#include "md5.h"
57
58#ifdef WORDS_BIGENDIAN
59# define SWAP(n) \
60 (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
61#else
62# define SWAP(n) (n)
63#endif
64
65
66/* This array contains the bytes used to pad the buffer to the next
67 64-byte boundary. (RFC 1321, 3.1: Step 1) */
68static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ };
69
70
71/* Initialize structure containing state of computation.
72 (RFC 1321, 3.3: Step 3) */
73void
74md5_init_ctx (struct md5_ctx *ctx)
75{
76 ctx->A = 0x67452301;
77 ctx->B = 0xefcdab89;
78 ctx->C = 0x98badcfe;
79 ctx->D = 0x10325476;
80
81 ctx->total[0] = ctx->total[1] = 0;
82 ctx->buflen = 0;
83}
84
85/* Put result from CTX in first 16 bytes following RESBUF. The result
86 must be in little endian byte order.
87
88 IMPORTANT: On some systems it is required that RESBUF is correctly
89 aligned for a 32 bits value. */
90void *
91md5_read_ctx (const struct md5_ctx *ctx, void *resbuf)
92{
93 ((md5_uint32 *) resbuf)[0] = SWAP (ctx->A);
94 ((md5_uint32 *) resbuf)[1] = SWAP (ctx->B);
95 ((md5_uint32 *) resbuf)[2] = SWAP (ctx->C);
96 ((md5_uint32 *) resbuf)[3] = SWAP (ctx->D);
97
98 return resbuf;
99}
100
101/* Process the remaining bytes in the internal buffer and the usual
102 prolog according to the standard and write the result to RESBUF.
103
104 IMPORTANT: On some systems it is required that RESBUF is correctly
105 aligned for a 32 bits value. */
106void *
107md5_finish_ctx (struct md5_ctx *ctx, void *resbuf)
108{
109 /* Take yet unprocessed bytes into account. */
110 md5_uint32 bytes = ctx->buflen;
111 size_t pad;
112
113 /* Now count remaining bytes. */
114 ctx->total[0] += bytes;
115 if (ctx->total[0] < bytes)
116 ++ctx->total[1];
117
118 pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes;
119 memcpy (&ctx->buffer[bytes], fillbuf, pad);
120
121 /* Put the 64-bit file length in *bits* at the end of the buffer. */
122 *(md5_uint32 *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3);
123 *(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) |
124 (ctx->total[0] >> 29));
125
126 /* Process last bytes. */
127 md5_process_block (ctx->buffer, bytes + pad + 8, ctx);
128
129 return md5_read_ctx (ctx, resbuf);
130}
131
132/* Compute MD5 message digest for bytes read from STREAM. The
133 resulting message digest number will be written into the 16 bytes
134 beginning at RESBLOCK. */
135int
136md5_stream (FILE *stream, void *resblock)
137{
138 /* Important: BLOCKSIZE must be a multiple of 64. */
139#define BLOCKSIZE 4096
140 struct md5_ctx ctx;
141 char buffer[BLOCKSIZE + 72];
142 size_t sum;
143
144 /* Initialize the computation context. */
145 md5_init_ctx (&ctx);
146
147 /* Iterate over full file contents. */
148 while (1)
149 {
150 /* We read the file in blocks of BLOCKSIZE bytes. One call of the
151 computation function processes the whole buffer so that with the
152 next round of the loop another block can be read. */
153 size_t n;
154 sum = 0;
155
156 /* Read block. Take care for partial reads. */
157 do
158 {
159 n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
160
161 sum += n;
162 }
163 while (sum < BLOCKSIZE && n != 0);
164 if (n == 0 && ferror (stream))
165 return 1;
166
167 /* If end of file is reached, end the loop. */
168 if (n == 0)
169 break;
170
171 /* Process buffer with BLOCKSIZE bytes. Note that
172 BLOCKSIZE % 64 == 0
173 */
174 md5_process_block (buffer, BLOCKSIZE, &ctx);
175 }
176
177 /* Add the last bytes if necessary. */
178 if (sum > 0)
179 md5_process_bytes (buffer, sum, &ctx);
180
181 /* Construct result in desired memory. */
182 md5_finish_ctx (&ctx, resblock);
183 return 0;
184}
185
186/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
187 result is always in little endian byte order, so that a byte-wise
188 output yields to the wanted ASCII representation of the message
189 digest. */
190void *
191md5_buffer (const char *buffer, size_t len, void *resblock)
192{
193 struct md5_ctx ctx;
194
195 /* Initialize the computation context. */
196 md5_init_ctx (&ctx);
197
198 /* Process whole buffer but last len % 64 bytes. */
199 md5_process_bytes (buffer, len, &ctx);
200
201 /* Put result in desired memory area. */
202 return md5_finish_ctx (&ctx, resblock);
203}
204
205
206void
207md5_process_bytes (const void *buffer, size_t len, struct md5_ctx *ctx)
208{
209 /* const void aligned_buffer = buffer; */
210
211 /* When we already have some bits in our internal buffer concatenate
212 both inputs first. */
213 if (ctx->buflen != 0)
214 {
215 size_t left_over = ctx->buflen;
216 size_t add = 128 - left_over > len ? len : 128 - left_over;
217
218 /* Only put full words in the buffer. */
219 add -= add % sizeof (md5_uint32);
220
221 memcpy (&ctx->buffer[left_over], buffer, add);
222 ctx->buflen += add;
223
224 if (ctx->buflen > 64)
225 {
226 md5_process_block (ctx->buffer, ctx->buflen & ~63, ctx);
227
228 ctx->buflen &= 63;
229 /* The regions in the following copy operation cannot overlap. */
230 memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63],
231 ctx->buflen);
232 }
233
234 buffer = (const char *) buffer + add;
235 len -= add;
236 }
237
238 /* Process available complete blocks. */
239 if (len > 64)
240 {
241 md5_process_block (buffer, len & ~63, ctx);
242 buffer = (const char *) buffer + (len & ~63);
243 len &= 63;
244 }
245
246 /* Move remaining bytes in internal buffer. */
247 if (len > 0)
248 {
249 size_t left_over = ctx->buflen;
250
251 memcpy (&ctx->buffer[left_over], buffer, len);
252 left_over += len;
253 if (left_over >= 64)
254 {
255 md5_process_block (ctx->buffer, 64, ctx);
256 left_over -= 64;
257 memcpy (ctx->buffer, &ctx->buffer[64], left_over);
258 }
259 ctx->buflen = left_over;
260 }
261}
262
263
264/* These are the four functions used in the four steps of the MD5 algorithm
265 and defined in the RFC 1321. The first function is a little bit optimized
266 (as found in Colin Plumbs public domain implementation). */
267/* #define FF(b, c, d) ((b & c) | (~b & d)) */
268#define FF(b, c, d) (d ^ (b & (c ^ d)))
269#define FG(b, c, d) FF (d, b, c)
270#define FH(b, c, d) (b ^ c ^ d)
271#define FI(b, c, d) (c ^ (b | ~d))
272
273/* Process LEN bytes of BUFFER, accumulating context into CTX.
274 It is assumed that LEN % 64 == 0. */
275
276void
277md5_process_block (const void *buffer, size_t len, struct md5_ctx *ctx)
278{
279 md5_uint32 correct_words[16];
280 const md5_uint32 *words = buffer;
281 size_t nwords = len / sizeof (md5_uint32);
282 const md5_uint32 *endp = words + nwords;
283 md5_uint32 A = ctx->A;
284 md5_uint32 B = ctx->B;
285 md5_uint32 C = ctx->C;
286 md5_uint32 D = ctx->D;
287
288 /* First increment the byte count. RFC 1321 specifies the possible
289 length of the file up to 2^64 bits. Here we only compute the
290 number of bytes. Do a double word increment. */
291 ctx->total[0] += len;
292 if (ctx->total[0] < len)
293 ++ctx->total[1];
294
295 /* Process all bytes in the buffer with 64 bytes in each round of
296 the loop. */
297 while (words < endp)
298 {
299 md5_uint32 *cwp = correct_words;
300 md5_uint32 A_save = A;
301 md5_uint32 B_save = B;
302 md5_uint32 C_save = C;
303 md5_uint32 D_save = D;
304
305 /* First round: using the given function, the context and a constant
306 the next context is computed. Because the algorithms processing
307 unit is a 32-bit word and it is determined to work on words in
308 little endian byte order we perhaps have to change the byte order
309 before the computation. To reduce the work for the next steps
310 we store the swapped words in the array CORRECT_WORDS. */
311
312#define OP(a, b, c, d, s, T) \
313 do \
314 { \
315 a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \
316 ++words; \
317 CYCLIC (a, s); \
318 a += b; \
319 } \
320 while (0)
321
322 /* It is unfortunate that C does not provide an operator for
323 cyclic rotation. Hope the C compiler is smart enough. */
324#define CYCLIC(w, s) (w = (w << s) | (w >> (32 - s)))
325
326 /* Before we start, one word to the strange constants.
327 They are defined in RFC 1321 as
328
329 T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64
330 */
331
332 /* Round 1. */
333 OP (A, B, C, D, 7, 0xd76aa478);
334 OP (D, A, B, C, 12, 0xe8c7b756);
335 OP (C, D, A, B, 17, 0x242070db);
336 OP (B, C, D, A, 22, 0xc1bdceee);
337 OP (A, B, C, D, 7, 0xf57c0faf);
338 OP (D, A, B, C, 12, 0x4787c62a);
339 OP (C, D, A, B, 17, 0xa8304613);
340 OP (B, C, D, A, 22, 0xfd469501);
341 OP (A, B, C, D, 7, 0x698098d8);
342 OP (D, A, B, C, 12, 0x8b44f7af);
343 OP (C, D, A, B, 17, 0xffff5bb1);
344 OP (B, C, D, A, 22, 0x895cd7be);
345 OP (A, B, C, D, 7, 0x6b901122);
346 OP (D, A, B, C, 12, 0xfd987193);
347 OP (C, D, A, B, 17, 0xa679438e);
348 OP (B, C, D, A, 22, 0x49b40821);
349
350 /* For the second to fourth round we have the possibly swapped words
351 in CORRECT_WORDS. Redefine the macro to take an additional first
352 argument specifying the function to use. */
353#undef OP
354#define OP(f, a, b, c, d, k, s, T) \
355 do \
356 { \
357 a += f (b, c, d) + correct_words[k] + T; \
358 CYCLIC (a, s); \
359 a += b; \
360 } \
361 while (0)
362
363 /* Round 2. */
364 OP (FG, A, B, C, D, 1, 5, 0xf61e2562);
365 OP (FG, D, A, B, C, 6, 9, 0xc040b340);
366 OP (FG, C, D, A, B, 11, 14, 0x265e5a51);
367 OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa);
368 OP (FG, A, B, C, D, 5, 5, 0xd62f105d);
369 OP (FG, D, A, B, C, 10, 9, 0x02441453);
370 OP (FG, C, D, A, B, 15, 14, 0xd8a1e681);
371 OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8);
372 OP (FG, A, B, C, D, 9, 5, 0x21e1cde6);
373 OP (FG, D, A, B, C, 14, 9, 0xc33707d6);
374 OP (FG, C, D, A, B, 3, 14, 0xf4d50d87);
375 OP (FG, B, C, D, A, 8, 20, 0x455a14ed);
376 OP (FG, A, B, C, D, 13, 5, 0xa9e3e905);
377 OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8);
378 OP (FG, C, D, A, B, 7, 14, 0x676f02d9);
379 OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a);
380
381 /* Round 3. */
382 OP (FH, A, B, C, D, 5, 4, 0xfffa3942);
383 OP (FH, D, A, B, C, 8, 11, 0x8771f681);
384 OP (FH, C, D, A, B, 11, 16, 0x6d9d6122);
385 OP (FH, B, C, D, A, 14, 23, 0xfde5380c);
386 OP (FH, A, B, C, D, 1, 4, 0xa4beea44);
387 OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9);
388 OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60);
389 OP (FH, B, C, D, A, 10, 23, 0xbebfbc70);
390 OP (FH, A, B, C, D, 13, 4, 0x289b7ec6);
391 OP (FH, D, A, B, C, 0, 11, 0xeaa127fa);
392 OP (FH, C, D, A, B, 3, 16, 0xd4ef3085);
393 OP (FH, B, C, D, A, 6, 23, 0x04881d05);
394 OP (FH, A, B, C, D, 9, 4, 0xd9d4d039);
395 OP (FH, D, A, B, C, 12, 11, 0xe6db99e5);
396 OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8);
397 OP (FH, B, C, D, A, 2, 23, 0xc4ac5665);
398
399 /* Round 4. */
400 OP (FI, A, B, C, D, 0, 6, 0xf4292244);
401 OP (FI, D, A, B, C, 7, 10, 0x432aff97);
402 OP (FI, C, D, A, B, 14, 15, 0xab9423a7);
403 OP (FI, B, C, D, A, 5, 21, 0xfc93a039);
404 OP (FI, A, B, C, D, 12, 6, 0x655b59c3);
405 OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92);
406 OP (FI, C, D, A, B, 10, 15, 0xffeff47d);
407 OP (FI, B, C, D, A, 1, 21, 0x85845dd1);
408 OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f);
409 OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0);
410 OP (FI, C, D, A, B, 6, 15, 0xa3014314);
411 OP (FI, B, C, D, A, 13, 21, 0x4e0811a1);
412 OP (FI, A, B, C, D, 4, 6, 0xf7537e82);
413 OP (FI, D, A, B, C, 11, 10, 0xbd3af235);
414 OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb);
415 OP (FI, B, C, D, A, 9, 21, 0xeb86d391);
416
417 /* Add the starting values of the context. */
418 A += A_save;
419 B += B_save;
420 C += C_save;
421 D += D_save;
422 }
423
424 /* Put checksum in context given as argument. */
425 ctx->A = A;
426 ctx->B = B;
427 ctx->C = C;
428 ctx->D = D;
429}
diff --git a/src/md5.h b/src/md5.h
deleted file mode 100644
index 22bcdfd7119..00000000000
--- a/src/md5.h
+++ /dev/null
@@ -1,148 +0,0 @@
1/* Declaration of functions and data types used for MD5 sum computing
2 library functions.
3 Copyright (C) 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004,
4 2005, 2006, 2007 Free Software Foundation, Inc.
5 This file is part of GNU Emacs.
6
7 The GNU C Library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License as
9 published by the Free Software Foundation; either version 2 of the
10 License, or (at your option) any later version.
11
12 The GNU C Library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 General Public License for more details.
16
17 You should have received a copy of the GNU General Public
18 License along with the GNU C Library; see the file COPYING. If not,
19 write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 Boston, MA 02110-1301, USA. */
21
22#ifndef _MD5_H
23#define _MD5_H 1
24
25#include <stdio.h>
26
27#if defined HAVE_LIMITS_H || _LIBC
28# include <limits.h>
29#endif
30
31/* The following contortions are an attempt to use the C preprocessor
32 to determine an unsigned integral type that is 32 bits wide. An
33 alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
34 doing that would require that the configure script compile and *run*
35 the resulting executable. Locally running cross-compiled executables
36 is usually not possible. */
37
38#ifdef _LIBC
39# include <sys/types.h>
40typedef u_int32_t md5_uint32;
41#else
42# if defined __STDC__ && __STDC__
43# define UINT_MAX_32_BITS 4294967295U
44# else
45# define UINT_MAX_32_BITS 0xFFFFFFFF
46# endif
47
48/* If UINT_MAX isn't defined, assume it's a 32-bit type.
49 This should be valid for all systems GNU cares about because
50 that doesn't include 16-bit systems, and only modern systems
51 (that certainly have <limits.h>) have 64+-bit integral types. */
52
53# ifndef UINT_MAX
54# define UINT_MAX UINT_MAX_32_BITS
55# endif
56
57# if UINT_MAX == UINT_MAX_32_BITS
58 typedef unsigned int md5_uint32;
59# else
60# if USHRT_MAX == UINT_MAX_32_BITS
61 typedef unsigned short md5_uint32;
62# else
63# if ULONG_MAX == UINT_MAX_32_BITS
64 typedef unsigned long md5_uint32;
65# else
66 /* The following line is intended to evoke an error.
67 Using #error is not portable enough. */
68 "Cannot determine unsigned 32-bit data type."
69# endif
70# endif
71# endif
72#endif
73
74
75#if HAVE_ATTRIBUTE_ALIGNED
76# define ATTRIBUTE_ALIGNED(N) __attribute__ ((__aligned__ (N)))
77#else
78# define ATTRIBUTE_ALIGNED(N)
79#endif
80
81/* Structure to save state of computation between the single steps. */
82struct md5_ctx
83{
84 md5_uint32 A;
85 md5_uint32 B;
86 md5_uint32 C;
87 md5_uint32 D;
88
89 md5_uint32 total[2];
90 md5_uint32 buflen;
91 char buffer[128] ATTRIBUTE_ALIGNED (__alignof__ (md5_uint32));
92};
93
94/*
95 * The following three functions are build up the low level used in
96 * the functions `md5_stream' and `md5_buffer'.
97 */
98
99/* Initialize structure containing state of computation.
100 (RFC 1321, 3.3: Step 3) */
101extern void md5_init_ctx (struct md5_ctx *ctx);
102
103/* Starting with the result of former calls of this function (or the
104 initialization function update the context for the next LEN bytes
105 starting at BUFFER.
106 It is necessary that LEN is a multiple of 64!!! */
107extern void md5_process_block (const void *buffer, size_t len,
108 struct md5_ctx *ctx);
109
110/* Starting with the result of former calls of this function (or the
111 initialization function update the context for the next LEN bytes
112 starting at BUFFER.
113 It is NOT required that LEN is a multiple of 64. */
114extern void md5_process_bytes (const void *buffer, size_t len,
115 struct md5_ctx *ctx);
116
117/* Process the remaining bytes in the buffer and put result from CTX
118 in first 16 bytes following RESBUF. The result is always in little
119 endian byte order, so that a byte-wise output yields to the wanted
120 ASCII representation of the message digest.
121
122 IMPORTANT: On some systems it is required that RESBUF is correctly
123 aligned for a 32 bits value. */
124extern void *md5_finish_ctx (struct md5_ctx *ctx, void *resbuf);
125
126
127/* Put result from CTX in first 16 bytes following RESBUF. The result is
128 always in little endian byte order, so that a byte-wise output yields
129 to the wanted ASCII representation of the message digest.
130
131 IMPORTANT: On some systems it is required that RESBUF is correctly
132 aligned for a 32 bits value. */
133extern void *md5_read_ctx (const struct md5_ctx *ctx, void *resbuf);
134
135
136/* Compute MD5 message digest for bytes read from STREAM. The
137 resulting message digest number will be written into the 16 bytes
138 beginning at RESBLOCK. */
139extern int md5_stream (FILE *stream, void *resblock);
140
141/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
142 result is always in little endian byte order, so that a byte-wise
143 output yields to the wanted ASCII representation of the message
144 digest. */
145extern void *md5_buffer (const char *buffer, size_t len,
146 void *resblock);
147
148#endif /* md5.h */