From d7576e674ddb8a5bd513ae1350c04e4513f1727c Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:50:38 +0200 Subject: [PATCH 001/171] alsa-lib: - update to alsa-lib-1.0.23 --- packages/audio/alsa-lib/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/audio/alsa-lib/url b/packages/audio/alsa-lib/url index 3b7894602c..413aeddb14 100644 --- a/packages/audio/alsa-lib/url +++ b/packages/audio/alsa-lib/url @@ -1 +1 @@ -ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.22.tar.bz2 +ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.23.tar.bz2 From 721718fa2315a0542b7d191187c82c8f1a1d37bb Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:51:05 +0200 Subject: [PATCH 002/171] alsa-utils: - update to alsa-utils-1.0.23 --- packages/audio/alsa-utils/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/audio/alsa-utils/url b/packages/audio/alsa-utils/url index 10adebe80c..e4ca726338 100644 --- a/packages/audio/alsa-utils/url +++ b/packages/audio/alsa-utils/url @@ -1 +1 @@ -ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.22.tar.bz2 +ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.23.tar.bz2 From 3072c4dfa38058a59d3507299c7de29c4981dae7 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:51:27 +0200 Subject: [PATCH 003/171] libmodplug: - update to libmodplug-0.8.8 --- packages/audio/libmodplug/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/audio/libmodplug/url b/packages/audio/libmodplug/url index b9c22de7b9..b4eb7d163d 100644 --- a/packages/audio/libmodplug/url +++ b/packages/audio/libmodplug/url @@ -1 +1 @@ -http://ignum.dl.sourceforge.net/project/modplug-xmms/libmodplug/0.8.7/libmodplug-0.8.7.tar.gz \ No newline at end of file +http://ignum.dl.sourceforge.net/project/modplug-xmms/libmodplug/0.8.8/libmodplug-0.8.8.tar.gz \ No newline at end of file From 71c2fc5b32970eb50d58972763cee860ad3ea9a5 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:51:47 +0200 Subject: [PATCH 004/171] libogg: - update to libogg-1.2.0 --- packages/audio/libogg/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/audio/libogg/url b/packages/audio/libogg/url index 60bea1878d..b625a96597 100644 --- a/packages/audio/libogg/url +++ b/packages/audio/libogg/url @@ -1 +1 @@ -http://downloads.xiph.org/releases/ogg/libogg-1.1.4.tar.gz +http://downloads.xiph.org/releases/ogg/libogg-1.2.0.tar.gz From 97a2552ac9127e63333828311dafb446d860988c Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:52:03 +0200 Subject: [PATCH 005/171] libvorbis: - update to libvorbis-1.3.1 --- packages/audio/libvorbis/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/audio/libvorbis/url b/packages/audio/libvorbis/url index 8442ab892e..2318cd28d9 100644 --- a/packages/audio/libvorbis/url +++ b/packages/audio/libvorbis/url @@ -1 +1 @@ -http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.3.tar.bz2 +http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.1.tar.bz2 From 79bfc9771cba907d07d4a1e5cbcb66a029935df5 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:52:21 +0200 Subject: [PATCH 006/171] sqlite: - update to sqlite-amalgamation-3.6.23.1 --- packages/databases/sqlite/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/databases/sqlite/url b/packages/databases/sqlite/url index 9788217b8d..f9c15a15e8 100644 --- a/packages/databases/sqlite/url +++ b/packages/databases/sqlite/url @@ -1 +1 @@ -http://www.hwaci.com/sw/sqlite/sqlite-amalgamation-3.6.22.tar.gz +http://www.hwaci.com/sw/sqlite/sqlite-amalgamation-3.6.23.1.tar.gz From 8510ecd7359dc8c4c068e2e4141a0ff2bb81f865 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:52:47 +0200 Subject: [PATCH 007/171] boost: - update to boost_1_42_0 --- packages/devel/boost/patches/patch.txt | 1 - .../boost/patches/pthread-prefer-posix.diff | 20 ------------------- packages/devel/boost/url | 2 +- 3 files changed, 1 insertion(+), 22 deletions(-) delete mode 100644 packages/devel/boost/patches/patch.txt delete mode 100644 packages/devel/boost/patches/pthread-prefer-posix.diff diff --git a/packages/devel/boost/patches/patch.txt b/packages/devel/boost/patches/patch.txt deleted file mode 100644 index 012bfc7d4b..0000000000 --- a/packages/devel/boost/patches/patch.txt +++ /dev/null @@ -1 +0,0 @@ -https://svn.boost.org/trac/boost/ticket/2053 diff --git a/packages/devel/boost/patches/pthread-prefer-posix.diff b/packages/devel/boost/patches/pthread-prefer-posix.diff deleted file mode 100644 index 901adb4ba3..0000000000 --- a/packages/devel/boost/patches/pthread-prefer-posix.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- a/libs/thread/src/pthread/thread.cpp -+++ b/libs/thread/src/pthread/thread.cpp -@@ -388,8 +388,6 @@ namespace boost - { - #if defined(PTW32_VERSION) || defined(__hpux) - return pthread_num_processors_np(); --#elif defined(__linux__) -- return get_nprocs(); - #elif defined(__APPLE__) || defined(__FreeBSD__) - int count; - size_t size=sizeof(count); -@@ -397,6 +395,8 @@ namespace boost - #elif defined(BOOST_HAS_UNISTD_H) && defined(_SC_NPROCESSORS_ONLN) - int const count=sysconf(_SC_NPROCESSORS_ONLN); - return (count>0)?count:0; -+#elif defined(__linux__) -+ return get_nprocs(); - #else - return 0; - #endif diff --git a/packages/devel/boost/url b/packages/devel/boost/url index 3f41ed1d2c..651a556fa7 100644 --- a/packages/devel/boost/url +++ b/packages/devel/boost/url @@ -1 +1 @@ -http://switch.dl.sourceforge.net/sourceforge/boost/boost_1_40_0.tar.bz2 \ No newline at end of file +http://downloads.sourceforge.net/project/boost/boost/1.42.0/boost_1_42_0.tar.bz2 \ No newline at end of file From bc483c2c04c8af97d02e4c8c78eacbf8956b1093 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:53:08 +0200 Subject: [PATCH 008/171] glib: - update to glib-2.24.0 --- packages/devel/glib/patches/glib-i386-atomic.diff | 15 --------------- packages/devel/glib/url | 2 +- 2 files changed, 1 insertion(+), 16 deletions(-) delete mode 100644 packages/devel/glib/patches/glib-i386-atomic.diff diff --git a/packages/devel/glib/patches/glib-i386-atomic.diff b/packages/devel/glib/patches/glib-i386-atomic.diff deleted file mode 100644 index 01495c0070..0000000000 --- a/packages/devel/glib/patches/glib-i386-atomic.diff +++ /dev/null @@ -1,15 +0,0 @@ -diff -up glib-2.16.6/configure.atomic glib-2.16.6/configure ---- glib-2.16.6/configure.atomic 2008-10-27 18:24:20.000000000 -0400 -+++ glib-2.16.6/configure 2008-10-27 18:24:31.000000000 -0400 -@@ -42742,11 +42742,6 @@ $as_echo_n "checking whether to use asse - - if test x"$GCC" = xyes; then - case $host_cpu in -- i386) -- { $as_echo "$as_me:$LINENO: result: none" >&5 --$as_echo "none" >&6; } -- glib_memory_barrier_needed=no -- ;; - i?86) - { $as_echo "$as_me:$LINENO: result: i486" >&5 - $as_echo "i486" >&6; } diff --git a/packages/devel/glib/url b/packages/devel/glib/url index 1313421652..09f2a9f386 100644 --- a/packages/devel/glib/url +++ b/packages/devel/glib/url @@ -1 +1 @@ -http://ftp.gnome.org/pub/GNOME/sources/glib/2.23/glib-2.23.1.tar.bz2 +http://ftp.gnome.org/pub/GNOME/sources/glib/2.24/glib-2.24.0.tar.bz2 From 1394964684a14df09b83e7922dc83fcedefd63b9 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:53:26 +0200 Subject: [PATCH 009/171] pcre: - update to pcre-8.02 --- packages/devel/pcre/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/devel/pcre/url b/packages/devel/pcre/url index 81c0b3ad0f..9783af7d77 100644 --- a/packages/devel/pcre/url +++ b/packages/devel/pcre/url @@ -1 +1 @@ -ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.9.tar.bz2 \ No newline at end of file +http://downloads.sourceforge.net/project/pcre/pcre/8.02/pcre-8.02.tar.bz2 From 1c0271ce4e277148530e8d13b01fc1072e3aed6f Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:53:47 +0200 Subject: [PATCH 010/171] iwlwifi-6000-ucode: - update to iwlwifi-6000-ucode-9.193.4.1 --- packages/firmware/iwlwifi-6000-ucode/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/firmware/iwlwifi-6000-ucode/url b/packages/firmware/iwlwifi-6000-ucode/url index f5ae87a182..793540c966 100644 --- a/packages/firmware/iwlwifi-6000-ucode/url +++ b/packages/firmware/iwlwifi-6000-ucode/url @@ -1 +1 @@ -http://www.intellinuxwireless.org/iwlwifi/downloads/iwlwifi-6000-ucode-9.176.4.1.tgz \ No newline at end of file +http://www.intellinuxwireless.org/iwlwifi/downloads/iwlwifi-6000-ucode-9.193.4.1.tgz \ No newline at end of file From aea6f6b2446b93d051d6d9c92fb4fe543e24b9d4 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:54:04 +0200 Subject: [PATCH 011/171] glew: - update to glew-1.5.3 --- packages/graphics/glew/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/graphics/glew/url b/packages/graphics/glew/url index 7ae0ffda72..9419d27204 100644 --- a/packages/graphics/glew/url +++ b/packages/graphics/glew/url @@ -1 +1 @@ -http://downloads.sourceforge.net/project/glew/glew/1.5.2/glew-1.5.2.tgz \ No newline at end of file +http://downloads.sourceforge.net/project/glew/glew/1.5.3/glew-1.5.3.tgz \ No newline at end of file From 1cad8671190b4ad5cc82437d05df69f17d953fe0 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:54:21 +0200 Subject: [PATCH 012/171] jpeg: - update to jpegsrc.v8a --- packages/graphics/jpeg/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/graphics/jpeg/url b/packages/graphics/jpeg/url index 8f2432bd08..888f9f2a7a 100644 --- a/packages/graphics/jpeg/url +++ b/packages/graphics/jpeg/url @@ -1 +1 @@ -http://www.ijg.org/files/jpegsrc.v7.tar.gz \ No newline at end of file +http://www.ijg.org/files/jpegsrc.v8a.tar.gz \ No newline at end of file From e5d6015e436701a7698416923fc714e2ce5a6677 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:54:37 +0200 Subject: [PATCH 013/171] libpng: - update to libpng-1.4.1 --- ...1.4.0-apng.diff => libpng-1.4.1-apng.diff} | 222 +++++++++--------- packages/graphics/libpng/url | 2 +- 2 files changed, 110 insertions(+), 114 deletions(-) rename packages/graphics/libpng/patches/{libpng-1.4.0-apng.diff => libpng-1.4.1-apng.diff} (92%) diff --git a/packages/graphics/libpng/patches/libpng-1.4.0-apng.diff b/packages/graphics/libpng/patches/libpng-1.4.1-apng.diff similarity index 92% rename from packages/graphics/libpng/patches/libpng-1.4.0-apng.diff rename to packages/graphics/libpng/patches/libpng-1.4.1-apng.diff index 75f65dd14d..3ef2eedbbb 100644 --- a/packages/graphics/libpng/patches/libpng-1.4.0-apng.diff +++ b/packages/graphics/libpng/patches/libpng-1.4.1-apng.diff @@ -1,7 +1,7 @@ -diff -Naur libpng-1.4.0/pngconf.h libpng-1.4.0.patch/pngconf.h ---- libpng-1.4.0/pngconf.h 2010-01-03 06:05:36.000000000 +0100 -+++ libpng-1.4.0.patch/pngconf.h 2010-02-07 22:41:01.976857238 +0100 -@@ -845,6 +845,10 @@ +diff -Naur libpng-1.4.1/pngconf.h libpng-1.4.1.patch/pngconf.h +--- libpng-1.4.1/pngconf.h 2010-02-25 12:38:29.000000000 +0100 ++++ libpng-1.4.1.patch/pngconf.h 2010-04-16 21:09:43.641352386 +0200 +@@ -869,6 +869,10 @@ # define PNG_READ_tRNS_SUPPORTED # define PNG_tRNS_SUPPORTED #endif @@ -12,7 +12,7 @@ diff -Naur libpng-1.4.0/pngconf.h libpng-1.4.0.patch/pngconf.h #ifndef PNG_NO_READ_zTXt # define PNG_READ_zTXt_SUPPORTED # define PNG_zTXt_SUPPORTED -@@ -1002,6 +1006,14 @@ +@@ -1028,6 +1032,14 @@ # define PNG_TEXT_SUPPORTED # endif #endif @@ -27,9 +27,9 @@ diff -Naur libpng-1.4.0/pngconf.h libpng-1.4.0.patch/pngconf.h #ifdef PNG_WRITE_tIME_SUPPORTED # ifndef PNG_NO_CONVERT_tIME -diff -Naur libpng-1.4.0/pngget.c libpng-1.4.0.patch/pngget.c ---- libpng-1.4.0/pngget.c 2010-01-03 06:05:36.000000000 +0100 -+++ libpng-1.4.0.patch/pngget.c 2010-02-07 22:41:01.955858172 +0100 +diff -Naur libpng-1.4.1/pngget.c libpng-1.4.1.patch/pngget.c +--- libpng-1.4.1/pngget.c 2010-02-25 12:38:29.000000000 +0100 ++++ libpng-1.4.1.patch/pngget.c 2010-04-16 21:09:34.942347204 +0200 @@ -842,6 +842,167 @@ } #endif @@ -198,10 +198,10 @@ diff -Naur libpng-1.4.0/pngget.c libpng-1.4.0.patch/pngget.c #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED png_uint_32 PNGAPI png_get_unknown_chunks(png_structp png_ptr, png_infop info_ptr, -diff -Naur libpng-1.4.0/png.h libpng-1.4.0.patch/png.h ---- libpng-1.4.0/png.h 2010-01-03 06:05:35.000000000 +0100 -+++ libpng-1.4.0.patch/png.h 2010-02-07 22:41:01.969858760 +0100 -@@ -861,6 +861,19 @@ +diff -Naur libpng-1.4.1/png.h libpng-1.4.1.patch/png.h +--- libpng-1.4.1/png.h 2010-02-25 12:38:29.000000000 +0100 ++++ libpng-1.4.1.patch/png.h 2010-04-16 21:09:36.985444853 +0200 +@@ -888,6 +888,19 @@ png_fixed_point int_y_blue PNG_DEPSTRUCT; #endif @@ -221,7 +221,7 @@ diff -Naur libpng-1.4.0/png.h libpng-1.4.0.patch/png.h } png_info; typedef png_info FAR * png_infop; -@@ -958,6 +971,10 @@ +@@ -985,6 +998,10 @@ #define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */ #define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */ #define PNG_INFO_IDAT 0x8000L /* ESR, 1.0.6 */ @@ -232,7 +232,7 @@ diff -Naur libpng-1.4.0/png.h libpng-1.4.0.patch/png.h /* This is used for the transformation routines, as some of them * change these values for the row. It also should enable using -@@ -998,6 +1015,10 @@ +@@ -1026,6 +1043,10 @@ typedef void (PNGAPI *png_progressive_end_ptr) PNGARG((png_structp, png_infop)); typedef void (PNGAPI *png_progressive_row_ptr) PNGARG((png_structp, png_bytep, png_uint_32, int)); @@ -243,7 +243,7 @@ diff -Naur libpng-1.4.0/png.h libpng-1.4.0.patch/png.h #endif #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ -@@ -1320,6 +1341,39 @@ +@@ -1445,6 +1466,36 @@ png_uint_32 user_chunk_cache_max PNG_DEPSTRUCT; #endif @@ -267,9 +267,6 @@ diff -Naur libpng-1.4.0/png.h libpng-1.4.0.patch/png.h + png_uint_32 num_frames_written; +#endif + -+/* For png_struct.apng_flags: */ -+#define PNG_FIRST_FRAME_HIDDEN 0x0001 -+ +/* dispose_op flags from inside fcTL */ +#define PNG_DISPOSE_OP_NONE 0x00 +#define PNG_DISPOSE_OP_BACKGROUND 0x01 @@ -283,7 +280,7 @@ diff -Naur libpng-1.4.0/png.h libpng-1.4.0.patch/png.h /* New member added in libpng-1.0.25 and 1.2.17 */ #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED /* Storage for unknown chunk that the library doesn't recognize. */ -@@ -1648,6 +1702,18 @@ +@@ -1773,6 +1824,18 @@ extern PNG_EXPORT(void,png_write_image) PNGARG((png_structp png_ptr, png_bytepp image)); @@ -302,7 +299,7 @@ diff -Naur libpng-1.4.0/png.h libpng-1.4.0.patch/png.h /* Write the end of the PNG file. */ extern PNG_EXPORT(void,png_write_end) PNGARG((png_structp png_ptr, png_infop info_ptr)); -@@ -1891,6 +1957,11 @@ +@@ -2017,6 +2080,11 @@ png_voidp progressive_ptr, png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn)); @@ -314,7 +311,7 @@ diff -Naur libpng-1.4.0/png.h libpng-1.4.0.patch/png.h /* Returns the user pointer associated with the push read functions */ extern PNG_EXPORT(png_voidp,png_get_progressive_ptr) -@@ -2317,6 +2388,59 @@ +@@ -2443,6 +2511,53 @@ #endif #endif /* PNG_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */ @@ -338,12 +335,6 @@ diff -Naur libpng-1.4.0/png.h libpng-1.4.0.patch/png.h + png_uint_32 height, png_uint_32 x_offset, png_uint_32 y_offset, + png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op, + png_byte blend_op)); -+extern PNG_EXPORT(void,png_ensure_fcTL_is_valid) -+ PNGARG((png_structp png_ptr, -+ png_uint_32 width, png_uint_32 height, -+ png_uint_32 x_offset, png_uint_32 y_offset, -+ png_uint_16 delay_num, png_uint_16 delay_den, -+ png_byte dispose_op, png_byte blend_op)); +extern PNG_EXPORT(png_uint_32,png_get_next_frame_width) + PNGARG((png_structp png_ptr, png_infop info_ptr)); +extern PNG_EXPORT(png_uint_32,png_get_next_frame_height) @@ -374,9 +365,9 @@ diff -Naur libpng-1.4.0/png.h libpng-1.4.0.patch/png.h #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED /* Provide a list of chunks and how they are to be handled, if the built-in handling or default unknown chunk handling is not desired. Any chunks not -diff -Naur libpng-1.4.0/pngpread.c libpng-1.4.0.patch/pngpread.c ---- libpng-1.4.0/pngpread.c 2010-01-03 06:05:36.000000000 +0100 -+++ libpng-1.4.0.patch/pngpread.c 2010-02-07 22:41:01.978856784 +0100 +diff -Naur libpng-1.4.1/pngpread.c libpng-1.4.1.patch/pngpread.c +--- libpng-1.4.1/pngpread.c 2010-02-25 12:38:29.000000000 +0100 ++++ libpng-1.4.1.patch/pngpread.c 2010-04-16 21:09:45.794352317 +0200 @@ -205,6 +205,11 @@ #ifdef PNG_READ_zTXt_SUPPORTED PNG_zTXt; @@ -503,7 +494,7 @@ diff -Naur libpng-1.4.0/pngpread.c libpng-1.4.0.patch/pngpread.c png_ptr->idat_size = png_ptr->push_length; png_ptr->mode |= PNG_HAVE_IDAT; png_ptr->process_mode = PNG_READ_IDAT_MODE; -@@ -555,6 +660,38 @@ +@@ -557,6 +662,38 @@ } #endif @@ -542,7 +533,7 @@ diff -Naur libpng-1.4.0/pngpread.c libpng-1.4.0.patch/pngpread.c else { if (png_ptr->push_length + 4 > png_ptr->buffer_size) -@@ -729,11 +866,15 @@ +@@ -736,11 +873,15 @@ png_push_read_IDAT(png_structp png_ptr) { PNG_IDAT; @@ -559,7 +550,7 @@ diff -Naur libpng-1.4.0/pngpread.c libpng-1.4.0.patch/pngpread.c { png_push_save_buffer(png_ptr); return; -@@ -745,15 +886,62 @@ +@@ -752,15 +893,62 @@ png_crc_read(png_ptr, png_ptr->chunk_name, 4); png_ptr->mode |= PNG_HAVE_CHUNK_HEADER; @@ -623,7 +614,7 @@ diff -Naur libpng-1.4.0/pngpread.c libpng-1.4.0.patch/pngpread.c } if (png_ptr->idat_size && png_ptr->save_buffer_size) { -@@ -1710,6 +1898,17 @@ +@@ -1716,6 +1904,17 @@ png_set_read_fn(png_ptr, progressive_ptr, png_push_fill_buffer); } @@ -641,9 +632,9 @@ diff -Naur libpng-1.4.0/pngpread.c libpng-1.4.0.patch/pngpread.c png_voidp PNGAPI png_get_progressive_ptr(png_structp png_ptr) { -diff -Naur libpng-1.4.0/pngpriv.h libpng-1.4.0.patch/pngpriv.h ---- libpng-1.4.0/pngpriv.h 2010-01-03 06:05:36.000000000 +0100 -+++ libpng-1.4.0.patch/pngpriv.h 2010-02-07 22:41:01.971859004 +0100 +diff -Naur libpng-1.4.1/pngpriv.h libpng-1.4.1.patch/pngpriv.h +--- libpng-1.4.1/pngpriv.h 2010-02-25 12:38:29.000000000 +0100 ++++ libpng-1.4.1.patch/pngpriv.h 2010-04-16 21:09:39.167350934 +0200 @@ -98,6 +98,10 @@ #define PNG_BACKGROUND_IS_GRAY 0x800 #define PNG_HAVE_PNG_SIGNATURE 0x1000 @@ -655,7 +646,7 @@ diff -Naur libpng-1.4.0/pngpriv.h libpng-1.4.0.patch/pngpriv.h /* Flags for the transformations the PNG library does on the image data */ #define PNG_BGR 0x0001 -@@ -231,6 +235,11 @@ +@@ -231,6 +235,14 @@ #define PNG_tIME PNG_CONST png_byte png_tIME[5] = {116, 73, 77, 69, '\0'} #define PNG_tRNS PNG_CONST png_byte png_tRNS[5] = {116, 82, 78, 83, '\0'} #define PNG_zTXt PNG_CONST png_byte png_zTXt[5] = {122, 84, 88, 116, '\0'} @@ -663,11 +654,14 @@ diff -Naur libpng-1.4.0/pngpriv.h libpng-1.4.0.patch/pngpriv.h +#define PNG_acTL PNG_CONST png_byte png_acTL[5] = { 97, 99, 84, 76, '\0'} +#define PNG_fcTL PNG_CONST png_byte png_fcTL[5] = {102, 99, 84, 76, '\0'} +#define PNG_fdAT PNG_CONST png_byte png_fdAT[5] = {102, 100, 65, 84, '\0'} ++ ++/* For png_struct.apng_flags: */ ++#define PNG_FIRST_FRAME_HIDDEN 0x0001 +#endif /* Inhibit C++ name-mangling for libpng functions but not for system calls. */ -@@ -468,6 +477,17 @@ +@@ -468,6 +480,17 @@ #endif #endif @@ -685,7 +679,7 @@ diff -Naur libpng-1.4.0/pngpriv.h libpng-1.4.0.patch/pngpriv.h /* Called when finished processing a row of data */ PNG_EXTERN void png_write_finish_row PNGARG((png_structp png_ptr)); -@@ -520,6 +540,20 @@ +@@ -520,6 +543,20 @@ PNG_EXTERN void png_read_transform_info PNGARG((png_structp png_ptr, png_infop info_ptr)); @@ -706,7 +700,7 @@ diff -Naur libpng-1.4.0/pngpriv.h libpng-1.4.0.patch/pngpriv.h /* These are the functions that do the transformations */ #ifdef PNG_READ_FILLER_SUPPORTED PNG_EXTERN void png_do_read_filler PNGARG((png_row_infop row_info, -@@ -735,6 +769,18 @@ +@@ -736,6 +773,25 @@ png_uint_32 length)); #endif @@ -721,14 +715,21 @@ diff -Naur libpng-1.4.0/pngpriv.h libpng-1.4.0.patch/pngpriv.h +PNG_EXTERN void png_ensure_sequence_number PNGARG((png_structp png_ptr, + png_uint_32 length)); +#endif ++#ifdef PNG_APNG_SUPPORTED ++PNG_EXTERN void png_ensure_fcTL_is_valid PNGARG((png_structp png_ptr, ++ png_uint_32 width, png_uint_32 height, ++ png_uint_32 x_offset, png_uint_32 y_offset, ++ png_uint_16 delay_num, png_uint_16 delay_den, ++ png_byte dispose_op, png_byte blend_op)); ++#endif + PNG_EXTERN void png_handle_unknown PNGARG((png_structp png_ptr, png_infop info_ptr, png_uint_32 length)); -diff -Naur libpng-1.4.0/pngread.c libpng-1.4.0.patch/pngread.c ---- libpng-1.4.0/pngread.c 2010-01-03 06:05:36.000000000 +0100 -+++ libpng-1.4.0.patch/pngread.c 2010-02-07 22:41:01.522983852 +0100 -@@ -292,6 +292,11 @@ +diff -Naur libpng-1.4.1/pngread.c libpng-1.4.1.patch/pngread.c +--- libpng-1.4.1/pngread.c 2010-02-25 12:38:29.000000000 +0100 ++++ libpng-1.4.1.patch/pngread.c 2010-04-16 21:09:26.430319940 +0200 +@@ -300,6 +300,11 @@ #ifdef PNG_READ_zTXt_SUPPORTED PNG_zTXt; #endif @@ -740,7 +741,7 @@ diff -Naur libpng-1.4.0/pngread.c libpng-1.4.0.patch/pngread.c png_uint_32 length = png_read_chunk_header(png_ptr); PNG_CONST png_bytep chunk_name = png_ptr->chunk_name; -@@ -335,6 +340,9 @@ +@@ -343,6 +348,9 @@ !(png_ptr->mode & PNG_HAVE_PLTE)) png_error(png_ptr, "Missing PLTE before IDAT"); @@ -750,7 +751,7 @@ diff -Naur libpng-1.4.0/pngread.c libpng-1.4.0.patch/pngread.c png_ptr->idat_size = length; png_ptr->mode |= PNG_HAVE_IDAT; break; -@@ -407,12 +415,95 @@ +@@ -415,12 +423,95 @@ else if (!png_memcmp(chunk_name, png_iTXt, 4)) png_handle_iTXt(png_ptr, info_ptr, length); #endif @@ -846,7 +847,7 @@ diff -Naur libpng-1.4.0/pngread.c libpng-1.4.0.patch/pngread.c /* Optional call to update the users info_ptr structure */ void PNGAPI png_read_update_info(png_structp png_ptr, png_infop info_ptr) -@@ -453,6 +544,10 @@ +@@ -461,6 +552,10 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row) { PNG_IDAT; @@ -857,7 +858,7 @@ diff -Naur libpng-1.4.0/pngread.c libpng-1.4.0.patch/pngread.c PNG_CONST int png_pass_dsp_mask[7] = {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff}; PNG_CONST int png_pass_mask[7] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff}; -@@ -585,13 +680,39 @@ +@@ -596,13 +691,39 @@ { if (!(png_ptr->zstream.avail_in)) { @@ -899,7 +900,7 @@ diff -Naur libpng-1.4.0/pngread.c libpng-1.4.0.patch/pngread.c } png_ptr->zstream.avail_in = (uInt)png_ptr->zbuf_size; png_ptr->zstream.next_in = png_ptr->zbuf; -@@ -609,6 +730,9 @@ +@@ -620,6 +741,9 @@ png_benign_error(png_ptr, "Extra compressed data"); png_ptr->mode |= PNG_AFTER_IDAT; png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED; @@ -909,7 +910,7 @@ diff -Naur libpng-1.4.0/pngread.c libpng-1.4.0.patch/pngread.c break; } if (ret != Z_OK) -@@ -864,6 +988,11 @@ +@@ -875,6 +999,11 @@ #ifdef PNG_READ_zTXt_SUPPORTED PNG_zTXt; #endif @@ -921,7 +922,7 @@ diff -Naur libpng-1.4.0/pngread.c libpng-1.4.0.patch/pngread.c png_uint_32 length = png_read_chunk_header(png_ptr); PNG_CONST png_bytep chunk_name = png_ptr->chunk_name; -@@ -963,6 +1092,14 @@ +@@ -974,6 +1103,14 @@ else if (!png_memcmp(chunk_name, png_iTXt, 4)) png_handle_iTXt(png_ptr, info_ptr, length); #endif @@ -936,10 +937,10 @@ diff -Naur libpng-1.4.0/pngread.c libpng-1.4.0.patch/pngread.c else png_handle_unknown(png_ptr, info_ptr, length); } while (!(png_ptr->mode & PNG_HAVE_IEND)); -diff -Naur libpng-1.4.0/pngrtran.c libpng-1.4.0.patch/pngrtran.c ---- libpng-1.4.0/pngrtran.c 2010-01-03 06:05:36.000000000 +0100 -+++ libpng-1.4.0.patch/pngrtran.c 2010-02-07 22:41:01.997856654 +0100 -@@ -1320,7 +1320,7 @@ +diff -Naur libpng-1.4.1/pngrtran.c libpng-1.4.1.patch/pngrtran.c +--- libpng-1.4.1/pngrtran.c 2010-02-25 12:38:29.000000000 +0100 ++++ libpng-1.4.1.patch/pngrtran.c 2010-04-16 21:09:53.311444698 +0200 +@@ -1325,7 +1325,7 @@ * pixels. This check added to libpng-1.2.19 */ #if (PNG_WARN_UNINITIALIZED_ROW==1) @@ -948,10 +949,10 @@ diff -Naur libpng-1.4.0/pngrtran.c libpng-1.4.0.patch/pngrtran.c #else png_warning(png_ptr, "Uninitialized row"); #endif -diff -Naur libpng-1.4.0/pngrutil.c libpng-1.4.0.patch/pngrutil.c ---- libpng-1.4.0/pngrutil.c 2010-01-03 06:05:36.000000000 +0100 -+++ libpng-1.4.0.patch/pngrutil.c 2010-02-07 22:41:01.986856711 +0100 -@@ -423,6 +423,11 @@ +diff -Naur libpng-1.4.1/pngrutil.c libpng-1.4.1.patch/pngrutil.c +--- libpng-1.4.1/pngrutil.c 2010-02-25 12:38:29.000000000 +0100 ++++ libpng-1.4.1.patch/pngrutil.c 2010-04-16 21:09:49.604444890 +0200 +@@ -434,6 +434,11 @@ filter_type = buf[11]; interlace_type = buf[12]; @@ -963,7 +964,7 @@ diff -Naur libpng-1.4.0/pngrutil.c libpng-1.4.0.patch/pngrutil.c /* Set internal variables */ png_ptr->width = width; png_ptr->height = height; -@@ -2294,6 +2299,168 @@ +@@ -2318,6 +2323,172 @@ } #endif @@ -1025,9 +1026,11 @@ diff -Naur libpng-1.4.0/pngrutil.c libpng-1.4.0.patch/pngrutil.c + png_uint_16 delay_den; + png_byte dispose_op; + png_byte blend_op; -+ ++ + png_debug(1, "in png_handle_fcTL"); -+ ++ ++ png_ensure_sequence_number(png_ptr, length); ++ + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + { + png_error(png_ptr, "Missing IHDR before fcTL"); @@ -1038,27 +1041,25 @@ diff -Naur libpng-1.4.0/pngrutil.c libpng-1.4.0.patch/pngrutil.c + * but correct. PNG_HAVE_IDAT is unset before the frame head is read + * i can't think of a better message */ + png_warning(png_ptr, "Invalid fcTL after IDAT skipped"); -+ png_crc_finish(png_ptr, length); ++ png_crc_finish(png_ptr, length-4); + return; + } + else if (png_ptr->mode & PNG_HAVE_fcTL) + { + png_warning(png_ptr, "Duplicate fcTL within one frame skipped"); -+ png_crc_finish(png_ptr, length); ++ png_crc_finish(png_ptr, length-4); + return; + } + else if (length != 26) + { + png_warning(png_ptr, "fcTL with invalid length skipped"); -+ png_crc_finish(png_ptr, length); ++ png_crc_finish(png_ptr, length-4); + return; + } -+ -+ png_ensure_sequence_number(png_ptr, length); -+ ++ + png_crc_read(png_ptr, data, 22); + png_crc_finish(png_ptr, 0); -+ ++ + width = png_get_uint_31(png_ptr, data); + height = png_get_uint_31(png_ptr, data + 4); + x_offset = png_get_uint_31(png_ptr, data + 8); @@ -1067,21 +1068,25 @@ diff -Naur libpng-1.4.0/pngrutil.c libpng-1.4.0.patch/pngrutil.c + delay_den = png_get_uint_16(data + 18); + dispose_op = data[20]; + blend_op = data[21]; -+ ++ + if (png_ptr->num_frames_read == 0 && (x_offset != 0 || y_offset != 0)) + png_error(png_ptr, "fcTL for the first frame must have zero offset"); -+ if (png_ptr->num_frames_read == 0 && -+ (width != info_ptr->width || height != info_ptr->height)) -+ png_error(png_ptr, "size in first frame's fcTL must match " -+ "the size in IHDR"); -+ -+ /* the set function will do more error checking */ -+ png_set_next_frame_fcTL(png_ptr, info_ptr, width, height, -+ x_offset, y_offset, delay_num, delay_den, -+ dispose_op, blend_op); -+ -+ png_read_reinit(png_ptr, info_ptr); -+ ++ ++ if (info_ptr != NULL) ++ { ++ if (png_ptr->num_frames_read == 0 && ++ (width != info_ptr->width || height != info_ptr->height)) ++ png_error(png_ptr, "size in first frame's fcTL must match " ++ "the size in IHDR"); ++ ++ /* the set function will do more error checking */ ++ png_set_next_frame_fcTL(png_ptr, info_ptr, width, height, ++ x_offset, y_offset, delay_num, delay_den, ++ dispose_op, blend_op); ++ ++ png_read_reinit(png_ptr, info_ptr); ++ } ++ + png_ptr->mode |= PNG_HAVE_fcTL; +} + @@ -1132,7 +1137,7 @@ diff -Naur libpng-1.4.0/pngrutil.c libpng-1.4.0.patch/pngrutil.c /* This function is called when we haven't found a handler for a chunk. If there isn't a problem with the chunk itself (ie bad chunk name, CRC, or a critical chunk), the chunk is silently ignored -@@ -3333,4 +3500,82 @@ +@@ -3353,4 +3524,73 @@ png_ptr->flags |= PNG_FLAG_ROW_INIT; } @@ -1176,7 +1181,6 @@ diff -Naur libpng-1.4.0/pngrutil.c libpng-1.4.0.patch/pngrutil.c + + /* offset to next interlace block in the y direction */ + const int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2}; -+ png_uint_32 row_bytes; + + if (png_ptr->interlaced) + { @@ -1190,34 +1194,26 @@ diff -Naur libpng-1.4.0/pngrutil.c libpng-1.4.0.patch/pngrutil.c + png_pass_inc[png_ptr->pass] - 1 - + png_pass_start[png_ptr->pass]) / + png_pass_inc[png_ptr->pass]; -+ -+ row_bytes = PNG_ROWBYTES(png_ptr->pixel_depth,png_ptr->iwidth) + 1; -+ -+ png_ptr->irowbytes = (png_size_t)row_bytes; -+ if((png_uint_32)png_ptr->irowbytes != row_bytes) -+ png_error(png_ptr, "png_progressive_read_reset(): Rowbytes " -+ "overflow"); + } + else + { + png_ptr->num_rows = png_ptr->height; + png_ptr->iwidth = png_ptr->width; -+ png_ptr->irowbytes = png_ptr->rowbytes + 1; + } -+ + png_ptr->flags &= ~PNG_FLAG_ZLIB_FINISHED; + if (inflateReset(&(png_ptr->zstream)) != Z_OK) + png_error(png_ptr, "inflateReset failed"); + png_ptr->zstream.avail_in = 0; + png_ptr->zstream.next_in = 0; + png_ptr->zstream.next_out = png_ptr->row_buf; -+ png_ptr->zstream.avail_out = (uInt)png_ptr->irowbytes; ++ png_ptr->zstream.avail_out = (uInt)PNG_ROWBYTES(png_ptr->pixel_depth, ++ png_ptr->iwidth) + 1; +} +#endif /* PNG_READ_APNG_SUPPORTED */ #endif /* PNG_READ_SUPPORTED */ -diff -Naur libpng-1.4.0/pngset.c libpng-1.4.0.patch/pngset.c ---- libpng-1.4.0/pngset.c 2010-01-03 06:05:36.000000000 +0100 -+++ libpng-1.4.0.patch/pngset.c 2010-02-07 22:41:01.979856906 +0100 +diff -Naur libpng-1.4.1/pngset.c libpng-1.4.1.patch/pngset.c +--- libpng-1.4.1/pngset.c 2010-02-25 12:38:29.000000000 +0100 ++++ libpng-1.4.1.patch/pngset.c 2010-04-16 21:09:47.875332919 +0200 @@ -260,6 +260,11 @@ info_ptr->rowbytes = 0; else @@ -1373,10 +1369,10 @@ diff -Naur libpng-1.4.0/pngset.c libpng-1.4.0.patch/pngset.c #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED void PNGAPI png_set_unknown_chunks(png_structp png_ptr, -diff -Naur libpng-1.4.0/pngwrite.c libpng-1.4.0.patch/pngwrite.c ---- libpng-1.4.0/pngwrite.c 2010-01-03 06:05:36.000000000 +0100 -+++ libpng-1.4.0.patch/pngwrite.c 2010-02-07 22:41:01.974858880 +0100 -@@ -56,6 +56,10 @@ +diff -Naur libpng-1.4.1/pngwrite.c libpng-1.4.1.patch/pngwrite.c +--- libpng-1.4.1/pngwrite.c 2010-02-25 12:38:30.000000000 +0100 ++++ libpng-1.4.1.patch/pngwrite.c 2010-04-16 21:09:40.967447171 +0200 +@@ -57,6 +57,10 @@ /* The rest of these check to see if the valid field has the appropriate * flag set, and if it does, writes the chunk. */ @@ -1387,7 +1383,7 @@ diff -Naur libpng-1.4.0/pngwrite.c libpng-1.4.0.patch/pngwrite.c #ifdef PNG_WRITE_gAMA_SUPPORTED if (info_ptr->valid & PNG_INFO_gAMA) { -@@ -318,6 +322,10 @@ +@@ -319,6 +323,10 @@ return; if (!(png_ptr->mode & PNG_HAVE_IDAT)) png_error(png_ptr, "No IDATs written into file"); @@ -1398,7 +1394,7 @@ diff -Naur libpng-1.4.0/pngwrite.c libpng-1.4.0.patch/pngwrite.c /* See if user wants us to write information chunks */ if (info_ptr != NULL) -@@ -1451,4 +1459,39 @@ +@@ -1454,4 +1462,39 @@ params = params; } #endif @@ -1438,10 +1434,10 @@ diff -Naur libpng-1.4.0/pngwrite.c libpng-1.4.0.patch/pngwrite.c +#endif /* PNG_WRITE_APNG_SUPPORTED */ + #endif /* PNG_WRITE_SUPPORTED */ -diff -Naur libpng-1.4.0/pngwutil.c libpng-1.4.0.patch/pngwutil.c ---- libpng-1.4.0/pngwutil.c 2010-01-03 06:05:36.000000000 +0100 -+++ libpng-1.4.0.patch/pngwutil.c 2010-02-07 22:41:01.994856708 +0100 -@@ -538,6 +538,11 @@ +diff -Naur libpng-1.4.1/pngwutil.c libpng-1.4.1.patch/pngwutil.c +--- libpng-1.4.1/pngwutil.c 2010-02-25 12:38:30.000000000 +0100 ++++ libpng-1.4.1.patch/pngwutil.c 2010-04-16 21:09:51.260444582 +0200 +@@ -539,6 +539,11 @@ /* Write the chunk */ png_write_chunk(png_ptr, (png_bytep)png_IHDR, buf, (png_size_t)13); @@ -1453,7 +1449,7 @@ diff -Naur libpng-1.4.0/pngwutil.c libpng-1.4.0.patch/pngwutil.c /* Initialize zlib with PNG info */ png_ptr->zstream.zalloc = png_zalloc; png_ptr->zstream.zfree = png_zfree; -@@ -658,6 +663,9 @@ +@@ -661,6 +666,9 @@ png_write_IDAT(png_structp png_ptr, png_bytep data, png_size_t length) { PNG_IDAT; @@ -1463,7 +1459,7 @@ diff -Naur libpng-1.4.0/pngwutil.c libpng-1.4.0.patch/pngwutil.c png_debug(1, "in png_write_IDAT"); -@@ -702,7 +710,28 @@ +@@ -705,7 +713,28 @@ "Invalid zlib compression method or flags in IDAT"); } @@ -1492,7 +1488,7 @@ diff -Naur libpng-1.4.0/pngwutil.c libpng-1.4.0.patch/pngwutil.c png_ptr->mode |= PNG_HAVE_IDAT; } -@@ -1709,6 +1738,66 @@ +@@ -1712,6 +1741,66 @@ } #endif @@ -1559,7 +1555,7 @@ diff -Naur libpng-1.4.0/pngwutil.c libpng-1.4.0.patch/pngwutil.c /* Initializes the row writing capability of libpng */ void /* PRIVATE */ png_write_start_row(png_structp png_ptr) -@@ -2110,8 +2199,8 @@ +@@ -2113,8 +2202,8 @@ #ifndef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED if (png_ptr->row_number == 0 && filter_to_do == PNG_ALL_FILTERS) { @@ -1570,7 +1566,7 @@ diff -Naur libpng-1.4.0/pngwutil.c libpng-1.4.0.patch/pngwutil.c } #endif -@@ -2780,4 +2869,39 @@ +@@ -2783,4 +2872,39 @@ } #endif } diff --git a/packages/graphics/libpng/url b/packages/graphics/libpng/url index 29617c0846..ea08a4d2ee 100644 --- a/packages/graphics/libpng/url +++ b/packages/graphics/libpng/url @@ -1 +1 @@ -http://downloads.sourceforge.net/libpng/libpng-1.4.0.tar.bz2 +http://downloads.sourceforge.net/libpng/libpng-1.4.1.tar.bz2 From c4737cad56f073c506a774346752ce3fcf77a494 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:55:01 +0200 Subject: [PATCH 014/171] tiff: - update to tiff-4.0.0beta5 --- packages/graphics/tiff/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/graphics/tiff/url b/packages/graphics/tiff/url index a8d4aaff7e..818f739513 100644 --- a/packages/graphics/tiff/url +++ b/packages/graphics/tiff/url @@ -1 +1 @@ -ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.0beta4.tar.gz \ No newline at end of file +ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.0beta5.tar.gz \ No newline at end of file From 129439e488fb55dd295a28e1651bfda659611c1d Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:55:31 +0200 Subject: [PATCH 015/171] SDL_image: - update to SDL_image-1.2.10 --- packages/multimedia/SDL_image/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/multimedia/SDL_image/url b/packages/multimedia/SDL_image/url index 69272eeca2..14a2fec1ae 100644 --- a/packages/multimedia/SDL_image/url +++ b/packages/multimedia/SDL_image/url @@ -1 +1 @@ -http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.8.tar.gz +http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz From 40b63cf4cfacbf81d4e03941d1ee8a23d3318127 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:56:18 +0200 Subject: [PATCH 016/171] SDL_mixer: - update to SDL_mixer-1.2.11 --- packages/multimedia/SDL_mixer/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/multimedia/SDL_mixer/url b/packages/multimedia/SDL_mixer/url index e745030b45..c2ad3df738 100644 --- a/packages/multimedia/SDL_mixer/url +++ b/packages/multimedia/SDL_mixer/url @@ -1 +1 @@ -http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.9.tar.gz +http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.11.tar.gz From 515ded07a73f3660efa7264f0534cf86e67411b7 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:56:33 +0200 Subject: [PATCH 017/171] connman: - update to connman-0.52 --- packages/network/connman/build | 1 + packages/network/connman/url | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/network/connman/build b/packages/network/connman/build index 3f1fdb457f..f75df228f3 100755 --- a/packages/network/connman/build +++ b/packages/network/connman/build @@ -23,6 +23,7 @@ cd $PKG_BUILD --enable-ethernet \ --enable-wifi \ --disable-bluetooth \ + --disable-hh2serial-gps \ --disable-ofono \ --enable-udhcp \ --disable-dhclient \ diff --git a/packages/network/connman/url b/packages/network/connman/url index 74fc694b42..4123c1a0bc 100644 --- a/packages/network/connman/url +++ b/packages/network/connman/url @@ -1 +1 @@ -http://www.kernel.org/pub/linux/network/connman/connman-0.51.tar.bz2 +http://www.kernel.org/pub/linux/network/connman/connman-0.52.tar.bz2 From abfaa94a674e5233347d1046d66196c792ee2c57 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 16 Apr 2010 23:56:59 +0200 Subject: [PATCH 018/171] enca: - update to enca-1.13 --- .../enca/patches/10-enca-crosscompile.diff | 32388 ++++++++++------ packages/other/enca/url | 2 +- 2 files changed, 19811 insertions(+), 12579 deletions(-) diff --git a/packages/other/enca/patches/10-enca-crosscompile.diff b/packages/other/enca/patches/10-enca-crosscompile.diff index c4cc51ebbf..38cbfe5b1a 100644 --- a/packages/other/enca/patches/10-enca-crosscompile.diff +++ b/packages/other/enca/patches/10-enca-crosscompile.diff @@ -1,147 +1,2511 @@ -diff -Naur enca-1.12/configure enca-1.12.patch/configure ---- enca-1.12/configure 2009-10-29 13:05:11.000000000 +0100 -+++ enca-1.12.patch/configure 2009-12-19 01:17:46.859341473 +0100 -@@ -1,22 +1,20 @@ - #! /bin/sh - # Guess values for system-dependent variables and create Makefiles. --# Generated by GNU Autoconf 2.64 for Enca 1.12. -+# Generated by GNU Autoconf 2.63 for Enca 1.12. - # - # Report bugs to >. - # - # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, --# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software --# Foundation, Inc. --# -+# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. - # This configure script is free software; the Free Software Foundation - # gives unlimited permission to copy, distribute and modify it. --## -------------------- ## --## M4sh Initialization. ## --## -------------------- ## -+## --------------------- ## -+## M4sh Initialization. ## -+## --------------------- ## - - # Be more Bourne compatible - DUALCASE=1; export DUALCASE # for MKS sh --if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which -@@ -24,15 +22,23 @@ - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST - else -- case `(set -o) 2>/dev/null` in #( -- *posix*) : -- set -o posix ;; #( -- *) : -- ;; -+ case `(set -o) 2>/dev/null` in -+ *posix*) set -o posix ;; - esac +diff -Naur enca-1.13/config.h enca-1.13.patch/config.h +--- enca-1.13/config.h 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/config.h 2010-04-16 18:41:17.785442603 +0200 +@@ -0,0 +1,285 @@ ++/* config.h. Generated from config.h.in by configure. */ ++/* config.h.in. Generated from configure.ac by autoheader. */ + - fi - - ++/* Define to path to the cstocs recoder. */ ++/* #undef CSTOCS_PROG */ ++ ++/* Define to default converter list. */ ++#define DEFAULT_CONVERTER_LIST "built-in,iconv" ++ ++/* Define to default external converter program. */ ++#define DEFAULT_EXTERNAL_CONVERTER "piconv" ++ ++/* Define to enable external converter programs. */ ++#define ENABLE_EXTERNAL 1 ++ ++/* Define to 1 if you have the `canonicalize_file_name' function. */ ++#define HAVE_CANONICALIZE_FILE_NAME 1 ++ ++/* Define to 1 if you have the declaration of `LC_MESSAGES', and to 0 if you ++ don't. */ ++#define HAVE_DECL_LC_MESSAGES 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_DLFCN_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_ERRNO_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_FCNTL_H 1 ++ ++/* Define to 1 if you have the `fork' function. */ ++#define HAVE_FORK 1 ++ ++/* Define to 1 if you have the `ftruncate' function. */ ++#define HAVE_FTRUNCATE 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_GETOPT_H 1 ++ ++/* Define to 1 if you have the `getopt_long' function. */ ++#define HAVE_GETOPT_LONG 1 ++ ++/* Define to 1 if you have the `gettimeofday' function. */ ++#define HAVE_GETTIMEOFDAY 1 ++ ++/* Define if you have the UNIX98 iconv functions. */ ++#define HAVE_GOOD_ICONV 1 ++ ++/* Define if you have the iconv() function and it works. */ ++#define HAVE_ICONV 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_INTTYPES_H 1 ++ ++/* Define to 1 if you have the `isatty' function. */ ++#define HAVE_ISATTY 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_LANGINFO_H 1 ++ ++/* Define if you have the recode library (-lrecode). */ ++/* #undef HAVE_LIBRECODE */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_LIMITS_H 1 ++ ++/* Define if you have locale.alias file. */ ++#define HAVE_LOCALE_ALIAS 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_LOCALE_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_MEMORY_H 1 ++ ++/* Define to 1 if you have the `nl_langinfo' function. */ ++#define HAVE_NL_LANGINFO 1 ++ ++/* Define if you have program_invocation_short_name variable. */ ++#define HAVE_PROGRAM_INVOCATION_SHORT_NAME 1 ++ ++/* Define to 1 if you have the `random' function. */ ++#define HAVE_RANDOM 1 ++ ++/* Define to 1 if you have the `realpath' function. */ ++#define HAVE_REALPATH 1 ++ ++/* Define to 1 if you have the `setlocale' function. */ ++#define HAVE_SETLOCALE 1 ++ ++/* Define to 1 if stdbool.h conforms to C99. */ ++#define HAVE_STDBOOL_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STDINT_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STDLIB_H 1 ++ ++/* Define to 1 if you have the `stpcpy' function. */ ++#define HAVE_STPCPY 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STRINGS_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STRING_H 1 ++ ++/* Define to 1 if you have the `strstr' function. */ ++#define HAVE_STRSTR 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_STAT_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_TIME_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_TYPES_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_WAIT_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_TIME_H 1 ++ ++/* Define to 1 if you have the `ttyname' function. */ ++#define HAVE_TTYNAME 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_UNISTD_H 1 ++ ++/* Define to 1 if you have the `vfork' function. */ ++#define HAVE_VFORK 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_VFORK_H */ ++ ++/* Define to 1 if you have the `wordexp' function. */ ++#define HAVE_WORDEXP 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_WORDEXP_H 1 ++ ++/* Define to 1 if `fork' works. */ ++#define HAVE_WORKING_FORK 1 ++ ++/* Define to 1 if `vfork' works. */ ++#define HAVE_WORKING_VFORK 1 ++ ++/* Define to 1 if the system has the type `_Bool'. */ ++#define HAVE__BOOL 1 ++ ++/* Define to 1 if you have the file `/dev/arandom'. */ ++/* #undef HAVE__DEV_ARANDOM */ ++ ++/* Define to 1 if you have the file `/dev/random'. */ ++#define HAVE__DEV_RANDOM 1 ++ ++/* Define to 1 if you have the file `/dev/srandom'. */ ++/* #undef HAVE__DEV_SRANDOM */ ++ ++/* Define to 1 if you have the file `/dev/urandom'. */ ++#define HAVE__DEV_URANDOM 1 ++ ++/* Define as const if the declaration of iconv() needs const. */ ++#define ICONV_CONST ++ ++/* Define if iconv is transitive. */ ++#define ICONV_IS_TRANSITIVE 1 ++ ++/* Define to the path to locale.alias file. */ ++#define LOCALE_ALIAS_PATH "/usr/share/locale/locale.alias" ++ ++/* Define to the sub-directory in which libtool stores uninstalled libraries. ++ */ ++#define LT_OBJDIR ".libs/" ++ ++/* Define to path to the map recoder. */ ++/* #undef MAP_PROG */ ++ ++/* Define to 1 if your C compiler doesn't accept -c and -o together. */ ++/* #undef NO_MINUS_C_MINUS_O */ ++ ++/* Name of package */ ++#define PACKAGE "enca" ++ ++/* Define to the address where bug reports for this package should be sent. */ ++#define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++ ++/* Define to the full name of this package. */ ++#define PACKAGE_NAME "Enca" ++ ++/* Define to the full name and version of this package. */ ++#define PACKAGE_STRING "Enca 1.13" ++ ++/* Define to the one symbol short name of this package. */ ++#define PACKAGE_TARNAME "enca" ++ ++/* Define to the home page for this package. */ ++#define PACKAGE_URL "" ++ ++/* Define to the version of this package. */ ++#define PACKAGE_VERSION "1.13" ++ ++/* Define to path to the piconv recoder. */ ++#define PICONV_PROG "/usr/bin/piconv" ++ ++/* Define to path to the recode recoder. */ ++/* #undef RECODE_PROG */ ++ ++/* Define to 1 if the `S_IS*' macros in do not work properly. */ ++/* #undef STAT_MACROS_BROKEN */ ++ ++/* Define to 1 if you have the ANSI C header files. */ ++#define STDC_HEADERS 1 ++ ++/* Define to 1 if you can safely include both and . */ ++#define TIME_WITH_SYS_TIME 1 ++ ++/* Define to path to the umap recoder. */ ++/* #undef UMAP_PROG */ ++ ++/* Enable extensions on AIX 3, Interix. */ ++#ifndef _ALL_SOURCE ++# define _ALL_SOURCE 1 ++#endif ++/* Enable GNU extensions on systems that have them. */ ++#ifndef _GNU_SOURCE ++# define _GNU_SOURCE 1 ++#endif ++/* Enable threading extensions on Solaris. */ ++#ifndef _POSIX_PTHREAD_SEMANTICS ++# define _POSIX_PTHREAD_SEMANTICS 1 ++#endif ++/* Enable extensions on HP NonStop. */ ++#ifndef _TANDEM_SOURCE ++# define _TANDEM_SOURCE 1 ++#endif ++/* Enable general extensions on Solaris. */ ++#ifndef __EXTENSIONS__ ++# define __EXTENSIONS__ 1 ++#endif + + -+# PATH needs CR -+# Avoid depending upon Character Ranges. -+as_cr_letters='abcdefghijklmnopqrstuvwxyz' -+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -+as_cr_Letters=$as_cr_letters$as_cr_LETTERS -+as_cr_digits='0123456789' -+as_cr_alnum=$as_cr_Letters$as_cr_digits ++/* Version number of package */ ++#define VERSION "1.13" + - as_nl=' - ' - export as_nl -@@ -40,13 +46,7 @@ - as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo - as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo --# Prefer a ksh shell builtin over an external printf program on Solaris, --# but without wasting forks for bash or zsh. --if test -z "$BASH_VERSION$ZSH_VERSION" \ -- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then -- as_echo='print -r --' -- as_echo_n='print -rn --' --elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then -+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' - else -@@ -57,7 +57,7 @@ - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; -- case $arg in #( -+ case $arg in - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; -@@ -80,6 +80,13 @@ - } - fi - -+# Support unset when possible. -+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -+ as_unset=unset ++/* Define to 1 if on MINIX. */ ++/* #undef _MINIX */ ++ ++/* Define to 2 if the system does not provide POSIX.1 features except with ++ this defined. */ ++/* #undef _POSIX_1_SOURCE */ ++ ++/* Define to 1 if you need to in order for `stat' and other things to work. */ ++/* #undef _POSIX_SOURCE */ ++ ++/* Define to empty if `const' does not conform to ANSI C. */ ++/* #undef const */ ++ ++/* Define to `int' if doesn't define. */ ++/* #undef gid_t */ ++ ++/* Define to `int' if does not define. */ ++/* #undef mode_t */ ++ ++/* Define to `long int' if does not define. */ ++/* #undef off_t */ ++ ++/* Define to `int' if does not define. */ ++/* #undef pid_t */ ++ ++/* Define to `unsigned int' if does not define. */ ++/* #undef size_t */ ++ ++/* Define to `int' if does not define. */ ++/* #undef ssize_t */ ++ ++/* Define to `int' if doesn't define. */ ++/* #undef uid_t */ ++ ++/* Define as `fork' if `vfork' does not work. */ ++/* #undef vfork */ +diff -Naur enca-1.13/config.log enca-1.13.patch/config.log +--- enca-1.13/config.log 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/config.log 2010-04-16 18:41:18.142466704 +0200 +@@ -0,0 +1,1996 @@ ++This file contains any messages produced by compilers while ++running configure, to aid debugging if configure makes a mistake. ++ ++It was created by Enca configure 1.13, which was ++generated by GNU Autoconf 2.65. Invocation command line was ++ ++ $ ./configure ++ ++## --------- ## ++## Platform. ## ++## --------- ## ++ ++hostname = x200t.openelec.tv ++uname -m = i686 ++uname -r = 2.6.32.11-99.fc12.i686 ++uname -s = Linux ++uname -v = #1 SMP Mon Apr 5 16:32:08 EDT 2010 ++ ++/usr/bin/uname -p = unknown ++/bin/uname -X = unknown ++ ++/bin/arch = i686 ++/usr/bin/arch -k = unknown ++/usr/convex/getsysinfo = unknown ++/usr/bin/hostinfo = unknown ++/bin/machine = unknown ++/usr/bin/oslevel = unknown ++/bin/universe = unknown ++ ++PATH: /usr/kerberos/sbin ++PATH: /usr/kerberos/bin ++PATH: /usr/local/bin ++PATH: /usr/bin ++PATH: /bin ++PATH: /usr/local/sbin ++PATH: /usr/sbin ++PATH: /sbin ++PATH: /home/stephan/bin ++ ++ ++## ----------- ## ++## Core tests. ## ++## ----------- ## ++ ++configure:2481: checking for a BSD-compatible install ++configure:2549: result: /usr/bin/install -c ++configure:2560: checking whether build environment is sane ++configure:2610: result: yes ++configure:2751: checking for a thread-safe mkdir -p ++configure:2790: result: /bin/mkdir -p ++configure:2803: checking for gawk ++configure:2819: found /usr/bin/gawk ++configure:2830: result: gawk ++configure:2841: checking whether make sets $(MAKE) ++configure:2863: result: yes ++configure:2947: checking whether to enable maintainer-specific portions of Makefiles ++configure:2956: result: no ++configure:2976: checking for gawk ++configure:3003: result: gawk ++configure:3062: checking for gcc ++configure:3078: found /usr/bin/gcc ++configure:3089: result: gcc ++configure:3318: checking for C compiler version ++configure:3327: gcc --version >&5 ++gcc (GCC) 4.4.3 20100127 (Red Hat 4.4.3-4) ++Copyright (C) 2010 Free Software Foundation, Inc. ++This is free software; see the source for copying conditions. There is NO ++warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++ ++configure:3338: $? = 0 ++configure:3327: gcc -v >&5 ++Using built-in specs. ++Target: i686-redhat-linux ++Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch=i686 --build=i686-redhat-linux ++Thread model: posix ++gcc version 4.4.3 20100127 (Red Hat 4.4.3-4) (GCC) ++configure:3338: $? = 0 ++configure:3327: gcc -V >&5 ++gcc: '-V' option must have argument ++configure:3338: $? = 1 ++configure:3327: gcc -qversion >&5 ++gcc: unrecognized option '-qversion' ++gcc: no input files ++configure:3338: $? = 1 ++configure:3358: checking whether the C compiler works ++configure:3380: gcc conftest.c >&5 ++configure:3384: $? = 0 ++configure:3433: result: yes ++configure:3436: checking for C compiler default output file name ++configure:3438: result: a.out ++configure:3444: checking for suffix of executables ++configure:3451: gcc -o conftest conftest.c >&5 ++configure:3455: $? = 0 ++configure:3477: result: ++configure:3499: checking whether we are cross compiling ++configure:3507: gcc -o conftest conftest.c >&5 ++configure:3511: $? = 0 ++configure:3518: ./conftest ++configure:3522: $? = 0 ++configure:3537: result: no ++configure:3542: checking for suffix of object files ++configure:3564: gcc -c conftest.c >&5 ++configure:3568: $? = 0 ++configure:3589: result: o ++configure:3593: checking whether we are using the GNU C compiler ++configure:3612: gcc -c conftest.c >&5 ++configure:3612: $? = 0 ++configure:3621: result: yes ++configure:3630: checking whether gcc accepts -g ++configure:3650: gcc -c -g conftest.c >&5 ++configure:3650: $? = 0 ++configure:3691: result: yes ++configure:3708: checking for gcc option to accept ISO C89 ++configure:3772: gcc -c -g -O2 conftest.c >&5 ++configure:3772: $? = 0 ++configure:3785: result: none needed ++configure:3816: checking for style of include used by make ++configure:3844: result: GNU ++configure:3869: checking dependency style of gcc ++configure:3979: result: gcc3 ++configure:4000: checking how to run the C preprocessor ++configure:4031: gcc -E conftest.c ++configure:4031: $? = 0 ++configure:4045: gcc -E conftest.c ++conftest.c:11:28: error: ac_nonexistent.h: No such file or directory ++configure:4045: $? = 1 ++configure: failed program was: ++| /* confdefs.h */ ++| #define PACKAGE_NAME "Enca" ++| #define PACKAGE_TARNAME "enca" ++| #define PACKAGE_VERSION "1.13" ++| #define PACKAGE_STRING "Enca 1.13" ++| #define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++| #define PACKAGE_URL "" ++| #define PACKAGE "enca" ++| #define VERSION "1.13" ++| /* end confdefs.h. */ ++| #include ++configure:4070: result: gcc -E ++configure:4090: gcc -E conftest.c ++configure:4090: $? = 0 ++configure:4104: gcc -E conftest.c ++conftest.c:11:28: error: ac_nonexistent.h: No such file or directory ++configure:4104: $? = 1 ++configure: failed program was: ++| /* confdefs.h */ ++| #define PACKAGE_NAME "Enca" ++| #define PACKAGE_TARNAME "enca" ++| #define PACKAGE_VERSION "1.13" ++| #define PACKAGE_STRING "Enca 1.13" ++| #define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++| #define PACKAGE_URL "" ++| #define PACKAGE "enca" ++| #define VERSION "1.13" ++| /* end confdefs.h. */ ++| #include ++configure:4133: checking for grep that handles long lines and -e ++configure:4191: result: /bin/grep ++configure:4196: checking for egrep ++configure:4258: result: /bin/grep -E ++configure:4263: checking for ANSI C header files ++configure:4283: gcc -c -g -O2 conftest.c >&5 ++configure:4283: $? = 0 ++configure:4356: gcc -o conftest -g -O2 conftest.c >&5 ++configure:4356: $? = 0 ++configure:4356: ./conftest ++configure:4356: $? = 0 ++configure:4367: result: yes ++configure:4380: checking for sys/types.h ++configure:4380: gcc -c -g -O2 conftest.c >&5 ++configure:4380: $? = 0 ++configure:4380: result: yes ++configure:4380: checking for sys/stat.h ++configure:4380: gcc -c -g -O2 conftest.c >&5 ++configure:4380: $? = 0 ++configure:4380: result: yes ++configure:4380: checking for stdlib.h ++configure:4380: gcc -c -g -O2 conftest.c >&5 ++configure:4380: $? = 0 ++configure:4380: result: yes ++configure:4380: checking for string.h ++configure:4380: gcc -c -g -O2 conftest.c >&5 ++configure:4380: $? = 0 ++configure:4380: result: yes ++configure:4380: checking for memory.h ++configure:4380: gcc -c -g -O2 conftest.c >&5 ++configure:4380: $? = 0 ++configure:4380: result: yes ++configure:4380: checking for strings.h ++configure:4380: gcc -c -g -O2 conftest.c >&5 ++configure:4380: $? = 0 ++configure:4380: result: yes ++configure:4380: checking for inttypes.h ++configure:4380: gcc -c -g -O2 conftest.c >&5 ++configure:4380: $? = 0 ++configure:4380: result: yes ++configure:4380: checking for stdint.h ++configure:4380: gcc -c -g -O2 conftest.c >&5 ++configure:4380: $? = 0 ++configure:4380: result: yes ++configure:4380: checking for unistd.h ++configure:4380: gcc -c -g -O2 conftest.c >&5 ++configure:4380: $? = 0 ++configure:4380: result: yes ++configure:4394: checking minix/config.h usability ++configure:4394: gcc -c -g -O2 conftest.c >&5 ++conftest.c:54:26: error: minix/config.h: No such file or directory ++configure:4394: $? = 1 ++configure: failed program was: ++| /* confdefs.h */ ++| #define PACKAGE_NAME "Enca" ++| #define PACKAGE_TARNAME "enca" ++| #define PACKAGE_VERSION "1.13" ++| #define PACKAGE_STRING "Enca 1.13" ++| #define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++| #define PACKAGE_URL "" ++| #define PACKAGE "enca" ++| #define VERSION "1.13" ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_STDLIB_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_INTTYPES_H 1 ++| #define HAVE_STDINT_H 1 ++| #define HAVE_UNISTD_H 1 ++| /* end confdefs.h. */ ++| #include ++| #ifdef HAVE_SYS_TYPES_H ++| # include ++| #endif ++| #ifdef HAVE_SYS_STAT_H ++| # include ++| #endif ++| #ifdef STDC_HEADERS ++| # include ++| # include ++| #else ++| # ifdef HAVE_STDLIB_H ++| # include ++| # endif ++| #endif ++| #ifdef HAVE_STRING_H ++| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H ++| # include ++| # endif ++| # include ++| #endif ++| #ifdef HAVE_STRINGS_H ++| # include ++| #endif ++| #ifdef HAVE_INTTYPES_H ++| # include ++| #endif ++| #ifdef HAVE_STDINT_H ++| # include ++| #endif ++| #ifdef HAVE_UNISTD_H ++| # include ++| #endif ++| #include ++configure:4394: result: no ++configure:4394: checking minix/config.h presence ++configure:4394: gcc -E conftest.c ++conftest.c:21:26: error: minix/config.h: No such file or directory ++configure:4394: $? = 1 ++configure: failed program was: ++| /* confdefs.h */ ++| #define PACKAGE_NAME "Enca" ++| #define PACKAGE_TARNAME "enca" ++| #define PACKAGE_VERSION "1.13" ++| #define PACKAGE_STRING "Enca 1.13" ++| #define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++| #define PACKAGE_URL "" ++| #define PACKAGE "enca" ++| #define VERSION "1.13" ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_STDLIB_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_INTTYPES_H 1 ++| #define HAVE_STDINT_H 1 ++| #define HAVE_UNISTD_H 1 ++| /* end confdefs.h. */ ++| #include ++configure:4394: result: no ++configure:4394: checking for minix/config.h ++configure:4394: result: no ++configure:4415: checking whether it is safe to define __EXTENSIONS__ ++configure:4433: gcc -c -g -O2 conftest.c >&5 ++configure:4433: $? = 0 ++configure:4440: result: yes ++configure:4456: checking for library containing strerror ++configure:4487: gcc -o conftest -g -O2 conftest.c >&5 ++configure:4487: $? = 0 ++configure:4504: result: none required ++configure:4541: checking build system type ++configure:4555: result: i686-pc-linux-gnu ++configure:4575: checking host system type ++configure:4588: result: i686-pc-linux-gnu ++configure:4608: checking for a sed that does not truncate output ++configure:4672: result: /bin/sed ++configure:4690: checking for fgrep ++configure:4752: result: /bin/grep -F ++configure:4787: checking for ld used by gcc ++configure:4854: result: /usr/bin/ld ++configure:4861: checking if the linker (/usr/bin/ld) is GNU ld ++configure:4876: result: yes ++configure:4888: checking for BSD- or MS-compatible name lister (nm) ++configure:4937: result: /usr/bin/nm -B ++configure:5055: checking the name lister (/usr/bin/nm -B) interface ++configure:5062: gcc -c -g -O2 conftest.c >&5 ++configure:5065: /usr/bin/nm -B "conftest.o" ++configure:5068: output ++00000000 B some_variable ++configure:5075: result: BSD nm ++configure:5078: checking whether ln -s works ++configure:5082: result: yes ++configure:5090: checking the maximum length of command line arguments ++configure:5210: result: 1966080 ++configure:5227: checking whether the shell understands some XSI constructs ++configure:5237: result: yes ++configure:5241: checking whether the shell understands "+=" ++configure:5247: result: yes ++configure:5282: checking for /usr/bin/ld option to reload object files ++configure:5289: result: -r ++configure:5358: checking for objdump ++configure:5374: found /usr/bin/objdump ++configure:5385: result: objdump ++configure:5417: checking how to recognize dependent libraries ++configure:5613: result: pass_all ++configure:5673: checking for ar ++configure:5689: found /usr/bin/ar ++configure:5700: result: ar ++configure:5778: checking for strip ++configure:5794: found /usr/bin/strip ++configure:5805: result: strip ++configure:5877: checking for ranlib ++configure:5893: found /usr/bin/ranlib ++configure:5904: result: ranlib ++configure:5994: checking command to parse /usr/bin/nm -B output from gcc object ++configure:6112: gcc -c -g -O2 conftest.c >&5 ++configure:6115: $? = 0 ++configure:6119: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' \> conftest.nm ++configure:6122: $? = 0 ++configure:6176: gcc -o conftest -g -O2 conftest.c conftstm.o >&5 ++configure:6179: $? = 0 ++configure:6217: result: ok ++configure:7022: checking for dlfcn.h ++configure:7022: gcc -c -g -O2 conftest.c >&5 ++configure:7022: $? = 0 ++configure:7022: result: yes ++configure:7206: checking for objdir ++configure:7221: result: .libs ++configure:7517: checking if gcc supports -fno-rtti -fno-exceptions ++configure:7535: gcc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5 ++cc1: warning: command line option "-fno-rtti" is valid for C++/ObjC++ but not for C ++configure:7539: $? = 0 ++configure:7552: result: no ++configure:7572: checking for gcc option to produce PIC ++configure:7844: result: -fPIC -DPIC ++configure:7856: checking if gcc PIC flag -fPIC -DPIC works ++configure:7874: gcc -c -g -O2 -fPIC -DPIC -DPIC conftest.c >&5 ++configure:7878: $? = 0 ++configure:7891: result: yes ++configure:7915: checking if gcc static flag -static works ++configure:7943: result: yes ++configure:7958: checking if gcc supports -c -o file.o ++configure:7979: gcc -c -g -O2 -o out/conftest2.o conftest.c >&5 ++configure:7983: $? = 0 ++configure:8005: result: yes ++configure:8013: checking if gcc supports -c -o file.o ++configure:8060: result: yes ++configure:8093: checking whether the gcc linker (/usr/bin/ld) supports shared libraries ++configure:9079: result: yes ++configure:9116: checking whether -lc should be explicitly linked in ++configure:9121: gcc -c -g -O2 conftest.c >&5 ++configure:9124: $? = 0 ++configure:9139: gcc -shared conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /bin/grep -lc \>/dev/null 2\>\&1 ++configure:9142: $? = 0 ++configure:9154: result: no ++configure:9318: checking dynamic linker characteristics ++configure:9751: gcc -o conftest -g -O2 -Wl,-rpath -Wl,/foo conftest.c >&5 ++configure:9751: $? = 0 ++configure:9972: result: GNU/Linux ld.so ++configure:10074: checking how to hardcode library paths into programs ++configure:10099: result: immediate ++configure:10619: checking whether stripping libraries is possible ++configure:10624: result: yes ++configure:10659: checking if libtool supports shared libraries ++configure:10661: result: yes ++configure:10664: checking whether to build shared libraries ++configure:10685: result: yes ++configure:10688: checking whether to build static libraries ++configure:10692: result: yes ++configure:10775: checking for gcc ++configure:10802: result: gcc ++configure:11031: checking for C compiler version ++configure:11040: gcc --version >&5 ++gcc (GCC) 4.4.3 20100127 (Red Hat 4.4.3-4) ++Copyright (C) 2010 Free Software Foundation, Inc. ++This is free software; see the source for copying conditions. There is NO ++warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++ ++configure:11051: $? = 0 ++configure:11040: gcc -v >&5 ++Using built-in specs. ++Target: i686-redhat-linux ++Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch=i686 --build=i686-redhat-linux ++Thread model: posix ++gcc version 4.4.3 20100127 (Red Hat 4.4.3-4) (GCC) ++configure:11051: $? = 0 ++configure:11040: gcc -V >&5 ++gcc: '-V' option must have argument ++configure:11051: $? = 1 ++configure:11040: gcc -qversion >&5 ++gcc: unrecognized option '-qversion' ++gcc: no input files ++configure:11051: $? = 1 ++configure:11055: checking whether we are using the GNU C compiler ++configure:11083: result: yes ++configure:11092: checking whether gcc accepts -g ++configure:11153: result: yes ++configure:11170: checking for gcc option to accept ISO C89 ++configure:11247: result: none needed ++configure:11269: checking dependency style of gcc ++configure:11379: result: gcc3 ++configure:11398: checking whether gcc and cc understand -c and -o together ++configure:11429: gcc -c conftest.c -o conftest2.o >&5 ++configure:11433: $? = 0 ++configure:11439: gcc -c conftest.c -o conftest2.o >&5 ++configure:11443: $? = 0 ++configure:11454: cc -c conftest.c >&5 ++configure:11458: $? = 0 ++configure:11466: cc -c conftest.c -o conftest2.o >&5 ++configure:11470: $? = 0 ++configure:11476: cc -c conftest.c -o conftest2.o >&5 ++configure:11480: $? = 0 ++configure:11498: result: yes ++configure:11524: checking whether ln -s works ++configure:11528: result: yes ++configure:11537: checking for mktemp ++configure:11555: found /bin/mktemp ++configure:11567: result: /bin/mktemp ++configure:11582: checking for cstocs ++configure:11615: result: no ++configure:11622: checking for recode ++configure:11655: result: no ++configure:11662: checking for umap ++configure:11695: result: no ++configure:11702: checking for piconv ++configure:11720: found /usr/bin/piconv ++configure:11732: result: /usr/bin/piconv ++configure:11742: checking for map ++configure:11775: result: no ++configure:11854: checking for gtkdoc-mkdb ++configure:11870: found /usr/bin/gtkdoc-mkdb ++configure:11882: result: true ++configure:11894: checking gtk-doc version (1.11) >= 1.0 ++configure:11900: result: yes ++configure:11935: checking for /dev/random ++configure:11948: result: yes ++configure:11957: checking for /dev/urandom ++configure:11970: result: yes ++configure:11979: checking for /dev/srandom ++configure:11992: result: no ++configure:12001: checking for /dev/arandom ++configure:12014: result: no ++configure:12119: checking for sqrt in -lm ++configure:12144: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++conftest.c:38: warning: conflicting types for built-in function 'sqrt' ++configure:12144: $? = 0 ++configure:12153: result: yes ++configure:12164: checking for ANSI C header files ++configure:12268: result: yes ++configure:12276: checking for sys/wait.h that is POSIX.1 compatible ++configure:12302: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12302: $? = 0 ++configure:12309: result: yes ++configure:12317: checking whether time.h and sys/time.h may both be included ++configure:12337: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12337: $? = 0 ++configure:12344: result: yes ++configure:12352: checking whether stat file-mode macros are broken ++configure:12379: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12379: $? = 0 ++configure:12386: result: no ++configure:12394: checking for stdbool.h that conforms to C99 ++configure:12479: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++conftest.c:61: warning: the address of 's' will always evaluate as 'true' ++conftest.c: In function 'main': ++conftest.c:105: warning: the address of 'a' will always evaluate as 'true' ++conftest.c:105: warning: the address of 'b' will always evaluate as 'true' ++conftest.c:105: warning: the address of 'c' will always evaluate as 'true' ++conftest.c:105: warning: the address of 'd' will always evaluate as 'true' ++conftest.c:105: warning: the address of 'f' will always evaluate as 'true' ++conftest.c:105: warning: the address of 'g' will always evaluate as 'true' ++conftest.c:105: warning: the address of 'h' will always evaluate as 'true' ++conftest.c:105: warning: the address of 'i' will always evaluate as 'true' ++conftest.c:106: warning: the address of 'n' will always evaluate as 'true' ++conftest.c:106: warning: the address of 'o' will always evaluate as 'true' ++conftest.c:106: warning: the address of 'p' will always evaluate as 'true' ++configure:12479: $? = 0 ++configure:12486: result: yes ++configure:12488: checking for _Bool ++configure:12488: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12488: $? = 0 ++configure:12488: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++conftest.c: In function 'main': ++conftest.c:70: error: expected expression before ')' token ++configure:12488: $? = 1 ++configure: failed program was: ++| /* confdefs.h */ ++| #define PACKAGE_NAME "Enca" ++| #define PACKAGE_TARNAME "enca" ++| #define PACKAGE_VERSION "1.13" ++| #define PACKAGE_STRING "Enca 1.13" ++| #define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++| #define PACKAGE_URL "" ++| #define PACKAGE "enca" ++| #define VERSION "1.13" ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_STDLIB_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_INTTYPES_H 1 ++| #define HAVE_STDINT_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define __EXTENSIONS__ 1 ++| #define _ALL_SOURCE 1 ++| #define _GNU_SOURCE 1 ++| #define _POSIX_PTHREAD_SEMANTICS 1 ++| #define _TANDEM_SOURCE 1 ++| #define HAVE_DLFCN_H 1 ++| #define LT_OBJDIR ".libs/" ++| #define PICONV_PROG "/usr/bin/piconv" ++| #define HAVE__DEV_RANDOM 1 ++| #define HAVE__DEV_URANDOM 1 ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define TIME_WITH_SYS_TIME 1 ++| /* end confdefs.h. */ ++| #include ++| #ifdef HAVE_SYS_TYPES_H ++| # include ++| #endif ++| #ifdef HAVE_SYS_STAT_H ++| # include ++| #endif ++| #ifdef STDC_HEADERS ++| # include ++| # include ++| #else ++| # ifdef HAVE_STDLIB_H ++| # include ++| # endif ++| #endif ++| #ifdef HAVE_STRING_H ++| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H ++| # include ++| # endif ++| # include ++| #endif ++| #ifdef HAVE_STRINGS_H ++| # include ++| #endif ++| #ifdef HAVE_INTTYPES_H ++| # include ++| #endif ++| #ifdef HAVE_STDINT_H ++| # include ++| #endif ++| #ifdef HAVE_UNISTD_H ++| # include ++| #endif ++| int ++| main () ++| { ++| if (sizeof ((_Bool))) ++| return 0; ++| ; ++| return 0; ++| } ++configure:12488: result: yes ++configure:12523: checking errno.h usability ++configure:12523: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking errno.h presence ++configure:12523: gcc -E conftest.c ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking for errno.h ++configure:12523: result: yes ++configure:12523: checking fcntl.h usability ++configure:12523: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking fcntl.h presence ++configure:12523: gcc -E conftest.c ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking for fcntl.h ++configure:12523: result: yes ++configure:12523: checking getopt.h usability ++configure:12523: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking getopt.h presence ++configure:12523: gcc -E conftest.c ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking for getopt.h ++configure:12523: result: yes ++configure:12523: checking langinfo.h usability ++configure:12523: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking langinfo.h presence ++configure:12523: gcc -E conftest.c ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking for langinfo.h ++configure:12523: result: yes ++configure:12523: checking limits.h usability ++configure:12523: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking limits.h presence ++configure:12523: gcc -E conftest.c ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking for limits.h ++configure:12523: result: yes ++configure:12523: checking locale.h usability ++configure:12523: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking locale.h presence ++configure:12523: gcc -E conftest.c ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking for locale.h ++configure:12523: result: yes ++configure:12523: checking for memory.h ++configure:12523: result: yes ++configure:12523: checking for string.h ++configure:12523: result: yes ++configure:12523: checking for strings.h ++configure:12523: result: yes ++configure:12523: checking for sys/stat.h ++configure:12523: result: yes ++configure:12523: checking for sys/types.h ++configure:12523: result: yes ++configure:12523: checking for sys/wait.h ++configure:12523: result: yes ++configure:12523: checking sys/time.h usability ++configure:12523: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking sys/time.h presence ++configure:12523: gcc -E conftest.c ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking for sys/time.h ++configure:12523: result: yes ++configure:12523: checking time.h usability ++configure:12523: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking time.h presence ++configure:12523: gcc -E conftest.c ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking for time.h ++configure:12523: result: yes ++configure:12523: checking for unistd.h ++configure:12523: result: yes ++configure:12523: checking wordexp.h usability ++configure:12523: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking wordexp.h presence ++configure:12523: gcc -E conftest.c ++configure:12523: $? = 0 ++configure:12523: result: yes ++configure:12523: checking for wordexp.h ++configure:12523: result: yes ++configure:12535: checking for an ANSI C-conforming const ++configure:12600: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++conftest.c: In function 'main': ++conftest.c:81: warning: 't' is used uninitialized in this function ++conftest.c:97: warning: 'b' is used uninitialized in this function ++conftest.c:60: warning: 'cs[0]' is used uninitialized in this function ++configure:12600: $? = 0 ++configure:12607: result: yes ++configure:12615: checking for size_t ++configure:12615: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12615: $? = 0 ++configure:12615: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++conftest.c: In function 'main': ++conftest.c:88: error: expected expression before ')' token ++configure:12615: $? = 1 ++configure: failed program was: ++| /* confdefs.h */ ++| #define PACKAGE_NAME "Enca" ++| #define PACKAGE_TARNAME "enca" ++| #define PACKAGE_VERSION "1.13" ++| #define PACKAGE_STRING "Enca 1.13" ++| #define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++| #define PACKAGE_URL "" ++| #define PACKAGE "enca" ++| #define VERSION "1.13" ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_STDLIB_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_INTTYPES_H 1 ++| #define HAVE_STDINT_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define __EXTENSIONS__ 1 ++| #define _ALL_SOURCE 1 ++| #define _GNU_SOURCE 1 ++| #define _POSIX_PTHREAD_SEMANTICS 1 ++| #define _TANDEM_SOURCE 1 ++| #define HAVE_DLFCN_H 1 ++| #define LT_OBJDIR ".libs/" ++| #define PICONV_PROG "/usr/bin/piconv" ++| #define HAVE__DEV_RANDOM 1 ++| #define HAVE__DEV_URANDOM 1 ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define TIME_WITH_SYS_TIME 1 ++| #define HAVE__BOOL 1 ++| #define HAVE_STDBOOL_H 1 ++| #define HAVE_ERRNO_H 1 ++| #define HAVE_FCNTL_H 1 ++| #define HAVE_GETOPT_H 1 ++| #define HAVE_LANGINFO_H 1 ++| #define HAVE_LIMITS_H 1 ++| #define HAVE_LOCALE_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define HAVE_SYS_TIME_H 1 ++| #define HAVE_TIME_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define HAVE_WORDEXP_H 1 ++| /* end confdefs.h. */ ++| #include ++| #ifdef HAVE_SYS_TYPES_H ++| # include ++| #endif ++| #ifdef HAVE_SYS_STAT_H ++| # include ++| #endif ++| #ifdef STDC_HEADERS ++| # include ++| # include ++| #else ++| # ifdef HAVE_STDLIB_H ++| # include ++| # endif ++| #endif ++| #ifdef HAVE_STRING_H ++| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H ++| # include ++| # endif ++| # include ++| #endif ++| #ifdef HAVE_STRINGS_H ++| # include ++| #endif ++| #ifdef HAVE_INTTYPES_H ++| # include ++| #endif ++| #ifdef HAVE_STDINT_H ++| # include ++| #endif ++| #ifdef HAVE_UNISTD_H ++| # include ++| #endif ++| int ++| main () ++| { ++| if (sizeof ((size_t))) ++| return 0; ++| ; ++| return 0; ++| } ++configure:12615: result: yes ++configure:12626: checking for mode_t ++configure:12626: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12626: $? = 0 ++configure:12626: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++conftest.c: In function 'main': ++conftest.c:88: error: expected expression before ')' token ++configure:12626: $? = 1 ++configure: failed program was: ++| /* confdefs.h */ ++| #define PACKAGE_NAME "Enca" ++| #define PACKAGE_TARNAME "enca" ++| #define PACKAGE_VERSION "1.13" ++| #define PACKAGE_STRING "Enca 1.13" ++| #define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++| #define PACKAGE_URL "" ++| #define PACKAGE "enca" ++| #define VERSION "1.13" ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_STDLIB_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_INTTYPES_H 1 ++| #define HAVE_STDINT_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define __EXTENSIONS__ 1 ++| #define _ALL_SOURCE 1 ++| #define _GNU_SOURCE 1 ++| #define _POSIX_PTHREAD_SEMANTICS 1 ++| #define _TANDEM_SOURCE 1 ++| #define HAVE_DLFCN_H 1 ++| #define LT_OBJDIR ".libs/" ++| #define PICONV_PROG "/usr/bin/piconv" ++| #define HAVE__DEV_RANDOM 1 ++| #define HAVE__DEV_URANDOM 1 ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define TIME_WITH_SYS_TIME 1 ++| #define HAVE__BOOL 1 ++| #define HAVE_STDBOOL_H 1 ++| #define HAVE_ERRNO_H 1 ++| #define HAVE_FCNTL_H 1 ++| #define HAVE_GETOPT_H 1 ++| #define HAVE_LANGINFO_H 1 ++| #define HAVE_LIMITS_H 1 ++| #define HAVE_LOCALE_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define HAVE_SYS_TIME_H 1 ++| #define HAVE_TIME_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define HAVE_WORDEXP_H 1 ++| /* end confdefs.h. */ ++| #include ++| #ifdef HAVE_SYS_TYPES_H ++| # include ++| #endif ++| #ifdef HAVE_SYS_STAT_H ++| # include ++| #endif ++| #ifdef STDC_HEADERS ++| # include ++| # include ++| #else ++| # ifdef HAVE_STDLIB_H ++| # include ++| # endif ++| #endif ++| #ifdef HAVE_STRING_H ++| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H ++| # include ++| # endif ++| # include ++| #endif ++| #ifdef HAVE_STRINGS_H ++| # include ++| #endif ++| #ifdef HAVE_INTTYPES_H ++| # include ++| #endif ++| #ifdef HAVE_STDINT_H ++| # include ++| #endif ++| #ifdef HAVE_UNISTD_H ++| # include ++| #endif ++| int ++| main () ++| { ++| if (sizeof ((mode_t))) ++| return 0; ++| ; ++| return 0; ++| } ++configure:12626: result: yes ++configure:12637: checking for off_t ++configure:12637: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12637: $? = 0 ++configure:12637: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++conftest.c: In function 'main': ++conftest.c:88: error: expected expression before ')' token ++configure:12637: $? = 1 ++configure: failed program was: ++| /* confdefs.h */ ++| #define PACKAGE_NAME "Enca" ++| #define PACKAGE_TARNAME "enca" ++| #define PACKAGE_VERSION "1.13" ++| #define PACKAGE_STRING "Enca 1.13" ++| #define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++| #define PACKAGE_URL "" ++| #define PACKAGE "enca" ++| #define VERSION "1.13" ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_STDLIB_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_INTTYPES_H 1 ++| #define HAVE_STDINT_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define __EXTENSIONS__ 1 ++| #define _ALL_SOURCE 1 ++| #define _GNU_SOURCE 1 ++| #define _POSIX_PTHREAD_SEMANTICS 1 ++| #define _TANDEM_SOURCE 1 ++| #define HAVE_DLFCN_H 1 ++| #define LT_OBJDIR ".libs/" ++| #define PICONV_PROG "/usr/bin/piconv" ++| #define HAVE__DEV_RANDOM 1 ++| #define HAVE__DEV_URANDOM 1 ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define TIME_WITH_SYS_TIME 1 ++| #define HAVE__BOOL 1 ++| #define HAVE_STDBOOL_H 1 ++| #define HAVE_ERRNO_H 1 ++| #define HAVE_FCNTL_H 1 ++| #define HAVE_GETOPT_H 1 ++| #define HAVE_LANGINFO_H 1 ++| #define HAVE_LIMITS_H 1 ++| #define HAVE_LOCALE_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define HAVE_SYS_TIME_H 1 ++| #define HAVE_TIME_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define HAVE_WORDEXP_H 1 ++| /* end confdefs.h. */ ++| #include ++| #ifdef HAVE_SYS_TYPES_H ++| # include ++| #endif ++| #ifdef HAVE_SYS_STAT_H ++| # include ++| #endif ++| #ifdef STDC_HEADERS ++| # include ++| # include ++| #else ++| # ifdef HAVE_STDLIB_H ++| # include ++| # endif ++| #endif ++| #ifdef HAVE_STRING_H ++| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H ++| # include ++| # endif ++| # include ++| #endif ++| #ifdef HAVE_STRINGS_H ++| # include ++| #endif ++| #ifdef HAVE_INTTYPES_H ++| # include ++| #endif ++| #ifdef HAVE_STDINT_H ++| # include ++| #endif ++| #ifdef HAVE_UNISTD_H ++| # include ++| #endif ++| int ++| main () ++| { ++| if (sizeof ((off_t))) ++| return 0; ++| ; ++| return 0; ++| } ++configure:12637: result: yes ++configure:12648: checking for pid_t ++configure:12648: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12648: $? = 0 ++configure:12648: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++conftest.c: In function 'main': ++conftest.c:88: error: expected expression before ')' token ++configure:12648: $? = 1 ++configure: failed program was: ++| /* confdefs.h */ ++| #define PACKAGE_NAME "Enca" ++| #define PACKAGE_TARNAME "enca" ++| #define PACKAGE_VERSION "1.13" ++| #define PACKAGE_STRING "Enca 1.13" ++| #define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++| #define PACKAGE_URL "" ++| #define PACKAGE "enca" ++| #define VERSION "1.13" ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_STDLIB_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_INTTYPES_H 1 ++| #define HAVE_STDINT_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define __EXTENSIONS__ 1 ++| #define _ALL_SOURCE 1 ++| #define _GNU_SOURCE 1 ++| #define _POSIX_PTHREAD_SEMANTICS 1 ++| #define _TANDEM_SOURCE 1 ++| #define HAVE_DLFCN_H 1 ++| #define LT_OBJDIR ".libs/" ++| #define PICONV_PROG "/usr/bin/piconv" ++| #define HAVE__DEV_RANDOM 1 ++| #define HAVE__DEV_URANDOM 1 ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define TIME_WITH_SYS_TIME 1 ++| #define HAVE__BOOL 1 ++| #define HAVE_STDBOOL_H 1 ++| #define HAVE_ERRNO_H 1 ++| #define HAVE_FCNTL_H 1 ++| #define HAVE_GETOPT_H 1 ++| #define HAVE_LANGINFO_H 1 ++| #define HAVE_LIMITS_H 1 ++| #define HAVE_LOCALE_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define HAVE_SYS_TIME_H 1 ++| #define HAVE_TIME_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define HAVE_WORDEXP_H 1 ++| /* end confdefs.h. */ ++| #include ++| #ifdef HAVE_SYS_TYPES_H ++| # include ++| #endif ++| #ifdef HAVE_SYS_STAT_H ++| # include ++| #endif ++| #ifdef STDC_HEADERS ++| # include ++| # include ++| #else ++| # ifdef HAVE_STDLIB_H ++| # include ++| # endif ++| #endif ++| #ifdef HAVE_STRING_H ++| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H ++| # include ++| # endif ++| # include ++| #endif ++| #ifdef HAVE_STRINGS_H ++| # include ++| #endif ++| #ifdef HAVE_INTTYPES_H ++| # include ++| #endif ++| #ifdef HAVE_STDINT_H ++| # include ++| #endif ++| #ifdef HAVE_UNISTD_H ++| # include ++| #endif ++| int ++| main () ++| { ++| if (sizeof ((pid_t))) ++| return 0; ++| ; ++| return 0; ++| } ++configure:12648: result: yes ++configure:12659: checking for uid_t in sys/types.h ++configure:12678: result: yes ++configure:12689: checking for ssize_t ++configure:12689: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12689: $? = 0 ++configure:12689: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++conftest.c: In function 'main': ++conftest.c:88: error: expected expression before ')' token ++configure:12689: $? = 1 ++configure: failed program was: ++| /* confdefs.h */ ++| #define PACKAGE_NAME "Enca" ++| #define PACKAGE_TARNAME "enca" ++| #define PACKAGE_VERSION "1.13" ++| #define PACKAGE_STRING "Enca 1.13" ++| #define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++| #define PACKAGE_URL "" ++| #define PACKAGE "enca" ++| #define VERSION "1.13" ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_STDLIB_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_INTTYPES_H 1 ++| #define HAVE_STDINT_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define __EXTENSIONS__ 1 ++| #define _ALL_SOURCE 1 ++| #define _GNU_SOURCE 1 ++| #define _POSIX_PTHREAD_SEMANTICS 1 ++| #define _TANDEM_SOURCE 1 ++| #define HAVE_DLFCN_H 1 ++| #define LT_OBJDIR ".libs/" ++| #define PICONV_PROG "/usr/bin/piconv" ++| #define HAVE__DEV_RANDOM 1 ++| #define HAVE__DEV_URANDOM 1 ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define TIME_WITH_SYS_TIME 1 ++| #define HAVE__BOOL 1 ++| #define HAVE_STDBOOL_H 1 ++| #define HAVE_ERRNO_H 1 ++| #define HAVE_FCNTL_H 1 ++| #define HAVE_GETOPT_H 1 ++| #define HAVE_LANGINFO_H 1 ++| #define HAVE_LIMITS_H 1 ++| #define HAVE_LOCALE_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define HAVE_SYS_TIME_H 1 ++| #define HAVE_TIME_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define HAVE_WORDEXP_H 1 ++| /* end confdefs.h. */ ++| #include ++| #ifdef HAVE_SYS_TYPES_H ++| # include ++| #endif ++| #ifdef HAVE_SYS_STAT_H ++| # include ++| #endif ++| #ifdef STDC_HEADERS ++| # include ++| # include ++| #else ++| # ifdef HAVE_STDLIB_H ++| # include ++| # endif ++| #endif ++| #ifdef HAVE_STRING_H ++| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H ++| # include ++| # endif ++| # include ++| #endif ++| #ifdef HAVE_STRINGS_H ++| # include ++| #endif ++| #ifdef HAVE_INTTYPES_H ++| # include ++| #endif ++| #ifdef HAVE_STDINT_H ++| # include ++| #endif ++| #ifdef HAVE_UNISTD_H ++| # include ++| #endif ++| int ++| main () ++| { ++| if (sizeof ((ssize_t))) ++| return 0; ++| ; ++| return 0; ++| } ++configure:12689: result: yes ++configure:12701: checking whether LC_MESSAGES is declared ++configure:12701: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:12701: $? = 0 ++configure:12701: result: yes ++configure:12715: checking for program_invocation_short_name ++configure:12731: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:12731: $? = 0 ++configure:12739: result: yes ++configure:12749: checking vfork.h usability ++configure:12749: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++conftest.c:87:19: error: vfork.h: No such file or directory ++configure:12749: $? = 1 ++configure: failed program was: ++| /* confdefs.h */ ++| #define PACKAGE_NAME "Enca" ++| #define PACKAGE_TARNAME "enca" ++| #define PACKAGE_VERSION "1.13" ++| #define PACKAGE_STRING "Enca 1.13" ++| #define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++| #define PACKAGE_URL "" ++| #define PACKAGE "enca" ++| #define VERSION "1.13" ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_STDLIB_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_INTTYPES_H 1 ++| #define HAVE_STDINT_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define __EXTENSIONS__ 1 ++| #define _ALL_SOURCE 1 ++| #define _GNU_SOURCE 1 ++| #define _POSIX_PTHREAD_SEMANTICS 1 ++| #define _TANDEM_SOURCE 1 ++| #define HAVE_DLFCN_H 1 ++| #define LT_OBJDIR ".libs/" ++| #define PICONV_PROG "/usr/bin/piconv" ++| #define HAVE__DEV_RANDOM 1 ++| #define HAVE__DEV_URANDOM 1 ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define TIME_WITH_SYS_TIME 1 ++| #define HAVE__BOOL 1 ++| #define HAVE_STDBOOL_H 1 ++| #define HAVE_ERRNO_H 1 ++| #define HAVE_FCNTL_H 1 ++| #define HAVE_GETOPT_H 1 ++| #define HAVE_LANGINFO_H 1 ++| #define HAVE_LIMITS_H 1 ++| #define HAVE_LOCALE_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define HAVE_SYS_TIME_H 1 ++| #define HAVE_TIME_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define HAVE_WORDEXP_H 1 ++| #define HAVE_DECL_LC_MESSAGES 1 ++| #define HAVE_PROGRAM_INVOCATION_SHORT_NAME 1 ++| /* end confdefs.h. */ ++| #include ++| #ifdef HAVE_SYS_TYPES_H ++| # include ++| #endif ++| #ifdef HAVE_SYS_STAT_H ++| # include ++| #endif ++| #ifdef STDC_HEADERS ++| # include ++| # include ++| #else ++| # ifdef HAVE_STDLIB_H ++| # include ++| # endif ++| #endif ++| #ifdef HAVE_STRING_H ++| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H ++| # include ++| # endif ++| # include ++| #endif ++| #ifdef HAVE_STRINGS_H ++| # include ++| #endif ++| #ifdef HAVE_INTTYPES_H ++| # include ++| #endif ++| #ifdef HAVE_STDINT_H ++| # include ++| #endif ++| #ifdef HAVE_UNISTD_H ++| # include ++| #endif ++| #include ++configure:12749: result: no ++configure:12749: checking vfork.h presence ++configure:12749: gcc -E conftest.c ++conftest.c:54:19: error: vfork.h: No such file or directory ++configure:12749: $? = 1 ++configure: failed program was: ++| /* confdefs.h */ ++| #define PACKAGE_NAME "Enca" ++| #define PACKAGE_TARNAME "enca" ++| #define PACKAGE_VERSION "1.13" ++| #define PACKAGE_STRING "Enca 1.13" ++| #define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++| #define PACKAGE_URL "" ++| #define PACKAGE "enca" ++| #define VERSION "1.13" ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_STDLIB_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_INTTYPES_H 1 ++| #define HAVE_STDINT_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define __EXTENSIONS__ 1 ++| #define _ALL_SOURCE 1 ++| #define _GNU_SOURCE 1 ++| #define _POSIX_PTHREAD_SEMANTICS 1 ++| #define _TANDEM_SOURCE 1 ++| #define HAVE_DLFCN_H 1 ++| #define LT_OBJDIR ".libs/" ++| #define PICONV_PROG "/usr/bin/piconv" ++| #define HAVE__DEV_RANDOM 1 ++| #define HAVE__DEV_URANDOM 1 ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define TIME_WITH_SYS_TIME 1 ++| #define HAVE__BOOL 1 ++| #define HAVE_STDBOOL_H 1 ++| #define HAVE_ERRNO_H 1 ++| #define HAVE_FCNTL_H 1 ++| #define HAVE_GETOPT_H 1 ++| #define HAVE_LANGINFO_H 1 ++| #define HAVE_LIMITS_H 1 ++| #define HAVE_LOCALE_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define HAVE_SYS_TIME_H 1 ++| #define HAVE_TIME_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define HAVE_WORDEXP_H 1 ++| #define HAVE_DECL_LC_MESSAGES 1 ++| #define HAVE_PROGRAM_INVOCATION_SHORT_NAME 1 ++| /* end confdefs.h. */ ++| #include ++configure:12749: result: no ++configure:12749: checking for vfork.h ++configure:12749: result: no ++configure:12762: checking for fork ++configure:12762: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++conftest.c:77: warning: conflicting types for built-in function 'fork' ++configure:12762: $? = 0 ++configure:12762: result: yes ++configure:12762: checking for vfork ++configure:12762: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:12762: $? = 0 ++configure:12762: result: yes ++configure:12773: checking for working fork ++configure:12795: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:12795: $? = 0 ++configure:12795: ./conftest ++configure:12795: $? = 0 ++configure:12805: result: yes ++configure:12826: checking for working vfork ++configure:12936: result: yes ++configure:12976: checking for canonicalize_file_name ++configure:12976: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:12976: $? = 0 ++configure:12976: result: yes ++configure:12976: checking for ftruncate ++configure:12976: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:12976: $? = 0 ++configure:12976: result: yes ++configure:12976: checking for gettimeofday ++configure:12976: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:12976: $? = 0 ++configure:12976: result: yes ++configure:12976: checking for isatty ++configure:12976: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:12976: $? = 0 ++configure:12976: result: yes ++configure:12976: checking for nl_langinfo ++configure:12976: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:12976: $? = 0 ++configure:12976: result: yes ++configure:12976: checking for random ++configure:12976: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:12976: $? = 0 ++configure:12976: result: yes ++configure:12976: checking for realpath ++configure:12976: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:12976: $? = 0 ++configure:12976: result: yes ++configure:12976: checking for strstr ++configure:12976: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++conftest.c:88: warning: conflicting types for built-in function 'strstr' ++configure:12976: $? = 0 ++configure:12976: result: yes ++configure:12976: checking for stpcpy ++configure:12976: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++conftest.c:89: warning: conflicting types for built-in function 'stpcpy' ++configure:12976: $? = 0 ++configure:12976: result: yes ++configure:12976: checking for setlocale ++configure:12976: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:12976: $? = 0 ++configure:12976: result: yes ++configure:12976: checking for ttyname ++configure:12976: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:12976: $? = 0 ++configure:12976: result: yes ++configure:12976: checking for wordexp ++configure:12976: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:12976: $? = 0 ++configure:12976: result: yes ++configure:12988: checking for getopt_long ++configure:12988: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:12988: $? = 0 ++configure:12988: result: yes ++configure:13046: checking for ld used by GCC ++configure:13110: result: /usr/bin/ld ++configure:13117: checking if the linker (/usr/bin/ld) is GNU ld ++configure:13130: result: yes ++configure:13137: checking for shared library run path origin ++configure:13150: result: done ++configure:13659: checking for iconv ++configure:13681: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:13681: $? = 0 ++configure:13713: result: yes ++configure:13716: checking for working iconv ++configure:13792: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm >&5 ++configure:13792: $? = 0 ++configure:13792: ./conftest ++configure:13792: $? = 0 ++configure:13804: result: yes ++configure:13832: checking for iconv declaration ++configure:13861: gcc -c -Wall -W -pedantic -g -O2 conftest.c >&5 ++configure:13861: $? = 0 ++configure:13872: result: install-shextern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); ++configure:13886: checking whether iconv implementation is usable ++iconvcap: checking for ISO8859-1 -> Unicode... found ISO-8859-1 -> UCS2 ++iconvcap: checking for ASCII -> Unicode... found ASCII -> UCS2 ++iconvcap: checking for BALTIC -> Unicode... found BALTIC -> UCS2 ++iconvcap: checking for CP1125 -> Unicode... found CP1125 -> UCS2 ++iconvcap: checking for CP1250 -> Unicode... found CP1250 -> UCS2 ++iconvcap: checking for CP1251 -> Unicode... found CP1251 -> UCS2 ++iconvcap: checking for CP1257 -> Unicode... found CP1257 -> UCS2 ++iconvcap: checking for ECMA113 -> Unicode... found ECMA-cyrillic -> UCS2 ++iconvcap: checking for IBM852 -> Unicode... found IBM852 -> UCS2 ++iconvcap: checking for IBM855 -> Unicode... found IBM855 -> UCS2 ++iconvcap: checking for IBM775 -> Unicode... found IBM775 -> UCS2 ++iconvcap: checking for IBM866 -> Unicode... found IBM866 -> UCS2 ++iconvcap: checking for ISO88592 -> Unicode... found ISO-8859-2 -> UCS2 ++iconvcap: checking for ISO88594 -> Unicode... found ISO-8859-4 -> UCS2 ++iconvcap: checking for ISO88595 -> Unicode... found ISO-8859-5 -> UCS2 ++iconvcap: checking for ISO885913 -> Unicode... found ISO-8859-13 -> UCS2 ++iconvcap: checking for ISO885916 -> Unicode... found ISO-8859-16 -> UCS2 ++iconvcap: checking for KEYBCS2 -> Unicode... failed. ++iconvcap: checking for KOI8CS2 -> Unicode... failed. ++iconvcap: checking for KOI8R -> Unicode... found KOI8-R -> UCS2 ++iconvcap: checking for KOI8U -> Unicode... found KOI8-U -> UCS2 ++iconvcap: checking for KOI8UNI -> Unicode... failed. ++iconvcap: checking for MACCE -> Unicode... failed. ++iconvcap: checking for MACCYR -> Unicode... found MACCYRILLIC -> UCS2 ++iconvcap: checking for LATEX -> Unicode... failed. ++iconvcap: checking for UCS2 -> Unicode... found UCS-2 -> UCS2 ++iconvcap: checking for UCS4 -> Unicode... found UCS-4 -> UCS2 ++iconvcap: checking for UTF7 -> Unicode... found UTF-7 -> UCS2 ++iconvcap: checking for UTF8 -> Unicode... found UTF-8 -> UCS2 ++iconvcap: checking for CORK -> Unicode... failed. ++iconvcap: checking for GBK -> Unicode... found GBK -> UCS2 ++iconvcap: checking for BIG5 -> Unicode... found BIG5 -> UCS2 ++iconvcap: checking for HZ -> Unicode... failed. ++configure:13897: result: yes ++configure:13903: checking whether iconv is transitive ++iconvcap: transitivity OK ++configure:13914: result: yes ++configure:13959: checking for recode_new_outer in librecode ++configure:13975: gcc -o conftest -Wall -W -pedantic -g -O2 conftest.c -lm -lrecode >&5 ++conftest.c: In function 'main': ++conftest.c:79: warning: implicit declaration of function 'recode_new_outer' ++/usr/bin/ld: cannot find -lrecode ++collect2: ld returned 1 exit status ++configure:13975: $? = 1 ++configure: failed program was: ++| /* confdefs.h */ ++| #define PACKAGE_NAME "Enca" ++| #define PACKAGE_TARNAME "enca" ++| #define PACKAGE_VERSION "1.13" ++| #define PACKAGE_STRING "Enca 1.13" ++| #define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++| #define PACKAGE_URL "" ++| #define PACKAGE "enca" ++| #define VERSION "1.13" ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_STDLIB_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_INTTYPES_H 1 ++| #define HAVE_STDINT_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define __EXTENSIONS__ 1 ++| #define _ALL_SOURCE 1 ++| #define _GNU_SOURCE 1 ++| #define _POSIX_PTHREAD_SEMANTICS 1 ++| #define _TANDEM_SOURCE 1 ++| #define HAVE_DLFCN_H 1 ++| #define LT_OBJDIR ".libs/" ++| #define PICONV_PROG "/usr/bin/piconv" ++| #define HAVE__DEV_RANDOM 1 ++| #define HAVE__DEV_URANDOM 1 ++| #define STDC_HEADERS 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define TIME_WITH_SYS_TIME 1 ++| #define HAVE__BOOL 1 ++| #define HAVE_STDBOOL_H 1 ++| #define HAVE_ERRNO_H 1 ++| #define HAVE_FCNTL_H 1 ++| #define HAVE_GETOPT_H 1 ++| #define HAVE_LANGINFO_H 1 ++| #define HAVE_LIMITS_H 1 ++| #define HAVE_LOCALE_H 1 ++| #define HAVE_MEMORY_H 1 ++| #define HAVE_STRING_H 1 ++| #define HAVE_STRINGS_H 1 ++| #define HAVE_SYS_STAT_H 1 ++| #define HAVE_SYS_TYPES_H 1 ++| #define HAVE_SYS_WAIT_H 1 ++| #define HAVE_SYS_TIME_H 1 ++| #define HAVE_TIME_H 1 ++| #define HAVE_UNISTD_H 1 ++| #define HAVE_WORDEXP_H 1 ++| #define HAVE_DECL_LC_MESSAGES 1 ++| #define HAVE_PROGRAM_INVOCATION_SHORT_NAME 1 ++| #define HAVE_FORK 1 ++| #define HAVE_VFORK 1 ++| #define HAVE_WORKING_VFORK 1 ++| #define HAVE_WORKING_FORK 1 ++| #define HAVE_CANONICALIZE_FILE_NAME 1 ++| #define HAVE_FTRUNCATE 1 ++| #define HAVE_GETTIMEOFDAY 1 ++| #define HAVE_ISATTY 1 ++| #define HAVE_NL_LANGINFO 1 ++| #define HAVE_RANDOM 1 ++| #define HAVE_REALPATH 1 ++| #define HAVE_STRSTR 1 ++| #define HAVE_STPCPY 1 ++| #define HAVE_SETLOCALE 1 ++| #define HAVE_TTYNAME 1 ++| #define HAVE_WORDEXP 1 ++| #define HAVE_GETOPT_LONG 1 ++| #define HAVE_ICONV 1 ++| #define ICONV_CONST ++| #define HAVE_GOOD_ICONV 1 ++| #define ICONV_IS_TRANSITIVE 1 ++| /* end confdefs.h. */ ++| char* program_name = ""; ++| int ++| main () ++| { ++| recode_new_outer(0); ++| ; ++| return 0; ++| } ++configure:13983: result: no ++configure:14065: checking for locale.alias ++configure:14081: result: /usr/share/locale/locale.alias ++configure:14238: creating ./config.status ++ ++## ---------------------- ## ++## Running config.status. ## ++## ---------------------- ## ++ ++This file was extended by Enca config.status 1.13, which was ++generated by GNU Autoconf 2.65. Invocation command line was ++ ++ CONFIG_FILES = ++ CONFIG_HEADERS = ++ CONFIG_LINKS = ++ CONFIG_COMMANDS = ++ $ ./config.status ++ ++on x200t.openelec.tv ++ ++config.status:1154: creating Makefile ++config.status:1154: creating enca.spec ++config.status:1154: creating enca.pc ++config.status:1154: creating devel-docs/Makefile ++config.status:1154: creating data/Makefile ++config.status:1154: creating lib/Makefile ++config.status:1154: creating script/Makefile ++config.status:1154: creating script/b-cstocs ++config.status:1154: creating script/b-map ++config.status:1154: creating script/b-piconv ++config.status:1154: creating script/b-umap ++config.status:1154: creating src/Makefile ++config.status:1154: creating src/HELP ++config.status:1154: creating test/Makefile ++config.status:1154: creating tools/Makefile ++config.status:1154: creating config.h ++config.status:1374: executing depfiles commands ++config.status:1374: executing libtool commands ++ ++## ---------------- ## ++## Cache variables. ## ++## ---------------- ## ++ ++ac_cv_build=i686-pc-linux-gnu ++ac_cv_c_compiler_gnu=yes ++ac_cv_c_const=yes ++ac_cv_env_CC_set= ++ac_cv_env_CC_value= ++ac_cv_env_CFLAGS_set= ++ac_cv_env_CFLAGS_value= ++ac_cv_env_CPPFLAGS_set= ++ac_cv_env_CPPFLAGS_value= ++ac_cv_env_CPP_set= ++ac_cv_env_CPP_value= ++ac_cv_env_LDFLAGS_set= ++ac_cv_env_LDFLAGS_value= ++ac_cv_env_LIBS_set= ++ac_cv_env_LIBS_value= ++ac_cv_env_build_alias_set= ++ac_cv_env_build_alias_value= ++ac_cv_env_host_alias_set= ++ac_cv_env_host_alias_value= ++ac_cv_env_target_alias_set= ++ac_cv_env_target_alias_value= ++ac_cv_file__dev_arandom=no ++ac_cv_file__dev_random=yes ++ac_cv_file__dev_srandom=no ++ac_cv_file__dev_urandom=yes ++ac_cv_func_canonicalize_file_name=yes ++ac_cv_func_fork=yes ++ac_cv_func_fork_works=yes ++ac_cv_func_ftruncate=yes ++ac_cv_func_getopt_long=yes ++ac_cv_func_gettimeofday=yes ++ac_cv_func_isatty=yes ++ac_cv_func_nl_langinfo=yes ++ac_cv_func_random=yes ++ac_cv_func_realpath=yes ++ac_cv_func_setlocale=yes ++ac_cv_func_stpcpy=yes ++ac_cv_func_strstr=yes ++ac_cv_func_ttyname=yes ++ac_cv_func_vfork=yes ++ac_cv_func_vfork_works=yes ++ac_cv_func_wordexp=yes ++ac_cv_have_decl_LC_MESSAGES=yes ++ac_cv_header_dlfcn_h=yes ++ac_cv_header_errno_h=yes ++ac_cv_header_fcntl_h=yes ++ac_cv_header_getopt_h=yes ++ac_cv_header_inttypes_h=yes ++ac_cv_header_langinfo_h=yes ++ac_cv_header_limits_h=yes ++ac_cv_header_locale_h=yes ++ac_cv_header_memory_h=yes ++ac_cv_header_minix_config_h=no ++ac_cv_header_stat_broken=no ++ac_cv_header_stdbool_h=yes ++ac_cv_header_stdc=yes ++ac_cv_header_stdint_h=yes ++ac_cv_header_stdlib_h=yes ++ac_cv_header_string_h=yes ++ac_cv_header_strings_h=yes ++ac_cv_header_sys_stat_h=yes ++ac_cv_header_sys_time_h=yes ++ac_cv_header_sys_types_h=yes ++ac_cv_header_sys_wait_h=yes ++ac_cv_header_time=yes ++ac_cv_header_time_h=yes ++ac_cv_header_unistd_h=yes ++ac_cv_header_vfork_h=no ++ac_cv_header_wordexp_h=yes ++ac_cv_host=i686-pc-linux-gnu ++ac_cv_lib_m_sqrt=yes ++ac_cv_objext=o ++ac_cv_path_EGREP='/bin/grep -E' ++ac_cv_path_FGREP='/bin/grep -F' ++ac_cv_path_GREP=/bin/grep ++ac_cv_path_MKTEMP_PROG=/bin/mktemp ++ac_cv_path_PICONV_PROG=/usr/bin/piconv ++ac_cv_path_SED=/bin/sed ++ac_cv_path_install='/usr/bin/install -c' ++ac_cv_path_mkdir=/bin/mkdir ++ac_cv_prog_AWK=gawk ++ac_cv_prog_CPP='gcc -E' ++ac_cv_prog_GTKDOC=true ++ac_cv_prog_ac_ct_AR=ar ++ac_cv_prog_ac_ct_CC=gcc ++ac_cv_prog_ac_ct_OBJDUMP=objdump ++ac_cv_prog_ac_ct_RANLIB=ranlib ++ac_cv_prog_ac_ct_STRIP=strip ++ac_cv_prog_cc_c89= ++ac_cv_prog_cc_g=yes ++ac_cv_prog_cc_gcc_c_o=yes ++ac_cv_prog_make_make_set=yes ++ac_cv_safe_to_define___extensions__=yes ++ac_cv_search_strerror='none required' ++ac_cv_type__Bool=yes ++ac_cv_type_mode_t=yes ++ac_cv_type_off_t=yes ++ac_cv_type_pid_t=yes ++ac_cv_type_size_t=yes ++ac_cv_type_ssize_t=yes ++ac_cv_type_uid_t=yes ++acl_cv_hardcode_direct=no ++acl_cv_hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++acl_cv_hardcode_libdir_separator= ++acl_cv_hardcode_minus_L=no ++acl_cv_libext=a ++acl_cv_path_LD=/usr/bin/ld ++acl_cv_prog_gnu_ld=yes ++acl_cv_rpath=done ++acl_cv_shlibext=so ++acl_cv_wl=-Wl, ++am_cv_CC_dependencies_compiler_type=gcc3 ++am_cv_func_iconv=yes ++am_cv_func_iconv_works=yes ++am_cv_lib_iconv=no ++am_cv_prog_cc_stdc= ++am_cv_proto_iconv='extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);' ++am_cv_proto_iconv_arg1= ++lt_cv_deplibs_check_method=pass_all ++lt_cv_file_magic_cmd='$MAGIC_CMD' ++lt_cv_file_magic_test_file= ++lt_cv_ld_reload_flag=-r ++lt_cv_nm_interface='BSD nm' ++lt_cv_objdir=.libs ++lt_cv_path_LD=/usr/bin/ld ++lt_cv_path_NM='/usr/bin/nm -B' ++lt_cv_prog_compiler_c_o=yes ++lt_cv_prog_compiler_pic_works=yes ++lt_cv_prog_compiler_rtti_exceptions=no ++lt_cv_prog_compiler_static_works=yes ++lt_cv_prog_gnu_ld=yes ++lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\''' ++lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' ++lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' ++lt_cv_sys_max_cmd_len=1966080 ++yeti_cv_file_locale_alias=/usr/share/locale/locale.alias ++yeti_cv_lib_c_iconv_transitive=yes ++yeti_cv_lib_c_program_invocation_short_name=yes ++yeti_cv_lib_recode_new_outer=no ++ ++## ----------------- ## ++## Output variables. ## ++## ----------------- ## ++ ++ACLOCAL='${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run aclocal-1.11 -I m4' ++AMDEPBACKSLASH='\' ++AMDEP_FALSE='#' ++AMDEP_TRUE='' ++AMTAR='${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run tar' ++AR='ar' ++AUTOCONF='${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoconf' ++AUTOHEADER='${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoheader' ++AUTOMAKE='${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run automake-1.11' ++AWK='gawk' ++CC='gcc' ++CCDEPMODE='depmode=gcc3' ++CFLAGS='-Wall -W -pedantic -g -O2' ++CONVERTER_LIBS=' ' ++CPP='gcc -E' ++CPPFLAGS='' ++CSTOCS_PROG='' ++CYGPATH_W='echo' ++DEFAULT_CONVERTER_LIST='built-in,iconv' ++DEFAULT_EXTERNAL_CONVERTER='piconv' ++DEFS='-DHAVE_CONFIG_H' ++DEPDIR='.deps' ++DSYMUTIL='' ++DUMPBIN='' ++ECHO_C='' ++ECHO_N='-n' ++ECHO_T='' ++EGREP='/bin/grep -E' ++ENABLE_GTK_DOC_FALSE='#' ++ENABLE_GTK_DOC_TRUE='' ++EXEEXT='' ++FGREP='/bin/grep -F' ++GREP='/bin/grep' ++GTKDOC='true' ++HTML_DIR='${datarootdir}/gtk-doc/html' ++INSTALL_DATA='${INSTALL} -m 644' ++INSTALL_PROGRAM='${INSTALL}' ++INSTALL_SCRIPT='${INSTALL}' ++INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' ++LD='/usr/bin/ld' ++LDFLAGS='' ++LIBICONV='' ++LIBM='-lm' ++LIBOBJS='' ++LIBS=' -lm' ++LIBTOOL='$(SHELL) $(top_builddir)/libtool' ++LIPO='' ++LN_S='ln -s' ++LTLIBICONV='' ++LTLIBOBJS='' ++MAINT='#' ++MAINTAINER_MODE_FALSE='' ++MAINTAINER_MODE_TRUE='#' ++MAKEINFO='${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run makeinfo' ++MAP_PROG='' ++MKDIR_P='/bin/mkdir -p' ++MKTEMP_PROG='/bin/mktemp' ++NM='/usr/bin/nm -B' ++NMEDIT='' ++OBJDUMP='objdump' ++OBJEXT='o' ++OTOOL64='' ++OTOOL='' ++PACKAGE='enca' ++PACKAGE_BUGREPORT='https://bugs.cihar.com/' ++PACKAGE_NAME='Enca' ++PACKAGE_STRING='Enca 1.13' ++PACKAGE_TARNAME='enca' ++PACKAGE_URL='' ++PACKAGE_VERSION='1.13' ++PATH_SEPARATOR=':' ++PICONV_PROG='/usr/bin/piconv' ++RANLIB='ranlib' ++RECODE_PROG='' ++RELEASE='1' ++SED='/bin/sed' ++SET_MAKE='' ++SHELL='/bin/sh' ++SHELL_RANDOM_FILENAME='`/bin/mktemp /tmp/enca-$$-XXXXXXXX`' ++STRIP='strip' ++UMAP_PROG='' ++VERSION='1.13' ++ac_ct_CC='gcc' ++ac_ct_DUMPBIN='' ++am__EXEEXT_FALSE='' ++am__EXEEXT_TRUE='#' ++am__fastdepCC_FALSE='#' ++am__fastdepCC_TRUE='' ++am__include='include' ++am__isrc='' ++am__leading_dot='.' ++am__quote='' ++am__tar='${AMTAR} chof - "$$tardir"' ++am__untar='${AMTAR} xf -' ++bindir='${exec_prefix}/bin' ++build='i686-pc-linux-gnu' ++build_alias='' ++build_cpu='i686' ++build_os='linux-gnu' ++build_vendor='pc' ++datadir='${datarootdir}' ++datarootdir='${prefix}/share' ++docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' ++dvidir='${docdir}' ++exec_prefix='${prefix}' ++host='i686-pc-linux-gnu' ++host_alias='' ++host_cpu='i686' ++host_os='linux-gnu' ++host_vendor='pc' ++htmldir='${docdir}' ++includedir='${prefix}/include' ++infodir='${datarootdir}/info' ++install_sh='${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/install-sh' ++libdir='${exec_prefix}/lib' ++libexecdir='${exec_prefix}/libexec' ++localedir='${datarootdir}/locale' ++localstatedir='${prefix}/var' ++lt_ECHO='echo' ++mandir='${datarootdir}/man' ++mkdir_p='/bin/mkdir -p' ++oldincludedir='/usr/include' ++pdfdir='${docdir}' ++prefix='/usr/local' ++program_transform_name='s,x,x,' ++psdir='${docdir}' ++sbindir='${exec_prefix}/sbin' ++sharedstatedir='${prefix}/com' ++sysconfdir='${prefix}/etc' ++target_alias='' ++ ++## ----------- ## ++## confdefs.h. ## ++## ----------- ## ++ ++/* confdefs.h */ ++#define PACKAGE_NAME "Enca" ++#define PACKAGE_TARNAME "enca" ++#define PACKAGE_VERSION "1.13" ++#define PACKAGE_STRING "Enca 1.13" ++#define PACKAGE_BUGREPORT "https://bugs.cihar.com/" ++#define PACKAGE_URL "" ++#define PACKAGE "enca" ++#define VERSION "1.13" ++#define STDC_HEADERS 1 ++#define HAVE_SYS_TYPES_H 1 ++#define HAVE_SYS_STAT_H 1 ++#define HAVE_STDLIB_H 1 ++#define HAVE_STRING_H 1 ++#define HAVE_MEMORY_H 1 ++#define HAVE_STRINGS_H 1 ++#define HAVE_INTTYPES_H 1 ++#define HAVE_STDINT_H 1 ++#define HAVE_UNISTD_H 1 ++#define __EXTENSIONS__ 1 ++#define _ALL_SOURCE 1 ++#define _GNU_SOURCE 1 ++#define _POSIX_PTHREAD_SEMANTICS 1 ++#define _TANDEM_SOURCE 1 ++#define HAVE_DLFCN_H 1 ++#define LT_OBJDIR ".libs/" ++#define PICONV_PROG "/usr/bin/piconv" ++#define HAVE__DEV_RANDOM 1 ++#define HAVE__DEV_URANDOM 1 ++#define STDC_HEADERS 1 ++#define HAVE_SYS_WAIT_H 1 ++#define TIME_WITH_SYS_TIME 1 ++#define HAVE__BOOL 1 ++#define HAVE_STDBOOL_H 1 ++#define HAVE_ERRNO_H 1 ++#define HAVE_FCNTL_H 1 ++#define HAVE_GETOPT_H 1 ++#define HAVE_LANGINFO_H 1 ++#define HAVE_LIMITS_H 1 ++#define HAVE_LOCALE_H 1 ++#define HAVE_MEMORY_H 1 ++#define HAVE_STRING_H 1 ++#define HAVE_STRINGS_H 1 ++#define HAVE_SYS_STAT_H 1 ++#define HAVE_SYS_TYPES_H 1 ++#define HAVE_SYS_WAIT_H 1 ++#define HAVE_SYS_TIME_H 1 ++#define HAVE_TIME_H 1 ++#define HAVE_UNISTD_H 1 ++#define HAVE_WORDEXP_H 1 ++#define HAVE_DECL_LC_MESSAGES 1 ++#define HAVE_PROGRAM_INVOCATION_SHORT_NAME 1 ++#define HAVE_FORK 1 ++#define HAVE_VFORK 1 ++#define HAVE_WORKING_VFORK 1 ++#define HAVE_WORKING_FORK 1 ++#define HAVE_CANONICALIZE_FILE_NAME 1 ++#define HAVE_FTRUNCATE 1 ++#define HAVE_GETTIMEOFDAY 1 ++#define HAVE_ISATTY 1 ++#define HAVE_NL_LANGINFO 1 ++#define HAVE_RANDOM 1 ++#define HAVE_REALPATH 1 ++#define HAVE_STRSTR 1 ++#define HAVE_STPCPY 1 ++#define HAVE_SETLOCALE 1 ++#define HAVE_TTYNAME 1 ++#define HAVE_WORDEXP 1 ++#define HAVE_GETOPT_LONG 1 ++#define HAVE_ICONV 1 ++#define ICONV_CONST ++#define HAVE_GOOD_ICONV 1 ++#define ICONV_IS_TRANSITIVE 1 ++#define DEFAULT_CONVERTER_LIST "built-in,iconv" ++#define ENABLE_EXTERNAL 1 ++#define DEFAULT_EXTERNAL_CONVERTER "piconv" ++#define HAVE_LOCALE_ALIAS 1 ++#define LOCALE_ALIAS_PATH "/usr/share/locale/locale.alias" ++ ++configure: exit 0 +diff -Naur enca-1.13/config.status enca-1.13.patch/config.status +--- enca-1.13/config.status 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/config.status 2010-04-16 18:41:17.312317308 +0200 +@@ -0,0 +1,2116 @@ ++#! /bin/sh ++# Generated by configure. ++# Run this file to recreate the current configuration. ++# Compiler output produced by configure, useful for debugging ++# configure, is in config.log if it exists. ++ ++debug=false ++ac_cs_recheck=false ++ac_cs_silent=false ++ ++SHELL=${CONFIG_SHELL-/bin/sh} ++export SHELL ++## -------------------- ## ++## M4sh Initialization. ## ++## -------------------- ## ++ ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : ++ emulate sh ++ NULLCMD=: ++ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST +else -+ as_unset=false ++ case `(set -o) 2>/dev/null` in #( ++ *posix*) : ++ set -o posix ;; #( ++ *) : ++ ;; ++esac +fi + - - # IFS - # We need space, tab and new line, in precisely that order. Quoting is -@@ -89,15 +96,15 @@ - IFS=" "" $as_nl" - - # Find who we are. Look in the path if we contain no directory separator. --case $0 in #(( -+case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -- done -+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++ ++as_nl=' ++' ++export as_nl ++# Printing a long string crashes Solaris 7 /usr/bin/printf. ++as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ++as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo ++as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo ++# Prefer a ksh shell builtin over an external printf program on Solaris, ++# but without wasting forks for bash or zsh. ++if test -z "$BASH_VERSION$ZSH_VERSION" \ ++ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then ++ as_echo='print -r --' ++ as_echo_n='print -rn --' ++elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then ++ as_echo='printf %s\n' ++ as_echo_n='printf %s' ++else ++ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then ++ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' ++ as_echo_n='/usr/ucb/echo -n' ++ else ++ as_echo_body='eval expr "X$1" : "X\\(.*\\)"' ++ as_echo_n_body='eval ++ arg=$1; ++ case $arg in #( ++ *"$as_nl"*) ++ expr "X$arg" : "X\\(.*\\)$as_nl"; ++ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; ++ esac; ++ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ++ ' ++ export as_echo_n_body ++ as_echo_n='sh -c $as_echo_n_body as_echo' ++ fi ++ export as_echo_body ++ as_echo='sh -c $as_echo_body as_echo' ++fi ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ PATH_SEPARATOR=: ++ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { ++ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || ++ PATH_SEPARATOR=';' ++ } ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in #(( ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++ done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ exit 1 ++fi ++ ++# Unset variables that we do not need and which cause bugs (e.g. in ++# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" ++# suppresses any "Segmentation fault" message there. '((' could ++# trigger a bug in pdksh 5.2.14. ++for as_var in BASH_ENV ENV MAIL MAILPATH ++do eval test x\${$as_var+set} = xset \ ++ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done - IFS=$as_save_IFS - - ;; -@@ -109,16 +116,12 @@ - fi - if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 -- exit 1 -+ { (exit 1); exit 1; } - fi - --# Unset variables that we do not need and which cause bugs (e.g. in --# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" --# suppresses any "Segmentation fault" message there. '((' could --# trigger a bug in pdksh 5.2.14. --for as_var in BASH_ENV ENV MAIL MAILPATH --do eval test x\${$as_var+set} = xset \ -- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -+# Work around bugs in pre-3.0 UWIN ksh. -+for as_var in ENV MAIL MAILPATH -+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - PS1='$ ' - PS2='> ' -@@ -130,300 +133,330 @@ - LANGUAGE=C - export LANGUAGE - -+# Required to use basename. ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++LC_ALL=C ++export LC_ALL ++LANGUAGE=C ++export LANGUAGE ++ ++# CDPATH. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++ ++# as_fn_error ERROR [LINENO LOG_FD] ++# --------------------------------- ++# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are ++# provided, also output the error to LOG_FD, referencing LINENO. Then exit the ++# script with status $?, using 1 if that was 0. ++as_fn_error () ++{ ++ as_status=$?; test $as_status -eq 0 && as_status=1 ++ if test "$3"; then ++ as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 ++ fi ++ $as_echo "$as_me: error: $1" >&2 ++ as_fn_exit $as_status ++} # as_fn_error ++ ++ ++# as_fn_set_status STATUS ++# ----------------------- ++# Set $? to STATUS, without forking. ++as_fn_set_status () ++{ ++ return $1 ++} # as_fn_set_status ++ ++# as_fn_exit STATUS ++# ----------------- ++# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. ++as_fn_exit () ++{ ++ set +e ++ as_fn_set_status $1 ++ exit $1 ++} # as_fn_exit ++ ++# as_fn_unset VAR ++# --------------- ++# Portably unset VAR. ++as_fn_unset () ++{ ++ { eval $1=; unset $1;} ++} ++as_unset=as_fn_unset ++# as_fn_append VAR VALUE ++# ---------------------- ++# Append the text in VALUE to the end of the definition contained in VAR. Take ++# advantage of any shell optimizations that allow amortized linear growth over ++# repeated appends, instead of the typical quadratic growth present in naive ++# implementations. ++if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : ++ eval 'as_fn_append () ++ { ++ eval $1+=\$2 ++ }' ++else ++ as_fn_append () ++ { ++ eval $1=\$$1\$2 ++ } ++fi # as_fn_append ++ ++# as_fn_arith ARG... ++# ------------------ ++# Perform arithmetic evaluation on the ARGs, and store the result in the ++# global $as_val. Take advantage of shells that can avoid forks. The arguments ++# must be portable across $(()) and expr. ++if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : ++ eval 'as_fn_arith () ++ { ++ as_val=$(( $* )) ++ }' ++else ++ as_fn_arith () ++ { ++ as_val=`expr "$@" || test $? -eq 1` ++ } ++fi # as_fn_arith ++ ++ +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr @@ -155,8 +2519,12 @@ diff -Naur enca-1.12/configure enca-1.12.patch/configure + as_basename=false +fi + ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi + -+# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ @@ -176,11641 +2544,6 @@ diff -Naur enca-1.12/configure enca-1.12.patch/configure + } + s/.*/./; q'` + - # CDPATH. --(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -+$as_unset CDPATH -+ - - if test "x$CONFIG_SHELL" = x; then -- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : -- emulate sh -- NULLCMD=: -- # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which -- # is contrary to our usage. Disable this feature. -- alias -g '\${1+\"\$@\"}'='\"\$@\"' -- setopt NO_GLOB_SUBST -+ if (eval ":") 2>/dev/null; then -+ as_have_required=yes - else -- case \`(set -o) 2>/dev/null\` in #( -- *posix*) : -- set -o posix ;; #( -- *) : -- ;; --esac -+ as_have_required=no - fi --" -- as_required="as_fn_return () { (exit \$1); } --as_fn_success () { as_fn_return 0; } --as_fn_failure () { as_fn_return 1; } --as_fn_ret_success () { return 0; } --as_fn_ret_failure () { return 1; } -+ -+ if test $as_have_required = yes && (eval ": -+(as_func_return () { -+ (exit \$1) -+} -+as_func_success () { -+ as_func_return 0 -+} -+as_func_failure () { -+ as_func_return 1 -+} -+as_func_ret_success () { -+ return 0 -+} -+as_func_ret_failure () { -+ return 1 -+} - - exitcode=0 --as_fn_success || { exitcode=1; echo as_fn_success failed.; } --as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } --as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } --as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } --if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : -- --else -- exitcode=1; echo positional parameters were not saved. --fi --test x\$exitcode = x0 || exit 1" -- as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO -- as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO -- eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && -- test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 --test \$(( 1 + 1 )) = 2 || exit 1" -- if (eval "$as_required") 2>/dev/null; then : -- as_have_required=yes -+if as_func_success; then -+ : - else -- as_have_required=no -+ exitcode=1 -+ echo as_func_success failed. -+fi -+ -+if as_func_failure; then -+ exitcode=1 -+ echo as_func_failure succeeded. - fi -- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -+if as_func_ret_success; then -+ : - else -- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR --as_found=false -+ exitcode=1 -+ echo as_func_ret_success failed. -+fi -+ -+if as_func_ret_failure; then -+ exitcode=1 -+ echo as_func_ret_failure succeeded. -+fi -+ -+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then -+ : -+else -+ exitcode=1 -+ echo positional parameters were not saved. -+fi -+ -+test \$exitcode = 0) || { (exit 1); exit 1; } -+ -+( -+ as_lineno_1=\$LINENO -+ as_lineno_2=\$LINENO -+ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && -+ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -+") 2> /dev/null; then -+ : -+else -+ as_candidate_shells= -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- as_found=: -- case $as_dir in #( -+ case $as_dir in - /*) - for as_base in sh bash ksh sh5; do -- # Try only shells that exist, to save several forks. -- as_shell=$as_dir/$as_base -- if { test -f "$as_shell" || test -f "$as_shell.exe"; } && -- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : -- CONFIG_SHELL=$as_shell as_have_required=yes -- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : -- break 2 --fi --fi -+ as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done;; - esac -- as_found=false - done --$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && -- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : -- CONFIG_SHELL=$SHELL as_have_required=yes --fi; } - IFS=$as_save_IFS - - -- if test "x$CONFIG_SHELL" != x; then : -- # We cannot yet assume a decent shell, so we have to provide a -- # neutralization value for shells without unset; and this also -- # works around shells that cannot unset nonexistent variables. -- BASH_ENV=/dev/null -- ENV=/dev/null -- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -- export CONFIG_SHELL -- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} --fi -+ for as_shell in $as_candidate_shells $SHELL; do -+ # Try only shells that exist, to save several forks. -+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && -+ { ("$as_shell") 2> /dev/null <<\_ASEOF -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+else -+ case `(set -o) 2>/dev/null` in -+ *posix*) set -o posix ;; -+esac - -- if test x$as_have_required = xno; then : -- $as_echo "$0: This script requires a shell more modern than all" -- $as_echo "$0: the shells that I found on your system." -- if test x${ZSH_VERSION+set} = xset ; then -- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" -- $as_echo "$0: be upgraded to zsh 4.3.4 or later." -- else -- $as_echo "$0: Please tell bug-autoconf@gnu.org and Michal Cihar --$0: about your system, including any --$0: error possibly output before this message. Then install --$0: a modern shell, or manually run the script under such a --$0: shell if you do have one." -- fi -- exit 1 --fi - fi -+ -+ -+: -+_ASEOF -+}; then -+ CONFIG_SHELL=$as_shell -+ as_have_required=yes -+ if { "$as_shell" 2> /dev/null <<\_ASEOF -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+else -+ case `(set -o) 2>/dev/null` in -+ *posix*) set -o posix ;; -+esac -+ - fi --SHELL=${CONFIG_SHELL-/bin/sh} --export SHELL --# Unset more variables known to interfere with behavior of common tools. --CLICOLOR_FORCE= GREP_OPTIONS= --unset CLICOLOR_FORCE GREP_OPTIONS - --## --------------------- ## --## M4sh Shell Functions. ## --## --------------------- ## --# as_fn_unset VAR --# --------------- --# Portably unset VAR. --as_fn_unset () --{ -- { eval $1=; unset $1;} --} --as_unset=as_fn_unset -- --# as_fn_set_status STATUS --# ----------------------- --# Set $? to STATUS, without forking. --as_fn_set_status () --{ -- return $1 --} # as_fn_set_status -- --# as_fn_exit STATUS --# ----------------- --# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. --as_fn_exit () --{ -- set +e -- as_fn_set_status $1 -- exit $1 --} # as_fn_exit -- --# as_fn_mkdir_p --# ------------- --# Create "$as_dir" as a directory, including parents if necessary. --as_fn_mkdir_p () --{ - -- case $as_dir in #( -- -*) as_dir=./$as_dir;; -- esac -- test -d "$as_dir" || eval $as_mkdir_p || { -- as_dirs= -- while :; do -- case $as_dir in #( -- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( -- *) as_qdir=$as_dir;; -- esac -- as_dirs="'$as_qdir' $as_dirs" -- as_dir=`$as_dirname -- "$as_dir" || --$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -- X"$as_dir" : 'X\(//\)[^/]' \| \ -- X"$as_dir" : 'X\(//\)$' \| \ -- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || --$as_echo X"$as_dir" | -- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -- s//\1/ -- q -- } -- /^X\(\/\/\)[^/].*/{ -- s//\1/ -- q -- } -- /^X\(\/\/\)$/{ -- s//\1/ -- q -- } -- /^X\(\/\).*/{ -- s//\1/ -- q -- } -- s/.*/./; q'` -- test -d "$as_dir" && break -- done -- test -z "$as_dirs" || eval "mkdir $as_dirs" -- } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" -+: -+(as_func_return () { -+ (exit $1) -+} -+as_func_success () { -+ as_func_return 0 -+} -+as_func_failure () { -+ as_func_return 1 -+} -+as_func_ret_success () { -+ return 0 -+} -+as_func_ret_failure () { -+ return 1 -+} - -+exitcode=0 -+if as_func_success; then -+ : -+else -+ exitcode=1 -+ echo as_func_success failed. -+fi - --} # as_fn_mkdir_p --# as_fn_append VAR VALUE --# ---------------------- --# Append the text in VALUE to the end of the definition contained in VAR. Take --# advantage of any shell optimizations that allow amortized linear growth over --# repeated appends, instead of the typical quadratic growth present in naive --# implementations. --if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : -- eval 'as_fn_append () -- { -- eval $1+=\$2 -- }' -+if as_func_failure; then -+ exitcode=1 -+ echo as_func_failure succeeded. -+fi -+ -+if as_func_ret_success; then -+ : - else -- as_fn_append () -- { -- eval $1=\$$1\$2 -- } --fi # as_fn_append -+ exitcode=1 -+ echo as_func_ret_success failed. -+fi - --# as_fn_arith ARG... --# ------------------ --# Perform arithmetic evaluation on the ARGs, and store the result in the --# global $as_val. Take advantage of shells that can avoid forks. The arguments --# must be portable across $(()) and expr. --if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : -- eval 'as_fn_arith () -- { -- as_val=$(( $* )) -- }' -+if as_func_ret_failure; then -+ exitcode=1 -+ echo as_func_ret_failure succeeded. -+fi -+ -+if ( set x; as_func_ret_success y && test x = "$1" ); then -+ : - else -- as_fn_arith () -- { -- as_val=`expr "$@" || test $? -eq 1` -- } --fi # as_fn_arith -+ exitcode=1 -+ echo positional parameters were not saved. -+fi - -+test $exitcode = 0) || { (exit 1); exit 1; } - --# as_fn_error ERROR [LINENO LOG_FD] --# --------------------------------- --# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are --# provided, also output the error to LOG_FD, referencing LINENO. Then exit the --# script with status $?, using 1 if that was 0. --as_fn_error () --{ -- as_status=$?; test $as_status -eq 0 && as_status=1 -- if test "$3"; then -- as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 -- fi -- $as_echo "$as_me: error: $1" >&2 -- as_fn_exit $as_status --} # as_fn_error -+( -+ as_lineno_1=$LINENO -+ as_lineno_2=$LINENO -+ test "x$as_lineno_1" != "x$as_lineno_2" && -+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - --if expr a : '\(a\)' >/dev/null 2>&1 && -- test "X`expr 00001 : '.*\(...\)'`" = X001; then -- as_expr=expr -+_ASEOF -+}; then -+ break -+fi -+ -+fi -+ -+ done -+ -+ if test "x$CONFIG_SHELL" != x; then -+ for as_var in BASH_ENV ENV -+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -+ done -+ export CONFIG_SHELL -+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -+fi -+ -+ -+ if test $as_have_required = no; then -+ echo This script requires a shell more modern than all the -+ echo shells that I found on your system. Please install a -+ echo modern shell, or manually run the script under such a -+ echo shell if you do have one. -+ { (exit 1); exit 1; } -+fi -+ -+ -+fi -+ -+fi -+ -+ -+ -+(eval "as_func_return () { -+ (exit \$1) -+} -+as_func_success () { -+ as_func_return 0 -+} -+as_func_failure () { -+ as_func_return 1 -+} -+as_func_ret_success () { -+ return 0 -+} -+as_func_ret_failure () { -+ return 1 -+} -+ -+exitcode=0 -+if as_func_success; then -+ : - else -- as_expr=false -+ exitcode=1 -+ echo as_func_success failed. - fi - --if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then -- as_basename=basename -+if as_func_failure; then -+ exitcode=1 -+ echo as_func_failure succeeded. -+fi -+ -+if as_func_ret_success; then -+ : - else -- as_basename=false -+ exitcode=1 -+ echo as_func_ret_success failed. - fi - --if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then -- as_dirname=dirname -+if as_func_ret_failure; then -+ exitcode=1 -+ echo as_func_ret_failure succeeded. -+fi -+ -+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then -+ : - else -- as_dirname=false -+ exitcode=1 -+ echo positional parameters were not saved. - fi - --as_me=`$as_basename -- "$0" || --$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ -- X"$0" : 'X\(//\)$' \| \ -- X"$0" : 'X\(/\)' \| . 2>/dev/null || --$as_echo X/"$0" | -- sed '/^.*\/\([^/][^/]*\)\/*$/{ -- s//\1/ -- q -- } -- /^X\/\(\/\/\)$/{ -- s//\1/ -- q -- } -- /^X\/\(\/\).*/{ -- s//\1/ -- q -- } -- s/.*/./; q'` -+test \$exitcode = 0") || { -+ echo No shell found that supports shell functions. -+ echo Please tell bug-autoconf@gnu.org about your system, -+ echo including any error possibly output before this message. -+ echo This can help us improve future autoconf versions. -+ echo Configuration will now proceed without shell functions. -+} - --# Avoid depending upon Character Ranges. --as_cr_letters='abcdefghijklmnopqrstuvwxyz' --as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' --as_cr_Letters=$as_cr_letters$as_cr_LETTERS --as_cr_digits='0123456789' --as_cr_alnum=$as_cr_Letters$as_cr_digits - - -- as_lineno_1=$LINENO as_lineno_1a=$LINENO -- as_lineno_2=$LINENO as_lineno_2a=$LINENO -- eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && -- test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { -- # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) -+ as_lineno_1=$LINENO -+ as_lineno_2=$LINENO -+ test "x$as_lineno_1" != "x$as_lineno_2" && -+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { -+ -+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO -+ # uniformly replaced by the line number. The first 'sed' inserts a -+ # line-number line after each line using $LINENO; the second 'sed' -+ # does the real work. The second script uses 'N' to pair each -+ # line-number line with the line containing $LINENO, and appends -+ # trailing '-' during substitution so that $LINENO is not a special -+ # case at line end. -+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the -+ # scripts with optimization help from Paolo Bonzini. Blame Lee -+ # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= -@@ -440,7 +473,8 @@ - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || -- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } -+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 -+ { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the -@@ -450,18 +484,29 @@ - exit - } - --ECHO_C= ECHO_N= ECHO_T= --case `echo -n x` in #((((( ---n*) -- case `echo 'xy\c'` in -- *c*) ECHO_T=' ';; # ECHO_T is single tab character. -- xy) ECHO_C='\c';; -- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null -- ECHO_T=' ';; -+ -+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then -+ as_dirname=dirname -+else -+ as_dirname=false -+fi -+ -+ECHO_C= ECHO_N= ECHO_T= -+case `echo -n x` in -+-n*) -+ case `echo 'x\c'` in -+ *c*) ECHO_T=' ';; # ECHO_T is single tab character. -+ *) ECHO_C='\c';; - esac;; - *) - ECHO_N='-n';; - esac -+if expr a : '\(a\)' >/dev/null 2>&1 && -+ test "X`expr 00001 : '.*\(...\)'`" = X001; then -+ as_expr=expr -+else -+ as_expr=false -+fi - - rm -f conf$$ conf$$.exe conf$$.file - if test -d conf$$.dir; then -@@ -491,7 +536,7 @@ - rmdir conf$$.dir 2>/dev/null - - if mkdir -p . 2>/dev/null; then -- as_mkdir_p='mkdir -p "$as_dir"' -+ as_mkdir_p=: - else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -@@ -510,10 +555,10 @@ - if test -d "$1"; then - test -d "$1/."; - else -- case $1 in #( -+ case $1 in - -*)set "./$1";; - esac; -- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( -+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -@@ -528,6 +573,7 @@ - - - -+ - # Check that we are running under the correct shell. - SHELL=${CONFIG_SHELL-/bin/sh} - -@@ -694,6 +740,7 @@ - subdirs= - MFLAGS= - MAKEFLAGS= -+SHELL=${CONFIG_SHELL-/bin/sh} - - # Identity of this package. - PACKAGE_NAME='Enca' -@@ -701,7 +748,6 @@ - PACKAGE_VERSION='1.12' - PACKAGE_STRING='Enca 1.12' - PACKAGE_BUGREPORT='Michal Cihar ' --PACKAGE_URL='' - - ac_unique_file="src/enca.c" - # Factoring default headers for most tests. -@@ -862,7 +908,6 @@ - program_transform_name - prefix - exec_prefix --PACKAGE_URL - PACKAGE_BUGREPORT - PACKAGE_STRING - PACKAGE_VERSION -@@ -1005,7 +1050,8 @@ - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && -- as_fn_error "invalid feature name: $ac_useropt" -+ { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 -+ { (exit 1); exit 1; }; } - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in -@@ -1031,7 +1077,8 @@ - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && -- as_fn_error "invalid feature name: $ac_useropt" -+ { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 -+ { (exit 1); exit 1; }; } - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in -@@ -1235,7 +1282,8 @@ - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && -- as_fn_error "invalid package name: $ac_useropt" -+ { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 -+ { (exit 1); exit 1; }; } - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in -@@ -1251,7 +1299,8 @@ - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && -- as_fn_error "invalid package name: $ac_useropt" -+ { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 -+ { (exit 1); exit 1; }; } - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in -@@ -1281,17 +1330,17 @@ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - -- -*) as_fn_error "unrecognized option: \`$ac_option' --Try \`$0 --help' for more information." -+ -*) { $as_echo "$as_me: error: unrecognized option: $ac_option -+Try \`$0 --help' for more information." >&2 -+ { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. -- case $ac_envvar in #( -- '' | [0-9]* | *[!_$as_cr_alnum]* ) -- as_fn_error "invalid variable name: \`$ac_envvar'" ;; -- esac -+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && -+ { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 -+ { (exit 1); exit 1; }; } - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - -@@ -1308,13 +1357,15 @@ - - if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` -- as_fn_error "missing argument to $ac_option" -+ { $as_echo "$as_me: error: missing argument to $ac_option" >&2 -+ { (exit 1); exit 1; }; } - fi - - if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; -- fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; -+ fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 -+ { (exit 1); exit 1; }; } ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac - fi -@@ -1337,7 +1388,8 @@ - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac -- as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" -+ { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 -+ { (exit 1); exit 1; }; } - done - - # There might be people who depend on the old broken behavior: `$host' -@@ -1367,9 +1419,11 @@ - ac_pwd=`pwd` && test -n "$ac_pwd" && - ac_ls_di=`ls -di .` && - ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || -- as_fn_error "working directory cannot be determined" -+ { $as_echo "$as_me: error: working directory cannot be determined" >&2 -+ { (exit 1); exit 1; }; } - test "X$ac_ls_di" = "X$ac_pwd_ls_di" || -- as_fn_error "pwd does not report name of working directory" -+ { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 -+ { (exit 1); exit 1; }; } - - - # Find the source files, if location was not specified. -@@ -1408,11 +1462,13 @@ - fi - if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." -- as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" -+ { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 -+ { (exit 1); exit 1; }; } - fi - ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" - ac_abs_confdir=`( -- cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" -+ cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 -+ { (exit 1); exit 1; }; } - pwd)` - # When building in place, set srcdir=. - if test "$ac_abs_confdir" = "$ac_pwd"; then -@@ -1618,471 +1674,21 @@ - if $ac_init_version; then - cat <<\_ACEOF - Enca configure 1.12 --generated by GNU Autoconf 2.64 -+generated by GNU Autoconf 2.63 - --Copyright (C) 2009 Free Software Foundation, Inc. -+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. - This configure script is free software; the Free Software Foundation - gives unlimited permission to copy, distribute and modify it. - _ACEOF - exit - fi -- --## ------------------------ ## --## Autoconf initialization. ## --## ------------------------ ## -- --# ac_fn_c_try_compile LINENO --# -------------------------- --# Try to compile conftest.$ac_ext, and return whether this succeeded. --ac_fn_c_try_compile () --{ -- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- rm -f conftest.$ac_objext -- if { { ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -- (eval "$ac_compile") 2>conftest.err -- ac_status=$? -- if test -s conftest.err; then -- grep -v '^ *+' conftest.err >conftest.er1 -- cat conftest.er1 >&5 -- mv -f conftest.er1 conftest.err -- fi -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then : -- ac_retval=0 --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_retval=1 --fi -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -- return $ac_retval -- --} # ac_fn_c_try_compile -- --# ac_fn_c_try_cpp LINENO --# ---------------------- --# Try to preprocess conftest.$ac_ext, and return whether this succeeded. --ac_fn_c_try_cpp () --{ -- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- if { { ac_try="$ac_cpp conftest.$ac_ext" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err -- ac_status=$? -- if test -s conftest.err; then -- grep -v '^ *+' conftest.err >conftest.er1 -- cat conftest.er1 >&5 -- mv -f conftest.er1 conftest.err -- fi -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } >/dev/null && { -- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -- test ! -s conftest.err -- }; then : -- ac_retval=0 --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_retval=1 --fi -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -- return $ac_retval -- --} # ac_fn_c_try_cpp -- --# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES --# ------------------------------------------------------- --# Tests whether HEADER exists, giving a warning if it cannot be compiled using --# the include files in INCLUDES and setting the cache variable VAR --# accordingly. --ac_fn_c_check_header_mongrel () --{ -- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 --$as_echo_n "checking for $2... " >&6; } --if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : -- $as_echo_n "(cached) " >&6 --fi --eval ac_res=\$$3 -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --else -- # Is the header compilable? --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 --$as_echo_n "checking $2 usability... " >&6; } --cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --$4 --#include <$2> --_ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -- ac_header_compiler=yes --else -- ac_header_compiler=no --fi --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 --$as_echo "$ac_header_compiler" >&6; } -- --# Is the header present? --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 --$as_echo_n "checking $2 presence... " >&6; } --cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --#include <$2> --_ACEOF --if ac_fn_c_try_cpp "$LINENO"; then : -- ac_header_preproc=yes --else -- ac_header_preproc=no --fi --rm -f conftest.err conftest.$ac_ext --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 --$as_echo "$ac_header_preproc" >&6; } -- --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( -- yes:no: ) -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 --$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 --$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -- ;; -- no:yes:* ) -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 --$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 --$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 --$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 --$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 --$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} --( cat <<\_ASBOX --## ---------------------------------------------- ## --## Report this to Michal Cihar ## --## ---------------------------------------------- ## --_ASBOX -- ) | sed "s/^/$as_me: WARNING: /" >&2 -- ;; --esac -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 --$as_echo_n "checking for $2... " >&6; } --if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : -- $as_echo_n "(cached) " >&6 --else -- eval "$3=\$ac_header_compiler" --fi --eval ac_res=\$$3 -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --fi -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -- --} # ac_fn_c_check_header_mongrel -- --# ac_fn_c_try_run LINENO --# ---------------------- --# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes --# that executables *can* be run. --ac_fn_c_try_run () --{ -- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- if { { ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -- (eval "$ac_link") 2>&5 -- ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' -- { { case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -- (eval "$ac_try") 2>&5 -- ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; }; then : -- ac_retval=0 --else -- $as_echo "$as_me: program exited with status $ac_status" >&5 -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_retval=$ac_status --fi -- rm -rf conftest.dSYM conftest_ipa8_conftest.oo -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -- return $ac_retval -- --} # ac_fn_c_try_run -- --# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES --# ------------------------------------------------------- --# Tests whether HEADER exists and can be compiled using the include files in --# INCLUDES, setting the cache variable VAR accordingly. --ac_fn_c_check_header_compile () --{ -- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 --$as_echo_n "checking for $2... " >&6; } --if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : -- $as_echo_n "(cached) " >&6 --else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --$4 --#include <$2> --_ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -- eval "$3=yes" --else -- eval "$3=no" --fi --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi --eval ac_res=\$$3 -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -- --} # ac_fn_c_check_header_compile -- --# ac_fn_c_try_link LINENO --# ----------------------- --# Try to link conftest.$ac_ext, and return whether this succeeded. --ac_fn_c_try_link () --{ -- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- rm -f conftest.$ac_objext conftest$ac_exeext -- if { { ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -- (eval "$ac_link") 2>conftest.err -- ac_status=$? -- if test -s conftest.err; then -- grep -v '^ *+' conftest.err >conftest.er1 -- cat conftest.er1 >&5 -- mv -f conftest.er1 conftest.err -- fi -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then : -- ac_retval=0 --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_retval=1 --fi -- # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information -- # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would -- # interfere with the next link command; also delete a directory that is -- # left behind by Apple's compiler. We do this before executing the actions. -- rm -rf conftest.dSYM conftest_ipa8_conftest.oo -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -- return $ac_retval -- --} # ac_fn_c_try_link -- --# ac_fn_c_check_func LINENO FUNC VAR --# ---------------------------------- --# Tests whether FUNC exists, setting the cache variable VAR accordingly --ac_fn_c_check_func () --{ -- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 --$as_echo_n "checking for $2... " >&6; } --if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : -- $as_echo_n "(cached) " >&6 --else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --/* Define $2 to an innocuous variant, in case declares $2. -- For example, HP-UX 11i declares gettimeofday. */ --#define $2 innocuous_$2 -- --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $2 (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -- --#ifdef __STDC__ --# include --#else --# include --#endif -- --#undef $2 -- --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char $2 (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$2 || defined __stub___$2 --choke me --#endif -- --int --main () --{ --return $2 (); -- ; -- return 0; --} --_ACEOF --if ac_fn_c_try_link "$LINENO"; then : -- eval "$3=yes" --else -- eval "$3=no" --fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext --fi --eval ac_res=\$$3 -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -- --} # ac_fn_c_check_func -- --# ac_fn_c_check_type LINENO TYPE VAR INCLUDES --# ------------------------------------------- --# Tests whether TYPE exists after having included INCLUDES, setting cache --# variable VAR accordingly. --ac_fn_c_check_type () --{ -- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 --$as_echo_n "checking for $2... " >&6; } --if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : -- $as_echo_n "(cached) " >&6 --else -- eval "$3=no" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --$4 --int --main () --{ --if (sizeof ($2)) -- return 0; -- ; -- return 0; --} --_ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --$4 --int --main () --{ --if (sizeof (($2))) -- return 0; -- ; -- return 0; --} --_ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -- --else -- eval "$3=yes" --fi --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi --eval ac_res=\$$3 -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -- --} # ac_fn_c_check_type -- --# ac_fn_c_check_decl LINENO SYMBOL VAR --# ------------------------------------ --# Tests whether SYMBOL is declared, setting cache variable VAR accordingly. --ac_fn_c_check_decl () --{ -- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $2 is declared" >&5 --$as_echo_n "checking whether $2 is declared... " >&6; } --if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : -- $as_echo_n "(cached) " >&6 --else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --$4 --int --main () --{ --#ifndef $2 -- (void) $2; --#endif -- -- ; -- return 0; --} --_ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -- eval "$3=yes" --else -- eval "$3=no" --fi --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi --eval ac_res=\$$3 -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } -- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} -- --} # ac_fn_c_check_decl - cat >config.log <<_ACEOF - This file contains any messages produced by compilers while - running configure, to aid debugging if configure makes a mistake. - - It was created by Enca $as_me 1.12, which was --generated by GNU Autoconf 2.64. Invocation command line was -+generated by GNU Autoconf 2.63. Invocation command line was - - $ $0 $@ - -@@ -2118,8 +1724,8 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- $as_echo "PATH: $as_dir" -- done -+ $as_echo "PATH: $as_dir" -+done - IFS=$as_save_IFS - - } >&5 -@@ -2156,9 +1762,9 @@ - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in -- 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; -+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) -- as_fn_append ac_configure_args1 " '$ac_arg'" -+ ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else -@@ -2174,13 +1780,13 @@ - -* ) ac_must_keep_next=true ;; - esac - fi -- as_fn_append ac_configure_args " '$ac_arg'" -+ ac_configure_args="$ac_configure_args '$ac_arg'" - ;; - esac - done - done --{ ac_configure_args0=; unset ac_configure_args0;} --{ ac_configure_args1=; unset ac_configure_args1;} -+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - - # When interrupted or exit'd, cleanup temporary files, and complete - # config.log. We remove comments because anyway the quotes in there -@@ -2205,13 +1811,13 @@ - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( -- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -+ *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 - $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( -- *) { eval $ac_var=; unset $ac_var;} ;; -+ *) $as_unset $ac_var ;; - esac ;; - esac - done -@@ -2283,39 +1889,37 @@ - exit $exit_status - ' 0 - for ac_signal in 1 2 13 15; do -- trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal - done - ac_signal=0 - - # confdefs.h avoids OS command line length limits that DEFS can exceed. - rm -f -r conftest* confdefs.h - --$as_echo "/* confdefs.h */" > confdefs.h -- - # Predefined preprocessor variables. - - cat >>confdefs.h <<_ACEOF - #define PACKAGE_NAME "$PACKAGE_NAME" - _ACEOF - -+ - cat >>confdefs.h <<_ACEOF - #define PACKAGE_TARNAME "$PACKAGE_TARNAME" - _ACEOF - -+ - cat >>confdefs.h <<_ACEOF - #define PACKAGE_VERSION "$PACKAGE_VERSION" - _ACEOF - -+ - cat >>confdefs.h <<_ACEOF - #define PACKAGE_STRING "$PACKAGE_STRING" - _ACEOF - --cat >>confdefs.h <<_ACEOF --#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" --_ACEOF - - cat >>confdefs.h <<_ACEOF --#define PACKAGE_URL "$PACKAGE_URL" -+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" - _ACEOF - - -@@ -2336,7 +1940,7 @@ - do - test "x$ac_site_file" = xNONE && continue - if test -r "$ac_site_file"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -+ { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 - $as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" -@@ -2347,7 +1951,7 @@ - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -+ { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 - $as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; -@@ -2355,7 +1959,7 @@ - esac - fi - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -+ { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 - $as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file - fi -@@ -2370,11 +1974,11 @@ - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) -- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 - $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) -- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 - $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; -@@ -2384,17 +1988,17 @@ - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 - $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -+ { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 - $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi -- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -+ { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 - $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} -- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -+ { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 - $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac -@@ -2406,50 +2010,81 @@ - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. -- *) as_fn_append ac_configure_args " '$ac_arg'" ;; -+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi - done - if $ac_cache_corrupted; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -+ { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 - $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} -- as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -+$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} -+ { (exit 1); exit 1; }; } - fi --## -------------------- ## --## Main body of script. ## --## -------------------- ## - --ac_ext=c --ac_cpp='$CPP $CPPFLAGS' --ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' --ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' --ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - --ac_config_files="$ac_config_files Makefile enca.spec enca.pc devel-docs/Makefile data/Makefile lib/Makefile script/Makefile script/b-cstocs script/b-map script/b-piconv script/b-umap src/Makefile src/HELP test/Makefile tools/Makefile" - - --ac_config_headers="$ac_config_headers config.h" - --am__api_version='1.11' - --ac_aux_dir= --for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do -- for ac_t in install-sh install.sh shtool; do -- if test -f "$ac_dir/$ac_t"; then -- ac_aux_dir=$ac_dir -- ac_install_sh="$ac_aux_dir/$ac_t -c" -- break 2 -- fi -- done -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+ -+ -+ -+ac_config_files="$ac_config_files Makefile enca.spec enca.pc devel-docs/Makefile data/Makefile lib/Makefile script/Makefile script/b-cstocs script/b-map script/b-piconv script/b-umap src/Makefile src/HELP test/Makefile tools/Makefile" -+ -+ -+ac_config_headers="$ac_config_headers config.h" -+ -+am__api_version='1.11' -+ -+ac_aux_dir= -+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do -+ if test -f "$ac_dir/install-sh"; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/install-sh -c" -+ break -+ elif test -f "$ac_dir/install.sh"; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/install.sh -c" -+ break -+ elif test -f "$ac_dir/shtool"; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/shtool install -c" -+ break -+ fi - done - if test -z "$ac_aux_dir"; then -- as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 -+$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} -+ { (exit 1); exit 1; }; } - fi - - # These three variables are undocumented and unsupported, -@@ -2475,10 +2110,10 @@ - # OS/2's system install, which has a completely different semantic - # ./install, which can be erroneously created by make from ./install.sh. - # Reject install programs that cannot install multiple files. --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 - $as_echo_n "checking for a BSD-compatible install... " >&6; } - if test -z "$INSTALL"; then --if test "${ac_cv_path_install+set}" = set; then : -+if test "${ac_cv_path_install+set}" = set; then - $as_echo_n "(cached) " >&6 - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -@@ -2486,11 +2121,11 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- # Account for people who put trailing slashes in PATH elements. --case $as_dir/ in #(( -- ./ | .// | /[cC]/* | \ -+ # Account for people who put trailing slashes in PATH elements. -+case $as_dir/ in -+ ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ -- ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ -+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. -@@ -2527,7 +2162,7 @@ - ;; - esac - -- done -+done - IFS=$as_save_IFS - - rm -rf conftest.one conftest.two conftest.dir -@@ -2543,7 +2178,7 @@ - INSTALL=$ac_install_sh - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 - $as_echo "$INSTALL" >&6; } - - # Use test -z because SunOS4 sh mishandles braces in ${var-val}. -@@ -2554,7 +2189,7 @@ - - test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 - $as_echo_n "checking whether build environment is sane... " >&6; } - # Just in case - sleep 1 -@@ -2565,11 +2200,15 @@ - ' - case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) -- as_fn_error "unsafe absolute working directory name" "$LINENO" 5;; -+ { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5 -+$as_echo "$as_me: error: unsafe absolute working directory name" >&2;} -+ { (exit 1); exit 1; }; };; - esac - case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) -- as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -+ { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5 -+$as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;} -+ { (exit 1); exit 1; }; };; - esac - - # Do `set' in a subshell so we don't clobber the current shell's -@@ -2591,8 +2230,11 @@ - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". -- as_fn_error "ls -t appears to fail. Make sure there is not a broken --alias in your environment" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -+alias in your environment" >&5 -+$as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -+alias in your environment" >&2;} -+ { (exit 1); exit 1; }; } - fi - - test "$2" = conftest.file -@@ -2601,10 +2243,13 @@ - # Ok. - : - else -- as_fn_error "newly created file is older than distributed files! --Check your system clock" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! -+Check your system clock" >&5 -+$as_echo "$as_me: error: newly created file is older than distributed files! -+Check your system clock" >&2;} -+ { (exit 1); exit 1; }; } - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+{ $as_echo "$as_me:$LINENO: result: yes" >&5 - $as_echo "yes" >&6; } - test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -@@ -2632,7 +2277,7 @@ - am_missing_run="$MISSING --run " - else - am_missing_run= -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -+ { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 - $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} - fi - -@@ -2653,9 +2298,9 @@ - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. - set dummy ${ac_tool_prefix}strip; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_STRIP+set}" = set; then : -+if test "${ac_cv_prog_STRIP+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$STRIP"; then -@@ -2666,24 +2311,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - STRIP=$ac_cv_prog_STRIP - if test -n "$STRIP"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -+ { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 - $as_echo "$STRIP" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -2693,9 +2338,9 @@ - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. - set dummy strip; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_STRIP"; then -@@ -2706,24 +2351,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP - if test -n "$ac_ct_STRIP"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 - $as_echo "$ac_ct_STRIP" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -2732,7 +2377,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -2745,10 +2390,10 @@ - fi - INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -+{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 - $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } - if test -z "$MKDIR_P"; then -- if test "${ac_cv_path_mkdir+set}" = set; then : -+ if test "${ac_cv_path_mkdir+set}" = set; then - $as_echo_n "(cached) " >&6 - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -@@ -2756,7 +2401,7 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_prog in mkdir gmkdir; do -+ for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( -@@ -2768,7 +2413,7 @@ - esac - done - done -- done -+done - IFS=$as_save_IFS - - fi -@@ -2784,7 +2429,7 @@ - MKDIR_P="$ac_install_sh -d" - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 - $as_echo "$MKDIR_P" >&6; } - - mkdir_p="$MKDIR_P" -@@ -2797,9 +2442,9 @@ - do - # Extract the first word of "$ac_prog", so it can be a program name with args. - set dummy $ac_prog; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_AWK+set}" = set; then : -+if test "${ac_cv_prog_AWK+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$AWK"; then -@@ -2810,24 +2455,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - AWK=$ac_cv_prog_AWK - if test -n "$AWK"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -+ { $as_echo "$as_me:$LINENO: result: $AWK" >&5 - $as_echo "$AWK" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -2835,11 +2480,11 @@ - test -n "$AWK" && break - done - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 - $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } - set x ${MAKE-make} - ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` --if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : -+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 - else - cat >conftest.make <<\_ACEOF -@@ -2857,11 +2502,11 @@ - rm -f conftest.make - fi - if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+ { $as_echo "$as_me:$LINENO: result: yes" >&5 - $as_echo "yes" >&6; } - SET_MAKE= - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" - fi -@@ -2881,7 +2526,9 @@ - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then -- as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -+$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} -+ { (exit 1); exit 1; }; } - fi - fi - -@@ -2941,16 +2588,16 @@ - for k in m4 ; do ACLOCAL="$ACLOCAL -I $k" ; done - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 - $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } - # Check whether --enable-maintainer-mode was given. --if test "${enable_maintainer_mode+set}" = set; then : -+if test "${enable_maintainer_mode+set}" = set; then - enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval - else - USE_MAINTAINER_MODE=no - fi - -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 -+ { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 - $as_echo "$USE_MAINTAINER_MODE" >&6; } - if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= -@@ -2970,9 +2617,9 @@ - do - # Extract the first word of "$ac_prog", so it can be a program name with args. - set dummy $ac_prog; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_AWK+set}" = set; then : -+if test "${ac_cv_prog_AWK+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$AWK"; then -@@ -2983,24 +2630,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - AWK=$ac_cv_prog_AWK - if test -n "$AWK"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -+ { $as_echo "$as_me:$LINENO: result: $AWK" >&5 - $as_echo "$AWK" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -3016,9 +2663,9 @@ - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. - set dummy ${ac_tool_prefix}gcc; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_CC+set}" = set; then : -+if test "${ac_cv_prog_CC+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$CC"; then -@@ -3029,24 +2676,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - CC=$ac_cv_prog_CC - if test -n "$CC"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -+ { $as_echo "$as_me:$LINENO: result: $CC" >&5 - $as_echo "$CC" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -3056,9 +2703,9 @@ - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. - set dummy gcc; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_CC"; then -@@ -3069,24 +2716,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_CC=$ac_cv_prog_ac_ct_CC - if test -n "$ac_ct_CC"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 - $as_echo "$ac_ct_CC" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -3095,7 +2742,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -3109,9 +2756,9 @@ - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. - set dummy ${ac_tool_prefix}cc; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_CC+set}" = set; then : -+if test "${ac_cv_prog_CC+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$CC"; then -@@ -3122,24 +2769,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - CC=$ac_cv_prog_CC - if test -n "$CC"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -+ { $as_echo "$as_me:$LINENO: result: $CC" >&5 - $as_echo "$CC" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -3149,9 +2796,9 @@ - if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. - set dummy cc; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_CC+set}" = set; then : -+if test "${ac_cv_prog_CC+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$CC"; then -@@ -3163,18 +2810,18 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - if test $ac_prog_rejected = yes; then -@@ -3193,10 +2840,10 @@ - fi - CC=$ac_cv_prog_CC - if test -n "$CC"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -+ { $as_echo "$as_me:$LINENO: result: $CC" >&5 - $as_echo "$CC" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -3208,9 +2855,9 @@ - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. - set dummy $ac_tool_prefix$ac_prog; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_CC+set}" = set; then : -+if test "${ac_cv_prog_CC+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$CC"; then -@@ -3221,24 +2868,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - CC=$ac_cv_prog_CC - if test -n "$CC"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -+ { $as_echo "$as_me:$LINENO: result: $CC" >&5 - $as_echo "$CC" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -3252,9 +2899,9 @@ - do - # Extract the first word of "$ac_prog", so it can be a program name with args. - set dummy $ac_prog; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_CC"; then -@@ -3265,24 +2912,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_CC=$ac_cv_prog_ac_ct_CC - if test -n "$ac_ct_CC"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 - $as_echo "$ac_ct_CC" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -3295,7 +2942,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -3306,55 +2953,73 @@ - fi - - --test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --as_fn_error "no acceptable C compiler found in \$PATH --See \`config.log' for more details." "$LINENO" 5; } -+{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -+See \`config.log' for more details." >&5 -+$as_echo "$as_me: error: no acceptable C compiler found in \$PATH -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; }; } - - # Provide some information about the compiler. --$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 - set X $ac_compile - ac_compiler=$2 --for ac_option in --version -v -V -qversion; do -- { { ac_try="$ac_compiler $ac_option >&5" -+{ (ac_try="$ac_compiler --version >&5" - case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; - esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -- (eval "$ac_compiler $ac_option >&5") 2>conftest.err -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? -- if test -s conftest.err; then -- sed '10a\ --... rest of stderr output deleted ... -- 10q' conftest.err >conftest.er1 -- cat conftest.er1 >&5 -- rm -f conftest.er1 conftest.err -- fi -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } --done -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+{ (ac_try="$ac_compiler -v >&5" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compiler -v >&5") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+{ (ac_try="$ac_compiler -V >&5" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compiler -V >&5") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } - --cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ --#include -+ - int - main () - { --FILE *f = fopen ("conftest.out", "w"); -- return ferror (f) || fclose (f) != 0; - - ; - return 0; - } - _ACEOF - ac_clean_files_save=$ac_clean_files --ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out" -+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" - # Try to create an executable without -o first, disregard a.out. - # It will help us diagnose broken compilers, and finding out an intuition - # of exeext. --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -+{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 - $as_echo_n "checking for C compiler default output file name... " >&6; } - ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -@@ -3371,17 +3036,17 @@ - done - rm -f $ac_rmfiles - --if { { ac_try="$ac_link_default" -+if { (ac_try="$ac_link_default" - case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; - esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; then : -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. - # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' - # in a Makefile. We should not override ac_cv_exeext if it was cached, -@@ -3398,7 +3063,7 @@ - # certainly right. - break;; - *.* ) -- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; -+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi -@@ -3417,75 +3082,84 @@ - else - ac_file='' - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -+ -+{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5 - $as_echo "$ac_file" >&6; } --if test -z "$ac_file"; then : -+if test -z "$ac_file"; then - $as_echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --{ as_fn_set_status 77 --as_fn_error "C compiler cannot create executables --See \`config.log' for more details." "$LINENO" 5; }; } -+{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables -+See \`config.log' for more details." >&5 -+$as_echo "$as_me: error: C compiler cannot create executables -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; }; } - fi -+ - ac_exeext=$ac_cv_exeext - - # Check that the compiler produces executables we can run. If not, either - # the compiler is broken, or we cross compile. --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 - $as_echo_n "checking whether the C compiler works... " >&6; } -+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 - # If not cross compiling, check that we can run a simple program. - if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' -- { { case "(($ac_try" in -+ { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; - esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; }; then -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else -- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --as_fn_error "cannot run C compiled programs. -+{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. - If you meant to cross compile, use \`--host'. --See \`config.log' for more details." "$LINENO" 5; } -+See \`config.log' for more details." >&5 -+$as_echo "$as_me: error: cannot run C compiled programs. -+If you meant to cross compile, use \`--host'. -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; }; } - fi - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+{ $as_echo "$as_me:$LINENO: result: yes" >&5 - $as_echo "yes" >&6; } - --rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out -+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out - ac_clean_files=$ac_clean_files_save - # Check that the compiler produces executables we can run. If not, either - # the compiler is broken, or we cross compile. --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 - $as_echo_n "checking whether we are cross compiling... " >&6; } --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -+{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 - $as_echo "$cross_compiling" >&6; } - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -+{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 - $as_echo_n "checking for suffix of executables... " >&6; } --if { { ac_try="$ac_link" -+if { (ac_try="$ac_link" - case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; - esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; then : -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) - # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will - # work properly (i.e., refer to `conftest.exe'), while it won't with -@@ -3500,24 +3174,32 @@ - esac - done - else -- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --as_fn_error "cannot compute suffix of executables: cannot compile and link --See \`config.log' for more details." "$LINENO" 5; } -+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -+See \`config.log' for more details." >&5 -+$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; }; } - fi -+ - rm -f conftest$ac_cv_exeext --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 - $as_echo "$ac_cv_exeext" >&6; } - - rm -f conftest.$ac_ext - EXEEXT=$ac_cv_exeext - ac_exeext=$EXEEXT --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -+{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 - $as_echo_n "checking for suffix of object files... " >&6; } --if test "${ac_cv_objext+set}" = set; then : -+if test "${ac_cv_objext+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -3529,17 +3211,17 @@ - } - _ACEOF - rm -f conftest.o conftest.obj --if { { ac_try="$ac_compile" -+if { (ac_try="$ac_compile" - case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; - esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; then : -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in -@@ -3552,23 +3234,31 @@ - $as_echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --as_fn_error "cannot compute suffix of object files: cannot compile --See \`config.log' for more details." "$LINENO" 5; } -+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -+See \`config.log' for more details." >&5 -+$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; }; } - fi -+ - rm -f conftest.$ac_cv_objext conftest.$ac_ext - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 - $as_echo "$ac_cv_objext" >&6; } - OBJEXT=$ac_cv_objext - ac_objext=$OBJEXT --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 - $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } --if test "${ac_cv_c_compiler_gnu+set}" = set; then : -+if test "${ac_cv_c_compiler_gnu+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -3582,16 +3272,37 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_compiler_gnu=yes - else -- ac_compiler_gnu=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_compiler_gnu=no - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_c_compiler_gnu=$ac_compiler_gnu - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 - $as_echo "$ac_cv_c_compiler_gnu" >&6; } - if test $ac_compiler_gnu = yes; then - GCC=yes -@@ -3600,16 +3311,20 @@ - fi - ac_test_CFLAGS=${CFLAGS+set} - ac_save_CFLAGS=$CFLAGS --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 - $as_echo_n "checking whether $CC accepts -g... " >&6; } --if test "${ac_cv_prog_cc_g+set}" = set; then : -+if test "${ac_cv_prog_cc_g+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -3620,11 +3335,35 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes - else -- CFLAGS="" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ CFLAGS="" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -3635,12 +3374,36 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -- -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ : - else -- ac_c_werror_flag=$ac_save_c_werror_flag -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -3651,17 +3414,42 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 - $as_echo "$ac_cv_prog_cc_g" >&6; } - if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -@@ -3678,14 +3466,18 @@ - CFLAGS= - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 - $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } --if test "${ac_cv_prog_cc_c89+set}" = set; then : -+if test "${ac_cv_prog_cc_c89+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_cv_prog_cc_c89=no - ac_save_CC=$CC --cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - #include -@@ -3742,9 +3534,32 @@ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" - do - CC="$ac_save_CC $ac_arg" -- if ac_fn_c_try_compile "$LINENO"; then : -+ rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_c89=$ac_arg -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ - fi -+ - rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break - done -@@ -3755,19 +3570,17 @@ - # AC_CACHE_VAL - case "x$ac_cv_prog_cc_c89" in - x) -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -+ { $as_echo "$as_me:$LINENO: result: none needed" >&5 - $as_echo "none needed" >&6; } ;; - xno) -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -+ { $as_echo "$as_me:$LINENO: result: unsupported" >&5 - $as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 - $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; - esac --if test "x$ac_cv_prog_cc_c89" != xno; then : - --fi - - ac_ext=c - ac_cpp='$CPP $CPPFLAGS' -@@ -3786,7 +3599,7 @@ - .PHONY: am__doit - END - # If we don't find an include directive, just comment out the code. --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -+{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 - $as_echo_n "checking for style of include used by $am_make... " >&6; } - am__include="#" - am__quote= -@@ -3814,12 +3627,12 @@ - fi - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -+{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5 - $as_echo "$_am_result" >&6; } - rm -f confinc confmf - - # Check whether --enable-dependency-tracking was given. --if test "${enable_dependency_tracking+set}" = set; then : -+if test "${enable_dependency_tracking+set}" = set; then - enableval=$enable_dependency_tracking; - fi - -@@ -3839,9 +3652,9 @@ - - depcc="$CC" am_compiler_list= - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 - $as_echo_n "checking dependency style of $depcc... " >&6; } --if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : -+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then -@@ -3949,7 +3762,7 @@ - fi - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -+{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 - $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } - CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - -@@ -3970,14 +3783,14 @@ - ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' - ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' - ac_compiler_gnu=$ac_cv_c_compiler_gnu --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -+{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 - $as_echo_n "checking how to run the C preprocessor... " >&6; } - # On Suns, sometimes $CPP names a directory. - if test -n "$CPP" && test -d "$CPP"; then - CPP= - fi - if test -z "$CPP"; then -- if test "${ac_cv_prog_CPP+set}" = set; then : -+ if test "${ac_cv_prog_CPP+set}" = set; then - $as_echo_n "(cached) " >&6 - else - # Double quotes because CPP needs to be expanded -@@ -3992,7 +3805,11 @@ - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #ifdef __STDC__ - # include -@@ -4001,34 +3818,78 @@ - #endif - Syntax error - _ACEOF --if ac_fn_c_try_cpp "$LINENO"; then : -- -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ : - else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - # Broken: fails on valid input. - continue - fi -+ - rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - _ACEOF --if ac_fn_c_try_cpp "$LINENO"; then : -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then - # Broken: success on invalid input. - continue - else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - # Passes both tests. - ac_preproc_ok=: - break - fi -+ - rm -f conftest.err conftest.$ac_ext - - done - # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. - rm -f conftest.err conftest.$ac_ext --if $ac_preproc_ok; then : -+if $ac_preproc_ok; then - break - fi - -@@ -4040,7 +3901,7 @@ - else - ac_cv_prog_CPP=$CPP - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -+{ $as_echo "$as_me:$LINENO: result: $CPP" >&5 - $as_echo "$CPP" >&6; } - ac_preproc_ok=false - for ac_c_preproc_warn_flag in '' yes -@@ -4051,7 +3912,11 @@ - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #ifdef __STDC__ - # include -@@ -4060,40 +3925,87 @@ - #endif - Syntax error - _ACEOF --if ac_fn_c_try_cpp "$LINENO"; then : -- -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ : - else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - # Broken: fails on valid input. - continue - fi -+ - rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - _ACEOF --if ac_fn_c_try_cpp "$LINENO"; then : -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then - # Broken: success on invalid input. - continue - else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - # Passes both tests. - ac_preproc_ok=: - break - fi -+ - rm -f conftest.err conftest.$ac_ext - - done - # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. - rm -f conftest.err conftest.$ac_ext --if $ac_preproc_ok; then : -- -+if $ac_preproc_ok; then -+ : - else -- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --as_fn_error "C preprocessor \"$CPP\" fails sanity check --See \`config.log' for more details." "$LINENO" 5; } -+{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -+See \`config.log' for more details." >&5 -+$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; }; } - fi - - ac_ext=c -@@ -4103,9 +4015,9 @@ - ac_compiler_gnu=$ac_cv_c_compiler_gnu - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -+{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 - $as_echo_n "checking for grep that handles long lines and -e... " >&6; } --if test "${ac_cv_path_GREP+set}" = set; then : -+if test "${ac_cv_path_GREP+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -z "$GREP"; then -@@ -4116,7 +4028,7 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_prog in grep ggrep; do -+ for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -@@ -4136,7 +4048,7 @@ - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break -- as_fn_arith $ac_count + 1 && ac_count=$as_val -+ ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" -@@ -4151,24 +4063,26 @@ - $ac_path_GREP_found && break 3 - done - done -- done -+done - IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then -- as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -+$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} -+ { (exit 1); exit 1; }; } - fi - else - ac_cv_path_GREP=$GREP - fi - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 - $as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -+{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 - $as_echo_n "checking for egrep... " >&6; } --if test "${ac_cv_path_EGREP+set}" = set; then : -+if test "${ac_cv_path_EGREP+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 -@@ -4182,7 +4096,7 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_prog in egrep; do -+ for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -@@ -4202,7 +4116,7 @@ - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break -- as_fn_arith $ac_count + 1 && ac_count=$as_val -+ ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" -@@ -4217,10 +4131,12 @@ - $ac_path_EGREP_found && break 3 - done - done -- done -+done - IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then -- as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -+$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} -+ { (exit 1); exit 1; }; } - fi - else - ac_cv_path_EGREP=$EGREP -@@ -4228,17 +4144,21 @@ - - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 - $as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 - $as_echo_n "checking for ANSI C header files... " >&6; } --if test "${ac_cv_header_stdc+set}" = set; then : -+if test "${ac_cv_header_stdc+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - #include -@@ -4253,23 +4173,48 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_cv_header_stdc=yes - else -- ac_cv_header_stdc=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_header_stdc=no - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - - _ACEOF - if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -- $EGREP "memchr" >/dev/null 2>&1; then : -- -+ $EGREP "memchr" >/dev/null 2>&1; then -+ : - else - ac_cv_header_stdc=no - fi -@@ -4279,14 +4224,18 @@ - - if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - - _ACEOF - if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -- $EGREP "free" >/dev/null 2>&1; then : -- -+ $EGREP "free" >/dev/null 2>&1; then -+ : - else - ac_cv_header_stdc=no - fi -@@ -4296,10 +4245,14 @@ - - if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -- if test "$cross_compiling" = yes; then : -+ if test "$cross_compiling" = yes; then - : - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - #include -@@ -4326,34 +4279,118 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_run "$LINENO"; then : -- --else -- ac_cv_header_stdc=no --fi --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -- conftest.$ac_objext conftest.beam conftest.$ac_ext -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ : -+else -+ $as_echo "$as_me: program exited with status $ac_status" >&5 -+$as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+ac_cv_header_stdc=no - fi -+rm -rf conftest.dSYM -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+ - - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 - $as_echo "$ac_cv_header_stdc" >&6; } - if test $ac_cv_header_stdc = yes; then - --$as_echo "#define STDC_HEADERS 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define STDC_HEADERS 1 -+_ACEOF - - fi - - # On IRIX 5.3, sys/types and inttypes.h are conflicting. -+ -+ -+ -+ -+ -+ -+ -+ -+ - for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h --do : -- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default --" --eval as_val=\$$as_ac_Header -- if test "x$as_val" = x""yes; then : -+do -+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -+$as_echo_n "checking for $ac_header... " >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ $as_echo_n "(cached) " >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ -+#include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ eval "$as_ac_Header=yes" -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ eval "$as_ac_Header=no" -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+ac_res=`eval 'as_val=${'$as_ac_Header'} -+ $as_echo "$as_val"'` -+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+as_val=`eval 'as_val=${'$as_ac_Header'} -+ $as_echo "$as_val"'` -+ if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF - #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF -@@ -4364,8 +4401,139 @@ - - - -- ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" --if test "x$ac_cv_header_minix_config_h" = x""yes; then : -+ if test "${ac_cv_header_minix_config_h+set}" = set; then -+ { $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5 -+$as_echo_n "checking for minix/config.h... " >&6; } -+if test "${ac_cv_header_minix_config_h+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 -+$as_echo "$ac_cv_header_minix_config_h" >&6; } -+else -+ # Is the header compilable? -+{ $as_echo "$as_me:$LINENO: checking minix/config.h usability" >&5 -+$as_echo_n "checking minix/config.h usability... " >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+#include -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+$as_echo "$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ $as_echo "$as_me:$LINENO: checking minix/config.h presence" >&5 -+$as_echo_n "checking minix/config.h presence... " >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+$as_echo "$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -+ yes:no: ) -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;} -+ ( cat <<\_ASBOX -+## ---------------------------------------------- ## -+## Report this to Michal Cihar ## -+## ---------------------------------------------- ## -+_ASBOX -+ ) | sed "s/^/$as_me: WARNING: /" >&2 -+ ;; -+esac -+{ $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5 -+$as_echo_n "checking for minix/config.h... " >&6; } -+if test "${ac_cv_header_minix_config_h+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ ac_cv_header_minix_config_h=$ac_header_preproc -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 -+$as_echo "$ac_cv_header_minix_config_h" >&6; } -+ -+fi -+if test "x$ac_cv_header_minix_config_h" = x""yes; then - MINIX=yes - else - MINIX= -@@ -4374,23 +4542,34 @@ - - if test "$MINIX" = yes; then - --$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define _POSIX_SOURCE 1 -+_ACEOF - - --$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define _POSIX_1_SOURCE 2 -+_ACEOF - - --$as_echo "#define _MINIX 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define _MINIX 1 -+_ACEOF - - fi - - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 -+ -+ { $as_echo "$as_me:$LINENO: checking whether it is safe to define __EXTENSIONS__" >&5 - $as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } --if test "${ac_cv_safe_to_define___extensions__+set}" = set; then : -+if test "${ac_cv_safe_to_define___extensions__+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - # define __EXTENSIONS__ 1 -@@ -4403,36 +4582,303 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_cv_safe_to_define___extensions__=yes - else -- ac_cv_safe_to_define___extensions__=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_safe_to_define___extensions__=no - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_safe_to_define___extensions__" >&5 - $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } - test $ac_cv_safe_to_define___extensions__ = yes && -- $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h -+ cat >>confdefs.h <<\_ACEOF -+#define __EXTENSIONS__ 1 -+_ACEOF -+ -+ cat >>confdefs.h <<\_ACEOF -+#define _ALL_SOURCE 1 -+_ACEOF -+ -+ cat >>confdefs.h <<\_ACEOF -+#define _GNU_SOURCE 1 -+_ACEOF -+ -+ cat >>confdefs.h <<\_ACEOF -+#define _POSIX_PTHREAD_SEMANTICS 1 -+_ACEOF -+ -+ cat >>confdefs.h <<\_ACEOF -+#define _TANDEM_SOURCE 1 -+_ACEOF -+ -+ -+ -+ if test "${ac_cv_header_minix_config_h+set}" = set; then -+ { $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5 -+$as_echo_n "checking for minix/config.h... " >&6; } -+if test "${ac_cv_header_minix_config_h+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 -+$as_echo "$ac_cv_header_minix_config_h" >&6; } -+else -+ # Is the header compilable? -+{ $as_echo "$as_me:$LINENO: checking minix/config.h usability" >&5 -+$as_echo_n "checking minix/config.h usability... " >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+#include -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+$as_echo "$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ $as_echo "$as_me:$LINENO: checking minix/config.h presence" >&5 -+$as_echo_n "checking minix/config.h presence... " >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -- $as_echo "#define _ALL_SOURCE 1" >>confdefs.h -+ ac_header_preproc=no -+fi - -- $as_echo "#define _GNU_SOURCE 1" >>confdefs.h -+rm -f conftest.err conftest.$ac_ext -+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+$as_echo "$ac_header_preproc" >&6; } - -- $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -+ yes:no: ) -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5 -+$as_echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;} -+ ( cat <<\_ASBOX -+## ---------------------------------------------- ## -+## Report this to Michal Cihar ## -+## ---------------------------------------------- ## -+_ASBOX -+ ) | sed "s/^/$as_me: WARNING: /" >&2 -+ ;; -+esac -+{ $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5 -+$as_echo_n "checking for minix/config.h... " >&6; } -+if test "${ac_cv_header_minix_config_h+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ ac_cv_header_minix_config_h=$ac_header_preproc -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 -+$as_echo "$ac_cv_header_minix_config_h" >&6; } -+ -+fi -+if test "x$ac_cv_header_minix_config_h" = x""yes; then -+ MINIX=yes -+else -+ MINIX= -+fi - -- $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h - -+ if test "$MINIX" = yes; then - -+cat >>confdefs.h <<\_ACEOF -+#define _POSIX_SOURCE 1 -+_ACEOF - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 -+cat >>confdefs.h <<\_ACEOF -+#define _POSIX_1_SOURCE 2 -+_ACEOF -+ -+ -+cat >>confdefs.h <<\_ACEOF -+#define _MINIX 1 -+_ACEOF -+ -+ fi -+ -+ -+ -+ { $as_echo "$as_me:$LINENO: checking whether it is safe to define __EXTENSIONS__" >&5 -+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } -+if test "${ac_cv_safe_to_define___extensions__+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+# define __EXTENSIONS__ 1 -+ $ac_includes_default -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_safe_to_define___extensions__=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_safe_to_define___extensions__=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_safe_to_define___extensions__" >&5 -+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } -+ test $ac_cv_safe_to_define___extensions__ = yes && -+ cat >>confdefs.h <<\_ACEOF -+#define __EXTENSIONS__ 1 -+_ACEOF -+ -+ cat >>confdefs.h <<\_ACEOF -+#define _ALL_SOURCE 1 -+_ACEOF -+ -+ cat >>confdefs.h <<\_ACEOF -+#define _GNU_SOURCE 1 -+_ACEOF -+ -+ cat >>confdefs.h <<\_ACEOF -+#define _POSIX_PTHREAD_SEMANTICS 1 -+_ACEOF -+ -+ cat >>confdefs.h <<\_ACEOF -+#define _TANDEM_SOURCE 1 -+_ACEOF -+ -+ -+{ $as_echo "$as_me:$LINENO: checking for library containing strerror" >&5 - $as_echo_n "checking for library containing strerror... " >&6; } --if test "${ac_cv_search_strerror+set}" = set; then : -+if test "${ac_cv_search_strerror+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_func_search_save_LIBS=$LIBS --cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -4457,34 +4903,61 @@ - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi -- if ac_fn_c_try_link "$LINENO"; then : -+ rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - ac_cv_search_strerror=$ac_res -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext -- if test "${ac_cv_search_strerror+set}" = set; then : -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext -+ if test "${ac_cv_search_strerror+set}" = set; then - break - fi - done --if test "${ac_cv_search_strerror+set}" = set; then : -- -+if test "${ac_cv_search_strerror+set}" = set; then -+ : - else - ac_cv_search_strerror=no - fi - rm conftest.$ac_ext - LIBS=$ac_func_search_save_LIBS - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 - $as_echo "$ac_cv_search_strerror" >&6; } - ac_res=$ac_cv_search_strerror --if test "$ac_res" != no; then : -+if test "$ac_res" != no; then - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - - fi - - case `pwd` in - *\ * | *\ *) -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -+ { $as_echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 - $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; - esac - -@@ -4509,27 +4982,35 @@ - - # Make sure we can run config.sub. - $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || -- as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -+$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} -+ { (exit 1); exit 1; }; } - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -+{ $as_echo "$as_me:$LINENO: checking build system type" >&5 - $as_echo_n "checking build system type... " >&6; } --if test "${ac_cv_build+set}" = set; then : -+if test "${ac_cv_build+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_build_alias=$build_alias - test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` - test "x$ac_build_alias" = x && -- as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -+$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} -+ { (exit 1); exit 1; }; } - ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || -- as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} -+ { (exit 1); exit 1; }; } - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 - $as_echo "$ac_cv_build" >&6; } - case $ac_cv_build in - *-*-*) ;; --*) as_fn_error "invalid value of canonical build" "$LINENO" 5;; -+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -+$as_echo "$as_me: error: invalid value of canonical build" >&2;} -+ { (exit 1); exit 1; }; };; - esac - build=$ac_cv_build - ac_save_IFS=$IFS; IFS='-' -@@ -4545,24 +5026,28 @@ - case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -+{ $as_echo "$as_me:$LINENO: checking host system type" >&5 - $as_echo_n "checking host system type... " >&6; } --if test "${ac_cv_host+set}" = set; then : -+if test "${ac_cv_host+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build - else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || -- as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} -+ { (exit 1); exit 1; }; } - fi - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 - $as_echo "$ac_cv_host" >&6; } - case $ac_cv_host in - *-*-*) ;; --*) as_fn_error "invalid value of canonical host" "$LINENO" 5;; -+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -+$as_echo "$as_me: error: invalid value of canonical host" >&2;} -+ { (exit 1); exit 1; }; };; - esac - host=$ac_cv_host - ac_save_IFS=$IFS; IFS='-' -@@ -4578,9 +5063,9 @@ - case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -+{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 - $as_echo_n "checking for a sed that does not truncate output... " >&6; } --if test "${ac_cv_path_SED+set}" = set; then : -+if test "${ac_cv_path_SED+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ -@@ -4588,7 +5073,7 @@ - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed -- { ac_script=; unset ac_script;} -+ $as_unset ac_script || ac_script= - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST -@@ -4597,7 +5082,7 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_prog in sed gsed; do -+ for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -@@ -4617,7 +5102,7 @@ - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break -- as_fn_arith $ac_count + 1 && ac_count=$as_val -+ ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" -@@ -4632,17 +5117,19 @@ - $ac_path_SED_found && break 3 - done - done -- done -+done - IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then -- as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5 -+$as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;} -+ { (exit 1); exit 1; }; } - fi - else - ac_cv_path_SED=$SED - fi - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5 - $as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed -@@ -4660,9 +5147,9 @@ - - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -+{ $as_echo "$as_me:$LINENO: checking for fgrep" >&5 - $as_echo_n "checking for fgrep... " >&6; } --if test "${ac_cv_path_FGREP+set}" = set; then : -+if test "${ac_cv_path_FGREP+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 -@@ -4676,7 +5163,7 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_prog in fgrep; do -+ for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -@@ -4696,7 +5183,7 @@ - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break -- as_fn_arith $ac_count + 1 && ac_count=$as_val -+ ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" -@@ -4711,10 +5198,12 @@ - $ac_path_FGREP_found && break 3 - done - done -- done -+done - IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then -- as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -+$as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} -+ { (exit 1); exit 1; }; } - fi - else - ac_cv_path_FGREP=$FGREP -@@ -4722,7 +5211,7 @@ - - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5 - $as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - -@@ -4748,7 +5237,7 @@ - - - # Check whether --with-gnu-ld was given. --if test "${with_gnu_ld+set}" = set; then : -+if test "${with_gnu_ld+set}" = set; then - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes - else - with_gnu_ld=no -@@ -4757,7 +5246,7 @@ - ac_prog=ld - if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -+ { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 - $as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) -@@ -4787,13 +5276,13 @@ - ;; - esac - elif test "$with_gnu_ld" = yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -+ { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 - $as_echo_n "checking for GNU ld... " >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -+ { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 - $as_echo_n "checking for non-GNU ld... " >&6; } - fi --if test "${lt_cv_path_LD+set}" = set; then : -+if test "${lt_cv_path_LD+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -z "$LD"; then -@@ -4824,16 +5313,18 @@ - - LD="$lt_cv_path_LD" - if test -n "$LD"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -+ { $as_echo "$as_me:$LINENO: result: $LD" >&5 - $as_echo "$LD" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi --test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -+test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -+$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} -+ { (exit 1); exit 1; }; } -+{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 - $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } --if test "${lt_cv_prog_gnu_ld+set}" = set; then : -+if test "${lt_cv_prog_gnu_ld+set}" = set; then - $as_echo_n "(cached) " >&6 - else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -@@ -4846,7 +5337,7 @@ - ;; - esac - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 - $as_echo "$lt_cv_prog_gnu_ld" >&6; } - with_gnu_ld=$lt_cv_prog_gnu_ld - -@@ -4858,9 +5349,9 @@ - - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -+{ $as_echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 - $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } --if test "${lt_cv_path_NM+set}" = set; then : -+if test "${lt_cv_path_NM+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$NM"; then -@@ -4907,7 +5398,7 @@ - : ${lt_cv_path_NM=no} - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 - $as_echo "$lt_cv_path_NM" >&6; } - if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -@@ -4918,9 +5409,9 @@ - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. - set dummy $ac_tool_prefix$ac_prog; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_DUMPBIN+set}" = set; then : -+if test "${ac_cv_prog_DUMPBIN+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$DUMPBIN"; then -@@ -4931,24 +5422,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - DUMPBIN=$ac_cv_prog_DUMPBIN - if test -n "$DUMPBIN"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -+ { $as_echo "$as_me:$LINENO: result: $DUMPBIN" >&5 - $as_echo "$DUMPBIN" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -4962,9 +5453,9 @@ - do - # Extract the first word of "$ac_prog", so it can be a program name with args. - set dummy $ac_prog; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_DUMPBIN"; then -@@ -4975,24 +5466,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN - if test -n "$ac_ct_DUMPBIN"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5 - $as_echo "$ac_ct_DUMPBIN" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -5005,7 +5496,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -5025,44 +5516,44 @@ - - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -+{ $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 - $as_echo_n "checking the name lister ($NM) interface... " >&6; } --if test "${lt_cv_nm_interface+set}" = set; then : -+if test "${lt_cv_nm_interface+set}" = set; then - $as_echo_n "(cached) " >&6 - else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext -- (eval echo "\"\$as_me:5035: $ac_compile\"" >&5) -+ (eval echo "\"\$as_me:5526: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 -- (eval echo "\"\$as_me:5038: $NM \\\"conftest.$ac_objext\\\"\"" >&5) -+ (eval echo "\"\$as_me:5529: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 -- (eval echo "\"\$as_me:5041: output\"" >&5) -+ (eval echo "\"\$as_me:5532: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5 - $as_echo "$lt_cv_nm_interface" >&6; } - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 - $as_echo_n "checking whether ln -s works... " >&6; } - LN_S=$as_ln_s - if test "$LN_S" = "ln -s"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+ { $as_echo "$as_me:$LINENO: result: yes" >&5 - $as_echo "yes" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -+ { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 - $as_echo "no, using $LN_S" >&6; } - fi - - # find the maximum length of command line arguments --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -+{ $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 - $as_echo_n "checking the maximum length of command line arguments... " >&6; } --if test "${lt_cv_sys_max_cmd_len+set}" = set; then : -+if test "${lt_cv_sys_max_cmd_len+set}" = set; then - $as_echo_n "(cached) " >&6 - else - i=0 -@@ -5180,10 +5671,10 @@ - fi - - if test -n $lt_cv_sys_max_cmd_len ; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -+ { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 - $as_echo "$lt_cv_sys_max_cmd_len" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -+ { $as_echo "$as_me:$LINENO: result: none" >&5 - $as_echo "none" >&6; } - fi - max_cmd_len=$lt_cv_sys_max_cmd_len -@@ -5197,7 +5688,7 @@ - : ${MV="mv -f"} - : ${RM="rm -f"} - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 - $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } - # Try some XSI features - xsi_shell=no -@@ -5207,17 +5698,17 @@ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -+{ $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5 - $as_echo "$xsi_shell" >&6; } - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 - $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } - lt_shell_append=no - ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5 - $as_echo "$lt_shell_append" >&6; } - - -@@ -5252,14 +5743,14 @@ - - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 - $as_echo_n "checking for $LD option to reload object files... " >&6; } --if test "${lt_cv_ld_reload_flag+set}" = set; then : -+if test "${lt_cv_ld_reload_flag+set}" = set; then - $as_echo_n "(cached) " >&6 - else - lt_cv_ld_reload_flag='-r' - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 - $as_echo "$lt_cv_ld_reload_flag" >&6; } - reload_flag=$lt_cv_ld_reload_flag - case $reload_flag in -@@ -5288,9 +5779,9 @@ - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. - set dummy ${ac_tool_prefix}objdump; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_OBJDUMP+set}" = set; then : -+if test "${ac_cv_prog_OBJDUMP+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$OBJDUMP"; then -@@ -5301,24 +5792,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - OBJDUMP=$ac_cv_prog_OBJDUMP - if test -n "$OBJDUMP"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -+ { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5 - $as_echo "$OBJDUMP" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -5328,9 +5819,9 @@ - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. - set dummy objdump; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_OBJDUMP"; then -@@ -5341,24 +5832,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP - if test -n "$ac_ct_OBJDUMP"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 - $as_echo "$ac_ct_OBJDUMP" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -5367,7 +5858,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -5387,9 +5878,9 @@ - - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -+{ $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 - $as_echo_n "checking how to recognize dependent libraries... " >&6; } --if test "${lt_cv_deplibs_check_method+set}" = set; then : -+if test "${lt_cv_deplibs_check_method+set}" = set; then - $as_echo_n "(cached) " >&6 - else - lt_cv_file_magic_cmd='$MAGIC_CMD' -@@ -5583,7 +6074,7 @@ - esac - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 - $as_echo "$lt_cv_deplibs_check_method" >&6; } - file_magic_cmd=$lt_cv_file_magic_cmd - deplibs_check_method=$lt_cv_deplibs_check_method -@@ -5603,9 +6094,9 @@ - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. - set dummy ${ac_tool_prefix}ar; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_AR+set}" = set; then : -+if test "${ac_cv_prog_AR+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$AR"; then -@@ -5616,24 +6107,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="${ac_tool_prefix}ar" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - AR=$ac_cv_prog_AR - if test -n "$AR"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -+ { $as_echo "$as_me:$LINENO: result: $AR" >&5 - $as_echo "$AR" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -5643,9 +6134,9 @@ - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. - set dummy ar; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_AR+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_AR"; then -@@ -5656,24 +6147,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="ar" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_AR=$ac_cv_prog_ac_ct_AR - if test -n "$ac_ct_AR"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 - $as_echo "$ac_ct_AR" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -5682,7 +6173,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -5708,9 +6199,9 @@ - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. - set dummy ${ac_tool_prefix}strip; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_STRIP+set}" = set; then : -+if test "${ac_cv_prog_STRIP+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$STRIP"; then -@@ -5721,24 +6212,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - STRIP=$ac_cv_prog_STRIP - if test -n "$STRIP"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -+ { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 - $as_echo "$STRIP" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -5748,9 +6239,9 @@ - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. - set dummy strip; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_STRIP"; then -@@ -5761,24 +6252,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP - if test -n "$ac_ct_STRIP"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 - $as_echo "$ac_ct_STRIP" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -5787,7 +6278,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -5807,9 +6298,9 @@ - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. - set dummy ${ac_tool_prefix}ranlib; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_RANLIB+set}" = set; then : -+if test "${ac_cv_prog_RANLIB+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$RANLIB"; then -@@ -5820,24 +6311,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - RANLIB=$ac_cv_prog_RANLIB - if test -n "$RANLIB"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -+ { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 - $as_echo "$RANLIB" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -5847,9 +6338,9 @@ - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. - set dummy ranlib; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_RANLIB"; then -@@ -5860,24 +6351,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB - if test -n "$ac_ct_RANLIB"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 - $as_echo "$ac_ct_RANLIB" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -5886,7 +6377,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -5964,9 +6455,9 @@ - - - # Check for command to grab the raw symbol name followed by C symbol from nm. --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -+{ $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 - $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } --if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then : -+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then - $as_echo_n "(cached) " >&6 - else - -@@ -6082,18 +6573,18 @@ - int main(){nm_test_var='a';nm_test_func();return(0);} - _LT_EOF - -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; then -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then - # Now try to grab the symbols. - nlist=conftest.nm -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 -+ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 - (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } && test -s "$nlist"; then -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" -@@ -6146,11 +6637,11 @@ - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 -+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } && test -s conftest${ac_exeext}; then -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" -@@ -6184,10 +6675,10 @@ - lt_cv_sys_global_symbol_to_cdecl= - fi - if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -+ { $as_echo "$as_me:$LINENO: result: failed" >&5 - $as_echo "failed" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -+ { $as_echo "$as_me:$LINENO: result: ok" >&5 - $as_echo "ok" >&6; } - fi - -@@ -6213,7 +6704,7 @@ - - - # Check whether --enable-libtool-lock was given. --if test "${enable_libtool_lock+set}" = set; then : -+if test "${enable_libtool_lock+set}" = set; then - enableval=$enable_libtool_lock; - fi - -@@ -6225,11 +6716,11 @@ - ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; then -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" -@@ -6243,12 +6734,12 @@ - ;; - *-*-irix6*) - # Find out which ABI we are using. -- echo '#line 6246 "configure"' > conftest.$ac_ext -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -+ echo '#line 6737 "configure"' > conftest.$ac_ext -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; then -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) -@@ -6282,11 +6773,11 @@ - s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; then -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in -@@ -6335,9 +6826,9 @@ - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -+ { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 - $as_echo_n "checking whether the C compiler needs -belf... " >&6; } --if test "${lt_cv_cc_needs_belf+set}" = set; then : -+if test "${lt_cv_cc_needs_belf+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_ext=c -@@ -6346,7 +6837,11 @@ - ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' - ac_compiler_gnu=$ac_cv_c_compiler_gnu - -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -6357,13 +6852,38 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - lt_cv_cc_needs_belf=yes - else -- lt_cv_cc_needs_belf=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ lt_cv_cc_needs_belf=no - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - ac_ext=c - ac_cpp='$CPP $CPPFLAGS' - ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -@@ -6371,7 +6891,7 @@ - ac_compiler_gnu=$ac_cv_c_compiler_gnu - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 - $as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf -@@ -6381,11 +6901,11 @@ - sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; then -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in -@@ -6411,9 +6931,9 @@ - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. - set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_DSYMUTIL+set}" = set; then : -+if test "${ac_cv_prog_DSYMUTIL+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$DSYMUTIL"; then -@@ -6424,24 +6944,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - DSYMUTIL=$ac_cv_prog_DSYMUTIL - if test -n "$DSYMUTIL"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -+ { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 - $as_echo "$DSYMUTIL" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -6451,9 +6971,9 @@ - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. - set dummy dsymutil; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_DSYMUTIL"; then -@@ -6464,24 +6984,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL - if test -n "$ac_ct_DSYMUTIL"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 - $as_echo "$ac_ct_DSYMUTIL" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -6490,7 +7010,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -6503,9 +7023,9 @@ - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. - set dummy ${ac_tool_prefix}nmedit; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_NMEDIT+set}" = set; then : -+if test "${ac_cv_prog_NMEDIT+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$NMEDIT"; then -@@ -6516,24 +7036,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - NMEDIT=$ac_cv_prog_NMEDIT - if test -n "$NMEDIT"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -+ { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5 - $as_echo "$NMEDIT" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -6543,9 +7063,9 @@ - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. - set dummy nmedit; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_NMEDIT"; then -@@ -6556,24 +7076,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT - if test -n "$ac_ct_NMEDIT"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 - $as_echo "$ac_ct_NMEDIT" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -6582,7 +7102,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -6595,9 +7115,9 @@ - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. - set dummy ${ac_tool_prefix}lipo; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_LIPO+set}" = set; then : -+if test "${ac_cv_prog_LIPO+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$LIPO"; then -@@ -6608,24 +7128,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - LIPO=$ac_cv_prog_LIPO - if test -n "$LIPO"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -+ { $as_echo "$as_me:$LINENO: result: $LIPO" >&5 - $as_echo "$LIPO" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -6635,9 +7155,9 @@ - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. - set dummy lipo; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_LIPO"; then -@@ -6648,24 +7168,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_LIPO="lipo" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO - if test -n "$ac_ct_LIPO"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5 - $as_echo "$ac_ct_LIPO" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -6674,7 +7194,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -6687,9 +7207,9 @@ - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. - set dummy ${ac_tool_prefix}otool; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_OTOOL+set}" = set; then : -+if test "${ac_cv_prog_OTOOL+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$OTOOL"; then -@@ -6700,24 +7220,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - OTOOL=$ac_cv_prog_OTOOL - if test -n "$OTOOL"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -+ { $as_echo "$as_me:$LINENO: result: $OTOOL" >&5 - $as_echo "$OTOOL" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -6727,9 +7247,9 @@ - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. - set dummy otool; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_OTOOL"; then -@@ -6740,24 +7260,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL="otool" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL - if test -n "$ac_ct_OTOOL"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5 - $as_echo "$ac_ct_OTOOL" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -6766,7 +7286,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -6779,9 +7299,9 @@ - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. - set dummy ${ac_tool_prefix}otool64; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_OTOOL64+set}" = set; then : -+if test "${ac_cv_prog_OTOOL64+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$OTOOL64"; then -@@ -6792,24 +7312,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - OTOOL64=$ac_cv_prog_OTOOL64 - if test -n "$OTOOL64"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -+ { $as_echo "$as_me:$LINENO: result: $OTOOL64" >&5 - $as_echo "$OTOOL64" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -6819,9 +7339,9 @@ - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. - set dummy otool64; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_OTOOL64"; then -@@ -6832,24 +7352,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL64="otool64" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 - if test -n "$ac_ct_OTOOL64"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5 - $as_echo "$ac_ct_OTOOL64" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -6858,7 +7378,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -6894,9 +7414,9 @@ - - - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -+ { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 - $as_echo_n "checking for -single_module linker flag... " >&6; } --if test "${lt_cv_apple_cc_single_mod+set}" = set; then : -+if test "${lt_cv_apple_cc_single_mod+set}" = set; then - $as_echo_n "(cached) " >&6 - else - lt_cv_apple_cc_single_mod=no -@@ -6921,18 +7441,22 @@ - rm -f conftest.* - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 - $as_echo "$lt_cv_apple_cc_single_mod" >&6; } -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -+ { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 - $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } --if test "${lt_cv_ld_exported_symbols_list+set}" = set; then : -+if test "${lt_cv_ld_exported_symbols_list+set}" = set; then - $as_echo_n "(cached) " >&6 - else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -6943,17 +7467,42 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - lt_cv_ld_exported_symbols_list=yes - else -- lt_cv_ld_exported_symbols_list=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ lt_cv_ld_exported_symbols_list=no - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 - $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) -@@ -6990,13 +7539,62 @@ - ;; - esac - -+ - for ac_header in dlfcn.h --do : -- ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default --" --if test "x$ac_cv_header_dlfcn_h" = x""yes; then : -+do -+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -+$as_echo_n "checking for $ac_header... " >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ $as_echo_n "(cached) " >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ -+#include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ eval "$as_ac_Header=yes" -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ eval "$as_ac_Header=no" -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+ac_res=`eval 'as_val=${'$as_ac_Header'} -+ $as_echo "$as_val"'` -+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+as_val=`eval 'as_val=${'$as_ac_Header'} -+ $as_echo "$as_val"'` -+ if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF --#define HAVE_DLFCN_H 1 -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF - - fi -@@ -7016,7 +7614,7 @@ - - - # Check whether --enable-shared was given. --if test "${enable_shared+set}" = set; then : -+if test "${enable_shared+set}" = set; then - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; -@@ -7047,7 +7645,7 @@ - - - # Check whether --enable-static was given. --if test "${enable_static+set}" = set; then : -+if test "${enable_static+set}" = set; then - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; -@@ -7079,7 +7677,7 @@ - - - # Check whether --with-pic was given. --if test "${with_pic+set}" = set; then : -+if test "${with_pic+set}" = set; then - withval=$with_pic; pic_mode="$withval" - else - pic_mode=default -@@ -7095,7 +7693,7 @@ - - - # Check whether --enable-fast-install was given. --if test "${enable_fast_install+set}" = set; then : -+if test "${enable_fast_install+set}" = set; then - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; -@@ -7176,9 +7774,9 @@ - setopt NO_GLOB_SUBST - fi - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -+{ $as_echo "$as_me:$LINENO: checking for objdir" >&5 - $as_echo_n "checking for objdir... " >&6; } --if test "${lt_cv_objdir+set}" = set; then : -+if test "${lt_cv_objdir+set}" = set; then - $as_echo_n "(cached) " >&6 - else - rm -f .libs 2>/dev/null -@@ -7191,7 +7789,7 @@ - fi - rmdir .libs 2>/dev/null - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 - $as_echo "$lt_cv_objdir" >&6; } - objdir=$lt_cv_objdir - -@@ -7284,9 +7882,9 @@ - case $deplibs_check_method in - file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -+ { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 - $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } --if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : -+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - $as_echo_n "(cached) " >&6 - else - case $MAGIC_CMD in -@@ -7337,10 +7935,10 @@ - - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if test -n "$MAGIC_CMD"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -+ { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 - $as_echo "$MAGIC_CMD" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -7350,9 +7948,9 @@ - - if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -+ { $as_echo "$as_me:$LINENO: checking for file" >&5 - $as_echo_n "checking for file... " >&6; } --if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : -+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - $as_echo_n "(cached) " >&6 - else - case $MAGIC_CMD in -@@ -7403,10 +8001,10 @@ - - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if test -n "$MAGIC_CMD"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -+ { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 - $as_echo "$MAGIC_CMD" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -7487,9 +8085,9 @@ - if test "$GCC" = yes; then - lt_prog_compiler_no_builtin_flag=' -fno-builtin' - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -+ { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 - $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } --if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then : -+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then - $as_echo_n "(cached) " >&6 - else - lt_cv_prog_compiler_rtti_exceptions=no -@@ -7505,11 +8103,11 @@ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:7508: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:8106: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 -- echo "$as_me:7512: \$? = $ac_status" >&5 -+ echo "$as_me:8110: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. -@@ -7522,7 +8120,7 @@ - $RM conftest* - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 - $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - - if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then -@@ -7542,7 +8140,7 @@ - lt_prog_compiler_pic= - lt_prog_compiler_static= - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 - $as_echo_n "checking for $compiler option to produce PIC... " >&6; } - - if test "$GCC" = yes; then -@@ -7814,7 +8412,7 @@ - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; - esac --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 - $as_echo "$lt_prog_compiler_pic" >&6; } - - -@@ -7826,9 +8424,9 @@ - # Check to make sure the PIC flag actually works. - # - if test -n "$lt_prog_compiler_pic"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -+ { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 - $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } --if test "${lt_cv_prog_compiler_pic_works+set}" = set; then : -+if test "${lt_cv_prog_compiler_pic_works+set}" = set; then - $as_echo_n "(cached) " >&6 - else - lt_cv_prog_compiler_pic_works=no -@@ -7844,11 +8442,11 @@ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:7847: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:8445: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 -- echo "$as_me:7851: \$? = $ac_status" >&5 -+ echo "$as_me:8449: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. -@@ -7861,7 +8459,7 @@ - $RM conftest* - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 - $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - - if test x"$lt_cv_prog_compiler_pic_works" = xyes; then -@@ -7885,9 +8483,9 @@ - # Check to make sure the static flag actually works. - # - wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -+{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 - $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } --if test "${lt_cv_prog_compiler_static_works+set}" = set; then : -+if test "${lt_cv_prog_compiler_static_works+set}" = set; then - $as_echo_n "(cached) " >&6 - else - lt_cv_prog_compiler_static_works=no -@@ -7913,7 +8511,7 @@ - LDFLAGS="$save_LDFLAGS" - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 - $as_echo "$lt_cv_prog_compiler_static_works" >&6; } - - if test x"$lt_cv_prog_compiler_static_works" = xyes; then -@@ -7928,9 +8526,9 @@ - - - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -+ { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 - $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } --if test "${lt_cv_prog_compiler_c_o+set}" = set; then : -+if test "${lt_cv_prog_compiler_c_o+set}" = set; then - $as_echo_n "(cached) " >&6 - else - lt_cv_prog_compiler_c_o=no -@@ -7949,11 +8547,11 @@ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:7952: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:8550: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 -- echo "$as_me:7956: \$? = $ac_status" >&5 -+ echo "$as_me:8554: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized -@@ -7975,7 +8573,7 @@ - $RM conftest* - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 - $as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - -@@ -7983,9 +8581,9 @@ - - - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -+ { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 - $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } --if test "${lt_cv_prog_compiler_c_o+set}" = set; then : -+if test "${lt_cv_prog_compiler_c_o+set}" = set; then - $as_echo_n "(cached) " >&6 - else - lt_cv_prog_compiler_c_o=no -@@ -8004,11 +8602,11 @@ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` -- (eval echo "\"\$as_me:8007: $lt_compile\"" >&5) -+ (eval echo "\"\$as_me:8605: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 -- echo "$as_me:8011: \$? = $ac_status" >&5 -+ echo "$as_me:8609: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized -@@ -8030,7 +8628,7 @@ - $RM conftest* - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 - $as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - -@@ -8039,7 +8637,7 @@ - hard_links="nottested" - if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -+ { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 - $as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* -@@ -8047,10 +8645,10 @@ - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -+ { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 - $as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -+ { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 - $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -@@ -8063,7 +8661,7 @@ - - - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -+ { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 - $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= -@@ -8509,7 +9107,11 @@ - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -8520,7 +9122,27 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { -@@ -8534,9 +9156,16 @@ - if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" -@@ -8549,7 +9178,11 @@ - else - # Determine the default libpath from the value encoded in an - # empty executable. -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -8560,7 +9193,27 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { -@@ -8574,9 +9227,16 @@ - if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" -@@ -8788,16 +9448,42 @@ - # implicitly export all symbols. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ -+ cat >conftest.$ac_ext <<_ACEOF - int foo(void) {} - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' -@@ -9053,7 +9739,7 @@ - fi - fi - --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 - $as_echo "$ld_shlibs" >&6; } - test "$ld_shlibs" = no && can_build_shared=no - -@@ -9090,16 +9776,16 @@ - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -+ { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 - $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } 2>conftest.err; then -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext -@@ -9113,11 +9799,11 @@ - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 -+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } - then - archive_cmds_need_lc=no - else -@@ -9128,7 +9814,7 @@ - cat conftest.err 1>&5 - fi - $RM conftest* -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 -+ { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 - $as_echo "$archive_cmds_need_lc" >&6; } - ;; - esac -@@ -9292,7 +9978,7 @@ - - - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -+ { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 - $as_echo_n "checking dynamic linker characteristics... " >&6; } - - if test "$GCC" = yes; then -@@ -9714,7 +10400,11 @@ - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -9725,13 +10415,41 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -- if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then -+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then - shlibpath_overrides_runpath=yes - fi -+ -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -@@ -9955,7 +10673,7 @@ - dynamic_linker=no - ;; - esac --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -+{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 - $as_echo "$dynamic_linker" >&6; } - test "$dynamic_linker" = no && can_build_shared=no - -@@ -10057,7 +10775,7 @@ - - - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -+ { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 - $as_echo_n "checking how to hardcode library paths into programs... " >&6; } - hardcode_action= - if test -n "$hardcode_libdir_flag_spec" || -@@ -10082,7 +10800,7 @@ - # directories. - hardcode_action=unsupported - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -+{ $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5 - $as_echo "$hardcode_action" >&6; } - - if test "$hardcode_action" = relink || -@@ -10127,14 +10845,18 @@ - - darwin*) - # if libdl is installed we need to link against it -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -+ { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 - $as_echo_n "checking for dlopen in -ldl... " >&6; } --if test "${ac_cv_lib_dl_dlopen+set}" = set; then : -+if test "${ac_cv_lib_dl_dlopen+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-ldl $LIBS" --cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -10152,18 +10874,43 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - ac_cv_lib_dl_dlopen=yes - else -- ac_cv_lib_dl_dlopen=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_lib_dl_dlopen=no - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 - $as_echo "$ac_cv_lib_dl_dlopen" >&6; } --if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : -+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" - else - -@@ -10176,18 +10923,106 @@ - ;; - - *) -- ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" --if test "x$ac_cv_func_shl_load" = x""yes; then : -+ { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 -+$as_echo_n "checking for shl_load... " >&6; } -+if test "${ac_cv_func_shl_load+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define shl_load to an innocuous variant, in case declares shl_load. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define shl_load innocuous_shl_load -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char shl_load (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef shl_load -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char shl_load (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_shl_load || defined __stub___shl_load -+choke me -+#endif -+ -+int -+main () -+{ -+return shl_load (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then -+ ac_cv_func_shl_load=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_func_shl_load=no -+fi -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -+$as_echo "$ac_cv_func_shl_load" >&6; } -+if test "x$ac_cv_func_shl_load" = x""yes; then - lt_cv_dlopen="shl_load" - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -+ { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 - $as_echo_n "checking for shl_load in -ldld... " >&6; } --if test "${ac_cv_lib_dld_shl_load+set}" = set; then : -+if test "${ac_cv_lib_dld_shl_load+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-ldld $LIBS" --cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -10205,32 +11040,145 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - ac_cv_lib_dld_shl_load=yes - else -- ac_cv_lib_dld_shl_load=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_lib_dld_shl_load=no - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 - $as_echo "$ac_cv_lib_dld_shl_load" >&6; } --if test "x$ac_cv_lib_dld_shl_load" = x""yes; then : -+if test "x$ac_cv_lib_dld_shl_load" = x""yes; then - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" - else -- ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" --if test "x$ac_cv_func_dlopen" = x""yes; then : -+ { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 -+$as_echo_n "checking for dlopen... " >&6; } -+if test "${ac_cv_func_dlopen+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define dlopen to an innocuous variant, in case declares dlopen. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define dlopen innocuous_dlopen -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char dlopen (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef dlopen -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char dlopen (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_dlopen || defined __stub___dlopen -+choke me -+#endif -+ -+int -+main () -+{ -+return dlopen (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then -+ ac_cv_func_dlopen=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_func_dlopen=no -+fi -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -+$as_echo "$ac_cv_func_dlopen" >&6; } -+if test "x$ac_cv_func_dlopen" = x""yes; then - lt_cv_dlopen="dlopen" - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -+ { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 - $as_echo_n "checking for dlopen in -ldl... " >&6; } --if test "${ac_cv_lib_dl_dlopen+set}" = set; then : -+if test "${ac_cv_lib_dl_dlopen+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-ldl $LIBS" --cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -10248,28 +11196,57 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - ac_cv_lib_dl_dlopen=yes - else -- ac_cv_lib_dl_dlopen=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_lib_dl_dlopen=no - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 - $as_echo "$ac_cv_lib_dl_dlopen" >&6; } --if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : -+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -+ { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 - $as_echo_n "checking for dlopen in -lsvld... " >&6; } --if test "${ac_cv_lib_svld_dlopen+set}" = set; then : -+if test "${ac_cv_lib_svld_dlopen+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-lsvld $LIBS" --cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -10287,28 +11264,57 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - ac_cv_lib_svld_dlopen=yes - else -- ac_cv_lib_svld_dlopen=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_lib_svld_dlopen=no - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 - $as_echo "$ac_cv_lib_svld_dlopen" >&6; } --if test "x$ac_cv_lib_svld_dlopen" = x""yes; then : -+if test "x$ac_cv_lib_svld_dlopen" = x""yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -+ { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 - $as_echo_n "checking for dld_link in -ldld... " >&6; } --if test "${ac_cv_lib_dld_dld_link+set}" = set; then : -+if test "${ac_cv_lib_dld_dld_link+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-ldld $LIBS" --cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -10326,18 +11332,43 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - ac_cv_lib_dld_dld_link=yes - else -- ac_cv_lib_dld_dld_link=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_lib_dld_dld_link=no - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 - $as_echo "$ac_cv_lib_dld_dld_link" >&6; } --if test "x$ac_cv_lib_dld_dld_link" = x""yes; then : -+if test "x$ac_cv_lib_dld_dld_link" = x""yes; then - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" - fi - -@@ -10376,9 +11407,9 @@ - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -+ { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 - $as_echo_n "checking whether a program can dlopen itself... " >&6; } --if test "${lt_cv_dlopen_self+set}" = set; then : -+if test "${lt_cv_dlopen_self+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test "$cross_compiling" = yes; then : -@@ -10387,7 +11418,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --#line 10390 "configure" -+#line 11421 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -10446,11 +11477,11 @@ - return status; - } - _LT_EOF -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 -+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in -@@ -10467,14 +11498,14 @@ - - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 - $as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -+ { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 - $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } --if test "${lt_cv_dlopen_self_static+set}" = set; then : -+if test "${lt_cv_dlopen_self_static+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test "$cross_compiling" = yes; then : -@@ -10483,7 +11514,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --#line 10486 "configure" -+#line 11517 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -10542,11 +11573,11 @@ - return status; - } - _LT_EOF -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 -+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in -@@ -10563,7 +11594,7 @@ - - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -+{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 - $as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - -@@ -10602,12 +11633,12 @@ - - striplib= - old_striplib= --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 - $as_echo_n "checking whether stripping libraries is possible... " >&6; } - if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+ { $as_echo "$as_me:$LINENO: result: yes" >&5 - $as_echo "yes" >&6; } - else - # FIXME - insert some real tests, host_os isn't really good enough -@@ -10616,15 +11647,15 @@ - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+ { $as_echo "$as_me:$LINENO: result: yes" >&5 - $as_echo "yes" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - ;; - *) -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - ;; - esac -@@ -10642,12 +11673,12 @@ - - - # Report which library types will actually be built -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -+ { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 - $as_echo_n "checking if libtool supports shared libraries... " >&6; } -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -+ { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 - $as_echo "$can_build_shared" >&6; } - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -+ { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 - $as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - -@@ -10668,14 +11699,14 @@ - fi - ;; - esac -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -+ { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 - $as_echo "$enable_shared" >&6; } - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -+ { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 - $as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -+ { $as_echo "$as_me:$LINENO: result: $enable_static" >&5 - $as_echo "$enable_static" >&6; } - - -@@ -10718,9 +11749,9 @@ - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. - set dummy ${ac_tool_prefix}gcc; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_CC+set}" = set; then : -+if test "${ac_cv_prog_CC+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$CC"; then -@@ -10731,24 +11762,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - CC=$ac_cv_prog_CC - if test -n "$CC"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -+ { $as_echo "$as_me:$LINENO: result: $CC" >&5 - $as_echo "$CC" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -10758,9 +11789,9 @@ - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. - set dummy gcc; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_CC"; then -@@ -10771,24 +11802,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_CC=$ac_cv_prog_ac_ct_CC - if test -n "$ac_ct_CC"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 - $as_echo "$ac_ct_CC" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -10797,7 +11828,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -10811,9 +11842,9 @@ - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. - set dummy ${ac_tool_prefix}cc; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_CC+set}" = set; then : -+if test "${ac_cv_prog_CC+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$CC"; then -@@ -10824,24 +11855,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - CC=$ac_cv_prog_CC - if test -n "$CC"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -+ { $as_echo "$as_me:$LINENO: result: $CC" >&5 - $as_echo "$CC" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -10851,9 +11882,9 @@ - if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. - set dummy cc; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_CC+set}" = set; then : -+if test "${ac_cv_prog_CC+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$CC"; then -@@ -10865,18 +11896,18 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - if test $ac_prog_rejected = yes; then -@@ -10895,10 +11926,10 @@ - fi - CC=$ac_cv_prog_CC - if test -n "$CC"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -+ { $as_echo "$as_me:$LINENO: result: $CC" >&5 - $as_echo "$CC" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -10910,9 +11941,9 @@ - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. - set dummy $ac_tool_prefix$ac_prog; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_CC+set}" = set; then : -+if test "${ac_cv_prog_CC+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$CC"; then -@@ -10923,24 +11954,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - CC=$ac_cv_prog_CC - if test -n "$CC"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -+ { $as_echo "$as_me:$LINENO: result: $CC" >&5 - $as_echo "$CC" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -10954,9 +11985,9 @@ - do - # Extract the first word of "$ac_prog", so it can be a program name with args. - set dummy $ac_prog; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : -+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$ac_ct_CC"; then -@@ -10967,24 +11998,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - fi - fi - ac_ct_CC=$ac_cv_prog_ac_ct_CC - if test -n "$ac_ct_CC"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 - $as_echo "$ac_ct_CC" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -10997,7 +12028,7 @@ - else - case $cross_compiling:$ac_tool_warned in - yes:) --{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 - $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} - ac_tool_warned=yes ;; - esac -@@ -11008,42 +12039,62 @@ - fi - - --test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --as_fn_error "no acceptable C compiler found in \$PATH --See \`config.log' for more details." "$LINENO" 5; } -+{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -+See \`config.log' for more details." >&5 -+$as_echo "$as_me: error: no acceptable C compiler found in \$PATH -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; }; } - - # Provide some information about the compiler. --$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 - set X $ac_compile - ac_compiler=$2 --for ac_option in --version -v -V -qversion; do -- { { ac_try="$ac_compiler $ac_option >&5" -+{ (ac_try="$ac_compiler --version >&5" - case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; - esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -- (eval "$ac_compiler $ac_option >&5") 2>conftest.err -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? -- if test -s conftest.err; then -- sed '10a\ --... rest of stderr output deleted ... -- 10q' conftest.err >conftest.er1 -- cat conftest.er1 >&5 -- rm -f conftest.er1 conftest.err -- fi -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } --done -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+{ (ac_try="$ac_compiler -v >&5" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compiler -v >&5") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+{ (ac_try="$ac_compiler -V >&5" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compiler -V >&5") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 - $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } --if test "${ac_cv_c_compiler_gnu+set}" = set; then : -+if test "${ac_cv_c_compiler_gnu+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -11057,16 +12108,37 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_compiler_gnu=yes - else -- ac_compiler_gnu=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_compiler_gnu=no - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_c_compiler_gnu=$ac_compiler_gnu - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 - $as_echo "$ac_cv_c_compiler_gnu" >&6; } - if test $ac_compiler_gnu = yes; then - GCC=yes -@@ -11075,16 +12147,20 @@ - fi - ac_test_CFLAGS=${CFLAGS+set} - ac_save_CFLAGS=$CFLAGS --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 - $as_echo_n "checking whether $CC accepts -g... " >&6; } --if test "${ac_cv_prog_cc_g+set}" = set; then : -+if test "${ac_cv_prog_cc_g+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -11095,11 +12171,35 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes - else -- CFLAGS="" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ CFLAGS="" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -11110,12 +12210,36 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -- -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ : - else -- ac_c_werror_flag=$ac_save_c_werror_flag -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -11126,17 +12250,42 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 - $as_echo "$ac_cv_prog_cc_g" >&6; } - if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -@@ -11153,14 +12302,18 @@ - CFLAGS= - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 - $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } --if test "${ac_cv_prog_cc_c89+set}" = set; then : -+if test "${ac_cv_prog_cc_c89+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_cv_prog_cc_c89=no - ac_save_CC=$CC --cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - #include -@@ -11217,9 +12370,32 @@ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" - do - CC="$ac_save_CC $ac_arg" -- if ac_fn_c_try_compile "$LINENO"; then : -+ rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_c89=$ac_arg -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ - fi -+ - rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break - done -@@ -11230,19 +12406,17 @@ - # AC_CACHE_VAL - case "x$ac_cv_prog_cc_c89" in - x) -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -+ { $as_echo "$as_me:$LINENO: result: none needed" >&5 - $as_echo "none needed" >&6; } ;; - xno) -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -+ { $as_echo "$as_me:$LINENO: result: unsupported" >&5 - $as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -+ { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 - $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; - esac --if test "x$ac_cv_prog_cc_c89" != xno; then : - --fi - - ac_ext=c - ac_cpp='$CPP $CPPFLAGS' -@@ -11252,9 +12426,9 @@ - - depcc="$CC" am_compiler_list= - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 - $as_echo_n "checking dependency style of $depcc... " >&6; } --if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : -+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then -@@ -11362,7 +12536,7 @@ - fi - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -+{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 - $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } - CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - -@@ -11381,18 +12555,22 @@ - am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc - - if test "x$CC" != xcc; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 -+ { $as_echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5 - $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 -+ { $as_echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5 - $as_echo_n "checking whether cc understands -c and -o together... " >&6; } - fi - set dummy $CC; ac_cc=`$as_echo "$2" | - sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` --if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then : -+if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -11408,63 +12586,63 @@ - # existing .o file with -o, though they will create one. - ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' - rm -f conftest2.* --if { { case "(($ac_try" in -+if { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; - esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } && -- test -f conftest2.$ac_objext && { { case "(($ac_try" in -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ test -f conftest2.$ac_objext && { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; - esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; - then - eval ac_cv_prog_cc_${ac_cc}_c_o=yes - if test "x$CC" != xcc; then - # Test first that cc exists at all. - if { ac_try='cc -c conftest.$ac_ext >&5' -- { { case "(($ac_try" in -+ { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; - esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; }; then -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then - ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' - rm -f conftest2.* -- if { { case "(($ac_try" in -+ if { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; - esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; } && -- test -f conftest2.$ac_objext && { { case "(($ac_try" in -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ test -f conftest2.$ac_objext && { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; - esac --eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" --$as_echo "$ac_try_echo"; } >&5 -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; - then - # cc works too. - : -@@ -11481,13 +12659,15 @@ - - fi - if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+ { $as_echo "$as_me:$LINENO: result: yes" >&5 - $as_echo "yes" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - --$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define NO_MINUS_C_MINUS_O 1 -+_ACEOF - - fi - -@@ -11506,23 +12686,115 @@ - fi - - -+# Find a good install program. We prefer a C program (faster), -+# so one script is as good as another. But avoid the broken or -+# incompatible versions: -+# SysV /etc/install, /usr/sbin/install -+# SunOS /usr/etc/install -+# IRIX /sbin/install -+# AIX /bin/install -+# AmigaOS /C/install, which installs bootblocks on floppy discs -+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -+# AFS /usr/afsws/bin/install, which mishandles nonexistent args -+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -+# OS/2's system install, which has a completely different semantic -+# ./install, which can be erroneously created by make from ./install.sh. -+# Reject install programs that cannot install multiple files. -+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -+$as_echo_n "checking for a BSD-compatible install... " >&6; } -+if test -z "$INSTALL"; then -+if test "${ac_cv_path_install+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ # Account for people who put trailing slashes in PATH elements. -+case $as_dir/ in -+ ./ | .// | /cC/* | \ -+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ -+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ -+ /usr/ucb/* ) ;; -+ *) -+ # OSF1 and SCO ODT 3.0 have their own names for install. -+ # Don't use installbsd from OSF since it installs stuff as root -+ # by default. -+ for ac_prog in ginstall scoinst install; do -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then -+ if test $ac_prog = install && -+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then -+ # AIX install. It has an incompatible calling convention. -+ : -+ elif test $ac_prog = install && -+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then -+ # program-specific install script used by HP pwplus--don't use. -+ : -+ else -+ rm -rf conftest.one conftest.two conftest.dir -+ echo one > conftest.one -+ echo two > conftest.two -+ mkdir conftest.dir -+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && -+ test -s conftest.one && test -s conftest.two && -+ test -s conftest.dir/conftest.one && -+ test -s conftest.dir/conftest.two -+ then -+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" -+ break 3 -+ fi -+ fi -+ fi -+ done -+ done -+ ;; -+esac -+ -+done -+IFS=$as_save_IFS -+ -+rm -rf conftest.one conftest.two conftest.dir -+ -+fi -+ if test "${ac_cv_path_install+set}" = set; then -+ INSTALL=$ac_cv_path_install -+ else -+ # As a last resort, use the slow shell script. Don't cache a -+ # value for INSTALL within a source directory, because that will -+ # break other packages using the cache if that directory is -+ # removed, or if the value is a relative name. -+ INSTALL=$ac_install_sh -+ fi -+fi -+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 -+$as_echo "$INSTALL" >&6; } -+ -+# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -+# It thinks the first close brace ends the variable substitution. -+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' -+ -+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' -+ -+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 - $as_echo_n "checking whether ln -s works... " >&6; } - LN_S=$as_ln_s - if test "$LN_S" = "ln -s"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+ { $as_echo "$as_me:$LINENO: result: yes" >&5 - $as_echo "yes" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -+ { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 - $as_echo "no, using $LN_S" >&6; } - fi - - # Extract the first word of "mktemp", so it can be a program name with args. - set dummy mktemp; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_path_MKTEMP_PROG+set}" = set; then : -+if test "${ac_cv_path_MKTEMP_PROG+set}" = set; then - $as_echo_n "(cached) " >&6 - else - case $MKTEMP_PROG in -@@ -11535,14 +12807,14 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_MKTEMP_PROG="$as_dir/$ac_word$ac_exec_ext" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - ;; -@@ -11550,10 +12822,10 @@ - fi - MKTEMP_PROG=$ac_cv_path_MKTEMP_PROG - if test -n "$MKTEMP_PROG"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKTEMP_PROG" >&5 -+ { $as_echo "$as_me:$LINENO: result: $MKTEMP_PROG" >&5 - $as_echo "$MKTEMP_PROG" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -11565,9 +12837,9 @@ - - # Extract the first word of "cstocs", so it can be a program name with args. - set dummy cstocs; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_path_CSTOCS_PROG+set}" = set; then : -+if test "${ac_cv_path_CSTOCS_PROG+set}" = set; then - $as_echo_n "(cached) " >&6 - else - case $CSTOCS_PROG in -@@ -11580,14 +12852,14 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_CSTOCS_PROG="$as_dir/$ac_word$ac_exec_ext" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - ;; -@@ -11595,19 +12867,19 @@ - fi - CSTOCS_PROG=$ac_cv_path_CSTOCS_PROG - if test -n "$CSTOCS_PROG"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CSTOCS_PROG" >&5 -+ { $as_echo "$as_me:$LINENO: result: $CSTOCS_PROG" >&5 - $as_echo "$CSTOCS_PROG" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - - - # Extract the first word of "recode", so it can be a program name with args. - set dummy recode; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_path_RECODE_PROG+set}" = set; then : -+if test "${ac_cv_path_RECODE_PROG+set}" = set; then - $as_echo_n "(cached) " >&6 - else - case $RECODE_PROG in -@@ -11620,14 +12892,14 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_RECODE_PROG="$as_dir/$ac_word$ac_exec_ext" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - ;; -@@ -11635,19 +12907,19 @@ - fi - RECODE_PROG=$ac_cv_path_RECODE_PROG - if test -n "$RECODE_PROG"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RECODE_PROG" >&5 -+ { $as_echo "$as_me:$LINENO: result: $RECODE_PROG" >&5 - $as_echo "$RECODE_PROG" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - - - # Extract the first word of "umap", so it can be a program name with args. - set dummy umap; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_path_UMAP_PROG+set}" = set; then : -+if test "${ac_cv_path_UMAP_PROG+set}" = set; then - $as_echo_n "(cached) " >&6 - else - case $UMAP_PROG in -@@ -11660,14 +12932,14 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_UMAP_PROG="$as_dir/$ac_word$ac_exec_ext" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - ;; -@@ -11675,19 +12947,19 @@ - fi - UMAP_PROG=$ac_cv_path_UMAP_PROG - if test -n "$UMAP_PROG"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UMAP_PROG" >&5 -+ { $as_echo "$as_me:$LINENO: result: $UMAP_PROG" >&5 - $as_echo "$UMAP_PROG" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - - - # Extract the first word of "piconv", so it can be a program name with args. - set dummy piconv; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_path_PICONV_PROG+set}" = set; then : -+if test "${ac_cv_path_PICONV_PROG+set}" = set; then - $as_echo_n "(cached) " >&6 - else - case $PICONV_PROG in -@@ -11700,14 +12972,14 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PICONV_PROG="$as_dir/$ac_word$ac_exec_ext" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - ;; -@@ -11715,19 +12987,19 @@ - fi - PICONV_PROG=$ac_cv_path_PICONV_PROG - if test -n "$PICONV_PROG"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PICONV_PROG" >&5 -+ { $as_echo "$as_me:$LINENO: result: $PICONV_PROG" >&5 - $as_echo "$PICONV_PROG" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - - - # Extract the first word of "map", so it can be a program name with args. - set dummy map; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_path_MAP_PROG+set}" = set; then : -+if test "${ac_cv_path_MAP_PROG+set}" = set; then - $as_echo_n "(cached) " >&6 - else - case $MAP_PROG in -@@ -11740,14 +13012,14 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_MAP_PROG="$as_dir/$ac_word$ac_exec_ext" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - ;; -@@ -11755,21 +13027,23 @@ - fi - MAP_PROG=$ac_cv_path_MAP_PROG - if test -n "$MAP_PROG"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAP_PROG" >&5 -+ { $as_echo "$as_me:$LINENO: result: $MAP_PROG" >&5 - $as_echo "$MAP_PROG" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - - - - # Check whether --enable-external was given. --if test "${enable_external+set}" = set; then : -+if test "${enable_external+set}" = set; then - enableval=$enable_external; case "${enableval}" in - yes) WANT_EXTERNAL=yes ;; - no) WANT_EXTERNAL=no ;; -- *) as_fn_error "bad value ${enableval} for --enable-external" "$LINENO" 5 ;; -+ *) { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-external" >&5 -+$as_echo "$as_me: error: bad value ${enableval} for --enable-external" >&2;} -+ { (exit 1); exit 1; }; } ;; - esac - else - WANT_EXTERNAL=yes -@@ -11822,7 +13096,7 @@ - - - # Check whether --with-html-dir was given. --if test "${with_html_dir+set}" = set; then : -+if test "${with_html_dir+set}" = set; then - withval=$with_html_dir; - fi - -@@ -11837,9 +13111,9 @@ - - # Extract the first word of "gtkdoc-mkdb", so it can be a program name with args. - set dummy gtkdoc-mkdb; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_GTKDOC+set}" = set; then : -+if test "${ac_cv_prog_GTKDOC+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -n "$GTKDOC"; then -@@ -11850,14 +13124,14 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_GTKDOC="true" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done -- done -+done - IFS=$as_save_IFS - - test -z "$ac_cv_prog_GTKDOC" && ac_cv_prog_GTKDOC="false" -@@ -11865,10 +13139,10 @@ - fi - GTKDOC=$ac_cv_prog_GTKDOC - if test -n "$GTKDOC"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC" >&5 -+ { $as_echo "$as_me:$LINENO: result: $GTKDOC" >&5 - $as_echo "$GTKDOC" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -11877,23 +13151,23 @@ - gtk_doc_min_version=1.0 - if $GTKDOC ; then - gtk_doc_version=`gtkdoc-mkdb --version` -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking gtk-doc version ($gtk_doc_version) >= $gtk_doc_min_version" >&5 -+ { $as_echo "$as_me:$LINENO: checking gtk-doc version ($gtk_doc_version) >= $gtk_doc_min_version" >&5 - $as_echo_n "checking gtk-doc version ($gtk_doc_version) >= $gtk_doc_min_version... " >&6; } - if perl <= "$gtk_doc_min_version") ? 0 : 1); - EOF -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+ { $as_echo "$as_me:$LINENO: result: yes" >&5 - $as_echo "yes" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - GTKDOC=false - fi - fi - - # Check whether --enable-gtk-doc was given. --if test "${enable_gtk_doc+set}" = set; then : -+if test "${enable_gtk_doc+set}" = set; then - enableval=$enable_gtk_doc; enable_gtk_doc="$enableval" - else - enable_gtk_doc=auto -@@ -11918,105 +13192,109 @@ - - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/random" >&5 -+{ $as_echo "$as_me:$LINENO: checking for /dev/random" >&5 - $as_echo_n "checking for /dev/random... " >&6; } --if test "${ac_cv_file__dev_random+set}" = set; then : -+if test "${ac_cv_file__dev_random+set}" = set; then - $as_echo_n "(cached) " >&6 - else - test "$cross_compiling" = yes && -- as_fn_error "cannot check for file existence when cross compiling" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 -+$as_echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} -+ { (exit 1); exit 1; }; } - if test -r "/dev/random"; then - ac_cv_file__dev_random=yes - else - ac_cv_file__dev_random=no - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_random" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_file__dev_random" >&5 - $as_echo "$ac_cv_file__dev_random" >&6; } --if test "x$ac_cv_file__dev_random" = x""yes; then : -+if test "x$ac_cv_file__dev_random" = x""yes; then - - cat >>confdefs.h <<_ACEOF - #define HAVE__DEV_RANDOM 1 - _ACEOF - -+ - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/urandom" >&5 -+{ $as_echo "$as_me:$LINENO: checking for /dev/urandom" >&5 - $as_echo_n "checking for /dev/urandom... " >&6; } --if test "${ac_cv_file__dev_urandom+set}" = set; then : -+if test "${ac_cv_file__dev_urandom+set}" = set; then - $as_echo_n "(cached) " >&6 - else - test "$cross_compiling" = yes && -- as_fn_error "cannot check for file existence when cross compiling" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 -+$as_echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} -+ { (exit 1); exit 1; }; } - if test -r "/dev/urandom"; then - ac_cv_file__dev_urandom=yes - else - ac_cv_file__dev_urandom=no - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_urandom" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_file__dev_urandom" >&5 - $as_echo "$ac_cv_file__dev_urandom" >&6; } --if test "x$ac_cv_file__dev_urandom" = x""yes; then : -+if test "x$ac_cv_file__dev_urandom" = x""yes; then - - cat >>confdefs.h <<_ACEOF - #define HAVE__DEV_URANDOM 1 - _ACEOF - -+ - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/srandom" >&5 -+{ $as_echo "$as_me:$LINENO: checking for /dev/srandom" >&5 - $as_echo_n "checking for /dev/srandom... " >&6; } --if test "${ac_cv_file__dev_srandom+set}" = set; then : -+if test "${ac_cv_file__dev_srandom+set}" = set; then - $as_echo_n "(cached) " >&6 - else - test "$cross_compiling" = yes && -- as_fn_error "cannot check for file existence when cross compiling" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 -+$as_echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} -+ { (exit 1); exit 1; }; } - if test -r "/dev/srandom"; then - ac_cv_file__dev_srandom=yes - else - ac_cv_file__dev_srandom=no - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_srandom" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_file__dev_srandom" >&5 - $as_echo "$ac_cv_file__dev_srandom" >&6; } --if test "x$ac_cv_file__dev_srandom" = x""yes; then : -+if test "x$ac_cv_file__dev_srandom" = x""yes; then - - cat >>confdefs.h <<_ACEOF - #define HAVE__DEV_SRANDOM 1 - _ACEOF - -+ - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/arandom" >&5 -+{ $as_echo "$as_me:$LINENO: checking for /dev/arandom" >&5 - $as_echo_n "checking for /dev/arandom... " >&6; } --if test "${ac_cv_file__dev_arandom+set}" = set; then : -+if test "${ac_cv_file__dev_arandom+set}" = set; then - $as_echo_n "(cached) " >&6 - else - test "$cross_compiling" = yes && -- as_fn_error "cannot check for file existence when cross compiling" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 -+$as_echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} -+ { (exit 1); exit 1; }; } - if test -r "/dev/arandom"; then - ac_cv_file__dev_arandom=yes - else - ac_cv_file__dev_arandom=no - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_arandom" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_file__dev_arandom" >&5 - $as_echo "$ac_cv_file__dev_arandom" >&6; } --if test "x$ac_cv_file__dev_arandom" = x""yes; then : -+if test "x$ac_cv_file__dev_arandom" = x""yes; then - - cat >>confdefs.h <<_ACEOF - #define HAVE__DEV_ARANDOM 1 - _ACEOF - --fi -- - --if test "$prefix" = "NONE"; then -- LDFLAGS="$LDFLAGS -L$ac_default_prefix/lib" -- CPPFLAGS="$CPPFLAGS -I$ac_default_prefix/include" --else -- LDFLAGS="$LDFLAGS -L$prefix/lib" -- CPPFLAGS="$CPPFLAGS -I$prefix/include" - fi - - -+ - case "$target" in - NONE) yeti_libm_target="$host" ;; - *) yeti_libm_target="$target" ;; -@@ -12028,14 +13306,18 @@ - # These system don't have libm - ;; - *-ncr-sysv4.3*) -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mwvalidcheckl in -lmw" >&5 -+ { $as_echo "$as_me:$LINENO: checking for _mwvalidcheckl in -lmw" >&5 - $as_echo_n "checking for _mwvalidcheckl in -lmw... " >&6; } --if test "${ac_cv_lib_mw__mwvalidcheckl+set}" = set; then : -+if test "${ac_cv_lib_mw__mwvalidcheckl+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-lmw $LIBS" --cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -12053,29 +13335,58 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - ac_cv_lib_mw__mwvalidcheckl=yes - else -- ac_cv_lib_mw__mwvalidcheckl=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_lib_mw__mwvalidcheckl=no - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mw__mwvalidcheckl" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mw__mwvalidcheckl" >&5 - $as_echo "$ac_cv_lib_mw__mwvalidcheckl" >&6; } --if test "x$ac_cv_lib_mw__mwvalidcheckl" = x""yes; then : -+if test "x$ac_cv_lib_mw__mwvalidcheckl" = x""yes; then - LIBM="-lmw" - fi - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrt in -lm" >&5 -+ { $as_echo "$as_me:$LINENO: checking for sqrt in -lm" >&5 - $as_echo_n "checking for sqrt in -lm... " >&6; } --if test "${ac_cv_lib_m_sqrt+set}" = set; then : -+if test "${ac_cv_lib_m_sqrt+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-lm $LIBS" --cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -12093,31 +13404,60 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - ac_cv_lib_m_sqrt=yes - else -- ac_cv_lib_m_sqrt=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_lib_m_sqrt=no - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sqrt" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_m_sqrt" >&5 - $as_echo "$ac_cv_lib_m_sqrt" >&6; } --if test "x$ac_cv_lib_m_sqrt" = x""yes; then : -+if test "x$ac_cv_lib_m_sqrt" = x""yes; then - LIBM="$LIBM -lm" - fi - - ;; - *) -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrt in -lm" >&5 -+ { $as_echo "$as_me:$LINENO: checking for sqrt in -lm" >&5 - $as_echo_n "checking for sqrt in -lm... " >&6; } --if test "${ac_cv_lib_m_sqrt+set}" = set; then : -+if test "${ac_cv_lib_m_sqrt+set}" = set; then - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-lm $LIBS" --cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -12135,18 +13475,43 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - ac_cv_lib_m_sqrt=yes - else -- ac_cv_lib_m_sqrt=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_lib_m_sqrt=no - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sqrt" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_m_sqrt" >&5 - $as_echo "$ac_cv_lib_m_sqrt" >&6; } --if test "x$ac_cv_lib_m_sqrt" = x""yes; then : -+if test "x$ac_cv_lib_m_sqrt" = x""yes; then - LIBM="-lm" - fi - -@@ -12155,12 +13520,16 @@ - - LIBS="$LIBS $LIBM" - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 - $as_echo_n "checking for ANSI C header files... " >&6; } --if test "${ac_cv_header_stdc+set}" = set; then : -+if test "${ac_cv_header_stdc+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - #include -@@ -12175,23 +13544,48 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_cv_header_stdc=yes - else -- ac_cv_header_stdc=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_header_stdc=no - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - - _ACEOF - if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -- $EGREP "memchr" >/dev/null 2>&1; then : -- -+ $EGREP "memchr" >/dev/null 2>&1; then -+ : - else - ac_cv_header_stdc=no - fi -@@ -12201,14 +13595,18 @@ - - if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - - _ACEOF - if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -- $EGREP "free" >/dev/null 2>&1; then : -- -+ $EGREP "free" >/dev/null 2>&1; then -+ : - else - ac_cv_header_stdc=no - fi -@@ -12218,10 +13616,14 @@ - - if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -- if test "$cross_compiling" = yes; then : -+ if test "$cross_compiling" = yes; then - : - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - #include -@@ -12248,31 +13650,64 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_run "$LINENO"; then : -- -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ : - else -- ac_cv_header_stdc=no -+ $as_echo "$as_me: program exited with status $ac_status" >&5 -+$as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+ac_cv_header_stdc=no - fi --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -- conftest.$ac_objext conftest.beam conftest.$ac_ext -+rm -rf conftest.dSYM -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi - -+ - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 - $as_echo "$ac_cv_header_stdc" >&6; } - if test $ac_cv_header_stdc = yes; then - --$as_echo "#define STDC_HEADERS 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define STDC_HEADERS 1 -+_ACEOF - - fi - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 -+{ $as_echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 - $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } --if test "${ac_cv_header_sys_wait_h+set}" = set; then : -+if test "${ac_cv_header_sys_wait_h+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - #include -@@ -12293,27 +13728,54 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_cv_header_sys_wait_h=yes - else -- ac_cv_header_sys_wait_h=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_header_sys_wait_h=no - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 - $as_echo "$ac_cv_header_sys_wait_h" >&6; } - if test $ac_cv_header_sys_wait_h = yes; then - --$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_SYS_WAIT_H 1 -+_ACEOF - - fi - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 - $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } --if test "${ac_cv_header_time+set}" = set; then : -+if test "${ac_cv_header_time+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - #include -@@ -12328,27 +13790,54 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_cv_header_time=yes - else -- ac_cv_header_time=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_header_time=no - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 - $as_echo "$ac_cv_header_time" >&6; } - if test $ac_cv_header_time = yes; then - --$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define TIME_WITH_SYS_TIME 1 -+_ACEOF - - fi - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 -+{ $as_echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 - $as_echo_n "checking whether stat file-mode macros are broken... " >&6; } --if test "${ac_cv_header_stat_broken+set}" = set; then : -+if test "${ac_cv_header_stat_broken+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - #include -@@ -12370,27 +13859,54 @@ - #endif - - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_cv_header_stat_broken=no - else -- ac_cv_header_stat_broken=yes -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_header_stat_broken=yes - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 - $as_echo "$ac_cv_header_stat_broken" >&6; } - if test $ac_cv_header_stat_broken = yes; then - --$as_echo "#define STAT_MACROS_BROKEN 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define STAT_MACROS_BROKEN 1 -+_ACEOF - - fi - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 -+{ $as_echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5 - $as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } --if test "${ac_cv_header_stdbool_h+set}" = set; then : -+if test "${ac_cv_header_stdbool_h+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - #include -@@ -12470,17 +13986,131 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_cv_header_stdbool_h=yes - else -- ac_cv_header_stdbool_h=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_header_stdbool_h=no - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5 - $as_echo "$ac_cv_header_stdbool_h" >&6; } --ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" --if test "x$ac_cv_type__Bool" = x""yes; then : -+{ $as_echo "$as_me:$LINENO: checking for _Bool" >&5 -+$as_echo_n "checking for _Bool... " >&6; } -+if test "${ac_cv_type__Bool+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ ac_cv_type__Bool=no -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if (sizeof (_Bool)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if (sizeof ((_Bool))) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ : -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_type__Bool=yes -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5 -+$as_echo "$ac_cv_type__Bool" >&6; } -+if test "x$ac_cv_type__Bool" = x""yes; then - - cat >>confdefs.h <<_ACEOF - #define HAVE__BOOL 1 -@@ -12488,35 +14118,189 @@ - - - fi -- --if test $ac_cv_header_stdbool_h = yes; then -- --$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h -+ -+if test $ac_cv_header_stdbool_h = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_STDBOOL_H 1 -+_ACEOF -+ -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+for ac_header in \ -+ errno.h \ -+ fcntl.h \ -+ getopt.h \ -+ langinfo.h \ -+ limits.h \ -+ locale.h \ -+ memory.h \ -+ string.h \ -+ strings.h \ -+ sys/stat.h \ -+ sys/types.h \ -+ sys/wait.h \ -+ sys/time.h \ -+ time.h \ -+ unistd.h \ -+ wordexp.h -+do -+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -+$as_echo_n "checking for $ac_header... " >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ $as_echo_n "(cached) " >&6 -+fi -+ac_res=`eval 'as_val=${'$as_ac_Header'} -+ $as_echo "$as_val"'` -+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+else -+ # Is the header compilable? -+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -+$as_echo_n "checking $ac_header usability... " >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+#include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+$as_echo "$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -+$as_echo_n "checking $ac_header presence... " >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include <$ac_header> -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+$as_echo "$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -+ yes:no: ) -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -+ ( cat <<\_ASBOX -+## ---------------------------------------------- ## -+## Report this to Michal Cihar ## -+## ---------------------------------------------- ## -+_ASBOX -+ ) | sed "s/^/$as_me: WARNING: /" >&2 -+ ;; -+esac -+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -+$as_echo_n "checking for $ac_header... " >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ $as_echo_n "(cached) " >&6 -+else -+ eval "$as_ac_Header=\$ac_header_preproc" -+fi -+ac_res=`eval 'as_val=${'$as_ac_Header'} -+ $as_echo "$as_val"'` -+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } - - fi -- --for ac_header in \ -- errno.h \ -- fcntl.h \ -- getopt.h \ -- langinfo.h \ -- limits.h \ -- locale.h \ -- memory.h \ -- string.h \ -- strings.h \ -- sys/stat.h \ -- sys/types.h \ -- sys/wait.h \ -- sys/time.h \ -- time.h \ -- unistd.h \ -- wordexp.h --do : -- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" --eval as_val=\$$as_ac_Header -- if test "x$as_val" = x""yes; then : -+as_val=`eval 'as_val=${'$as_ac_Header'} -+ $as_echo "$as_val"'` -+ if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF - #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF -@@ -12526,12 +14310,16 @@ - done - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -+{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 - $as_echo_n "checking for an ANSI C-conforming const... " >&6; } --if test "${ac_cv_c_const+set}" = set; then : -+if test "${ac_cv_c_const+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - int -@@ -12591,24 +14379,140 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - ac_cv_c_const=yes - else -- ac_cv_c_const=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_c_const=no - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 - $as_echo "$ac_cv_c_const" >&6; } - if test $ac_cv_c_const = no; then - --$as_echo "#define const /**/" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define const /**/ -+_ACEOF -+ -+fi -+ -+{ $as_echo "$as_me:$LINENO: checking for size_t" >&5 -+$as_echo_n "checking for size_t... " >&6; } -+if test "${ac_cv_type_size_t+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ ac_cv_type_size_t=no -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if (sizeof (size_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if (sizeof ((size_t))) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ : -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -+ ac_cv_type_size_t=yes - fi - --ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" --if test "x$ac_cv_type_size_t" = x""yes; then : -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -+$as_echo "$ac_cv_type_size_t" >&6; } -+if test "x$ac_cv_type_size_t" = x""yes; then -+ : - else - - cat >>confdefs.h <<_ACEOF -@@ -12617,9 +14521,102 @@ - - fi - --ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" --if test "x$ac_cv_type_mode_t" = x""yes; then : -+{ $as_echo "$as_me:$LINENO: checking for mode_t" >&5 -+$as_echo_n "checking for mode_t... " >&6; } -+if test "${ac_cv_type_mode_t+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ ac_cv_type_mode_t=no -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if (sizeof (mode_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if (sizeof ((mode_t))) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ : -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_type_mode_t=yes -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ -+fi - -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 -+$as_echo "$ac_cv_type_mode_t" >&6; } -+if test "x$ac_cv_type_mode_t" = x""yes; then -+ : - else - - cat >>confdefs.h <<_ACEOF -@@ -12628,20 +14625,206 @@ - - fi - --ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" --if test "x$ac_cv_type_off_t" = x""yes; then : -- -+{ $as_echo "$as_me:$LINENO: checking for off_t" >&5 -+$as_echo_n "checking for off_t... " >&6; } -+if test "${ac_cv_type_off_t+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ ac_cv_type_off_t=no -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if (sizeof (off_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if (sizeof ((off_t))) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ : -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_type_off_t=yes -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 -+$as_echo "$ac_cv_type_off_t" >&6; } -+if test "x$ac_cv_type_off_t" = x""yes; then -+ : -+else -+ -+cat >>confdefs.h <<_ACEOF -+#define off_t long int -+_ACEOF -+ -+fi -+ -+{ $as_echo "$as_me:$LINENO: checking for pid_t" >&5 -+$as_echo_n "checking for pid_t... " >&6; } -+if test "${ac_cv_type_pid_t+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ ac_cv_type_pid_t=no -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if (sizeof (pid_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if (sizeof ((pid_t))) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ : -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_type_pid_t=yes -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --cat >>confdefs.h <<_ACEOF --#define off_t long int --_ACEOF - - fi - --ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" --if test "x$ac_cv_type_pid_t" = x""yes; then : -- -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 -+$as_echo "$ac_cv_type_pid_t" >&6; } -+if test "x$ac_cv_type_pid_t" = x""yes; then -+ : - else - - cat >>confdefs.h <<_ACEOF -@@ -12650,18 +14833,22 @@ - - fi - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 -+{ $as_echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 - $as_echo_n "checking for uid_t in sys/types.h... " >&6; } --if test "${ac_cv_type_uid_t+set}" = set; then : -+if test "${ac_cv_type_uid_t+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - - _ACEOF - if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -- $EGREP "uid_t" >/dev/null 2>&1; then : -+ $EGREP "uid_t" >/dev/null 2>&1; then - ac_cv_type_uid_t=yes - else - ac_cv_type_uid_t=no -@@ -12669,20 +14856,117 @@ - rm -f conftest* - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 - $as_echo "$ac_cv_type_uid_t" >&6; } - if test $ac_cv_type_uid_t = no; then - --$as_echo "#define uid_t int" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define uid_t int -+_ACEOF -+ -+ -+cat >>confdefs.h <<\_ACEOF -+#define gid_t int -+_ACEOF - -+fi - --$as_echo "#define gid_t int" >>confdefs.h -+{ $as_echo "$as_me:$LINENO: checking for ssize_t" >&5 -+$as_echo_n "checking for ssize_t... " >&6; } -+if test "${ac_cv_type_ssize_t+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ ac_cv_type_ssize_t=no -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if (sizeof (ssize_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if (sizeof ((ssize_t))) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ : -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -+ ac_cv_type_ssize_t=yes - fi - --ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" --if test "x$ac_cv_type_ssize_t" = x""yes; then : -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ -+fi - -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 -+$as_echo "$ac_cv_type_ssize_t" >&6; } -+if test "x$ac_cv_type_ssize_t" = x""yes; then -+ : - else - - cat >>confdefs.h <<_ACEOF -@@ -12692,26 +14976,88 @@ - fi - - # FIXME: This is crude. It seems to work on Linux, though. --ac_fn_c_check_decl "$LINENO" "LC_MESSAGES" "ac_cv_have_decl_LC_MESSAGES" "#include --" --if test "x$ac_cv_have_decl_LC_MESSAGES" = x""yes; then : -- ac_have_decl=1 -+{ $as_echo "$as_me:$LINENO: checking whether LC_MESSAGES is declared" >&5 -+$as_echo_n "checking whether LC_MESSAGES is declared... " >&6; } -+if test "${ac_cv_have_decl_LC_MESSAGES+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+ -+int -+main () -+{ -+#ifndef LC_MESSAGES -+ (void) LC_MESSAGES; -+#endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_have_decl_LC_MESSAGES=yes - else -- ac_have_decl=0 -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_have_decl_LC_MESSAGES=no - fi - -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_LC_MESSAGES" >&5 -+$as_echo "$ac_cv_have_decl_LC_MESSAGES" >&6; } -+if test "x$ac_cv_have_decl_LC_MESSAGES" = x""yes; then -+ - cat >>confdefs.h <<_ACEOF --#define HAVE_DECL_LC_MESSAGES $ac_have_decl -+#define HAVE_DECL_LC_MESSAGES 1 -+_ACEOF -+ -+ -+else -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL_LC_MESSAGES 0 - _ACEOF - - -+fi -+ -+ -+ - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for program_invocation_short_name" >&5 -+{ $as_echo "$as_me:$LINENO: checking for program_invocation_short_name" >&5 - $as_echo_n "checking for program_invocation_short_name... " >&6; } --if test "${yeti_cv_lib_c_program_invocation_short_name+set}" = set; then : -+if test "${yeti_cv_lib_c_program_invocation_short_name+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - int -@@ -12722,40 +15068,295 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - yeti_cv_lib_c_program_invocation_short_name=yes - else -- yeti_cv_lib_c_program_invocation_short_name=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ yeti_cv_lib_c_program_invocation_short_name=no - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $yeti_cv_lib_c_program_invocation_short_name" >&5 -+{ $as_echo "$as_me:$LINENO: result: $yeti_cv_lib_c_program_invocation_short_name" >&5 - $as_echo "$yeti_cv_lib_c_program_invocation_short_name" >&6; } - if test "$yeti_cv_lib_c_program_invocation_short_name" = yes; then - --$as_echo "#define HAVE_PROGRAM_INVOCATION_SHORT_NAME 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_PROGRAM_INVOCATION_SHORT_NAME 1 -+_ACEOF - - fi - -+ - for ac_header in vfork.h --do : -- ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default" --if test "x$ac_cv_header_vfork_h" = x""yes; then : -+do -+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -+$as_echo_n "checking for $ac_header... " >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ $as_echo_n "(cached) " >&6 -+fi -+ac_res=`eval 'as_val=${'$as_ac_Header'} -+ $as_echo "$as_val"'` -+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+else -+ # Is the header compilable? -+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -+$as_echo_n "checking $ac_header usability... " >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+#include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+$as_echo "$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -+$as_echo_n "checking $ac_header presence... " >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include <$ac_header> -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+$as_echo "$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -+ yes:no: ) -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -+ ( cat <<\_ASBOX -+## ---------------------------------------------- ## -+## Report this to Michal Cihar ## -+## ---------------------------------------------- ## -+_ASBOX -+ ) | sed "s/^/$as_me: WARNING: /" >&2 -+ ;; -+esac -+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -+$as_echo_n "checking for $ac_header... " >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ $as_echo_n "(cached) " >&6 -+else -+ eval "$as_ac_Header=\$ac_header_preproc" -+fi -+ac_res=`eval 'as_val=${'$as_ac_Header'} -+ $as_echo "$as_val"'` -+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+ -+fi -+as_val=`eval 'as_val=${'$as_ac_Header'} -+ $as_echo "$as_val"'` -+ if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF --#define HAVE_VFORK_H 1 -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF - - fi - - done - -+ -+ - for ac_func in fork vfork --do : -- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" --eval as_val=\$$as_ac_var -- if test "x$as_val" = x""yes; then : -+do -+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -+$as_echo_n "checking for $ac_func... " >&6; } -+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ $as_echo_n "(cached) " >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char $ac_func (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_$ac_func || defined __stub___$ac_func -+choke me -+#endif -+ -+int -+main () -+{ -+return $ac_func (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then -+ eval "$as_ac_var=yes" -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ eval "$as_ac_var=no" -+fi -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+ac_res=`eval 'as_val=${'$as_ac_var'} -+ $as_echo "$as_val"'` -+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+as_val=`eval 'as_val=${'$as_ac_var'} -+ $as_echo "$as_val"'` -+ if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF - #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 - _ACEOF -@@ -12764,15 +15365,19 @@ - done - - if test "x$ac_cv_func_fork" = xyes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 -+ { $as_echo "$as_me:$LINENO: checking for working fork" >&5 - $as_echo_n "checking for working fork... " >&6; } --if test "${ac_cv_func_fork_works+set}" = set; then : -+if test "${ac_cv_func_fork_works+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- if test "$cross_compiling" = yes; then : -+ if test "$cross_compiling" = yes; then - ac_cv_func_fork_works=cross - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - $ac_includes_default - int -@@ -12786,17 +15391,44 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_run "$LINENO"; then : -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then - ac_cv_func_fork_works=yes - else -- ac_cv_func_fork_works=no -+ $as_echo "$as_me: program exited with status $ac_status" >&5 -+$as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+ac_cv_func_fork_works=no - fi --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -- conftest.$ac_objext conftest.beam conftest.$ac_ext -+rm -rf conftest.dSYM -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi - -+ - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_fork_works" >&5 - $as_echo "$ac_cv_func_fork_works" >&6; } - - else -@@ -12812,20 +15444,24 @@ - ac_cv_func_fork_works=yes - ;; - esac -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 -+ { $as_echo "$as_me:$LINENO: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 - $as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} - fi - ac_cv_func_vfork_works=$ac_cv_func_vfork - if test "x$ac_cv_func_vfork" = xyes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 -+ { $as_echo "$as_me:$LINENO: checking for working vfork" >&5 - $as_echo_n "checking for working vfork... " >&6; } --if test "${ac_cv_func_vfork_works+set}" = set; then : -+if test "${ac_cv_func_vfork_works+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- if test "$cross_compiling" = yes; then : -+ if test "$cross_compiling" = yes; then - ac_cv_func_vfork_works=cross - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - /* Thanks to Paul Eggert for this test. */ - $ac_includes_default -@@ -12917,41 +15553,86 @@ - } - } - _ACEOF --if ac_fn_c_try_run "$LINENO"; then : -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then - ac_cv_func_vfork_works=yes - else -- ac_cv_func_vfork_works=no -+ $as_echo "$as_me: program exited with status $ac_status" >&5 -+$as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+ac_cv_func_vfork_works=no - fi --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -- conftest.$ac_objext conftest.beam conftest.$ac_ext -+rm -rf conftest.dSYM -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi - -+ - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_vfork_works" >&5 - $as_echo "$ac_cv_func_vfork_works" >&6; } - - fi; - if test "x$ac_cv_func_fork_works" = xcross; then - ac_cv_func_vfork_works=$ac_cv_func_vfork -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 -+ { $as_echo "$as_me:$LINENO: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 - $as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} - fi - - if test "x$ac_cv_func_vfork_works" = xyes; then - --$as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_WORKING_VFORK 1 -+_ACEOF - - else - --$as_echo "#define vfork fork" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define vfork fork -+_ACEOF - - fi - if test "x$ac_cv_func_fork_works" = xyes; then - --$as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_WORKING_FORK 1 -+_ACEOF - - fi - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - for ac_func in \ - canonicalize_file_name \ - ftruncate \ -@@ -12965,11 +15646,98 @@ - setlocale \ - ttyname \ - wordexp --do : -- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" --eval as_val=\$$as_ac_var -- if test "x$as_val" = x""yes; then : -+do -+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -+$as_echo_n "checking for $ac_func... " >&6; } -+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ $as_echo_n "(cached) " >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char $ac_func (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_$ac_func || defined __stub___$ac_func -+choke me -+#endif -+ -+int -+main () -+{ -+return $ac_func (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then -+ eval "$as_ac_var=yes" -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ eval "$as_ac_var=no" -+fi -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+ac_res=`eval 'as_val=${'$as_ac_var'} -+ $as_echo "$as_val"'` -+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+as_val=`eval 'as_val=${'$as_ac_var'} -+ $as_echo "$as_val"'` -+ if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF - #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 - _ACEOF -@@ -12977,12 +15745,102 @@ - fi - done - -+ - for ac_func in getopt_long --do : -- ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long" --if test "x$ac_cv_func_getopt_long" = x""yes; then : -+do -+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -+$as_echo_n "checking for $ac_func... " >&6; } -+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ $as_echo_n "(cached) " >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char $ac_func (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_$ac_func || defined __stub___$ac_func -+choke me -+#endif -+ -+int -+main () -+{ -+return $ac_func (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then -+ eval "$as_ac_var=yes" -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ eval "$as_ac_var=no" -+fi -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+ac_res=`eval 'as_val=${'$as_ac_var'} -+ $as_echo "$as_val"'` -+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+as_val=`eval 'as_val=${'$as_ac_var'} -+ $as_echo "$as_val"'` -+ if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF --#define HAVE_GETOPT_LONG 1 -+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 - _ACEOF - - else -@@ -13015,7 +15873,7 @@ - - - # Check whether --with-gnu-ld was given. --if test "${with_gnu_ld+set}" = set; then : -+if test "${with_gnu_ld+set}" = set; then - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes - else - with_gnu_ld=no -@@ -13037,7 +15895,7 @@ - ac_prog=ld - if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 -+ { $as_echo "$as_me:$LINENO: checking for ld used by GCC" >&5 - $as_echo_n "checking for ld used by GCC... " >&6; } - case $host in - *-*-mingw*) -@@ -13067,13 +15925,13 @@ - ;; - esac - elif test "$with_gnu_ld" = yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -+ { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 - $as_echo_n "checking for GNU ld... " >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -+ { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 - $as_echo_n "checking for non-GNU ld... " >&6; } - fi --if test "${acl_cv_path_LD+set}" = set; then : -+if test "${acl_cv_path_LD+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if test -z "$LD"; then -@@ -13101,16 +15959,18 @@ - - LD="$acl_cv_path_LD" - if test -n "$LD"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -+ { $as_echo "$as_me:$LINENO: result: $LD" >&5 - $as_echo "$LD" >&6; } - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+ { $as_echo "$as_me:$LINENO: result: no" >&5 - $as_echo "no" >&6; } - fi --test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -+test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -+$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} -+ { (exit 1); exit 1; }; } -+{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 - $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } --if test "${acl_cv_prog_gnu_ld+set}" = set; then : -+if test "${acl_cv_prog_gnu_ld+set}" = set; then - $as_echo_n "(cached) " >&6 - else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -@@ -13121,16 +15981,16 @@ - acl_cv_prog_gnu_ld=no ;; - esac - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5 -+{ $as_echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 - $as_echo "$acl_cv_prog_gnu_ld" >&6; } - with_gnu_ld=$acl_cv_prog_gnu_ld - - - - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 -+ { $as_echo "$as_me:$LINENO: checking for shared library run path origin" >&5 - $as_echo_n "checking for shared library run path origin... " >&6; } --if test "${acl_cv_rpath+set}" = set; then : -+if test "${acl_cv_rpath+set}" = set; then - $as_echo_n "(cached) " >&6 - else - -@@ -13141,7 +16001,7 @@ - acl_cv_rpath=done - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 -+{ $as_echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 - $as_echo "$acl_cv_rpath" >&6; } - wl="$acl_cv_wl" - acl_libext="$acl_cv_libext" -@@ -13153,7 +16013,7 @@ - acl_hardcode_direct="$acl_cv_hardcode_direct" - acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" - # Check whether --enable-rpath was given. --if test "${enable_rpath+set}" = set; then : -+if test "${enable_rpath+set}" = set; then - enableval=$enable_rpath; : - else - enable_rpath=yes -@@ -13202,7 +16062,7 @@ - - - # Check whether --with-libiconv-prefix was given. --if test "${with_libiconv_prefix+set}" = set; then : -+if test "${with_libiconv_prefix+set}" = set; then - withval=$with_libiconv_prefix; - if test "X$withval" = "Xno"; then - use_additional=no -@@ -13650,15 +16510,19 @@ - done - - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 -+ { $as_echo "$as_me:$LINENO: checking for iconv" >&5 - $as_echo_n "checking for iconv... " >&6; } --if test "${am_cv_func_iconv+set}" = set; then : -+if test "${am_cv_func_iconv+set}" = set; then - $as_echo_n "(cached) " >&6 - else - - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - #include -@@ -13672,15 +16536,46 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - am_cv_func_iconv=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - #include -@@ -13694,22 +16589,49 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - am_cv_lib_iconv=yes - am_cv_func_iconv=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 -+{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 - $as_echo "$am_cv_func_iconv" >&6; } - if test "$am_cv_func_iconv" = yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 -+ { $as_echo "$as_me:$LINENO: checking for working iconv" >&5 - $as_echo_n "checking for working iconv... " >&6; } --if test "${am_cv_func_iconv_works+set}" = set; then : -+if test "${am_cv_func_iconv_works+set}" = set; then - $as_echo_n "(cached) " >&6 - else - -@@ -13717,13 +16639,17 @@ - if test $am_cv_lib_iconv = yes; then - LIBS="$LIBS $LIBICONV" - fi -- if test "$cross_compiling" = yes; then : -+ if test "$cross_compiling" = yes; then - case "$host_os" in - aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; - *) am_cv_func_iconv_works="guessing yes" ;; - esac - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - #include -@@ -13783,19 +16709,46 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_run "$LINENO"; then : -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then - am_cv_func_iconv_works=yes - else -- am_cv_func_iconv_works=no -+ $as_echo "$as_me: program exited with status $ac_status" >&5 -+$as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+am_cv_func_iconv_works=no - fi --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -- conftest.$ac_objext conftest.beam conftest.$ac_ext -+rm -rf conftest.dSYM -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi - -+ - LIBS="$am_save_LIBS" - - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 -+{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv_works" >&5 - $as_echo "$am_cv_func_iconv_works" >&6; } - case "$am_cv_func_iconv_works" in - *no) am_func_iconv=no am_cv_lib_iconv=no ;; -@@ -13806,13 +16759,15 @@ - fi - if test "$am_func_iconv" = yes; then - --$as_echo "#define HAVE_ICONV 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_ICONV 1 -+_ACEOF - - fi - if test "$am_cv_lib_iconv" = yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 -+ { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5 - $as_echo_n "checking how to link with libiconv... " >&6; } -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 -+ { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5 - $as_echo "$LIBICONV" >&6; } - else - CPPFLAGS="$am_save_CPPFLAGS" -@@ -13823,13 +16778,17 @@ - - - if test "$am_cv_func_iconv" = yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 -+ { $as_echo "$as_me:$LINENO: checking for iconv declaration" >&5 - $as_echo_n "checking for iconv declaration... " >&6; } -- if test "${am_cv_proto_iconv+set}" = set; then : -+ if test "${am_cv_proto_iconv+set}" = set; then - $as_echo_n "(cached) " >&6 - else - -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - - #include -@@ -13852,17 +16811,38 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then - am_cv_proto_iconv_arg1="" - else -- am_cv_proto_iconv_arg1="const" -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ am_cv_proto_iconv_arg1="const" - fi -+ - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" - fi - - am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:- -+ { $as_echo "$as_me:$LINENO: result: ${ac_t:- - }$am_cv_proto_iconv" >&5 - $as_echo "${ac_t:- - }$am_cv_proto_iconv" >&6; } -@@ -13877,7 +16857,7 @@ - - libiconv_ok="$am_cv_func_iconv" - if test "$libiconv_ok" = yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iconv implementation is usable" >&5 -+ { $as_echo "$as_me:$LINENO: checking whether iconv implementation is usable" >&5 - $as_echo_n "checking whether iconv implementation is usable... " >&6; } - if $CC -o iconvcap$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS $srcdir/iconvcap.c $LIBS $CONVERTER_LIBS 1>&5 2>&5 && test -s ./iconvcap$ac_exeext 2>&5; then - if ./iconvcap 2>&5 >iconvenc.h; then -@@ -13888,15 +16868,17 @@ - else - libiconv_ok=no - fi -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libiconv_ok" >&5 -+ { $as_echo "$as_me:$LINENO: result: $libiconv_ok" >&5 - $as_echo "$libiconv_ok" >&6; } - if test "$libiconv_ok" = yes; then - --$as_echo "#define HAVE_GOOD_ICONV 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_GOOD_ICONV 1 -+_ACEOF - -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iconv is transitive" >&5 -+ { $as_echo "$as_me:$LINENO: checking whether iconv is transitive" >&5 - $as_echo_n "checking whether iconv is transitive... " >&6; } --if test "${yeti_cv_lib_c_iconv_transitive+set}" = set; then : -+if test "${yeti_cv_lib_c_iconv_transitive+set}" = set; then - $as_echo_n "(cached) " >&6 - else - if ./iconvcap iconvenc.h 2>&5; then -@@ -13905,14 +16887,16 @@ - yeti_cv_lib_c_iconv_transitive=no - fi - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $yeti_cv_lib_c_iconv_transitive" >&5 -+{ $as_echo "$as_me:$LINENO: result: $yeti_cv_lib_c_iconv_transitive" >&5 - $as_echo "$yeti_cv_lib_c_iconv_transitive" >&6; } - if test "$yeti_cv_lib_c_iconv_transitive" = yes; then - --$as_echo "#define ICONV_IS_TRANSITIVE 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define ICONV_IS_TRANSITIVE 1 -+_ACEOF - - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: A non-transitive but otherwise usable iconv implementation -+ { $as_echo "$as_me:$LINENO: WARNING: A non-transitive but otherwise usable iconv implementation - was found. This beast was believed to be mythical. - Please send your system specs to the maintainer." >&5 - $as_echo "$as_me: WARNING: A non-transitive but otherwise usable iconv implementation -@@ -13932,7 +16916,7 @@ - - - # Check whether --with-librecode was given. --if test "${with_librecode+set}" = set; then : -+if test "${with_librecode+set}" = set; then - withval=$with_librecode; case "$withval" in - yes|auto) WANT_LIBRECODE=1 ;; - no) WANT_LIBRECODE=0 ;; -@@ -13950,12 +16934,16 @@ - LIBS="$LIBS -lrecode" - CPPFLAGS="$CPPFLAGS $yeti_librecode_CPPFLAGS" - LDFLAGS="$LDFLAGS $yeti_librecode_LDFLAGS" -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for recode_new_outer in librecode" >&5 -+ { $as_echo "$as_me:$LINENO: checking for recode_new_outer in librecode" >&5 - $as_echo_n "checking for recode_new_outer in librecode... " >&6; } --if test "${yeti_cv_lib_recode_new_outer+set}" = set; then : -+if test "${yeti_cv_lib_recode_new_outer+set}" = set; then - $as_echo_n "(cached) " >&6 - else -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - char* program_name = ""; - int -@@ -13966,23 +16954,91 @@ - return 0; - } - _ACEOF --if ac_fn_c_try_link "$LINENO"; then : -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then - yeti_cv_lib_recode_new_outer=yes - else -- yeti_cv_lib_recode_new_outer=no -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ yeti_cv_lib_recode_new_outer=no -+fi -+ -+rm -rf conftest.dSYM -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:$LINENO: result: $yeti_cv_lib_recode_new_outer" >&5 -+$as_echo "$yeti_cv_lib_recode_new_outer" >&6; } -+ librecode_ok="$yeti_cv_lib_recode_new_outer"; -+ if test "$librecode_ok" = yes; then -+ { $as_echo "$as_me:$LINENO: checking for recode.h" >&5 -+$as_echo_n "checking for recode.h... " >&6; } -+if test "${ac_cv_header_recode_h+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#define bool int -+ #define size_t int -+ #define FILE void -+ -+#include -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_header_recode_h=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_header_recode_h=no - fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $yeti_cv_lib_recode_new_outer" >&5 --$as_echo "$yeti_cv_lib_recode_new_outer" >&6; } -- librecode_ok="$yeti_cv_lib_recode_new_outer"; -- if test "$librecode_ok" = yes; then -- ac_fn_c_check_header_compile "$LINENO" "recode.h" "ac_cv_header_recode_h" "#define bool int -- #define size_t int -- #define FILE void --" --if test "x$ac_cv_header_recode_h" = x""yes; then : -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_recode_h" >&5 -+$as_echo "$ac_cv_header_recode_h" >&6; } -+if test "x$ac_cv_header_recode_h" = x""yes; then - librecode_ok=yes - else - librecode_ok=no -@@ -13991,11 +17047,54 @@ - - fi - if test "$librecode_ok" = yes; then -- ac_fn_c_check_header_compile "$LINENO" "recodext.h" "ac_cv_header_recodext_h" "#define bool int -+ { $as_echo "$as_me:$LINENO: checking for recodext.h" >&5 -+$as_echo_n "checking for recodext.h... " >&6; } -+if test "${ac_cv_header_recodext_h+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#define bool int - #define size_t int - #define FILE void --" --if test "x$ac_cv_header_recodext_h" = x""yes; then : -+ -+#include -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_header_recodext_h=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_header_recodext_h=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_recodext_h" >&5 -+$as_echo "$ac_cv_header_recodext_h" >&6; } -+if test "x$ac_cv_header_recodext_h" = x""yes; then - librecode_ok=yes - else - librecode_ok=no -@@ -14005,7 +17104,9 @@ - fi - if test "$librecode_ok" = yes; then - --$as_echo "#define HAVE_LIBRECODE 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_LIBRECODE 1 -+_ACEOF - - CONVERTER_LIBS="$CONVERTER_LIBS -lrecode" - fi -@@ -14037,7 +17138,9 @@ - - if test "$WANT_EXTERNAL" = "yes" -a "$ac_cv_func_fork_works" = "yes"; then - --$as_echo "#define ENABLE_EXTERNAL 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define ENABLE_EXTERNAL 1 -+_ACEOF - - if test -n "$DEFAULT_EXTERNAL_CONVERTER"; then - enable_external="yes ($DEFAULT_EXTERNAL_CONVERTER)" -@@ -14056,9 +17159,9 @@ - - locale_alias_ok=no - if test "$ac_cv_func_setlocale" = yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for locale.alias" >&5 -+ { $as_echo "$as_me:$LINENO: checking for locale.alias" >&5 - $as_echo_n "checking for locale.alias... " >&6; } --if test "${yeti_cv_file_locale_alias+set}" = set; then : -+if test "${yeti_cv_file_locale_alias+set}" = set; then - $as_echo_n "(cached) " >&6 - else - for yeti_ac_tmp in /usr/share/locale /usr/local/share/locale /etc /usr/lib/X11/locale /usr/X11/lib/locale; do -@@ -14072,12 +17175,14 @@ - fi - done - fi --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $yeti_cv_file_locale_alias" >&5 -+{ $as_echo "$as_me:$LINENO: result: $yeti_cv_file_locale_alias" >&5 - $as_echo "$yeti_cv_file_locale_alias" >&6; } - if test -n "$yeti_cv_file_locale_alias"; then - locale_alias_ok=yes - --$as_echo "#define HAVE_LOCALE_ALIAS 1" >>confdefs.h -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_LOCALE_ALIAS 1 -+_ACEOF - - - cat >>confdefs.h <<_ACEOF -@@ -14126,13 +17231,13 @@ - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( -- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -+ *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 - $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( -- *) { eval $ac_var=; unset $ac_var;} ;; -+ *) $as_unset $ac_var ;; - esac ;; - esac - done -@@ -14140,8 +17245,8 @@ - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) -- # `set' does not quote correctly, so add quotes: double-quote -- # substitution turns \\\\ into \\, and sed turns \\ into \. -+ # `set' does not quote correctly, so add quotes (double-quote -+ # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" -@@ -14164,11 +17269,11 @@ - if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && -- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -+ { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 - $as_echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file - else -- { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -+ { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 - $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi - fi -@@ -14188,8 +17293,8 @@ - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. -- as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" -- as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -+ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" -+ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' - done - LIBOBJS=$ac_libobjs - -@@ -14205,34 +17310,48 @@ - fi - - if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then -- as_fn_error "conditional \"MAINTAINER_MODE\" was never defined. --Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. -+Usually this means the macro was only invoked conditionally." >&5 -+$as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. -+Usually this means the macro was only invoked conditionally." >&2;} -+ { (exit 1); exit 1; }; } - fi - if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then -- as_fn_error "conditional \"AMDEP\" was never defined. --Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -+Usually this means the macro was only invoked conditionally." >&5 -+$as_echo "$as_me: error: conditional \"AMDEP\" was never defined. -+Usually this means the macro was only invoked conditionally." >&2;} -+ { (exit 1); exit 1; }; } - fi - if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then -- as_fn_error "conditional \"am__fastdepCC\" was never defined. --Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -+Usually this means the macro was only invoked conditionally." >&5 -+$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -+Usually this means the macro was only invoked conditionally." >&2;} -+ { (exit 1); exit 1; }; } - fi - if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then -- as_fn_error "conditional \"am__fastdepCC\" was never defined. --Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -+Usually this means the macro was only invoked conditionally." >&5 -+$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -+Usually this means the macro was only invoked conditionally." >&2;} -+ { (exit 1); exit 1; }; } - fi - if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then -- as_fn_error "conditional \"ENABLE_GTK_DOC\" was never defined. --Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: conditional \"ENABLE_GTK_DOC\" was never defined. -+Usually this means the macro was only invoked conditionally." >&5 -+$as_echo "$as_me: error: conditional \"ENABLE_GTK_DOC\" was never defined. -+Usually this means the macro was only invoked conditionally." >&2;} -+ { (exit 1); exit 1; }; } - fi - - : ${CONFIG_STATUS=./config.status} - ac_write_fail=0 - ac_clean_files_save=$ac_clean_files - ac_clean_files="$ac_clean_files $CONFIG_STATUS" --{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -+{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 - $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} --as_write_fail=0 --cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -+cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - #! $SHELL - # Generated by $as_me. - # Run this file to recreate the current configuration. -@@ -14242,18 +17361,17 @@ - debug=false - ac_cs_recheck=false - ac_cs_silent=false -- - SHELL=\${CONFIG_SHELL-$SHELL} --export SHELL --_ASEOF --cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 --## -------------------- ## --## M4sh Initialization. ## --## -------------------- ## -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -+## --------------------- ## -+## M4sh Initialization. ## -+## --------------------- ## - - # Be more Bourne compatible - DUALCASE=1; export DUALCASE # for MKS sh --if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which -@@ -14261,15 +17379,23 @@ - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST - else -- case `(set -o) 2>/dev/null` in #( -- *posix*) : -- set -o posix ;; #( -- *) : -- ;; -+ case `(set -o) 2>/dev/null` in -+ *posix*) set -o posix ;; - esac -+ - fi - - -+ -+ -+# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' @@ -11818,765 +2551,57 @@ diff -Naur enca-1.12/configure enca-1.12.patch/configure +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + - as_nl=' - ' - export as_nl -@@ -14277,13 +17403,7 @@ - as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo - as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo --# Prefer a ksh shell builtin over an external printf program on Solaris, --# but without wasting forks for bash or zsh. --if test -z "$BASH_VERSION$ZSH_VERSION" \ -- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then -- as_echo='print -r --' -- as_echo_n='print -rn --' --elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then -+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' - else -@@ -14294,7 +17414,7 @@ - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; -- case $arg in #( -+ case $arg in - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; -@@ -14317,6 +17437,13 @@ - } - fi - -+# Support unset when possible. -+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -+ as_unset=unset ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in #((((( ++-n*) ++ case `echo 'xy\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ xy) ECHO_C='\c';; ++ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ++ ECHO_T=' ';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac ++ ++rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file +else -+ as_unset=false ++ rm -f conf$$.dir ++ mkdir conf$$.dir 2>/dev/null +fi -+ - - # IFS - # We need space, tab and new line, in precisely that order. Quoting is -@@ -14326,15 +17453,15 @@ - IFS=" "" $as_nl" - - # Find who we are. Look in the path if we contain no directory separator. --case $0 in #(( -+case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -- done -+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -+done - IFS=$as_save_IFS - - ;; -@@ -14346,16 +17473,12 @@ - fi - if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 -- exit 1 -+ { (exit 1); exit 1; } - fi - --# Unset variables that we do not need and which cause bugs (e.g. in --# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" --# suppresses any "Segmentation fault" message there. '((' could --# trigger a bug in pdksh 5.2.14. --for as_var in BASH_ENV ENV MAIL MAILPATH --do eval test x\${$as_var+set} = xset \ -- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -+# Work around bugs in pre-3.0 UWIN ksh. -+for as_var in ENV MAIL MAILPATH -+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - PS1='$ ' - PS2='> ' -@@ -14367,89 +17490,7 @@ - LANGUAGE=C - export LANGUAGE - --# CDPATH. --(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -- -- --# as_fn_error ERROR [LINENO LOG_FD] --# --------------------------------- --# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are --# provided, also output the error to LOG_FD, referencing LINENO. Then exit the --# script with status $?, using 1 if that was 0. --as_fn_error () --{ -- as_status=$?; test $as_status -eq 0 && as_status=1 -- if test "$3"; then -- as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -- $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 -- fi -- $as_echo "$as_me: error: $1" >&2 -- as_fn_exit $as_status --} # as_fn_error -- -- --# as_fn_set_status STATUS --# ----------------------- --# Set $? to STATUS, without forking. --as_fn_set_status () --{ -- return $1 --} # as_fn_set_status -- --# as_fn_exit STATUS --# ----------------- --# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. --as_fn_exit () --{ -- set +e -- as_fn_set_status $1 -- exit $1 --} # as_fn_exit -- --# as_fn_unset VAR --# --------------- --# Portably unset VAR. --as_fn_unset () --{ -- { eval $1=; unset $1;} --} --as_unset=as_fn_unset --# as_fn_append VAR VALUE --# ---------------------- --# Append the text in VALUE to the end of the definition contained in VAR. Take --# advantage of any shell optimizations that allow amortized linear growth over --# repeated appends, instead of the typical quadratic growth present in naive --# implementations. --if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : -- eval 'as_fn_append () -- { -- eval $1+=\$2 -- }' --else -- as_fn_append () -- { -- eval $1=\$$1\$2 -- } --fi # as_fn_append -- --# as_fn_arith ARG... --# ------------------ --# Perform arithmetic evaluation on the ARGs, and store the result in the --# global $as_val. Take advantage of shells that can avoid forks. The arguments --# must be portable across $(()) and expr. --if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : -- eval 'as_fn_arith () -- { -- as_val=$(( $* )) -- }' --else -- as_fn_arith () -- { -- as_val=`expr "$@" || test $? -eq 1` -- } --fi # as_fn_arith -- -- -+# Required to use basename. - if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -@@ -14463,12 +17504,8 @@ - as_basename=false - fi - --if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then -- as_dirname=dirname --else -- as_dirname=false --fi - -+# Name of the executable. - as_me=`$as_basename -- "$0" || - $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ -@@ -14488,25 +17525,76 @@ - } - s/.*/./; q'` - --# Avoid depending upon Character Ranges. --as_cr_letters='abcdefghijklmnopqrstuvwxyz' --as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' --as_cr_Letters=$as_cr_letters$as_cr_LETTERS --as_cr_digits='0123456789' --as_cr_alnum=$as_cr_Letters$as_cr_digits -+# CDPATH. -+$as_unset CDPATH -+ -+ -+ -+ as_lineno_1=$LINENO -+ as_lineno_2=$LINENO -+ test "x$as_lineno_1" != "x$as_lineno_2" && -+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { -+ -+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO -+ # uniformly replaced by the line number. The first 'sed' inserts a -+ # line-number line after each line using $LINENO; the second 'sed' -+ # does the real work. The second script uses 'N' to pair each -+ # line-number line with the line containing $LINENO, and appends -+ # trailing '-' during substitution so that $LINENO is not a special -+ # case at line end. -+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the -+ # scripts with optimization help from Paolo Bonzini. Blame Lee -+ # E. McMahon (1931-1989) for sed's syntax. :-) -+ sed -n ' -+ p -+ /[$]LINENO/= -+ ' <$as_myself | -+ sed ' -+ s/[$]LINENO.*/&-/ -+ t lineno -+ b -+ :lineno -+ N -+ :loop -+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ -+ t loop -+ s/-\n.*// -+ ' >$as_me.lineno && -+ chmod +x "$as_me.lineno" || -+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 -+ { (exit 1); exit 1; }; } -+ -+ # Don't try to exec as it changes $[0], causing all sort of problems -+ # (the dirname of $[0] is not the place where we might find the -+ # original and so on. Autoconf is especially sensitive to this). -+ . "./$as_me.lineno" -+ # Exit status is that of the last command. -+ exit -+} -+ -+ -+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then -+ as_dirname=dirname ++if (echo >conf$$.file) 2>/dev/null; then ++ if ln -s conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || ++ as_ln_s='cp -p' ++ elif ln conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s=ln ++ else ++ as_ln_s='cp -p' ++ fi +else -+ as_dirname=false ++ as_ln_s='cp -p' +fi - - ECHO_C= ECHO_N= ECHO_T= --case `echo -n x` in #((((( -+case `echo -n x` in - -n*) -- case `echo 'xy\c'` in -+ case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. -- xy) ECHO_C='\c';; -- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null -- ECHO_T=' ';; -+ *) ECHO_C='\c';; - esac;; - *) - ECHO_N='-n';; - esac -+if expr a : '\(a\)' >/dev/null 2>&1 && -+ test "X`expr 00001 : '.*\(...\)'`" = X001; then -+ as_expr=expr -+else -+ as_expr=false -+fi - - rm -f conf$$ conf$$.exe conf$$.file - if test -d conf$$.dir; then -@@ -14535,56 +17623,8 @@ - rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file - rmdir conf$$.dir 2>/dev/null - -- --# as_fn_mkdir_p --# ------------- --# Create "$as_dir" as a directory, including parents if necessary. --as_fn_mkdir_p () --{ -- -- case $as_dir in #( -- -*) as_dir=./$as_dir;; -- esac -- test -d "$as_dir" || eval $as_mkdir_p || { -- as_dirs= -- while :; do -- case $as_dir in #( -- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( -- *) as_qdir=$as_dir;; -- esac -- as_dirs="'$as_qdir' $as_dirs" -- as_dir=`$as_dirname -- "$as_dir" || --$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -- X"$as_dir" : 'X\(//\)[^/]' \| \ -- X"$as_dir" : 'X\(//\)$' \| \ -- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || --$as_echo X"$as_dir" | -- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -- s//\1/ -- q -- } -- /^X\(\/\/\)[^/].*/{ -- s//\1/ -- q -- } -- /^X\(\/\/\)$/{ -- s//\1/ -- q -- } -- /^X\(\/\).*/{ -- s//\1/ -- q -- } -- s/.*/./; q'` -- test -d "$as_dir" && break -- done -- test -z "$as_dirs" || eval "mkdir $as_dirs" -- } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" -- -- --} # as_fn_mkdir_p - if mkdir -p . 2>/dev/null; then -- as_mkdir_p='mkdir -p "$as_dir"' -+ as_mkdir_p=: - else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -@@ -14603,10 +17643,10 @@ - if test -d "$1"; then - test -d "$1/."; - else -- case $1 in #( -+ case $1 in - -*)set "./$1";; - esac; -- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( -+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -@@ -14621,19 +17661,13 @@ - - - exec 6>&1 --## ----------------------------------- ## --## Main body of $CONFIG_STATUS script. ## --## ----------------------------------- ## --_ASEOF --test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - --cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 --# Save the log message, to keep $0 and so on meaningful, and to -+# Save the log message, to keep $[0] and so on meaningful, and to - # report actual input values of CONFIG_FILES etc. instead of their - # values after options handling. - ac_log=" - This file was extended by Enca $as_me 1.12, which was --generated by GNU Autoconf 2.64. Invocation command line was -+generated by GNU Autoconf 2.63. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS -@@ -14665,11 +17699,10 @@ - - cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - ac_cs_usage="\ --\`$as_me' instantiates files and other configuration actions --from templates according to the current configuration. Unless the files --and actions are specified as TAGs, all are instantiated by default. -+\`$as_me' instantiates files from templates according to the -+current configuration. - --Usage: $0 [OPTION]... [TAG]... -+Usage: $0 [OPTION]... [FILE]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit -@@ -14691,16 +17724,16 @@ - Configuration commands: - $config_commands - --Report bugs to >." -+Report bugs to ." - - _ACEOF - cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_cs_version="\\ - Enca config.status 1.12 --configured by $0, generated by GNU Autoconf 2.64, -+configured by $0, generated by GNU Autoconf 2.63, - with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" - --Copyright (C) 2009 Free Software Foundation, Inc. -+Copyright (C) 2008 Free Software Foundation, Inc. - This config.status script is free software; the Free Software Foundation - gives unlimited permission to copy, distribute and modify it." - -@@ -14743,19 +17776,20 @@ - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac -- as_fn_append CONFIG_FILES " '$ac_optarg'" -+ CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac -- as_fn_append CONFIG_HEADERS " '$ac_optarg'" -+ CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header -- as_fn_error "ambiguous option: \`$1' --Try \`$0 --help' for more information.";; -+ { $as_echo "$as_me: error: ambiguous option: $1 -+Try \`$0 --help' for more information." >&2 -+ { (exit 1); exit 1; }; };; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ -@@ -14763,10 +17797,11 @@ - ac_cs_silent=: ;; - - # This is an error. -- -*) as_fn_error "unrecognized option: \`$1' --Try \`$0 --help' for more information." ;; -+ -*) { $as_echo "$as_me: error: unrecognized option: $1 -+Try \`$0 --help' for more information." >&2 -+ { (exit 1); exit 1; }; } ;; - -- *) as_fn_append ac_config_targets " $1" -+ *) ac_config_targets="$ac_config_targets $1" - ac_need_defaults=false ;; - - esac -@@ -15091,7 +18126,9 @@ - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - -- *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; -+ *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -+$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} -+ { (exit 1); exit 1; }; };; - esac - done - -@@ -15118,7 +18155,7 @@ - trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status - ' 0 -- trap 'as_fn_exit 1' 1 2 13 15 -+ trap '{ (exit 1); exit 1; }' 1 2 13 15 - } - # Create a (secure) tmp directory for tmp files. - -@@ -15129,7 +18166,11 @@ - { - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") --} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 -+} || ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null ++ ++ ++# as_fn_mkdir_p ++# ------------- ++# Create "$as_dir" as a directory, including parents if necessary. ++as_fn_mkdir_p () +{ -+ $as_echo "$as_me: cannot create a temporary directory in ." >&2 -+ { (exit 1); exit 1; } -+} - - # Set up the scripts for CONFIG_FILES section. - # No need to generate them if there are no CONFIG_FILES. -@@ -15137,16 +18178,10 @@ - if test -n "$CONFIG_FILES"; then - - --ac_cr=`echo X | tr X '\015'` --# On cygwin, bash can eat \r inside `` if the user requested igncr. --# But we know of no other shell where ac_cr would be empty at this --# point, so we can use a bashism as a fallback. --if test "x$ac_cr" = x; then -- eval ac_cr=\$\'\\r\' --fi -+ac_cr=' ' - ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` - if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then -- ac_cs_awk_cr='\r' -+ ac_cs_awk_cr='\\r' - else - ac_cs_awk_cr=$ac_cr - fi -@@ -15160,18 +18195,24 @@ - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" - } >conf$$subs.sh || -- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} -+ { (exit 1); exit 1; }; } - ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` - ac_delim='%!_!# ' - for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || -- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} -+ { (exit 1); exit 1; }; } - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then -- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} -+ { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -@@ -15260,7 +18301,9 @@ - else - cat - fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ -- || as_fn_error "could not setup config files machinery" "$LINENO" 5 -+ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 -+$as_echo "$as_me: error: could not setup config files machinery" >&2;} -+ { (exit 1); exit 1; }; } - _ACEOF - - # VPATH may cause trouble with some makes, so we remove $(srcdir), -@@ -15301,7 +18344,9 @@ - if test -z "$ac_t"; then - break - elif $ac_last_try; then -- as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 -+$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} -+ { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -@@ -15386,7 +18431,9 @@ - _ACAWK - _ACEOF - cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -- as_fn_error "could not setup config headers machinery" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 -+$as_echo "$as_me: error: could not setup config headers machinery" >&2;} -+ { (exit 1); exit 1; }; } - fi # test -n "$CONFIG_HEADERS" - - -@@ -15399,7 +18446,9 @@ - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; -- :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; -+ :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 -+$as_echo "$as_me: error: invalid tag $ac_tag" >&2;} -+ { (exit 1); exit 1; }; };; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac -@@ -15427,10 +18476,12 @@ - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || -- as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; -+ { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} -+ { (exit 1); exit 1; }; };; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac -- as_fn_append ac_file_inputs " '$ac_f'" -+ ac_file_inputs="$ac_file_inputs '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't -@@ -15441,7 +18492,7 @@ - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" -- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -+ { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 - $as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. -@@ -15454,7 +18505,9 @@ - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin" \ -- || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; -+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -+$as_echo "$as_me: error: could not create $ac_file" >&2;} -+ { (exit 1); exit 1; }; } ;; - esac - ;; - esac -@@ -15482,7 +18535,47 @@ - q - } - s/.*/./; q'` -- as_dir="$ac_dir"; as_fn_mkdir_p -+ { as_dir="$ac_dir" -+ case $as_dir in #( -+ -*) as_dir=./$as_dir;; -+ esac -+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { -+ as_dirs= -+ while :; do -+ case $as_dir in #( -+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( -+ *) as_qdir=$as_dir;; -+ esac -+ as_dirs="'$as_qdir' $as_dirs" -+ as_dir=`$as_dirname -- "$as_dir" || -+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$as_dir" : 'X\(//\)[^/]' \| \ -+ X"$as_dir" : 'X\(//\)$' \| \ -+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X"$as_dir" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ test -d "$as_dir" && break -+ done -+ test -z "$as_dirs" || eval "mkdir $as_dirs" -+ } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} -+ { (exit 1); exit 1; }; }; } - ac_builddir=. - - case "$ac_dir" in -@@ -15539,6 +18632,7 @@ - # If the template does not know about datarootdir, expand it. - # FIXME: This hack should be removed a few years after 2.60. - ac_datarootdir_hack=; ac_datarootdir_seen= + - ac_sed_dataroot=' - /datarootdir/ { - p -@@ -15548,11 +18642,12 @@ - /@docdir@/p - /@infodir@/p - /@localedir@/p --/@mandir@/p' -+/@mandir@/p -+' - case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in - *datarootdir*) ac_datarootdir_seen=yes;; - *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 - $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} - _ACEOF - cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -@@ -15562,7 +18657,7 @@ - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g -- s&\\\${datarootdir}&$datarootdir&g' ;; -+ s&\\\${datarootdir}&$datarootdir&g' ;; - esac - _ACEOF - -@@ -15591,12 +18686,14 @@ - $ac_datarootdir_hack - " - eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ -- || as_fn_error "could not create $ac_file" "$LINENO" 5 -+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -+$as_echo "$as_me: error: could not create $ac_file" >&2;} -+ { (exit 1); exit 1; }; } - - test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' - which seems to be undefined. Please make sure it is defined." >&5 - $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' - which seems to be undefined. Please make sure it is defined." >&2;} -@@ -15606,7 +18703,9 @@ - -) cat "$tmp/out" && rm -f "$tmp/out";; - *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; - esac \ -- || as_fn_error "could not create $ac_file" "$LINENO" 5 -+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -+$as_echo "$as_me: error: could not create $ac_file" >&2;} -+ { (exit 1); exit 1; }; } - ;; - :H) - # -@@ -15617,19 +18716,25 @@ - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" - } >"$tmp/config.h" \ -- || as_fn_error "could not create $ac_file" "$LINENO" 5 -+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -+$as_echo "$as_me: error: could not create $ac_file" >&2;} -+ { (exit 1); exit 1; }; } - if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -+ { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 - $as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$tmp/config.h" "$ac_file" \ -- || as_fn_error "could not create $ac_file" "$LINENO" 5 -+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -+$as_echo "$as_me: error: could not create $ac_file" >&2;} -+ { (exit 1); exit 1; }; } - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ -- || as_fn_error "could not create -" "$LINENO" 5 -+ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 -+$as_echo "$as_me: error: could not create -" >&2;} -+ { (exit 1); exit 1; }; } - fi - # Compute "$ac_file"'s index in $config_headers. - _am_arg="$ac_file" -@@ -15667,7 +18772,7 @@ - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - -- :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -+ :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 - $as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac -@@ -15762,7 +18867,47 @@ - q - } - s/.*/./; q'` -- as_dir=$dirpart/$fdir; as_fn_mkdir_p -+ { as_dir=$dirpart/$fdir + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac -+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( @@ -12610,70 +2635,1936 @@ diff -Naur enca-1.12/configure enca-1.12.patch/configure + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" -+ } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} -+ { (exit 1); exit 1; }; }; } - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -@@ -16409,12 +19554,15 @@ - done # for ac_tag ++ } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" ++ ++ ++} # as_fn_mkdir_p ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p='mkdir -p "$as_dir"' ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' ++else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in #( ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' ++fi ++as_executable_p=$as_test_x ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++ ++exec 6>&1 ++## ----------------------------------- ## ++## Main body of $CONFIG_STATUS script. ## ++## ----------------------------------- ## ++# Save the log message, to keep $0 and so on meaningful, and to ++# report actual input values of CONFIG_FILES etc. instead of their ++# values after options handling. ++ac_log=" ++This file was extended by Enca $as_me 1.13, which was ++generated by GNU Autoconf 2.65. Invocation command line was ++ ++ CONFIG_FILES = $CONFIG_FILES ++ CONFIG_HEADERS = $CONFIG_HEADERS ++ CONFIG_LINKS = $CONFIG_LINKS ++ CONFIG_COMMANDS = $CONFIG_COMMANDS ++ $ $0 $@ ++ ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" ++ ++# Files that config.status was made for. ++config_files=" Makefile enca.spec enca.pc devel-docs/Makefile data/Makefile lib/Makefile script/Makefile script/b-cstocs script/b-map script/b-piconv script/b-umap src/Makefile src/HELP test/Makefile tools/Makefile" ++config_headers=" config.h" ++config_commands=" depfiles libtool" ++ ++ac_cs_usage="\ ++\`$as_me' instantiates files and other configuration actions ++from templates according to the current configuration. Unless the files ++and actions are specified as TAGs, all are instantiated by default. ++ ++Usage: $0 [OPTION]... [TAG]... ++ ++ -h, --help print this help, then exit ++ -V, --version print version number and configuration settings, then exit ++ --config print configuration, then exit ++ -q, --quiet, --silent ++ do not print progress messages ++ -d, --debug don't remove temporary files ++ --recheck update $as_me by reconfiguring in the same conditions ++ --file=FILE[:TEMPLATE] ++ instantiate the configuration file FILE ++ --header=FILE[:TEMPLATE] ++ instantiate the configuration header FILE ++ ++Configuration files: ++$config_files ++ ++Configuration headers: ++$config_headers ++ ++Configuration commands: ++$config_commands ++ ++Report bugs to ." ++ ++ac_cs_config="" ++ac_cs_version="\ ++Enca config.status 1.13 ++configured by ./configure, generated by GNU Autoconf 2.65, ++ with options \"$ac_cs_config\" ++ ++Copyright (C) 2009 Free Software Foundation, Inc. ++This config.status script is free software; the Free Software Foundation ++gives unlimited permission to copy, distribute and modify it." ++ ++ac_pwd='/home/stephan/projects/openelec/sources/enca/enca-1.13.patch' ++srcdir='.' ++INSTALL='/usr/bin/install -c' ++MKDIR_P='/bin/mkdir -p' ++AWK='gawk' ++test -n "$AWK" || AWK=awk ++# The default lists apply if the user does not specify any file. ++ac_need_defaults=: ++while test $# != 0 ++do ++ case $1 in ++ --*=*) ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ++ ac_shift=: ++ ;; ++ *) ++ ac_option=$1 ++ ac_optarg=$2 ++ ac_shift=shift ++ ;; ++ esac ++ ++ case $ac_option in ++ # Handling of the options. ++ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ++ ac_cs_recheck=: ;; ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ $as_echo "$ac_cs_version"; exit ;; ++ --config | --confi | --conf | --con | --co | --c ) ++ $as_echo "$ac_cs_config"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) ++ debug=: ;; ++ --file | --fil | --fi | --f ) ++ $ac_shift ++ case $ac_optarg in ++ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ esac ++ as_fn_append CONFIG_FILES " '$ac_optarg'" ++ ac_need_defaults=false;; ++ --header | --heade | --head | --hea ) ++ $ac_shift ++ case $ac_optarg in ++ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ esac ++ as_fn_append CONFIG_HEADERS " '$ac_optarg'" ++ ac_need_defaults=false;; ++ --he | --h) ++ # Conflict between --help and --header ++ as_fn_error "ambiguous option: \`$1' ++Try \`$0 --help' for more information.";; ++ --help | --hel | -h ) ++ $as_echo "$ac_cs_usage"; exit ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil | --si | --s) ++ ac_cs_silent=: ;; ++ ++ # This is an error. ++ -*) as_fn_error "unrecognized option: \`$1' ++Try \`$0 --help' for more information." ;; ++ ++ *) as_fn_append ac_config_targets " $1" ++ ac_need_defaults=false ;; ++ ++ esac ++ shift ++done ++ ++ac_configure_extra_args= ++ ++if $ac_cs_silent; then ++ exec 6>/dev/null ++ ac_configure_extra_args="$ac_configure_extra_args --silent" ++fi ++ ++if $ac_cs_recheck; then ++ set X '/bin/sh' './configure' $ac_configure_extra_args --no-create --no-recursion ++ shift ++ $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6 ++ CONFIG_SHELL='/bin/sh' ++ export CONFIG_SHELL ++ exec "$@" ++fi ++ ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ++## Running $as_me. ## ++_ASBOX ++ $as_echo "$ac_log" ++} >&5 ++ ++# ++# INIT-COMMANDS ++# ++AMDEP_TRUE="" ac_aux_dir="." ++ ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++sed_quote_subst='s/\(["`$\\]\)/\\\1/g' ++double_quote_subst='s/\(["`\\]\)/\\\1/g' ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++macro_version='2.2.6b' ++macro_revision='1.3017' ++enable_shared='yes' ++enable_static='yes' ++pic_mode='default' ++enable_fast_install='yes' ++host_alias='' ++host='i686-pc-linux-gnu' ++host_os='linux-gnu' ++build_alias='' ++build='i686-pc-linux-gnu' ++build_os='linux-gnu' ++SED='/bin/sed' ++Xsed='/bin/sed -e 1s/^X//' ++GREP='/bin/grep' ++EGREP='/bin/grep -E' ++FGREP='/bin/grep -F' ++LD='/usr/bin/ld' ++NM='/usr/bin/nm -B' ++LN_S='ln -s' ++max_cmd_len='1966080' ++ac_objext='o' ++exeext='' ++lt_unset='unset' ++lt_SP2NL='tr \040 \012' ++lt_NL2SP='tr \015\012 \040\040' ++reload_flag=' -r' ++reload_cmds='$LD$reload_flag -o $output$reload_objs' ++OBJDUMP='objdump' ++deplibs_check_method='pass_all' ++file_magic_cmd='$MAGIC_CMD' ++AR='ar' ++AR_FLAGS='cru' ++STRIP='strip' ++RANLIB='ranlib' ++old_postinstall_cmds='chmod 644 $oldlib~$RANLIB $oldlib' ++old_postuninstall_cmds='' ++old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $oldlib' ++CC='gcc' ++CFLAGS='-Wall -W -pedantic -g -O2' ++compiler='gcc' ++GCC='yes' ++lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\''' ++lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' ++lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' ++objdir='.libs' ++SHELL='/bin/sh' ++ECHO='echo' ++MAGIC_CMD='file' ++lt_prog_compiler_no_builtin_flag=' -fno-builtin' ++lt_prog_compiler_wl='-Wl,' ++lt_prog_compiler_pic=' -fPIC -DPIC' ++lt_prog_compiler_static='-static' ++lt_cv_prog_compiler_c_o='yes' ++need_locks='no' ++DSYMUTIL='' ++NMEDIT='' ++LIPO='' ++OTOOL='' ++OTOOL64='' ++libext='a' ++shrext_cmds='.so' ++extract_expsyms_cmds='' ++archive_cmds_need_lc='no' ++enable_shared_with_static_runtimes='no' ++export_dynamic_flag_spec='${wl}--export-dynamic' ++whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ++compiler_needs_object='no' ++old_archive_from_new_cmds='' ++old_archive_from_expsyms_cmds='' ++archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++module_cmds='' ++module_expsym_cmds='' ++with_gnu_ld='yes' ++allow_undefined_flag='' ++no_undefined_flag='' ++hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++hardcode_libdir_flag_spec_ld='' ++hardcode_libdir_separator='' ++hardcode_direct='no' ++hardcode_direct_absolute='no' ++hardcode_minus_L='no' ++hardcode_shlibpath_var='unsupported' ++hardcode_automatic='no' ++inherit_rpath='no' ++link_all_deplibs='unknown' ++fix_srcfile_path='' ++always_export_symbols='no' ++export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' ++include_expsyms='' ++prelink_cmds='' ++file_list_spec='' ++variables_saved_for_relink='PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH' ++need_lib_prefix='no' ++need_version='no' ++version_type='linux' ++runpath_var='LD_RUN_PATH' ++shlibpath_var='LD_LIBRARY_PATH' ++shlibpath_overrides_runpath='no' ++libname_spec='lib$name' ++library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++soname_spec='${libname}${release}${shared_ext}$major' ++postinstall_cmds='' ++postuninstall_cmds='' ++finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++finish_eval='' ++hardcode_into_libs='yes' ++sys_lib_search_path_spec='/usr/lib/gcc/i686-redhat-linux/4.4.3 /usr/lib /lib' ++sys_lib_dlsearch_path_spec='/lib64 /usr/lib64 /lib /usr/lib /usr/lib/atlas /usr/lib/ctapi /usr/lib/mysql /usr/lib/OGRE /usr/lib/wine/ /usr/lib/xulrunner-1.9.1 ' ++hardcode_action='immediate' ++enable_dlopen='unknown' ++enable_dlopen_self='unknown' ++enable_dlopen_self_static='unknown' ++old_striplib='strip --strip-debug' ++striplib='strip --strip-unneeded' ++ ++LTCC='gcc' ++LTCFLAGS='-g -O2' ++compiler='gcc' ++ ++# Quote evaled strings. ++for var in SED GREP EGREP FGREP LD NM LN_S lt_SP2NL lt_NL2SP reload_flag OBJDUMP deplibs_check_method file_magic_cmd AR AR_FLAGS STRIP RANLIB CC CFLAGS compiler lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl lt_cv_sys_global_symbol_to_c_name_address lt_cv_sys_global_symbol_to_c_name_address_lib_prefix SHELL ECHO lt_prog_compiler_no_builtin_flag lt_prog_compiler_wl lt_prog_compiler_pic lt_prog_compiler_static lt_cv_prog_compiler_c_o need_locks DSYMUTIL NMEDIT LIPO OTOOL OTOOL64 shrext_cmds export_dynamic_flag_spec whole_archive_flag_spec compiler_needs_object with_gnu_ld allow_undefined_flag no_undefined_flag hardcode_libdir_flag_spec hardcode_libdir_flag_spec_ld hardcode_libdir_separator fix_srcfile_path exclude_expsyms include_expsyms file_list_spec variables_saved_for_relink libname_spec library_names_spec soname_spec finish_eval old_striplib striplib; do ++ case `eval \\$ECHO "X\\$$var"` in ++ *[\\\`\"\$]*) ++ eval "lt_$var=\\\"\`\$ECHO \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++ ;; ++ *) ++ eval "lt_$var=\\\"\$$var\\\"" ++ ;; ++ esac ++done ++ ++# Double-quote double-evaled strings. ++for var in reload_cmds old_postinstall_cmds old_postuninstall_cmds old_archive_cmds extract_expsyms_cmds old_archive_from_new_cmds old_archive_from_expsyms_cmds archive_cmds archive_expsym_cmds module_cmds module_expsym_cmds export_symbols_cmds prelink_cmds postinstall_cmds postuninstall_cmds finish_cmds sys_lib_search_path_spec sys_lib_dlsearch_path_spec; do ++ case `eval \\$ECHO "X\\$$var"` in ++ *[\\\`\"\$]*) ++ eval "lt_$var=\\\"\`\$ECHO \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ++ ;; ++ *) ++ eval "lt_$var=\\\"\$$var\\\"" ++ ;; ++ esac ++done ++ ++# Fix-up fallback echo if it was mangled by the above quoting rules. ++case $lt_ECHO in ++*'\$0 --fallback-echo"') lt_ECHO=`$ECHO "X$lt_ECHO" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ++ ;; ++esac ++ ++ac_aux_dir='.' ++xsi_shell='yes' ++lt_shell_append='yes' ++ ++# See if we are running on zsh, and set the options which allow our ++# commands through without removal of \ escapes INIT. ++if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++fi ++ ++ ++ PACKAGE='enca' ++ VERSION='1.13' ++ TIMESTAMP='' ++ RM='rm -f' ++ ofile='libtool' ++ ++ ++ ++ ++ ++# Handling of arguments. ++for ac_config_target in $ac_config_targets ++do ++ case $ac_config_target in ++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; ++ "enca.spec") CONFIG_FILES="$CONFIG_FILES enca.spec" ;; ++ "enca.pc") CONFIG_FILES="$CONFIG_FILES enca.pc" ;; ++ "devel-docs/Makefile") CONFIG_FILES="$CONFIG_FILES devel-docs/Makefile" ;; ++ "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;; ++ "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; ++ "script/Makefile") CONFIG_FILES="$CONFIG_FILES script/Makefile" ;; ++ "script/b-cstocs") CONFIG_FILES="$CONFIG_FILES script/b-cstocs" ;; ++ "script/b-map") CONFIG_FILES="$CONFIG_FILES script/b-map" ;; ++ "script/b-piconv") CONFIG_FILES="$CONFIG_FILES script/b-piconv" ;; ++ "script/b-umap") CONFIG_FILES="$CONFIG_FILES script/b-umap" ;; ++ "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; ++ "src/HELP") CONFIG_FILES="$CONFIG_FILES src/HELP" ;; ++ "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; ++ "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; ++ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; ++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; ++ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; ++ ++ *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; ++ esac ++done ++ ++ ++# If the user did not use the arguments to specify the items to instantiate, ++# then the envvar interface is used. Set only those that are not. ++# We use the long form for the default assignment because of an extremely ++# bizarre bug on SunOS 4.1.3. ++if $ac_need_defaults; then ++ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files ++ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers ++ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands ++fi ++ ++# Have a temporary directory for convenience. Make it in the build tree ++# simply because there is no reason against having it here, and in addition, ++# creating and moving files from /tmp can sometimes cause problems. ++# Hook for its removal unless debugging. ++# Note that there is a small window in which the directory will not be cleaned: ++# after its creation but before its name has been assigned to `$tmp'. ++$debug || ++{ ++ tmp= ++ trap 'exit_status=$? ++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ++' 0 ++ trap 'as_fn_exit 1' 1 2 13 15 ++} ++# Create a (secure) tmp directory for tmp files. ++ ++{ ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && ++ test -n "$tmp" && test -d "$tmp" ++} || ++{ ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") ++} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 ++ ++# Set up the scripts for CONFIG_FILES section. ++# No need to generate them if there are no CONFIG_FILES. ++# This happens for instance with `./config.status config.h'. ++if test -n "$CONFIG_FILES"; then ++ ++ ++ac_cr=`echo X | tr X '\015'` ++# On cygwin, bash can eat \r inside `` if the user requested igncr. ++# But we know of no other shell where ac_cr would be empty at this ++# point, so we can use a bashism as a fallback. ++if test "x$ac_cr" = x; then ++ eval ac_cr=\$\'\\r\' ++fi ++ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` ++if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ++ ac_cs_awk_cr='\r' ++else ++ ac_cs_awk_cr=$ac_cr ++fi ++ ++echo 'BEGIN {' >"$tmp/subs1.awk" && ++cat >>"$tmp/subs1.awk" <<\_ACAWK && ++S["am__EXEEXT_FALSE"]="" ++S["am__EXEEXT_TRUE"]="#" ++S["LTLIBOBJS"]="" ++S["SHELL_RANDOM_FILENAME"]="`/bin/mktemp /tmp/enca-$$-XXXXXXXX`" ++S["DEFAULT_CONVERTER_LIST"]="built-in,iconv" ++S["DEFAULT_EXTERNAL_CONVERTER"]="piconv" ++S["CONVERTER_LIBS"]=" " ++S["RELEASE"]="1" ++S["LTLIBICONV"]="" ++S["LIBICONV"]="" ++S["LIBOBJS"]="" ++S["LIBM"]="-lm" ++S["ENABLE_GTK_DOC_FALSE"]="#" ++S["ENABLE_GTK_DOC_TRUE"]="" ++S["GTKDOC"]="true" ++S["HTML_DIR"]="${datarootdir}/gtk-doc/html" ++S["MAP_PROG"]="" ++S["PICONV_PROG"]="/usr/bin/piconv" ++S["UMAP_PROG"]="" ++S["RECODE_PROG"]="" ++S["CSTOCS_PROG"]="" ++S["MKTEMP_PROG"]="/bin/mktemp" ++S["OTOOL64"]="" ++S["OTOOL"]="" ++S["LIPO"]="" ++S["NMEDIT"]="" ++S["DSYMUTIL"]="" ++S["lt_ECHO"]="echo" ++S["RANLIB"]="ranlib" ++S["AR"]="ar" ++S["OBJDUMP"]="objdump" ++S["LN_S"]="ln -s" ++S["NM"]="/usr/bin/nm -B" ++S["ac_ct_DUMPBIN"]="" ++S["DUMPBIN"]="" ++S["LD"]="/usr/bin/ld" ++S["FGREP"]="/bin/grep -F" ++S["SED"]="/bin/sed" ++S["host_os"]="linux-gnu" ++S["host_vendor"]="pc" ++S["host_cpu"]="i686" ++S["host"]="i686-pc-linux-gnu" ++S["build_os"]="linux-gnu" ++S["build_vendor"]="pc" ++S["build_cpu"]="i686" ++S["build"]="i686-pc-linux-gnu" ++S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool" ++S["EGREP"]="/bin/grep -E" ++S["GREP"]="/bin/grep" ++S["CPP"]="gcc -E" ++S["am__fastdepCC_FALSE"]="#" ++S["am__fastdepCC_TRUE"]="" ++S["CCDEPMODE"]="depmode=gcc3" ++S["AMDEPBACKSLASH"]="\\" ++S["AMDEP_FALSE"]="#" ++S["AMDEP_TRUE"]="" ++S["am__quote"]="" ++S["am__include"]="include" ++S["DEPDIR"]=".deps" ++S["OBJEXT"]="o" ++S["EXEEXT"]="" ++S["ac_ct_CC"]="gcc" ++S["CPPFLAGS"]="" ++S["LDFLAGS"]="" ++S["CFLAGS"]="-Wall -W -pedantic -g -O2" ++S["CC"]="gcc" ++S["MAINT"]="#" ++S["MAINTAINER_MODE_FALSE"]="" ++S["MAINTAINER_MODE_TRUE"]="#" ++S["am__untar"]="${AMTAR} xf -" ++S["am__tar"]="${AMTAR} chof - \"$$tardir\"" ++S["AMTAR"]="${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run tar" ++S["am__leading_dot"]="." ++S["SET_MAKE"]="" ++S["AWK"]="gawk" ++S["mkdir_p"]="/bin/mkdir -p" ++S["MKDIR_P"]="/bin/mkdir -p" ++S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" ++S["STRIP"]="strip" ++S["install_sh"]="${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/install-sh" ++S["MAKEINFO"]="${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run makeinfo" ++S["AUTOHEADER"]="${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoheader" ++S["AUTOMAKE"]="${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run automake-1.11" ++S["AUTOCONF"]="${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoconf" ++S["ACLOCAL"]="${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run aclocal-1.11 -I m4" ++S["VERSION"]="1.13" ++S["PACKAGE"]="enca" ++S["CYGPATH_W"]="echo" ++S["am__isrc"]="" ++S["INSTALL_DATA"]="${INSTALL} -m 644" ++S["INSTALL_SCRIPT"]="${INSTALL}" ++S["INSTALL_PROGRAM"]="${INSTALL}" ++S["target_alias"]="" ++S["host_alias"]="" ++S["build_alias"]="" ++S["LIBS"]=" -lm" ++S["ECHO_T"]="" ++S["ECHO_N"]="-n" ++S["ECHO_C"]="" ++S["DEFS"]="-DHAVE_CONFIG_H" ++S["mandir"]="${datarootdir}/man" ++S["localedir"]="${datarootdir}/locale" ++S["libdir"]="${exec_prefix}/lib" ++S["psdir"]="${docdir}" ++S["pdfdir"]="${docdir}" ++S["dvidir"]="${docdir}" ++S["htmldir"]="${docdir}" ++S["infodir"]="${datarootdir}/info" ++S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" ++S["oldincludedir"]="/usr/include" ++S["includedir"]="${prefix}/include" ++S["localstatedir"]="${prefix}/var" ++S["sharedstatedir"]="${prefix}/com" ++S["sysconfdir"]="${prefix}/etc" ++S["datadir"]="${datarootdir}" ++S["datarootdir"]="${prefix}/share" ++S["libexecdir"]="${exec_prefix}/libexec" ++S["sbindir"]="${exec_prefix}/sbin" ++S["bindir"]="${exec_prefix}/bin" ++S["program_transform_name"]="s,x,x," ++S["prefix"]="/usr/local" ++S["exec_prefix"]="${prefix}" ++S["PACKAGE_URL"]="" ++S["PACKAGE_BUGREPORT"]="https://bugs.cihar.com/" ++S["PACKAGE_STRING"]="Enca 1.13" ++S["PACKAGE_VERSION"]="1.13" ++S["PACKAGE_TARNAME"]="enca" ++S["PACKAGE_NAME"]="Enca" ++S["PATH_SEPARATOR"]=":" ++S["SHELL"]="/bin/sh" ++_ACAWK ++cat >>"$tmp/subs1.awk" <<_ACAWK && ++ for (key in S) S_is_set[key] = 1 ++ FS = "" ++ ++} ++{ ++ line = $ 0 ++ nfields = split(line, field, "@") ++ substed = 0 ++ len = length(field[1]) ++ for (i = 2; i < nfields; i++) { ++ key = field[i] ++ keylen = length(key) ++ if (S_is_set[key]) { ++ value = S[key] ++ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) ++ len += length(value) + length(field[++i]) ++ substed = 1 ++ } else ++ len += 1 + keylen ++ } ++ ++ print line ++} ++ ++_ACAWK ++if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then ++ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" ++else ++ cat ++fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ ++ || as_fn_error "could not setup config files machinery" "$LINENO" 5 ++fi # test -n "$CONFIG_FILES" ++ ++# Set up the scripts for CONFIG_HEADERS section. ++# No need to generate them if there are no CONFIG_HEADERS. ++# This happens for instance with `./config.status Makefile'. ++if test -n "$CONFIG_HEADERS"; then ++cat >"$tmp/defines.awk" <<\_ACAWK || ++BEGIN { ++D["PACKAGE_NAME"]=" \"Enca\"" ++D["PACKAGE_TARNAME"]=" \"enca\"" ++D["PACKAGE_VERSION"]=" \"1.13\"" ++D["PACKAGE_STRING"]=" \"Enca 1.13\"" ++D["PACKAGE_BUGREPORT"]=" \"https://bugs.cihar.com/\"" ++D["PACKAGE_URL"]=" \"\"" ++D["PACKAGE"]=" \"enca\"" ++D["VERSION"]=" \"1.13\"" ++D["STDC_HEADERS"]=" 1" ++D["HAVE_SYS_TYPES_H"]=" 1" ++D["HAVE_SYS_STAT_H"]=" 1" ++D["HAVE_STDLIB_H"]=" 1" ++D["HAVE_STRING_H"]=" 1" ++D["HAVE_MEMORY_H"]=" 1" ++D["HAVE_STRINGS_H"]=" 1" ++D["HAVE_INTTYPES_H"]=" 1" ++D["HAVE_STDINT_H"]=" 1" ++D["HAVE_UNISTD_H"]=" 1" ++D["__EXTENSIONS__"]=" 1" ++D["_ALL_SOURCE"]=" 1" ++D["_GNU_SOURCE"]=" 1" ++D["_POSIX_PTHREAD_SEMANTICS"]=" 1" ++D["_TANDEM_SOURCE"]=" 1" ++D["HAVE_DLFCN_H"]=" 1" ++D["LT_OBJDIR"]=" \".libs/\"" ++D["PICONV_PROG"]=" \"/usr/bin/piconv\"" ++D["HAVE__DEV_RANDOM"]=" 1" ++D["HAVE__DEV_URANDOM"]=" 1" ++D["STDC_HEADERS"]=" 1" ++D["HAVE_SYS_WAIT_H"]=" 1" ++D["TIME_WITH_SYS_TIME"]=" 1" ++D["HAVE__BOOL"]=" 1" ++D["HAVE_STDBOOL_H"]=" 1" ++D["HAVE_ERRNO_H"]=" 1" ++D["HAVE_FCNTL_H"]=" 1" ++D["HAVE_GETOPT_H"]=" 1" ++D["HAVE_LANGINFO_H"]=" 1" ++D["HAVE_LIMITS_H"]=" 1" ++D["HAVE_LOCALE_H"]=" 1" ++D["HAVE_MEMORY_H"]=" 1" ++D["HAVE_STRING_H"]=" 1" ++D["HAVE_STRINGS_H"]=" 1" ++D["HAVE_SYS_STAT_H"]=" 1" ++D["HAVE_SYS_TYPES_H"]=" 1" ++D["HAVE_SYS_WAIT_H"]=" 1" ++D["HAVE_SYS_TIME_H"]=" 1" ++D["HAVE_TIME_H"]=" 1" ++D["HAVE_UNISTD_H"]=" 1" ++D["HAVE_WORDEXP_H"]=" 1" ++D["HAVE_DECL_LC_MESSAGES"]=" 1" ++D["HAVE_PROGRAM_INVOCATION_SHORT_NAME"]=" 1" ++D["HAVE_FORK"]=" 1" ++D["HAVE_VFORK"]=" 1" ++D["HAVE_WORKING_VFORK"]=" 1" ++D["HAVE_WORKING_FORK"]=" 1" ++D["HAVE_CANONICALIZE_FILE_NAME"]=" 1" ++D["HAVE_FTRUNCATE"]=" 1" ++D["HAVE_GETTIMEOFDAY"]=" 1" ++D["HAVE_ISATTY"]=" 1" ++D["HAVE_NL_LANGINFO"]=" 1" ++D["HAVE_RANDOM"]=" 1" ++D["HAVE_REALPATH"]=" 1" ++D["HAVE_STRSTR"]=" 1" ++D["HAVE_STPCPY"]=" 1" ++D["HAVE_SETLOCALE"]=" 1" ++D["HAVE_TTYNAME"]=" 1" ++D["HAVE_WORDEXP"]=" 1" ++D["HAVE_GETOPT_LONG"]=" 1" ++D["HAVE_ICONV"]=" 1" ++D["ICONV_CONST"]=" " ++D["HAVE_GOOD_ICONV"]=" 1" ++D["ICONV_IS_TRANSITIVE"]=" 1" ++D["DEFAULT_CONVERTER_LIST"]=" \"built-in,iconv\"" ++D["ENABLE_EXTERNAL"]=" 1" ++D["DEFAULT_EXTERNAL_CONVERTER"]=" \"piconv\"" ++D["HAVE_LOCALE_ALIAS"]=" 1" ++D["LOCALE_ALIAS_PATH"]=" \"/usr/share/locale/locale.alias\"" ++ for (key in D) D_is_set[key] = 1 ++ FS = "" ++} ++/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { ++ line = $ 0 ++ split(line, arg, " ") ++ if (arg[1] == "#") { ++ defundef = arg[2] ++ mac1 = arg[3] ++ } else { ++ defundef = substr(arg[1], 2) ++ mac1 = arg[2] ++ } ++ split(mac1, mac2, "(") #) ++ macro = mac2[1] ++ prefix = substr(line, 1, index(line, defundef) - 1) ++ if (D_is_set[macro]) { ++ # Preserve the white space surrounding the "#". ++ print prefix "define", macro P[macro] D[macro] ++ next ++ } else { ++ # Replace #undef with comments. This is necessary, for example, ++ # in the case of _POSIX_SOURCE, which is predefined and required ++ # on some systems where configure will not decide to define it. ++ if (defundef == "undef") { ++ print "/*", prefix defundef, macro, "*/" ++ next ++ } ++ } ++} ++{ print } ++_ACAWK ++ as_fn_error "could not setup config headers machinery" "$LINENO" 5 ++fi # test -n "$CONFIG_HEADERS" ++ ++ ++eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" ++shift ++for ac_tag ++do ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; ++ esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; ++ :[FH]-) ac_tag=-:-;; ++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; ++ esac ++ ac_save_IFS=$IFS ++ IFS=: ++ set x $ac_tag ++ IFS=$ac_save_IFS ++ shift ++ ac_file=$1 ++ shift ++ ++ case $ac_mode in ++ :L) ac_source=$1;; ++ :[FH]) ++ ac_file_inputs= ++ for ac_f ++ do ++ case $ac_f in ++ -) ac_f="$tmp/stdin";; ++ *) # Look for the file first in the build tree, then in the source tree ++ # (if the path is not absolute). The absolute path cannot be DOS-style, ++ # because $ac_f cannot contain `:'. ++ test -f "$ac_f" || ++ case $ac_f in ++ [\\/$]*) false;; ++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; ++ esac || ++ as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; ++ esac ++ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ++ as_fn_append ac_file_inputs " '$ac_f'" ++ done ++ ++ # Let's still pretend it is `configure' which instantiates (i.e., don't ++ # use $as_me), people would be surprised to read: ++ # /* config.h. Generated by config.status. */ ++ configure_input='Generated from '` ++ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' ++ `' by configure.' ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 ++$as_echo "$as_me: creating $ac_file" >&6;} ++ fi ++ # Neutralize special characters interpreted by sed in replacement strings. ++ case $configure_input in #( ++ *\&* | *\|* | *\\* ) ++ ac_sed_conf_input=`$as_echo "$configure_input" | ++ sed 's/[\\\\&|]/\\\\&/g'`;; #( ++ *) ac_sed_conf_input=$configure_input;; ++ esac ++ ++ case $ac_tag in ++ *:-:* | *:-) cat >"$tmp/stdin" \ ++ || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; ++ esac ++ ;; ++ esac ++ ++ ac_dir=`$as_dirname -- "$ac_file" || ++$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$ac_file" : 'X\(//\)[^/]' \| \ ++ X"$ac_file" : 'X\(//\)$' \| \ ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$ac_file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ as_dir="$ac_dir"; as_fn_mkdir_p ++ ac_builddir=. ++ ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ ++ case $ac_mode in ++ :F) ++ # ++ # CONFIG_FILE ++ # ++ ++ case $INSTALL in ++ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; ++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; ++ esac ++ ac_MKDIR_P=$MKDIR_P ++ case $MKDIR_P in ++ [\\/$]* | ?:[\\/]* ) ;; ++ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; ++ esac ++# If the template does not know about datarootdir, expand it. ++# FIXME: This hack should be removed a few years after 2.60. ++ac_datarootdir_hack=; ac_datarootdir_seen= ++ac_sed_dataroot=' ++/datarootdir/ { ++ p ++ q ++} ++/@datadir@/p ++/@docdir@/p ++/@infodir@/p ++/@localedir@/p ++/@mandir@/p' ++case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in ++*datarootdir*) ac_datarootdir_seen=yes;; ++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} ++ ac_datarootdir_hack=' ++ s&@datadir@&${datarootdir}&g ++ s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g ++ s&@infodir@&${datarootdir}/info&g ++ s&@localedir@&${datarootdir}/locale&g ++ s&@mandir@&${datarootdir}/man&g ++ s&\${datarootdir}&${prefix}/share&g' ;; ++esac ++ac_sed_extra="/^[ ]*VPATH[ ]*=/{ ++s/:*\$(srcdir):*/:/ ++s/:*\${srcdir}:*/:/ ++s/:*@srcdir@:*/:/ ++s/^\([^=]*=[ ]*\):*/\1/ ++s/:*$// ++s/^[^=]*=[ ]*$// ++} ++ ++:t ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++s|@configure_input@|$ac_sed_conf_input|;t t ++s&@top_builddir@&$ac_top_builddir_sub&;t t ++s&@top_build_prefix@&$ac_top_build_prefix&;t t ++s&@srcdir@&$ac_srcdir&;t t ++s&@abs_srcdir@&$ac_abs_srcdir&;t t ++s&@top_srcdir@&$ac_top_srcdir&;t t ++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t ++s&@builddir@&$ac_builddir&;t t ++s&@abs_builddir@&$ac_abs_builddir&;t t ++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t ++s&@INSTALL@&$ac_INSTALL&;t t ++s&@MKDIR_P@&$ac_MKDIR_P&;t t ++$ac_datarootdir_hack ++" ++eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ ++ || as_fn_error "could not create $ac_file" "$LINENO" 5 ++ ++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && ++ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && ++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&5 ++$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&2;} ++ ++ rm -f "$tmp/stdin" ++ case $ac_file in ++ -) cat "$tmp/out" && rm -f "$tmp/out";; ++ *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; ++ esac \ ++ || as_fn_error "could not create $ac_file" "$LINENO" 5 ++ ;; ++ :H) ++ # ++ # CONFIG_HEADER ++ # ++ if test x"$ac_file" != x-; then ++ { ++ $as_echo "/* $configure_input */" \ ++ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" ++ } >"$tmp/config.h" \ ++ || as_fn_error "could not create $ac_file" "$LINENO" 5 ++ if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 ++$as_echo "$as_me: $ac_file is unchanged" >&6;} ++ else ++ rm -f "$ac_file" ++ mv "$tmp/config.h" "$ac_file" \ ++ || as_fn_error "could not create $ac_file" "$LINENO" 5 ++ fi ++ else ++ $as_echo "/* $configure_input */" \ ++ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ ++ || as_fn_error "could not create -" "$LINENO" 5 ++ fi ++# Compute "$ac_file"'s index in $config_headers. ++_am_arg="$ac_file" ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $_am_arg | $_am_arg:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; ++ esac ++done ++echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || ++$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$_am_arg" : 'X\(//\)[^/]' \| \ ++ X"$_am_arg" : 'X\(//\)$' \| \ ++ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$_am_arg" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'`/stamp-h$_am_stamp_count ++ ;; ++ ++ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 ++$as_echo "$as_me: executing $ac_file commands" >&6;} ++ ;; ++ esac ++ ++ ++ case $ac_file$ac_mode in ++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || { ++ # Autoconf 2.62 quotes --file arguments for eval, but not when files ++ # are listed without --file. Let's play safe and only enable the eval ++ # if we detect the quoting. ++ case $CONFIG_FILES in ++ *\'*) eval set x "$CONFIG_FILES" ;; ++ *) set x $CONFIG_FILES ;; ++ esac ++ shift ++ for mf ++ do ++ # Strip MF so we end up with the name of the file. ++ mf=`echo "$mf" | sed -e 's/:.*$//'` ++ # Check whether this is an Automake generated Makefile or not. ++ # We used to match only the files named `Makefile.in', but ++ # some people rename them; so instead we look at the file content. ++ # Grep'ing the first line is not enough: some people post-process ++ # each Makefile.in and add a new line on top of each file to say so. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then ++ dirpart=`$as_dirname -- "$mf" || ++$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$mf" : 'X\(//\)[^/]' \| \ ++ X"$mf" : 'X\(//\)$' \| \ ++ X"$mf" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$mf" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ else ++ continue ++ fi ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # from the Makefile without running `make'. ++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` ++ test -z "$DEPDIR" && continue ++ am__include=`sed -n 's/^am__include = //p' < "$mf"` ++ test -z "am__include" && continue ++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` ++ # When using ansi2knr, U may be empty or an underscore; expand it ++ U=`sed -n 's/^U = //p' < "$mf"` ++ # Find all dependency output files, they are included files with ++ # $(DEPDIR) in their names. We invoke sed twice because it is the ++ # simplest approach to changing $(DEPDIR) to its actual value in the ++ # expansion. ++ for file in `sed -n " ++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ ++ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do ++ # Make sure the directory exists. ++ test -f "$dirpart/$file" && continue ++ fdir=`$as_dirname -- "$file" || ++$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$file" : 'X\(//\)[^/]' \| \ ++ X"$file" : 'X\(//\)$' \| \ ++ X"$file" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ as_dir=$dirpart/$fdir; as_fn_mkdir_p ++ # echo "creating $dirpart/$file" ++ echo '# dummy' > "$dirpart/$file" ++ done ++ done ++} ++ ;; ++ "libtool":C) ++ ++ # See if we are running on zsh, and set the options which allow our ++ # commands through without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ ++ cfgfile="${ofile}T" ++ trap "$RM \"$cfgfile\"; exit 1" 1 2 15 ++ $RM "$cfgfile" ++ ++ cat <<_LT_EOF >> "$cfgfile" ++#! $SHELL ++ ++# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. ++# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++# NOTE: Changes made to this file will be lost: look at ltmain.sh. ++# ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, ++# 2006, 2007, 2008 Free Software Foundation, Inc. ++# Written by Gordon Matzigkeit, 1996 ++# ++# This file is part of GNU Libtool. ++# ++# GNU Libtool is free software; you can redistribute it and/or ++# modify it under the terms of the GNU General Public License as ++# published by the Free Software Foundation; either version 2 of ++# the License, or (at your option) any later version. ++# ++# As a special exception to the GNU General Public License, ++# if you distribute this file as part of a program or library that ++# is built using GNU Libtool, you may include this file under the ++# same distribution terms that you use for the rest of that program. ++# ++# GNU Libtool is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GNU Libtool; see the file COPYING. If not, a copy ++# can be downloaded from http://www.gnu.org/licenses/gpl.html, or ++# obtained by writing to the Free Software Foundation, Inc., ++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++ ++ ++# The names of the tagged configurations supported by this script. ++available_tags="" ++ ++# ### BEGIN LIBTOOL CONFIG ++ ++# Which release of libtool.m4 was used? ++macro_version=$macro_version ++macro_revision=$macro_revision ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared ++ ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# What type of objects to build. ++pic_mode=$pic_mode ++ ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os ++ ++# A sed program that does not truncate output. ++SED=$lt_SED ++ ++# Sed that helps us avoid accidentally triggering echo(1) options like -n. ++Xsed="\$SED -e 1s/^X//" ++ ++# A grep program that handles long lines. ++GREP=$lt_GREP ++ ++# An ERE matcher. ++EGREP=$lt_EGREP ++ ++# A literal string matcher. ++FGREP=$lt_FGREP ++ ++# A BSD- or MS-compatible name lister. ++NM=$lt_NM ++ ++# Whether we need soft or hard links. ++LN_S=$lt_LN_S ++ ++# What is the maximum length of a command? ++max_cmd_len=$max_cmd_len ++ ++# Object file suffix (normally "o"). ++objext=$ac_objext ++ ++# Executable file suffix (normally ""). ++exeext=$exeext ++ ++# whether the shell understands "unset". ++lt_unset=$lt_unset ++ ++# turn spaces into newlines. ++SP2NL=$lt_lt_SP2NL ++ ++# turn newlines into spaces. ++NL2SP=$lt_lt_NL2SP ++ ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ ++# An object symbol dumper. ++OBJDUMP=$lt_OBJDUMP ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method ++ ++# Command to use when deplibs_check_method == "file_magic". ++file_magic_cmd=$lt_file_magic_cmd ++ ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS ++ ++# A symbol stripping program. ++STRIP=$lt_STRIP ++ ++# Commands used to install an old-style archive. ++RANLIB=$lt_RANLIB ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds ++ ++# A C compiler. ++LTCC=$lt_CC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_CFLAGS ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration. ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl ++ ++# Transform the output of nm in a C name address pair. ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address ++ ++# Transform the output of nm in a C name address pair when lib prefix is needed. ++global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix ++ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# An echo program that does not interpret backslashes. ++ECHO=$lt_ECHO ++ ++# Used to examine libraries when file_magic_cmd begins with "file". ++MAGIC_CMD=$MAGIC_CMD ++ ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks ++ ++# Tool to manipulate archived DWARF debug symbol files on Mac OS X. ++DSYMUTIL=$lt_DSYMUTIL ++ ++# Tool to change global to local symbols on Mac OS X. ++NMEDIT=$lt_NMEDIT ++ ++# Tool to manipulate fat objects and archives on Mac OS X. ++LIPO=$lt_LIPO ++ ++# ldd/readelf like tool for Mach-O binaries on Mac OS X. ++OTOOL=$lt_OTOOL ++ ++# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. ++OTOOL64=$lt_OTOOL64 ++ ++# Old archive suffix (normally "a"). ++libext=$libext ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds=$lt_shrext_cmds ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds ++ ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at link time. ++variables_saved_for_relink=$lt_variables_saved_for_relink ++ ++# Do we need the "lib" prefix for modules? ++need_lib_prefix=$need_lib_prefix ++ ++# Do we need a version for libraries? ++need_version=$need_version ++ ++# Library versioning type. ++version_type=$version_type ++ ++# Shared library runtime path variable. ++runpath_var=$runpath_var ++ ++# Shared library path variable. ++shlibpath_var=$shlibpath_var ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++ ++# Format of library name prefix. ++libname_spec=$lt_libname_spec ++ ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME ++library_names_spec=$lt_library_names_spec ++ ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec ++ ++# Command to use after installation of a shared archive. ++postinstall_cmds=$lt_postinstall_cmds ++ ++# Command to use after uninstallation of a shared archive. ++postuninstall_cmds=$lt_postuninstall_cmds ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds ++ ++# As "finish_cmds", except a single script fragment to be evaled but ++# not shown. ++finish_eval=$lt_finish_eval ++ ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs ++ ++# Compile-time system search path for libraries. ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++ ++# Run-time system search path for libraries. ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++ ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen ++ ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self ++ ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static ++ ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib ++ ++ ++# The linker used to build libraries. ++LD=$lt_LD ++ ++# Commands used to build an old-style archive. ++old_archive_cmds=$lt_old_archive_cmds ++ ++# A language specific compiler. ++CC=$lt_compiler ++ ++# Is the compiler the GNU compiler? ++with_gcc=$GCC ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag ++ ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl ++ ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic ++ ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc ++ ++# Whether or not to disallow shared libs when runtime libs are static. ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec ++ ++# Whether the compiler copes with passing no objects directly. ++compiler_needs_object=$lt_compiler_needs_object ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds ++ ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds ++ ++# Commands used to build a shared archive. ++archive_cmds=$lt_archive_cmds ++archive_expsym_cmds=$lt_archive_expsym_cmds ++ ++# Commands used to build a loadable module if different from building ++# a shared archive. ++module_cmds=$lt_module_cmds ++module_expsym_cmds=$lt_module_expsym_cmds ++ ++# Whether we are building with GNU ld or not. ++with_gnu_ld=$lt_with_gnu_ld ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag ++ ++# Flag that enforces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag ++ ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec ++ ++# If ld is used when linking, flag to hardcode \$libdir into a binary ++# during linking. This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld ++ ++# Whether we need a single "-rpath" flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator ++ ++# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes ++# DIR into the resulting binary. ++hardcode_direct=$hardcode_direct ++ ++# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes ++# DIR into the resulting binary and the resulting library dependency is ++# "absolute",i.e impossible to change by setting \${shlibpath_var} if the ++# library is relocated. ++hardcode_direct_absolute=$hardcode_direct_absolute ++ ++# Set to "yes" if using the -LDIR flag during linking hardcodes DIR ++# into the resulting binary. ++hardcode_minus_L=$hardcode_minus_L ++ ++# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR ++# into the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var ++ ++# Set to "yes" if building a shared library automatically hardcodes DIR ++# into the library and all subsequent libraries and executables linked ++# against it. ++hardcode_automatic=$hardcode_automatic ++ ++# Set to yes if linker adds runtime paths of dependent libraries ++# to runtime path list. ++inherit_rpath=$inherit_rpath ++ ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs ++ ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path ++ ++# Set to "yes" if exported symbols are required. ++always_export_symbols=$always_export_symbols ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms ++ ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms ++ ++# Commands necessary for linking programs (against libraries) with templates. ++prelink_cmds=$lt_prelink_cmds ++ ++# Specify filename containing input files. ++file_list_spec=$lt_file_list_spec ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action ++ ++# ### END LIBTOOL CONFIG ++ ++_LT_EOF ++ ++ case $host_os in ++ aix3*) ++ cat <<\_LT_EOF >> "$cfgfile" ++# AIX sometimes has problems with the GCC collect2 program. For some ++# reason, if we set the COLLECT_NAMES environment variable, the problems ++# vanish in a puff of smoke. ++if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++fi ++_LT_EOF ++ ;; ++ esac ++ ++ ++ltmain="$ac_aux_dir/ltmain.sh" ++ ++ ++ # We use sed instead of cat because bash on DJGPP gets confused if ++ # if finds mixed CR/LF and LF-only lines. Since sed operates in ++ # text mode, it properly converts lines to CR/LF. This bash problem ++ # is reportedly fixed, but why not run on old versions too? ++ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ ++ || (rm -f "$cfgfile"; exit 1) ++ ++ case $xsi_shell in ++ yes) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++} ++ ++# func_basename file ++func_basename () ++{ ++ func_basename_result="${1##*/}" ++} ++ ++# func_dirname_and_basename file append nondir_replacement ++# perform func_basename and func_dirname in a single function ++# call: ++# dirname: Compute the dirname of FILE. If nonempty, ++# add APPEND to the result, otherwise set result ++# to NONDIR_REPLACEMENT. ++# value returned in "$func_dirname_result" ++# basename: Compute filename of FILE. ++# value retuned in "$func_basename_result" ++# Implementation must be kept synchronized with func_dirname ++# and func_basename. For efficiency, we do not delegate to ++# those functions but instead duplicate the functionality here. ++func_dirname_and_basename () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++ func_basename_result="${1##*/}" ++} ++ ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++func_stripname () ++{ ++ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are ++ # positional parameters, so assign one to ordinary parameter first. ++ func_stripname_result=${3} ++ func_stripname_result=${func_stripname_result#"${1}"} ++ func_stripname_result=${func_stripname_result%"${2}"} ++} ++ ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=${1%%=*} ++ func_opt_split_arg=${1#*=} ++} ++ ++# func_lo2o object ++func_lo2o () ++{ ++ case ${1} in ++ *.lo) func_lo2o_result=${1%.lo}.${objext} ;; ++ *) func_lo2o_result=${1} ;; ++ esac ++} ++ ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=${1%.*}.lo ++} ++ ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=$(( $* )) ++} ++ ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=${#1} ++} ++ ++_LT_EOF ++ ;; ++ *) # Bourne compatible functions. ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ # Extract subdirectory from the argument. ++ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` ++ if test "X$func_dirname_result" = "X${1}"; then ++ func_dirname_result="${3}" ++ else ++ func_dirname_result="$func_dirname_result${2}" ++ fi ++} ++ ++# func_basename file ++func_basename () ++{ ++ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` ++} ++ ++ ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++# func_strip_suffix prefix name ++func_stripname () ++{ ++ case ${2} in ++ .*) func_stripname_result=`$ECHO "X${3}" \ ++ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; ++ *) func_stripname_result=`$ECHO "X${3}" \ ++ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; ++ esac ++} ++ ++# sed scripts: ++my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' ++my_sed_long_arg='1s/^-[^=]*=//' ++ ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` ++ func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` ++} ++ ++# func_lo2o object ++func_lo2o () ++{ ++ func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` ++} ++ ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` ++} ++ ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=`expr "$@"` ++} ++ ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` ++} ++ ++_LT_EOF ++esac ++ ++case $lt_shell_append in ++ yes) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$1+=\$2" ++} ++_LT_EOF ++ ;; ++ *) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$1=\$$1\$2" ++} ++ ++_LT_EOF ++ ;; ++ esac ++ ++ ++ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ ++ || (rm -f "$cfgfile"; exit 1) ++ ++ mv -f "$cfgfile" "$ofile" || ++ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") ++ chmod +x "$ofile" ++ ++ ;; ++ ++ esac ++done # for ac_tag ++ ++ ++as_fn_exit 0 +diff -Naur enca-1.13/configure enca-1.13.patch/configure +--- enca-1.13/configure 2010-02-09 11:23:03.000000000 +0100 ++++ enca-1.13.patch/configure 2010-04-16 18:41:08.657317798 +0200 +@@ -5531,11 +5531,11 @@ + ;; + # This must be Linux ELF. +-linux* | k*bsd*-gnu | kopensolaris*-gnu) ++linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; --as_fn_exit 0 -+{ (exit 0); exit 0; } - _ACEOF -+chmod +x $CONFIG_STATUS - ac_clean_files=$ac_clean_files_save +-netbsd* | netbsdelf*-gnu) ++netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else +@@ -7701,7 +7701,7 @@ + lt_prog_compiler_static='-non_shared' + ;; - test $ac_write_fail = 0 || -- as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 -+ { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 -+$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} -+ { (exit 1); exit 1; }; } +- linux* | k*bsd*-gnu | kopensolaris*-gnu) ++ linux* | k*bsd*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) +@@ -8150,9 +8150,6 @@ + openbsd*) + with_gnu_ld=no + ;; +- linux* | k*bsd*-gnu) +- link_all_deplibs=no +- ;; + esac + ld_shlibs=yes +@@ -8174,7 +8171,6 @@ + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in +- *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... +@@ -8266,7 +8262,7 @@ + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; - # configure is writing to config.log, and then calls config.status. -@@ -16435,10 +19583,10 @@ - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. -- $ac_cs_success || as_fn_exit $? -+ $ac_cs_success || { (exit 1); exit 1; } - fi - if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -+ { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 - $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +- gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) ++ gnu* | linux* | tpf* | k*bsd*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in +@@ -8336,7 +8332,7 @@ + fi + ;; + +- netbsd* | netbsdelf*-gnu) ++ netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= +@@ -8511,7 +8507,6 @@ + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi +- link_all_deplibs=no + else + # not using gcc + if test "$host_cpu" = ia64; then +@@ -8838,7 +8833,7 @@ + link_all_deplibs=yes + ;; + +- netbsd* | netbsdelf*-gnu) ++ netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else +@@ -9728,7 +9723,7 @@ + ;; + + # This must be Linux ELF. +-linux* | k*bsd*-gnu | kopensolaris*-gnu) ++linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no +@@ -9768,10 +9763,13 @@ + # before this can be enabled. + hardcode_into_libs=yes + ++ # Add ABI-specific directories to the system library path. ++ sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" ++ + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` +- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on +@@ -9783,18 +9781,6 @@ + dynamic_linker='GNU/Linux ld.so' + ;; + +-netbsdelf*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='NetBSD ld.elf_so' +- ;; +- + netbsd*) + version_type=sunos + need_lib_prefix=no +@@ -10415,7 +10401,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10418 "configure" ++#line 10404 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -10511,7 +10497,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10514 "configure" ++#line 10500 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -12036,14 +12022,6 @@ fi -@@ -16494,19 +19642,19 @@ - echo "=================================================================" - if test "$ac_cv_header_stdc" != yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: expect build to fail since we depend on \"ISO C headers\"" >&5 -+ { $as_echo "$as_me:$LINENO: WARNING: expect build to fail since we depend on \"ISO C headers\"" >&5 - $as_echo "$as_me: WARNING: expect build to fail since we depend on \"ISO C headers\"" >&2;} - fi - if test "$ac_cv_header_unistd_h" != yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: expect build to fail since we depend on \"unistd.h\"" >&5 -+ { $as_echo "$as_me:$LINENO: WARNING: expect build to fail since we depend on \"unistd.h\"" >&5 - $as_echo "$as_me: WARNING: expect build to fail since we depend on \"unistd.h\"" >&2;} - fi - if test "$ac_cv_header_sys_types_h" != yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: expect build to fail since we depend on \"sys/types.h\"" >&5 -+ { $as_echo "$as_me:$LINENO: WARNING: expect build to fail since we depend on \"sys/types.h\"" >&5 - $as_echo "$as_me: WARNING: expect build to fail since we depend on \"sys/types.h\"" >&2;} - fi - if test "$ac_cv_header_sys_stat_h" != yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: expect build to fail since we depend on \"sys/stat.h\"" >&5 -+ { $as_echo "$as_me:$LINENO: WARNING: expect build to fail since we depend on \"sys/stat.h\"" >&5 - $as_echo "$as_me: WARNING: expect build to fail since we depend on \"sys/stat.h\"" >&2;} - fi +-if test "$prefix" = "NONE"; then +- LDFLAGS="$LDFLAGS -L$ac_default_prefix/lib" +- CPPFLAGS="$CPPFLAGS -I$ac_default_prefix/include" +-else +- LDFLAGS="$LDFLAGS -L$prefix/lib" +- CPPFLAGS="$CPPFLAGS -I$prefix/include" +-fi +- -diff -Naur enca-1.12/configure.ac enca-1.12.patch/configure.ac ---- enca-1.12/configure.ac 2009-10-29 13:05:11.000000000 +0100 -+++ enca-1.12.patch/configure.ac 2009-12-19 01:17:40.884469262 +0100 + case "$target" in + NONE) yeti_libm_target="$host" ;; +diff -Naur enca-1.13/configure.ac enca-1.13.patch/configure.ac +--- enca-1.13/configure.ac 2010-02-09 11:23:03.000000000 +0100 ++++ enca-1.13.patch/configure.ac 2010-04-16 18:40:54.443444882 +0200 @@ -97,15 +97,6 @@ dnl Check for good random number sources AC_CHECK_FILES(/dev/random /dev/urandom /dev/srandom /dev/arandom) @@ -12690,4 +4581,15345 @@ diff -Naur enca-1.12/configure.ac enca-1.12.patch/configure.ac dnl Checks for libraries. ye_CHECK_LIBM -diff -Naur enca-1.12/configure.ac.orig enca-1.12.patch/configure.ac.orig +diff -Naur enca-1.13/data/.deps/basetoc.Po enca-1.13.patch/data/.deps/basetoc.Po +--- enca-1.13/data/.deps/basetoc.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/data/.deps/basetoc.Po 2010-04-16 18:41:17.859442524 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/data/.deps/countall.Po enca-1.13.patch/data/.deps/countall.Po +--- enca-1.13/data/.deps/countall.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/data/.deps/countall.Po 2010-04-16 18:41:17.861442973 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/data/.deps/countpair.Po enca-1.13.patch/data/.deps/countpair.Po +--- enca-1.13/data/.deps/countpair.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/data/.deps/countpair.Po 2010-04-16 18:41:17.863464095 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/data/.deps/findletters.Po enca-1.13.patch/data/.deps/findletters.Po +--- enca-1.13/data/.deps/findletters.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/data/.deps/findletters.Po 2010-04-16 18:41:17.865451414 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/data/.deps/mystrings.Po enca-1.13.patch/data/.deps/mystrings.Po +--- enca-1.13/data/.deps/mystrings.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/data/.deps/mystrings.Po 2010-04-16 18:41:17.867442574 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/data/.deps/pairtoc.Po enca-1.13.patch/data/.deps/pairtoc.Po +--- enca-1.13/data/.deps/pairtoc.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/data/.deps/pairtoc.Po 2010-04-16 18:41:17.869451893 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/data/.deps/xlt.Po enca-1.13.patch/data/.deps/xlt.Po +--- enca-1.13/data/.deps/xlt.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/data/.deps/xlt.Po 2010-04-16 18:41:17.871442495 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/data/Makefile enca-1.13.patch/data/Makefile +--- enca-1.13/data/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/data/Makefile 2010-04-16 18:41:17.561442668 +0200 +@@ -0,0 +1,677 @@ ++# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# data/Makefile. Generated from Makefile.in by configure. ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, ++# Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++ ++ ++ ++ ++ ++pkgdatadir = $(datadir)/enca ++pkgincludedir = $(includedir)/enca ++pkglibdir = $(libdir)/enca ++pkglibexecdir = $(libexecdir)/enca ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = i686-pc-linux-gnu ++host_triplet = i686-pc-linux-gnu ++noinst_PROGRAMS = basetoc$(EXEEXT) countall$(EXEEXT) \ ++ countpair$(EXEEXT) findletters$(EXEEXT) mystrings$(EXEEXT) \ ++ pairtoc$(EXEEXT) xlt$(EXEEXT) ++subdir = data ++DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ ++ $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ ++ $(top_srcdir)/m4/libiconv.m4 $(top_srcdir)/m4/libm.m4 \ ++ $(top_srcdir)/m4/librecode.m4 $(top_srcdir)/m4/libtool.m4 \ ++ $(top_srcdir)/m4/localias.m4 $(top_srcdir)/m4/ltoptions.m4 \ ++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ ++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/tools.m4 \ ++ $(top_srcdir)/m4/typevar.m4 $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++CONFIG_CLEAN_VPATH_FILES = ++PROGRAMS = $(noinst_PROGRAMS) ++am_basetoc_OBJECTS = basetoc.$(OBJEXT) ++basetoc_OBJECTS = $(am_basetoc_OBJECTS) ++basetoc_LDADD = $(LDADD) ++am_countall_OBJECTS = countall.$(OBJEXT) ++countall_OBJECTS = $(am_countall_OBJECTS) ++countall_LDADD = $(LDADD) ++am_countpair_OBJECTS = countpair.$(OBJEXT) ++countpair_OBJECTS = $(am_countpair_OBJECTS) ++countpair_LDADD = $(LDADD) ++am_findletters_OBJECTS = findletters.$(OBJEXT) ++findletters_OBJECTS = $(am_findletters_OBJECTS) ++findletters_LDADD = $(LDADD) ++am_mystrings_OBJECTS = mystrings.$(OBJEXT) ++mystrings_OBJECTS = $(am_mystrings_OBJECTS) ++mystrings_LDADD = $(LDADD) ++am_pairtoc_OBJECTS = pairtoc.$(OBJEXT) ++pairtoc_OBJECTS = $(am_pairtoc_OBJECTS) ++pairtoc_LDADD = $(LDADD) ++am_xlt_OBJECTS = xlt.$(OBJEXT) ++xlt_OBJECTS = $(am_xlt_OBJECTS) ++xlt_LDADD = $(LDADD) ++DEFAULT_INCLUDES = -I. -I$(top_builddir) ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++am__mv = mv -f ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(basetoc_SOURCES) $(countall_SOURCES) $(countpair_SOURCES) \ ++ $(findletters_SOURCES) $(mystrings_SOURCES) $(pairtoc_SOURCES) \ ++ $(xlt_SOURCES) ++DIST_SOURCES = $(basetoc_SOURCES) $(countall_SOURCES) \ ++ $(countpair_SOURCES) $(findletters_SOURCES) \ ++ $(mystrings_SOURCES) $(pairtoc_SOURCES) $(xlt_SOURCES) ++DATA = $(noinst_DATA) ++HEADERS = $(noinst_HEADERS) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run aclocal-1.11 -I m4 ++AMTAR = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run tar ++AR = ar ++AUTOCONF = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoconf ++AUTOHEADER = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoheader ++AUTOMAKE = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run automake-1.11 ++AWK = gawk ++CC = gcc ++CCDEPMODE = depmode=gcc3 ++CFLAGS = -Wall -W -pedantic -g -O2 ++CONVERTER_LIBS = ++CPP = gcc -E ++CPPFLAGS = ++CSTOCS_PROG = ++CYGPATH_W = echo ++DEFAULT_CONVERTER_LIST = built-in,iconv ++DEFAULT_EXTERNAL_CONVERTER = piconv ++DEFS = -DHAVE_CONFIG_H ++DEPDIR = .deps ++DSYMUTIL = ++DUMPBIN = ++ECHO_C = ++ECHO_N = -n ++ECHO_T = ++EGREP = /bin/grep -E ++EXEEXT = ++FGREP = /bin/grep -F ++GREP = /bin/grep ++GTKDOC = true ++HTML_DIR = ${datarootdir}/gtk-doc/html ++INSTALL = /usr/bin/install -c ++INSTALL_DATA = ${INSTALL} -m 644 ++INSTALL_PROGRAM = ${INSTALL} ++INSTALL_SCRIPT = ${INSTALL} ++INSTALL_STRIP_PROGRAM = $(install_sh) -c -s ++LD = /usr/bin/ld ++LDFLAGS = ++LIBICONV = ++LIBM = -lm ++LIBOBJS = ++LIBS = -lm ++LIBTOOL = $(SHELL) $(top_builddir)/libtool ++LIPO = ++LN_S = ln -s ++LTLIBICONV = ++LTLIBOBJS = ++MAINT = # ++MAKEINFO = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run makeinfo ++MAP_PROG = ++MKDIR_P = /bin/mkdir -p ++MKTEMP_PROG = /bin/mktemp ++NM = /usr/bin/nm -B ++NMEDIT = ++OBJDUMP = objdump ++OBJEXT = o ++OTOOL = ++OTOOL64 = ++PACKAGE = enca ++PACKAGE_BUGREPORT = https://bugs.cihar.com/ ++PACKAGE_NAME = Enca ++PACKAGE_STRING = Enca 1.13 ++PACKAGE_TARNAME = enca ++PACKAGE_URL = ++PACKAGE_VERSION = 1.13 ++PATH_SEPARATOR = : ++PICONV_PROG = /usr/bin/piconv ++RANLIB = ranlib ++RECODE_PROG = ++RELEASE = 1 ++SED = /bin/sed ++SET_MAKE = ++SHELL = /bin/sh ++SHELL_RANDOM_FILENAME = `/bin/mktemp /tmp/enca-$$-XXXXXXXX` ++STRIP = strip ++UMAP_PROG = ++VERSION = 1.13 ++abs_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/data ++abs_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/data ++abs_top_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++abs_top_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++ac_ct_CC = gcc ++ac_ct_DUMPBIN = ++am__include = include ++am__leading_dot = . ++am__quote = ++am__tar = ${AMTAR} chof - "$$tardir" ++am__untar = ${AMTAR} xf - ++bindir = ${exec_prefix}/bin ++build = i686-pc-linux-gnu ++build_alias = ++build_cpu = i686 ++build_os = linux-gnu ++build_vendor = pc ++builddir = . ++datadir = ${datarootdir} ++datarootdir = ${prefix}/share ++docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} ++dvidir = ${docdir} ++exec_prefix = ${prefix} ++host = i686-pc-linux-gnu ++host_alias = ++host_cpu = i686 ++host_os = linux-gnu ++host_vendor = pc ++htmldir = ${docdir} ++includedir = ${prefix}/include ++infodir = ${datarootdir}/info ++install_sh = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/install-sh ++libdir = ${exec_prefix}/lib ++libexecdir = ${exec_prefix}/libexec ++localedir = ${datarootdir}/locale ++localstatedir = ${prefix}/var ++lt_ECHO = echo ++mandir = ${datarootdir}/man ++mkdir_p = /bin/mkdir -p ++oldincludedir = /usr/include ++pdfdir = ${docdir} ++prefix = /usr/local ++program_transform_name = s,x,x, ++psdir = ${docdir} ++sbindir = ${exec_prefix}/sbin ++sharedstatedir = ${prefix}/com ++srcdir = . ++sysconfdir = ${prefix}/etc ++target_alias = ++top_build_prefix = ../ ++top_builddir = .. ++top_srcdir = .. ++noinst_DATA = $(BASES) $(RAWCOUNTS) $(PAIRCOUNTS) $(MAPS) Letters ++noinst_HEADERS = \ ++ belarussian/belarussian.h \ ++ bulgarian/bulgarian.h \ ++ chinese/chinese.h \ ++ chinese/zh_weight_big5.h \ ++ chinese/zh_weight_gbk.h \ ++ croatian/croatian.h \ ++ czech/czech.h \ ++ estonian/estonian.h \ ++ hungarian/hungarian.h \ ++ latvian/latvian.h \ ++ lithuanian/lithuanian.h \ ++ polish/polish.h \ ++ russian/russian.h \ ++ slovak/slovak.h \ ++ slovene/slovene.h \ ++ ukrainian/ukrainian.h ++ ++basetoc_SOURCES = basetoc.c ++countall_SOURCES = countall.c ++countpair_SOURCES = countpair.c ++findletters_SOURCES = findletters.c ++mystrings_SOURCES = mystrings.c ++pairtoc_SOURCES = pairtoc.c ++xlt_SOURCES = xlt.c ++noinst_SCRPITS = \ ++ clean.sh \ ++ doit.sh \ ++ extreme.pl \ ++ makepaircounts.sh \ ++ map2letters.sh \ ++ normalize.pl \ ++ totals.pl \ ++ belarussian/doit.sh \ ++ bulgarian/doit.sh \ ++ croatian/doit.sh \ ++ czech/doit.sh \ ++ estonian/doit.sh \ ++ hungarian/doit.sh \ ++ latvian/doit.sh \ ++ lithuanian/doit.sh \ ++ polish/doit.sh \ ++ russian/doit.sh \ ++ slovak/doit.sh \ ++ slovene/doit.sh \ ++ ukrainian/doit.sh ++ ++BASES = \ ++ belarussian/cp1251.base \ ++ bulgarian/cp1251.base \ ++ croatian/cp1250.base \ ++ czech/iso88592.base \ ++ estonian/iso88594.base \ ++ hungarian/iso88592.base \ ++ russian/koi8r.base \ ++ latvian/cp1257.base \ ++ lithuanian/cp1257.base \ ++ polish/iso88592.base \ ++ slovak/cp1250.base \ ++ slovene/iso88592.base \ ++ ukrainian/cp1251.base ++ ++RAWCOUNTS = \ ++ belarussian/rawcounts.cp1251 \ ++ bulgarian/rawcounts.cp1251 \ ++ croatian/rawcounts.cp1250 \ ++ czech/rawcounts.iso88592 \ ++ estonian/rawcounts.iso88594 \ ++ hungarian/rawcounts.iso88592 \ ++ latvian/rawcounts.cp1257 \ ++ lithuanian/rawcounts.cp1257 \ ++ polish/rawcounts.iso88592 \ ++ russian/rawcounts.koi8r \ ++ slovak/rawcounts.cp1250 \ ++ slovene/rawcounts.iso88592 \ ++ ukrainian/rawcounts.cp1251 ++ ++PAIRCOUNTS = \ ++ belarussian/paircounts.cp1251 \ ++ belarussian/paircounts.ibm866 \ ++ bulgarian/paircounts.cp1251 \ ++ russian/paircounts.koi8r \ ++ ukrainian/paircounts.cp1251 ++ ++MAPS = \ ++ maps/baltic.map \ ++ maps/cork.map \ ++ maps/cp1125.map \ ++ maps/cp1250.map \ ++ maps/cp1251.map \ ++ maps/cp1257.map \ ++ maps/ecma113.map \ ++ maps/ibm775.map \ ++ maps/ibm852.map \ ++ maps/ibm855.map \ ++ maps/ibm866-bad.map \ ++ maps/ibm866.map \ ++ maps/iso885913.map \ ++ maps/iso885916.map \ ++ maps/iso88592.map \ ++ maps/iso88594.map \ ++ maps/iso88595.map \ ++ maps/keybcs2.map \ ++ maps/koi8cs2.map \ ++ maps/koi8r.map \ ++ maps/koi8u.map \ ++ maps/koi8ub.map \ ++ maps/koi8uni.map \ ++ maps/macce.map \ ++ maps/maccyr.map ++ ++OTHERDATA = \ ++ chinese/zh_weight_big5.txt \ ++ chinese/zh_weight_gb.txt ++ ++EXTRA_DIST = README $(BASES) $(RAWCOUNTS) $(PAIRCOUNTS) $(MAPS) $(OTHERDATA) \ ++ $(noinst_SCRPITS) Letters ++ ++all: all-am ++ ++.SUFFIXES: ++.SUFFIXES: .c .lo .o .obj ++$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits data/Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --gnits data/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: # $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): # $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(am__aclocal_m4_deps): ++ ++clean-noinstPROGRAMS: ++ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ ++ echo " rm -f" $$list; \ ++ rm -f $$list || exit $$?; \ ++ test -n "$(EXEEXT)" || exit 0; \ ++ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ ++ echo " rm -f" $$list; \ ++ rm -f $$list ++basetoc$(EXEEXT): $(basetoc_OBJECTS) $(basetoc_DEPENDENCIES) ++ @rm -f basetoc$(EXEEXT) ++ $(LINK) $(basetoc_OBJECTS) $(basetoc_LDADD) $(LIBS) ++countall$(EXEEXT): $(countall_OBJECTS) $(countall_DEPENDENCIES) ++ @rm -f countall$(EXEEXT) ++ $(LINK) $(countall_OBJECTS) $(countall_LDADD) $(LIBS) ++countpair$(EXEEXT): $(countpair_OBJECTS) $(countpair_DEPENDENCIES) ++ @rm -f countpair$(EXEEXT) ++ $(LINK) $(countpair_OBJECTS) $(countpair_LDADD) $(LIBS) ++findletters$(EXEEXT): $(findletters_OBJECTS) $(findletters_DEPENDENCIES) ++ @rm -f findletters$(EXEEXT) ++ $(LINK) $(findletters_OBJECTS) $(findletters_LDADD) $(LIBS) ++mystrings$(EXEEXT): $(mystrings_OBJECTS) $(mystrings_DEPENDENCIES) ++ @rm -f mystrings$(EXEEXT) ++ $(LINK) $(mystrings_OBJECTS) $(mystrings_LDADD) $(LIBS) ++pairtoc$(EXEEXT): $(pairtoc_OBJECTS) $(pairtoc_DEPENDENCIES) ++ @rm -f pairtoc$(EXEEXT) ++ $(LINK) $(pairtoc_OBJECTS) $(pairtoc_LDADD) $(LIBS) ++xlt$(EXEEXT): $(xlt_OBJECTS) $(xlt_DEPENDENCIES) ++ @rm -f xlt$(EXEEXT) ++ $(LINK) $(xlt_OBJECTS) $(xlt_LDADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++include ./$(DEPDIR)/basetoc.Po ++include ./$(DEPDIR)/countall.Po ++include ./$(DEPDIR)/countpair.Po ++include ./$(DEPDIR)/findletters.Po ++include ./$(DEPDIR)/mystrings.Po ++include ./$(DEPDIR)/pairtoc.Po ++include ./$(DEPDIR)/xlt.Po ++ ++.c.o: ++ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++# source='$<' object='$@' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(COMPILE) -c $< ++ ++.c.obj: ++ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++# source='$<' object='$@' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(COMPILE) -c `$(CYGPATH_W) '$<'` ++ ++.c.lo: ++ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++# source='$<' object='$@' libtool=yes \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(LTCOMPILE) -c -o $@ $< ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ mkid -fID $$unique ++tags: TAGS ++ ++TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ set x; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ ++distdir: $(DISTFILES) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d "$(distdir)/$$file"; then \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ ++ else \ ++ test -f "$(distdir)/$$file" \ ++ || cp -p $$d/$$file "$(distdir)/$$file" \ ++ || exit 1; \ ++ fi; \ ++ done ++check-am: all-am ++check: check-am ++all-am: Makefile $(PROGRAMS) $(DATA) $(HEADERS) ++installdirs: ++install: install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ `test -z '$(STRIP)' || \ ++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++clean: clean-am ++ ++clean-am: clean-generic clean-libtool clean-local clean-noinstPROGRAMS \ ++ mostlyclean-am ++ ++distclean: distclean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-local distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: ++ ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: ++ ++.MAKE: install-am install-strip ++ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++ clean-libtool clean-local clean-noinstPROGRAMS ctags distclean \ ++ distclean-compile distclean-generic distclean-libtool \ ++ distclean-local distclean-tags distdir dvi dvi-am html html-am \ ++ info info-am install install-am install-data install-data-am \ ++ install-dvi install-dvi-am install-exec install-exec-am \ ++ install-html install-html-am install-info install-info-am \ ++ install-man install-pdf install-pdf-am install-ps \ ++ install-ps-am install-strip installcheck installcheck-am \ ++ installdirs maintainer-clean maintainer-clean-generic \ ++ mostlyclean mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-am ++ ++ ++# We don't want to recreate the headers over and over, namely we don't want ++# to recreate them during normal compilation. Run `make headers' to create ++# them. ++headers: $(BASES) xlt letters ++ ./doit.sh ++ ++letters: ++ ./map2letters.sh ++ ++.PHONY: headers letters ++ ++clean-local: ++ -rm -f *~ */*~ core.* ++ ++distclean-local: ++ -./clean.sh ++ -rm -f $(noinst_PROGRAMS) ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff -Naur enca-1.13/devel-docs/Makefile enca-1.13.patch/devel-docs/Makefile +--- enca-1.13/devel-docs/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/devel-docs/Makefile 2010-04-16 18:41:17.533318001 +0200 +@@ -0,0 +1,574 @@ ++# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# devel-docs/Makefile. Generated from Makefile.in by configure. ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, ++# Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++ ++ ++# @(#) $Id: Makefile.am,v 1.8 2004/05/27 17:17:15 yeti Exp $ ++ ++# This is a blank Makefile.am for using gtk-doc. ++# Copy this to your project's API docs directory and modify the variables to ++# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples ++# of using the various options. ++ ++pkgdatadir = $(datadir)/enca ++pkgincludedir = $(includedir)/enca ++pkglibdir = $(libdir)/enca ++pkglibexecdir = $(libexecdir)/enca ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = i686-pc-linux-gnu ++host_triplet = i686-pc-linux-gnu ++subdir = devel-docs ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ ++ $(top_srcdir)/m4/libiconv.m4 $(top_srcdir)/m4/libm.m4 \ ++ $(top_srcdir)/m4/librecode.m4 $(top_srcdir)/m4/libtool.m4 \ ++ $(top_srcdir)/m4/localias.m4 $(top_srcdir)/m4/ltoptions.m4 \ ++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ ++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/tools.m4 \ ++ $(top_srcdir)/m4/typevar.m4 $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++CONFIG_CLEAN_VPATH_FILES = ++SOURCES = ++DIST_SOURCES = ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run aclocal-1.11 -I m4 ++AMTAR = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run tar ++AR = ar ++AUTOCONF = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoconf ++AUTOHEADER = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoheader ++AUTOMAKE = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run automake-1.11 ++AWK = gawk ++CC = gcc ++CCDEPMODE = depmode=gcc3 ++CFLAGS = -Wall -W -pedantic -g -O2 ++CONVERTER_LIBS = ++CPP = gcc -E ++CPPFLAGS = ++CSTOCS_PROG = ++CYGPATH_W = echo ++DEFAULT_CONVERTER_LIST = built-in,iconv ++DEFAULT_EXTERNAL_CONVERTER = piconv ++DEFS = -DHAVE_CONFIG_H ++DEPDIR = .deps ++DSYMUTIL = ++DUMPBIN = ++ECHO_C = ++ECHO_N = -n ++ECHO_T = ++EGREP = /bin/grep -E ++EXEEXT = ++FGREP = /bin/grep -F ++GREP = /bin/grep ++GTKDOC = true ++HTML_DIR = ${datarootdir}/gtk-doc/html ++INSTALL = /usr/bin/install -c ++INSTALL_DATA = ${INSTALL} -m 644 ++INSTALL_PROGRAM = ${INSTALL} ++INSTALL_SCRIPT = ${INSTALL} ++INSTALL_STRIP_PROGRAM = $(install_sh) -c -s ++LD = /usr/bin/ld ++LDFLAGS = ++LIBICONV = ++LIBM = -lm ++LIBOBJS = ++LIBS = -lm ++LIBTOOL = $(SHELL) $(top_builddir)/libtool ++LIPO = ++LN_S = ln -s ++LTLIBICONV = ++LTLIBOBJS = ++MAINT = # ++MAKEINFO = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run makeinfo ++MAP_PROG = ++MKDIR_P = /bin/mkdir -p ++MKTEMP_PROG = /bin/mktemp ++NM = /usr/bin/nm -B ++NMEDIT = ++OBJDUMP = objdump ++OBJEXT = o ++OTOOL = ++OTOOL64 = ++PACKAGE = enca ++PACKAGE_BUGREPORT = https://bugs.cihar.com/ ++PACKAGE_NAME = Enca ++PACKAGE_STRING = Enca 1.13 ++PACKAGE_TARNAME = enca ++PACKAGE_URL = ++PACKAGE_VERSION = 1.13 ++PATH_SEPARATOR = : ++PICONV_PROG = /usr/bin/piconv ++RANLIB = ranlib ++RECODE_PROG = ++RELEASE = 1 ++SED = /bin/sed ++SET_MAKE = ++SHELL = /bin/sh ++SHELL_RANDOM_FILENAME = `/bin/mktemp /tmp/enca-$$-XXXXXXXX` ++STRIP = strip ++UMAP_PROG = ++VERSION = 1.13 ++abs_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/devel-docs ++abs_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/devel-docs ++abs_top_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++abs_top_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++ac_ct_CC = gcc ++ac_ct_DUMPBIN = ++am__include = include ++am__leading_dot = . ++am__quote = ++am__tar = ${AMTAR} chof - "$$tardir" ++am__untar = ${AMTAR} xf - ++bindir = ${exec_prefix}/bin ++build = i686-pc-linux-gnu ++build_alias = ++build_cpu = i686 ++build_os = linux-gnu ++build_vendor = pc ++builddir = . ++datadir = ${datarootdir} ++datarootdir = ${prefix}/share ++docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} ++dvidir = ${docdir} ++exec_prefix = ${prefix} ++host = i686-pc-linux-gnu ++host_alias = ++host_cpu = i686 ++host_os = linux-gnu ++host_vendor = pc ++htmldir = ${docdir} ++includedir = ${prefix}/include ++infodir = ${datarootdir}/info ++install_sh = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/install-sh ++libdir = ${exec_prefix}/lib ++libexecdir = ${exec_prefix}/libexec ++localedir = ${datarootdir}/locale ++localstatedir = ${prefix}/var ++lt_ECHO = echo ++mandir = ${datarootdir}/man ++mkdir_p = /bin/mkdir -p ++oldincludedir = /usr/include ++pdfdir = ${docdir} ++prefix = /usr/local ++program_transform_name = s,x,x, ++psdir = ${docdir} ++sbindir = ${exec_prefix}/sbin ++sharedstatedir = ${prefix}/com ++srcdir = . ++sysconfdir = ${prefix}/etc ++target_alias = ++top_build_prefix = ../ ++top_builddir = .. ++top_srcdir = .. ++ ++# The name of the module, e.g. 'glib'. ++DOC_MODULE = libenca ++ ++# The top-level SGML file. Change it if you want. ++DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml ++ ++# The directory containing the source code. Relative to $(srcdir). ++# gtk-doc will search all .c & .h files beneath here for inline comments ++# documenting functions and macros. ++DOC_SOURCE_DIR = ${top_srcdir}/lib ++ ++# Extra options to pass to gtkdoc-scanobj or gtkdoc-scangobj. ++SCANOBJ_OPTIONS = ++ ++# Extra options to supply to gtkdoc-scan. ++SCAN_OPTIONS = ++ ++# Extra options to supply to gtkdoc-mkdb. ++MKDB_OPTIONS = ++ ++# Extra options to supply to gtkdoc-fixref. ++FIXXREF_OPTIONS = ++ ++# Used for dependencies. ++HFILE_GLOB = $(DOC_SOURCE_DIR)/*.h ++CFILE_GLOB = $(DOC_SOURCE_DIR)/*.c ++ ++# Header files to ignore when scanning. ++IGNORE_HFILES = ++ ++# Images to copy into HTML directory. ++HTML_IMAGES = ++ ++# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). ++content_files = ++ ++# Other files to distribute. ++extra_files = ++ ++# CFLAGS and LDFLAGS for compiling scan program. Only needed if your app/lib ++# contains GtkObjects/GObjects and you want to document signals and properties. ++GTKDOC_CFLAGS = ++GTKDOC_LIBS = ++GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) ++GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) ++ ++# If you need to override some of the declarations, place them in the ++# $(DOC_MODULE)-overrides.txt file and uncomment the second line here. ++DOC_OVERRIDES = ++#DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt ++ ++########################################################################### ++# Everything below here is generic and you shouldn't need to change it. ++########################################################################### ++TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE) ++EXTRA_DIST = \ ++ $(content_files) \ ++ $(extra_files) \ ++ $(HTML_IMAGES) \ ++ $(DOC_MAIN_SGML_FILE) \ ++ $(DOC_MODULE)-sections.txt \ ++ $(DOC_OVERRIDES) ++ ++DOC_STAMPS = scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \ ++ $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp ++ ++SCANOBJ_FILES = \ ++ $(DOC_MODULE).args \ ++ $(DOC_MODULE).hierarchy \ ++ $(DOC_MODULE).signals \ ++ $(DOC_MODULE).prerequisites \ ++ $(DOC_MODULE).intefraces ++ ++all: all-am ++ ++.SUFFIXES: ++$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits devel-docs/Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --gnits devel-docs/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: # $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): # $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(am__aclocal_m4_deps): ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++tags: TAGS ++TAGS: ++ ++ctags: CTAGS ++CTAGS: ++ ++ ++distdir: $(DISTFILES) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d "$(distdir)/$$file"; then \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ ++ else \ ++ test -f "$(distdir)/$$file" \ ++ || cp -p $$d/$$file "$(distdir)/$$file" \ ++ || exit 1; \ ++ fi; \ ++ done ++ $(MAKE) $(AM_MAKEFLAGS) \ ++ top_distdir="$(top_distdir)" distdir="$(distdir)" \ ++ dist-hook ++check-am: all-am ++check: check-am ++all-am: Makefile ++installdirs: ++install: install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ `test -z '$(STRIP)' || \ ++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++clean: clean-am ++ ++clean-am: clean-generic clean-libtool clean-local mostlyclean-am ++ ++distclean: distclean-am ++ -rm -f Makefile ++distclean-am: clean-am distclean-generic ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: install-data-local ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: ++ ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic \ ++ maintainer-clean-local ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-generic mostlyclean-libtool ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-local ++ ++.MAKE: install-am install-strip ++ ++.PHONY: all all-am check check-am clean clean-generic clean-libtool \ ++ clean-local dist-hook distclean distclean-generic \ ++ distclean-libtool distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am \ ++ install-data-local install-dvi install-dvi-am install-exec \ ++ install-exec-am install-html install-html-am install-info \ ++ install-info-am install-man install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ ++ installcheck-am installdirs maintainer-clean \ ++ maintainer-clean-generic maintainer-clean-local mostlyclean \ ++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ++ uninstall uninstall-am uninstall-local ++ ++ ++docs: html-build.stamp ++ ++#### scan #### ++ ++scan-build.stamp: $(HFILE_GLOB) ++ @echo '*** Scanning header files ***' ++ if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null ; then \ ++ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scanobj $(SCANOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \ ++ else \ ++ cd $(srcdir) ; \ ++ for i in $(SCANOBJ_FILES) ; do \ ++ test -f $$i || touch $$i ; \ ++ done \ ++ fi ++ cd $(srcdir) && \ ++ gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES) ++ touch scan-build.stamp ++ ++$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES): scan-build.stamp ++ @true ++ ++#### templates #### ++ ++tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_OVERRIDES) ++ @echo '*** Rebuilding template files ***' ++ cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) ++ touch tmpl-build.stamp ++ ++tmpl.stamp: tmpl-build.stamp ++ @true ++ ++#### sgml #### ++ ++sgml-build.stamp: tmpl.stamp $(CFILE_GLOB) $(srcdir)/tmpl/*.sgml ++ @echo '*** Building XML ***' ++ cd $(srcdir) && \ ++ gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml $(MKDB_OPTIONS) ++ touch sgml-build.stamp ++ ++sgml.stamp: sgml-build.stamp ++ @true ++ ++#### html #### ++ ++html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) ++ @echo '*** Building HTML ***' ++ test -d $(srcdir)/html || mkdir $(srcdir)/html ++ cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) ++ test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html ) ++ @echo '-- Fixing Crossreferences' ++ cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) ++ touch html-build.stamp ++ ++############## ++ ++clean-local: ++ rm -f *~ *.bak $(SCANOBJ_FILES) *-unused.txt $(DOC_STAMPS) ++ ++maintainer-clean-local: clean ++ cd $(srcdir) && rm -rf xml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt ++ ++install-data-local: ++ $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR) ++ (installfiles=`echo $(srcdir)/html/*.html`; \ ++ if test "$$installfiles" = '$(srcdir)/html/*.html'; \ ++ then echo '-- Nothing to install' ; \ ++ else \ ++ for i in $$installfiles; do \ ++ echo '-- Installing '$$i ; \ ++ $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \ ++ done; \ ++ echo '-- Installing $(srcdir)/html/index.sgml' ; \ ++ $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR); \ ++ echo '-- Installing $(srcdir)/html/$(DOC_MODULE).devhelp' ; \ ++ $(INSTALL_DATA) $(srcdir)/html/$(DOC_MODULE).devhelp $(DESTDIR)$(TARGET_DIR); \ ++ fi) ++ ++uninstall-local: ++ (installfiles=`cd $(srcdir)/html >/dev/null && echo *.html`; \ ++ if test "$$installfiles" = '*.html'; \ ++ then echo '-- Nothing to uninstall' ; \ ++ else \ ++ for i in $$installfiles; do \ ++ echo '-- Removing '$$i ; \ ++ rm -f $(DESTDIR)$(TARGET_DIR)/$$i; \ ++ done; \ ++ echo '-- Removing index.sgml' ; \ ++ rm -f $(DESTDIR)$(TARGET_DIR)/index.sgml; \ ++ echo '-- Removing $(DOC_MODULE).devhelp' ; \ ++ rm -f $(DESTDIR)$(TARGET_DIR)/$(DOC_MODULE).devhelp; \ ++ fi) ++ ++# ++# Require gtk-doc when making dist ++# ++dist-check-gtkdoc: ++#dist-check-gtkdoc: ++# @echo "*** gtk-doc must be installed and enabled in order to make dist" ++# @false ++ ++dist-hook: dist-check-gtkdoc dist-hook-local ++ mkdir $(distdir)/tmpl ++ mkdir $(distdir)/xml ++ mkdir $(distdir)/html ++ cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl ++ cp $(srcdir)/xml/*.xml $(distdir)/xml ++ cp $(srcdir)/html/index.sgml $(distdir)/html ++ -cp $(srcdir)/html/$(DOC_MODULE).devhelp $(distdir)/html ++ -cp $(srcdir)/html/*.html $(srcdir)/html/*.css $(distdir)/html ++ ++ images=$(HTML_IMAGES) ; \ ++ for i in $$images ; do \ ++ cp $(srcdir)/$$i $(distdir)/html ; \ ++ done ++ ++.PHONY : dist-hook-local ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff -Naur enca-1.13/enca.pc enca-1.13.patch/enca.pc +--- enca-1.13/enca.pc 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/enca.pc 2010-04-16 18:41:17.508317732 +0200 +@@ -0,0 +1,13 @@ ++prefix=/usr/local ++exec_prefix=${prefix} ++libdir=${exec_prefix}/lib ++includedir=${prefix}/include ++libexecdir=${exec_prefix}/libexec ++ ++encaextconvdir=${libexecdir}/enca/extconv ++ ++Name: Enca ++Description: Extermely Naive Charset Analyser library ++Version: 1.13 ++Libs: -L${libdir} -lenca -lm ++Cflags: -I${includedir} +diff -Naur enca-1.13/enca.spec enca-1.13.patch/enca.spec +--- enca-1.13/enca.spec 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/enca.spec 2010-04-16 18:41:17.488318200 +0200 +@@ -0,0 +1,163 @@ ++# @(#) $Id: enca.spec.in,v 1.28 2005/12/18 12:05:30 yeti Exp $ ++Summary: A program detecting encoding of text files. ++Name: enca ++Version: 1.13 ++Release: 1 ++License: GNU GPL v2 ++Group: Applications/Text ++Requires: sed ++Source: http://trific.ath.cx/Ftp/enca/enca-1.13.tar.bz2 ++URL: http://trific.ath.cx/software/enca/ ++Packager: https://bugs.cihar.com/ ++Vendor: Trific soft. ++Prefix: %{_prefix} ++BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot ++ ++%description ++Enca is an Extremely Naive Charset Analyser. It detects character set and ++encoding of text files and can also convert them to other encodings using ++either a built-in converter or external libraries and tools like libiconv, ++librecode, or cstocs. ++ ++Currently, it has support for Belarussian, Bulgarian, Croatian, Czech, ++Estonian, Latvian, Lithuanian, Polish, Russian, Slovak, Slovene, Ukrainian, ++Chinese, and some multibyte encodings (mostly variants of Unicode) ++independent on the language. ++ ++This package also contains shared Enca library other programs can make use of. ++ ++Install Enca if you need to cope with text files of dubious origin ++and unknown encoding and convert them to some reasonable encoding. ++ ++%package devel ++Summary: Header files and libraries for Enca development. ++Group: Development/Libraries ++Requires: %{name} = %{version} ++%description devel ++The enca-devel package contains the static libraries and header files ++for writing programs using the Extremely Naive Charset Analyser library, ++and its API documentation. ++ ++Install enca-devel if you are going to create applications using the Enca ++library. ++ ++%prep ++%setup ++ ++%build ++%configure ++%__make ++ ++%install ++[ "$RPM_BUILD_ROOT" != "/" ] && %__rm -rf $RPM_BUILD_ROOT ++%makeinstall HTML_DIR=$RPM_BUILD_ROOT/%{_datadir}/gtk-doc/html ++ ++%clean ++[ "$RPM_BUILD_ROOT" != "/" ] && %__rm -rf $RPM_BUILD_ROOT ++ ++%files ++%defattr(755,root,root) ++%{_bindir}/enca ++%{_bindir}/enconv ++%{_libexecdir}/%{name}/extconv/* ++%dir %{_libexecdir}/%{name}/extconv ++%dir %{_libexecdir}/%{name} ++%{_libdir}/libenca.so.* ++%defattr(644,root,root) ++%doc %{_mandir}/man1/enca.1* ++%doc %{_mandir}/man1/enconv.1* ++%defattr(-,root,root) ++%doc AUTHORS COPYING ChangeLog ChangeLog.prelib FAQ INSTALL ChangeLog.old README README.devel THANKS TODO ++ ++%files devel ++%defattr(-,root,root) ++%{_includedir}/enca.h ++%{_libdir}/pkgconfig/enca.pc ++%{_libdir}/libenca.a ++%{_libdir}/libenca.la ++%{_libdir}/libenca.so ++%doc %{_datadir}/gtk-doc/html/libenca/* ++%doc %dir %{_datadir}/gtk-doc/html/libenca ++%doc %dir %{_datadir}/gtk-doc/html ++%doc %dir %{_datadir}/gtk-doc ++ ++%post -p /sbin/ldconfig ++ ++%postun -p /sbin/ldconfig ++ ++%changelog ++* Sun Dec 18 2005 David Necas (Yeti) ++- fixed 0644 permissions on doc directory ++* Mon May 17 2004 David Necas (Yeti) ++- doubled percents in changelog ++* Mon Dec 22 2003 David Necas (Yeti) ++- moved wrappers to libexec ++* Thu Nov 6 2003 David Necas (Yeti) ++- added b-piconv ++- fixed HTML doc install paths ++* Tue Oct 14 2003 David Necas (Yeti) ++- testing whether $RPM_BUILD_ROOT is not / ++- updated for new HTML doc location ++- changed make -> %%__make, rm -> %%__rm ++* Sat Aug 2 2003 David Necas (Yeti) ++- cleaning $RPM_BUILD_ROOT in %%install ++* Sat Jun 28 2003 David Necas (Yeti) ++- removed --disable-gtk-doc, no longer needed ++* Fri Jun 20 2003 David Necas (Yeti) ++- added enca.pc to devel package ++* Sat Jun 14 2003 David Necas (Yeti) ++- updated description ++- added --disable-gtk-doc ++* Mon Dec 23 2002 David Necas (Yeti) ++- added libenca.so ++* Fri Dec 20 2002 David Necas (Yeti) ++- fixed URL and Source to trific.ath.cx ++* Mon Oct 21 2002 David Necas (Yeti) ++- added FAQ to docs ++* Thu Oct 10 2002 David Necas (Yeti) ++- removed twice-listed %%{docdir}/html ++* Sat Sep 21 2002 David Necas (Yeti) ++- added b-umap ++* Sun Sep 15 2002 David Necas (Yeti) ++- added enconv ++* Thu Aug 29 2002 David Necas (Yeti) ++- removed bzip2-devel buildprereq ++* Sat Aug 24 2002 David Necas (Yeti) ++- added postinstall and postuninstall scriptlets ++* Wed Aug 21 2002 David Necas (Yeti) ++- updated to enca-0.10.0-pre2 ++- added libenca ++- split into enca and enca-devel ++- removed cache ++- fixed HTML_DIR ++* Tue Jul 10 2001 David Necas (Yeti) ++- changed rpm macros in Source and URL to autoconf macros to ease debian/ ++ stuff generation ++* Sun May 20 2001 David Necas (Yeti) ++- added BuildPrereq: bzip2-devel ++* Wed May 2 2001 David Necas (Yeti) ++- changed group to standard (but much less appropriate) Applications/Text ++- rpm macros are used instead of autoconf macros (after the first definition) ++* Sun Mar 11 2001 David Necas (Yeti) ++- added defattr, doc attributes ++- uses global configure cache ++- heavy use of predefined directories ++- configure moved to build section as is usual ++* Sun Feb 25 2001 David Necas (Yeti) ++- updated to enca-0.9.0pre4 (including files and descriptions) ++- added sed dependency ++* Sun Oct 25 2000 David Necas (Yeti) ++- updated to enca-0.7.5 ++* Sun Oct 11 2000 David Necas (Yeti) ++- removed redundant Provides: enca ++* Sun Oct 1 2000 David Necas (Yeti) ++- updated to enca-0.7.1 ++- man page forced to be intstalled to ${prefix}/share/man ++* Tue Sep 26 2000 David Necas (Yeti) ++- updated to enca-0.7.0 ++- spec autogenerated by configure ++* Tue Sep 19 2000 David Necas (Yeti) ++- fixed not installing bcstocs ++* Wed Sep 13 2000 David Necas (Yeti) ++- first packaged (0.6.2) ++ +diff -Naur enca-1.13/iconvcap enca-1.13.patch/iconvcap +--- enca-1.13/iconvcap 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/iconvcap 2010-04-16 18:41:16.654442759 +0200 +@@ -0,0 +1,53 @@ ++ELFð…4I4 ((%44€4€444€€˜#˜#˜#˜³˜³@T¬#¬³¬³ÐÐHHHDDPåtd#££Qåtd/lib/ld-linux.so.2GNUGNUg×sƒ±«õÞM;*‚H¬ "¬KãÀ9ò‹  ŸZbªR¼hL˜}—o„G8švغlibm.so.6__gmon_start___Jv_RegisterClasseslibc.so.6_IO_stdin_usedexitfopenstrrchrstrncpyfgetsfclosemallocstderrfwriteiconv_closestrchrfprintficonv_open__libc_start_mainfreeGLIBC_2.0GLIBC_2.1.ii Áii Ë|´غŒ´´”´˜´œ´ ´¤´¨´ ¬´ ++°´ ´´ ¸´ ¼´À´Ä´È´U‰åSƒìè[ÃÄ/‹“üÿÿÿ…Òtèè©èôX[ÉÃÿ5„´ÿ%ˆ´ÿ%Œ´héàÿÿÿÿ%´héÐÿÿÿÿ%”´héÀÿÿÿÿ%˜´hé°ÿÿÿÿ%œ´h é ÿÿÿÿ% ´h(éÿÿÿÿ%¤´h0é€ÿÿÿÿ%¨´h8épÿÿÿÿ%¬´h@é`ÿÿÿÿ%°´hHéPÿÿÿÿ%´´hPé@ÿÿÿÿ%¸´hXé0ÿÿÿÿ%¼´h`é ÿÿÿÿ%À´hhéÿÿÿÿ%Ä´hpéÿÿÿÿ%È´hxéðþÿÿ1í^‰áƒäðPTRh`™hp™QVh ‡è/ÿÿÿôU‰åSd$ü€=ܺu>»¤³¡àºë ³Áûƒë9Øst&ƒÀ£àºÿ… ³¡àº9ØrèÆܺd$[]Ãv¼'U‰åd$表³…Àt¸…Àt Ç$¨³ÿÐÉÃU‰åƒì‰T$‰$è>þÿÿ‰Â¸ƒúÿt ++‰$èúþÿÿ1ÀÉöU‰åW‰×V‰ÆSƒì‹…Òtf‹‰û…ÒuëSvƒÃ‹…ÒtG‹è ÿÿÿ…Àu싉D$ ‹ÇD$$š‰D$¡Øº‰$è{þÿÿ‹£èº‹£äº1ÀƒÄ[^_]ÃvƒÆ‹…Àuš¡ØºÇD$ÇD$Ç$4š‰D$ è"þÿÿ¸ÇèºÇäº무&U‰åƒäðWVSƒì4ƒ}ÇD$(ÇD$,ŽÊ‹E ‹pÇ$èèýÿÿÇD$=š‰4$‰Ãè–ýÿÿ…À‰D$„ÎÇD$f‹T$ÇD$‰$‰T$èýÿÿ…À„Ç$‰Þ¿Yšèýÿÿ¹‰D$ó¦… ÇD$"‰$è¼üÿÿ…À‰Æt¦ÇD$"‰$èæüÿÿ9Æ„‰Ç)÷ƒÆ‰<$è?ýÿÿWÿ‰T$‰t$‰$èŒüÿÿ‹T$‰ÆD8ÿ‹D$‰T$‰BéQÿÿÿ‹D$‰$è´üÿÿ‹L$…É„'‰ß‹\$‹s…öu'é™ ¶‹‹èÇýÿÿ…À…O ‹v…ö„l ‹‹è«ýÿÿ…Àt׋‰\$‹T$‰û‰D$ ‹ÇD$¢‰D$¡Øº‰$è|üÿÿ‰$è$üÿÿƒÄ4¸[^_‰ì]Ãt&¡Øº‰\$ÇD$ô¡‰$èGüÿÿ‹D$‰$èûûÿÿ‰$èãûÿÿ¸ƒÄ4[^_‰ì]Ãt&¡ØºÇD$/ÇD$Ç$d¢‰D$ èëûÿÿºµ¸ µèýÿÿ…À‰Ã…X¡äºt$(Ç$”¢‰D$(‰D$è¥ûÿÿ¡ØºÇD$7œÇD$¸¢‰$è¨ûÿÿ‰ò¸`µèÌüÿÿ…À„ü ÇD$7œÇ$¬šè`ûÿÿ¡ØºÇD$ÙÇD$¸¢‰$ècûÿÿ‰ò¸è¶è‡üÿÿ…À…¡èºƒÃÇD$ÙÇ$š‰D$èûÿÿ¡ØºÇD$ÈšÇD$¸¢‰$èûÿÿ‰ò¸¸è6üÿÿ…À…– ¡èºƒÃÇD$ÈšÇ$š‰D$è¾úÿÿ¡ØºÇD$ÏšÇD$¸¢‰$èÁúÿÿ‰ò¸ ¸èåûÿÿ…À…% ¡èºƒÃÇD$ÏšÇ$š‰D$èmúÿÿ¡ØºÇD$ÖšÇD$¸¢‰$èpúÿÿ‰ò¸`¸è”ûÿÿ…À…´ ¡èºƒÃÇD$ÖšÇ$š‰D$èúÿÿ¡ØºÇD$ÝšÇD$¸¢‰$èúÿÿ‰ò¸ ¸èCûÿÿ…À…C ¡èºƒÃÇD$ÝšÇ$š‰D$èËùÿÿ¡ØºÇD$äšÇD$¸¢‰$èÎùÿÿ‰ò¸À¹èòúÿÿ…À…Ò ¡èºƒÃÇD$äšÇ$š‰D$èzùÿÿ¡ØºÇD$ìšÇD$¸¢‰$è}ùÿÿ‰ò¸·è¡úÿÿ…À…a ¡èºƒÃÇD$ìšÇ$š‰D$è)ùÿÿ¡ØºÇD$óšÇD$¸¢‰$è,ùÿÿ‰ò¸@·èPúÿÿ…À…ð ++¡èºƒÃÇD$óšÇ$š‰D$èØøÿÿ¡ØºÇD$úšÇD$¸¢‰$èÛøÿÿ‰ò¸€·èÿùÿÿ…À… ++¡èºƒÃÇD$úšÇ$š‰D$è‡øÿÿ¡ØºÇD$›ÇD$¸¢‰$èŠøÿÿ‰ò¸À·è®ùÿÿ…À… ++¡èºƒÃÇD$›Ç$š‰D$è6øÿÿ¡ØºÇD$›ÇD$¸¢‰$è9øÿÿ‰ò¸àµè]ùÿÿ…À… ¡èºƒÃÇD$›Ç$š‰D$èå÷ÿÿ¡ØºÇD$›ÇD$¸¢‰$èè÷ÿÿ‰ò¸ ¶è ùÿÿ…À…, ¡èºƒÃÇD$›Ç$š‰D$è”÷ÿÿ¡ØºÇD$›ÇD$¸¢‰$è—÷ÿÿ‰ò¸`¶è»øÿÿ…À…»¡èºƒÃÇD$›Ç$š‰D$èC÷ÿÿ¡ØºÇD$#›ÇD$¸¢‰$èF÷ÿÿ‰ò¸€¶èjøÿÿ…À…J¡èºƒÃÇD$#›Ç$š‰D$èòöÿÿ¡ØºÇD$-›ÇD$¸¢‰$èõöÿÿ‰ò¸À¶èøÿÿ…À…١躃ÃÇD$-›Ç$š‰D$è¡öÿÿ¡ØºÇD$7›ÇD$¸¢‰$è¤öÿÿ‰ò¸à¹èÈ÷ÿÿ…À…h¡èºƒÃÇD$7›Ç$š‰D$èPöÿÿ¡ØºÇD$› ÇD$¸¢‰$èSöÿÿ‰ò¸@¹èw÷ÿÿ…À…÷¡èºƒÃÇD$› Ç$š‰D$èÿõÿÿ¡ØºÇD$» ÇD$¸¢‰$èöÿÿ‰ò¸l¹è&÷ÿÿ…À…†¡èºƒÃÇD$» Ç$š‰D$è®õÿÿ¡ØºÇD$Ù ÇD$¸¢‰$è±õÿÿ‰ò¸ˆ¹èÕöÿÿ…À…¡èºƒÃÇD$Ù Ç$š‰D$è]õÿÿ¡ØºÇD$ý ÇD$¸¢‰$è`õÿÿ‰ò¸¤¹è„öÿÿ…À…¤¡èºƒÃÇD$ý Ç$š‰D$è õÿÿ¡ØºÇD$?›ÇD$¸¢‰$èõÿÿ‰ò¸à¸è3öÿÿ…À…3¡èºƒÃÇD$?›Ç$š‰D$è»ôÿÿ¡ØºÇD$E›ÇD$¸¢‰$è¾ôÿÿ‰ò¸ ¹èâõÿÿ…À…¡躃ÃÇD$E›Ç$š‰D$èjôÿÿ¡ØºÇD$L›ÇD$¸¢‰$èmôÿÿ‰ò¸ºè‘õÿÿ…À…Q¡èºƒÃÇD$L›Ç$š‰D$èôÿÿ¡ØºÇD$›ÇD$¸¢‰$èôÿÿ‰ò¸ ºè@õÿÿ…À…à¡èºƒÃÇD$›Ç$š‰D$èÈóÿÿ¡ØºÇD$Ø›ÇD$¸¢‰$èËóÿÿ‰ò¸@ºèïôÿÿ…À…o¡èºƒÃÇD$Ø›Ç$š‰D$èwóÿÿ¡ØºÇD$¡ÇD$¸¢‰$èzóÿÿ‰ò¸`ºèžôÿÿ…À…þ¡èºƒÃÇD$¡Ç$š‰D$è&óÿÿ¡ØºÇD$ ++œÇD$¸¢‰$è)óÿÿ‰ò¸€ºèMôÿÿ…À…¡èºƒÃÇD$ ++œÇ$š‰D$èÕòÿÿ¡ØºÇD$R›ÇD$¸¢‰$èØòÿÿ‰ò¸ ºèüóÿÿ…À…¡èºƒÃÇD$R›Ç$š‰D$è„òÿÿ¡ØºÇD$W›ÇD$¸¢‰$è‡òÿÿ‰ò¸¬ºè«óÿÿ…À…«¡èºƒÃÇD$W›Ç$š‰D$è3òÿÿ¡ØºÇD$[›ÇD$¸¢‰$è6òÿÿ‰ò¸¼ºèZóÿÿ…À…:¡èºƒÃÇD$[›Ç$š‰D$èâñÿÿ¡ØºÇD$`›ÇD$¸¢‰$èåñÿÿ‰ò¸Èºè óÿÿ…À…ɡ躃ÃÇD$`›Ç$š‰D$è‘ñÿÿƒûŽyÇ$èÌñÿÿt&¡èº»ÇD$7œÇ$š‰D$èVñÿÿéñõÿÿ‰\$‹T$‰û‹‰D$ ‹ÇD$<¢‰D$éÄôÿÿt&‹[…Û…[ôÿÿ¡ØºÇD$ÇD$Ç$uš‰D$ èñÿÿ‰<$èÀðÿÿ1ÀéÛôÿÿÇD$`›Ç$¬šèÔðÿÿé>ÿÿÿ´&ÇD$[›Ç$¬šè´ðÿÿéÍþÿÿ´&ÇD$W›Ç$¬šè”ðÿÿé\þÿÿ´&ÇD$R›Ç$¬šètðÿÿéëýÿÿ´&ÇD$ ++œÇ$¬šèTðÿÿézýÿÿ´&ÇD$¡Ç$¬šè4ðÿÿé ýÿÿ´&ÇD$Ø›Ç$¬šèðÿÿé˜üÿÿ´&ÇD$›Ç$¬šèôïÿÿé'üÿÿ´&ÇD$L›Ç$¬šèÔïÿÿé¶ûÿÿ´&ÇD$E›Ç$¬šè´ïÿÿéEûÿÿ´&ÇD$?›Ç$¬šè”ïÿÿéÔúÿÿ´&ÇD$ý Ç$¬šètïÿÿécúÿÿ´&ÇD$Ù Ç$¬šèTïÿÿéòùÿÿ´&ÇD$» Ç$¬šè4ïÿÿéùÿÿ´&ÇD$› Ç$¬šèïÿÿéùÿÿ´&ÇD$7›Ç$¬šèôîÿÿéŸøÿÿ´&ÇD$-›Ç$¬šèÔîÿÿé.øÿÿ´&ÇD$#›Ç$¬šè´îÿÿé½÷ÿÿ´&ÇD$›Ç$¬šè”îÿÿéL÷ÿÿ´&ÇD$›Ç$¬šètîÿÿéÛöÿÿ´&ÇD$›Ç$¬šèTîÿÿéjöÿÿ´&ÇD$›Ç$¬šè4îÿÿéùõÿÿ´&ÇD$úšÇ$¬šèîÿÿéˆõÿÿ´&ÇD$óšÇ$¬šèôíÿÿéõÿÿ´&ÇD$ìšÇ$¬šèÔíÿÿé¦ôÿÿ´&ÇD$äšÇ$¬šè´íÿÿé5ôÿÿ´&ÇD$ÝšÇ$¬šè”íÿÿéÄóÿÿ´&ÇD$ÖšÇ$¬šètíÿÿéSóÿÿ´&ÇD$ÏšÇ$¬šèTíÿÿéâòÿÿ´&ÇD$ÈšÇ$¬šè4íÿÿéqòÿÿ´&ÇD$ÙÇ$¬šèíÿÿéòÿÿÇ$èSíÿÿ¡Øº‰\$ÇD$ô¡‰$è ++íÿÿ‹T$‰$è¾ìÿÿ‰$è¦ìÿÿ¸é¾ðÿÿ¡Øº‰t$ÇD$?š‰$èÓìÿÿ‰$è{ìÿÿ¸é“ðÿÿ¡ØºÇD$ÇD$Ç$aš‰D$ èŒìÿÿ‰$èDìÿÿ¸é\ðÿÿ¡ØºÇD$.ÇD$Ç$䢉D$ èUìÿÿÇ$è‰ìÿÿU‰å]Ãt&¼'U‰åWVSèOÃìè'ëÿÿ»ÿÿÿƒÿÿÿ)ÇÁÿ…ÿt$1ö‹E‰D$‹E ‰D$‹E‰$ÿ”³ÿÿÿƒÆ9þrÞƒÄ[^_]Ë$ÃU‰åSd$ü¡˜³ƒøÿt»˜³[üÿЋƒøÿuôd$[]ÃU‰åSƒìè[Ãxè ìÿÿY[ÉÃfound %s -> %s ++failed. ++riconvcap: cannot open %s ++#defineno valid encodings ++iconvcap: transitivity OK ++#define ICONV_NAME_%s "%s" ++#define ICONV_NAME_%s NULL ++CP1125CP1250CP1251CP1257ECMA113IBM852IBM855IBM775IBM866ISO88592ISO88594ISO88595ISO885913ISO885916KEYBCS2MACCEMACCYRLATEXCORKGBKBIG5HZUCS-2ISO10646/UCS2ISO-10646/UCS2ISO_10646/UCS2UNICODEISO-10646ISO_10646ISO10646UCS-4ISO10646/UCS4ISO-10646/UCS4ISO_10646/UCS4UTF-8ISO10646/UTF8ISO-10646/UTF8ISO_10646/UTF8CSUCS2CSUCS4CSASCIIUS-ASCIIISO646-USISO_646.IRV:1991CP367IBM367CSPC367ISO-8859-1ISO8859-18859_1ISO_8859-1CSLATIN1CSISOLATIN1ISO-8859-2ISO8859-28859_2ISO_8859-2CSLATIN2CSISOLATIN2ISO-IR-101ISO-8859-4ISO8859-48859_4ISO_8859-4CSLATIN4CSISOLATIN4ISO-IR-110ISO-8859-5ISO8859-58859_5ISO_8859-5CSISOCYRILLICISO-IR-144ISO-8859-13ISO8859-138859_13ISO_8859-13CSLATIN7CSISOLATIN7ISO-IR-179ACSISOBALTICCSISOLATINBALTICISO-8859-16ISO8859-168859_16ISO_8859-16ISO-IR-226CSLATIN10CSISOLATIN10CSBALTICISO-IR-179CP-852CP_852IBM-852IBM_852CSPC852CSPCP852CP-855CP_855IBM-855IBM_855CSPC855CSPCP855CP-775CP_775IBM-775IBM_775CSPC775CSPCP775CP-866CP_866IBM-866IBM_866CSPC866CSPCP866CP-1125CP_1125MS1125MS-1125WINDOWS-1125CP-1250CP_1250MS-EEMS1250MS-1250WINDOWS-1250CP-1251CP_1251MS-CYRLMS1251MS-1251WINDOWS-1251CP-1257CP_1257MS-BALTMS1257MS-1257WINDOWS-1257WinBaltRimMAC-CEMAC_CEMACINTOSH-CEMACEEMAC-EEMAC_EEMACINTOSH-EEMAC-CYRMAC_CYRMACINTOSH-CYRMACCYRILLICMAC-CYRILLICMACINTOSH-CYRILLICKOI8-CS2KOI8_CS2KOI-8_CS2KOI8CSKOI8_CSKOI8-CSKOI-8-CSKOI_8-CSCSKOI8CS2KOI8-RKOI8_RKOI-8_RCSKOI8RKOI8-UKOI8_UKOI-8_UCSKOI8UKOI8-UNIKOI8_UNIKOI-8_UNICSKOI8UNIECMA-113ECMA-cyrillicECMA-113:1986ISO-IR-111KEYBCS-2KAMKAMENICKYCP895csPC895LTEXUCS-2BEUCS-4BEUTF-7ISO10646/UTF7ISO-10646/UTF7ISO_10646/UTF7UNICODE/UTF7CSUTF7UNICODE/UTF8CSUTF8T1GB2312CP936CP950HZ-GB-2312iconvcapiconvcap: malformed input line: %siconvap: iconv_open(%s, %s) failed ++iconvcap: iconv_open(%s, %s) failed ++iconvcap: checking for ISO8859-1 -> Unicode... #define ICONV_NAME_UNICODE "%s" ++iconvcap: checking for %s -> Unicode... iconvcap: iconv seems to be broken. aborting. ++;Löÿÿ4\öÿÿTzR| ˆöÿÿAB… AÅ (<öÿÿZAB… Nƒ†‡EÃAÆAÇAÅ ÿÿÿÿÿÿÿÿ. °„ ü™õþÿoŒð‚° ++Õ €´€0„ „þÿÿoðƒÿÿÿoðÿÿoƃ¬³ö„……&…6…F…V…f…v…†…–…¦…¶…Æ…Ö…æ…›c›i›w›†›•››§›±›Ø›º›À›ΛÝ› ++œì›ò›œœœ%œ7œ,œ4œ=œGœXœ^œXœeœmœxœ‚œ‰œ¢œŸœ”œœ©œ´œ¾œÅœÞœÛœМÙœåœðœûœ %" ,7BLS`^lwƒŽ–°­¢«·ÅÃÏàì÷ÿ ž%ž"žž žÙ-ž6žìšjžAžHžSžOžWžaž_žgžóš™žpžwž‚ž~ž†žžŽž–žúšÈžŸž¦ž±ž­žµž¿ž½žÅž›÷žΞÕžàžÜžäžîžìžôžÈšŸýžŸ ŸŸŸÏš,Ÿ)Ÿ1Ÿ9Ÿ?ŸFŸNŸÖš^Ÿ[ŸcŸkŸsŸzŸ‚ŸÝš’ŸŸ—ŸŸŸ§Ÿ®Ÿ¶Ÿß?›ΟÕŸÜŸéŸïŸöŸýŸE› ++   ( 4 A T › ] f p w  ‡  ™ £ ª ± » ª ¹ Á È Ï Ù È × ß è ñ ý è û ¡¡¡*¡7›5¡>¡B¡L¡V¡T¡R¡N›L›Z¡c›_¡›i›w›†›œº›g¡Ø›À›ΛÝ›%œo¡¡u¡ƒ¡’¡¡¡®¡ì› ++œò›œœµ¡¡R›É¡W›Ì¡Ó¡[›Ù¡`›ß¡ê¡GCC: (GNU) 4.4.3 20100127 (Red Hat 4.4.3-4)GCC: (GNU) 4.4.3 20100127 (Red Hat 4.4.3-4)GCC: (GNU) 4.4.3 20100127 (Red Hat 4.4.3-4)GCC: (GNU) 4.4.3 20100127 (Red Hat 4.4.3-4)GCC: (GNU) 4.4.3 20100127 (Red Hat 4.4.3-4)GCC: (GNU) 4.4.3 20100127 (Red Hat 4.4.3-4)GCC: (GNU) 4.4.3 20100127 (Red Hat 4.4.3-4)°†§¹ ++mainyVARIANT_UNICODE‹VARIANT_ASCIIVARIANT_ISO88591¯VARIANT_ISO88592ÁVARIANT_ISO88594ÓVARIANT_ISO88595åVARIANT_ISO885913÷VARIANT_ISO885916 VARIANT_BALTICVARIANT_IBM852-VARIANT_IBM855?VARIANT_IBM775QVARIANT_IBM866cVARIANT_CP1125uVARIANT_CP1250‡VARIANT_CP1251™VARIANT_CP1257«VARIANT_MACCE½VARIANT_MACCYRÏVARIANT_KOI8CS2áVARIANT_KOI8RóVARIANT_KOI8U VARIANT_KOI8UNI VARIANT_ECMA113) VARIANT_KEYBCS2; VARIANT_LATEXM VARIANT_UCS2_ VARIANT_UCS4q VARIANT_UTF7ƒ VARIANT_UTF8• VARIANT_CORK§ VARIANT_GBK¹ VARIANT_BIG5Ë VARIANT_HZÝ program_nameï FROM ++TO ++Dµ°†W™YÓ0½ intB#¸D`³g8E7ÌŽv¢K1´ÿ”H H> œ ,œ æœ ¦œ œ Èœ “œ Oœ 6œ$ Mœ( ô œ, "€0 $†4 &>8 }*>< €,À [0SÄ ž1aÆ l2ŒÇ w6œÈ „?ŒÌ HšÔ IšØ JšÜ Kšà "L%ä …N>è )P¢ì ++ô´ ÷ º€ Æ»€ ¼† À>O´ ¢œ—H ¢²—'–š ýÖâencל ÇØâ½jÙⶆ>°†Ú†œ;‘†œto†œidˆ²Rk&>à†™‡œ–­&–&&–9‘(–xto(–¬œ @>ý‹@œsBœsbBœseBœfCý¸Dèp_eEè©¡é> ‡W™œ¨ké>‘9é–‘okë>àÀì¨t(œ̇ﮢ 0!º"ÄÀ"Ïé"Ú"ä1"ðt œ¸—#‘†#ö’†#2“† œï—#Ö1ß œ — #t9ü œ)—#¦>#·Cü#ÈHü œ`—#ÙMP œ}— # Rm#€Xü œ§—#>]— œÄ— ++#Öa´#åf´#Ïk´#‚p´#’uP#„z##9„ü#]‰#3ŽP#Ê“´ œc—#Ú˜S#èœS#p S œš—#P¥Š#p©#v®—#Œ²P#™·P#«¼P#žÁP œ—#ÂÆõ#`Ê—#‘Îõ#(Òõ#Þœ$TOÞœ#‘†#ö’†#2“†%Ö1ßµ%t9ü`µ%¦> µ%·Cüàµ%ÈHü ¶%ÙMP`¶% Rm€¶%€XüÀ¶%>]—è¶%Öa´·%åf´@·%Ïk´€·%‚p´À·%’uP¸%„z ¸%`¸%9„ü ¸%]‰à¸%3ŽP ¹%Ê“´@¹%Ú˜Sl¹%èœSˆ¹%p S¤¹%P¥ŠÀ¹%p©à¹%v®—º%Œ²P º%™·P@º%«¼P`º%žÁP€º%ÂÆõ º%`Ê—¬º%‘Îõ¼º%(ÒõȺ%êܜԺ%Þœèº&TOÞœäº% : ; I$ > $ > $ >   I : ; : ;I8 ++: ;  : ;  : ; I8 I!I/  : ; I8 .: ;' I@ ++: ;I: ;I4: ;I ++4: ;I4: ;I.: ;' I : ;I4: ;I4: ;I.? : ; ' I@ ++: ; I ++4: ; I4: ; I ++1RUX Y 1 U!41"41#4: ; I? < $4: ; I? < %4: ; I?  ++&4: ; I?  ++ §û ./usr/lib/gcc/i686-redhat-linux/4.4.3/include/usr/include/bits/usr/includeiconvcap.cstddef.htypes.hstdio.hlibio.hiconv.h°††iן ™‚w+Mg-/!­óu r¬ ++%WŸŸ³¿GõÙº»«/¤åusYWKˆY{(Y¼''y­ÉÎʨ‚Ø<¨X2ºƒ»LÈRÖ%ƒ XxJsK˜EQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ_‚ù,$q<‚%œòãããããããããããããããããããããããããããããã!‚:ºƒ»o ƒ %Ž % ÿÿÿÿ| ˆ°†*AB… fÅ ,à†¹AB… C‡C†JƒV ++ÃAÆAÇAÅ D X ‡·AB… cu ð ô"u ð ø"u ð ü" ++ÃAÆAÇB AÅF v ++ÃAÆAÇB AÅE __off_t_IO_read_ptr_chain/home/stephan/projects/openelec/sources/enca/enca-1.13.patchsize_tVARIANT_GBK_shortbufVARIANT_LATEXVARIANT_CP1250_IO_buf_basecheck_transitivitylong long unsigned intVARIANT_KOI8CS2VARIANT_KOI8RVARIANT_KOI8UstdoutS_EncListlong long int_filenoVARIANT_CP1251_IO_read_endVARIANT_CP1257_flags_IO_buf_end_cur_column__quad_tVARIANT_KOI8UNI_old_offsetVARIANT_UCS2VARIANT_UCS4VARIANT_ISO88591VARIANT_ISO88592VARIANT_ISO88594VARIANT_ISO88595program_name_IO_markerstdin_IO_write_ptrtolist_sbufshort unsigned int_IO_save_baseGNU C 4.4.3 20100127 (Red Hat 4.4.3-4)iconv_check_lock_flags2_modefnamefromiconv_tVARIANT_UTF8VARIANT_UTF7enclistunicode_IO_write_endVARIANT_IBM852VARIANT_IBM855_IO_lock_t_IO_FILE_posVARIANT_ISO885913_markersVARIANT_HZVARIANT_MACCYRunsigned charVARIANT_ECMA113short intP_EncListVARIANT_ASCIIVARIANT_IBM866VARIANT_BIG5_vtable_offsetfromlisticonv_check_one_next__off64_tVARIANT_UNICODE_IO_read_base_IO_save_endFROM__pad1__pad2__pad3__pad4__pad5_unused2stderrargvVARIANT_BALTIC_IO_backup_baseVARIANT_MACCEargcVARIANT_KEYBCS2VARIANT_ISO885916VARIANT_CP1125main_IO_write_base./iconvcap.cVARIANT_CORKVARIANT_IBM775PR0CP0?R?KWKMSM›WéW0CPCšV£V£éVCKWKSSS•S©S#P#;S;€0Ÿ€¹SÑ ++S"[Ss¬SÄýSNSfŸS·ðSASY’SªãSû4SL…SÖSî'S?xSÉSá S2 k Sƒ ¼ SÔ ++S% ++^ ++Sv ++¯ ++SÇ ++ S Q Si ¢ Sº ó S D S\ • S­ æ Sþ 7 SO d Sd Š 0ŸŠ S÷ ÝSv{P{§SNV?V¨¹P¹ÉVÝVºÐPÝâP@NPP,tN0ŸNgtúÿt» à S?0ŸŒ£P!DVD–V›¥P¥¸t ÷ Vœ ++%size_tv__quad_t__off_tŒ__off64_t©FILEH_IO_lock_tO_IO_marker´_IO_FILE²iconv_t½S_EncListèP_EncListŒÝv” ø  Ò”ŒÝv” ø  Ò”.symtab.strtab.shstrtab.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bss.comment.debug_aranges.debug_pubnames.debug_info.debug_abbrev.debug_line.debug_frame.debug_str.debug_loc.debug_pubtypes.debug_ranges44#HH 1hh$DöÿÿoŒŒ$N °°@Vð‚ðÕ^ÿÿÿoƃÆ(kþÿÿoðƒð0z  „ ƒ 0„0€ Œ°„°0‡à„à’ð…ð ˜ü™üžšü¦£#´0£0#h¾˜³˜#Å ³ #̨³¨#Ѭ³¬#ÐÚ|´|$߀´€$Lèà´à$ø îغØ*óØ*;ü,  3,½ð. ++'9 5;A =ÀN0à=ÞY¾B¿d}F tG`}G‚@O'9 @W,4HhŒ°ð‚ƃðƒ „ 0„ ++°„ à„ ð… ü™š£0£˜³ ³¨³¬³|´€´à´غ !"#$ñÿ ˜³ ³(¨³5 † KܺZàºh€† ñÿtœ³”£¨³›Ð™ ±ñÿ¼°†* Ìà†¹ Ø€´ÿ˜³¬³à´ &`™ 6ð… = º J Y mštŠ ¶(›`µ(© ¸(¸Êü™Ðã@·,òº.AÀ·,Pl¹^à¹$nš}@º šäºà´ª@¹,ºÌè¶Û¼º èغú ·,¬º&À¶(8 šEÀ¹U¤³bˆ¹pp™Z €’`º Ÿ ¹ ®À`¸$Ïâàµ(óغñÿÿ(€·,7¸ FȺ Q€¶4cìºñÿh€º uèºz¤¹Š º — ¸$¦µX¶غñÿ½`¶ Πµ$ßïÔºüà¸$ ++Ê™ ! ‡· &°„ crtstuff.c__CTOR_LIST____DTOR_LIST____JCR_LIST____do_global_dtors_auxcompleted.5953dtor_idx.5955frame_dummy__CTOR_END____FRAME_END____JCR_END____do_global_ctors_auxiconvcap.ciconv_check_oneiconv_check_GLOBAL_OFFSET_TABLE___init_array_end__init_array_start_DYNAMICdata_start__libc_csu_fini_startVARIANT_CORK__gmon_start___Jv_RegisterClasses_fp_hwiconv_open@@GLIBC_2.1VARIANT_ISO88594VARIANT_ASCIIVARIANT_CP1257strchr@@GLIBC_2.0_finistrncpy@@GLIBC_2.0VARIANT_IBM855fgets@@GLIBC_2.0VARIANT_LATEX__libc_start_main@@GLIBC_2.0strrchr@@GLIBC_2.0VARIANT_IBM866VARIANT_KOI8RVARIANT_KEYBCS2_IO_stdin_usedfree@@GLIBC_2.0VARIANT_UCS4TO__data_startVARIANT_KOI8CS2fclose@@GLIBC_2.1VARIANT_BALTICVARIANT_BIG5stderr@@GLIBC_2.0fopen@@GLIBC_2.1VARIANT_IBM852VARIANT_GBKVARIANT_ISO885916__dso_handleVARIANT_ECMA113__DTOR_END__VARIANT_KOI8U__libc_csu_initprintf@@GLIBC_2.0VARIANT_UTF7VARIANT_MACCYRfwrite@@GLIBC_2.0VARIANT_CP1251fprintf@@GLIBC_2.0VARIANT_ISO88592__bss_startmalloc@@GLIBC_2.0iconv_close@@GLIBC_2.1VARIANT_IBM775VARIANT_CP1125VARIANT_HZVARIANT_ISO885913_endVARIANT_UTF8FROMVARIANT_KOI8UNIVARIANT_UCS2VARIANT_CP1250VARIANT_UNICODE_edataVARIANT_ISO88595VARIANT_ISO88591exit@@GLIBC_2.0program_nameVARIANT_MACCE__i686.get_pc_thunk.bxmain_init +\ Kein Zeilenumbruch am Dateiende. +diff -Naur enca-1.13/iconvenc.h enca-1.13.patch/iconvenc.h +--- enca-1.13/iconvenc.h 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/iconvenc.h 2010-04-16 18:41:16.851015075 +0200 +@@ -0,0 +1,33 @@ ++#define ICONV_NAME_UNICODE "UCS2" ++#define ICONV_NAME_ASCII "ASCII" ++#define ICONV_NAME_BALTIC "BALTIC" ++#define ICONV_NAME_CP1125 "CP1125" ++#define ICONV_NAME_CP1250 "CP1250" ++#define ICONV_NAME_CP1251 "CP1251" ++#define ICONV_NAME_CP1257 "CP1257" ++#define ICONV_NAME_ECMA113 "ECMA-cyrillic" ++#define ICONV_NAME_IBM852 "IBM852" ++#define ICONV_NAME_IBM855 "IBM855" ++#define ICONV_NAME_IBM775 "IBM775" ++#define ICONV_NAME_IBM866 "IBM866" ++#define ICONV_NAME_ISO88592 "ISO-8859-2" ++#define ICONV_NAME_ISO88594 "ISO-8859-4" ++#define ICONV_NAME_ISO88595 "ISO-8859-5" ++#define ICONV_NAME_ISO885913 "ISO-8859-13" ++#define ICONV_NAME_ISO885916 "ISO-8859-16" ++#define ICONV_NAME_KEYBCS2 NULL ++#define ICONV_NAME_KOI8CS2 NULL ++#define ICONV_NAME_KOI8R "KOI8-R" ++#define ICONV_NAME_KOI8U "KOI8-U" ++#define ICONV_NAME_KOI8UNI NULL ++#define ICONV_NAME_MACCE NULL ++#define ICONV_NAME_MACCYR "MACCYRILLIC" ++#define ICONV_NAME_LATEX NULL ++#define ICONV_NAME_UCS2 "UCS-2" ++#define ICONV_NAME_UCS4 "UCS-4" ++#define ICONV_NAME_UTF7 "UTF-7" ++#define ICONV_NAME_UTF8 "UTF-8" ++#define ICONV_NAME_CORK NULL ++#define ICONV_NAME_GBK "GBK" ++#define ICONV_NAME_BIG5 "BIG5" ++#define ICONV_NAME_HZ NULL +diff -Naur enca-1.13/lib/.deps/common.Plo enca-1.13.patch/lib/.deps/common.Plo +--- enca-1.13/lib/.deps/common.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/common.Plo 2010-04-16 18:41:17.892442565 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/ctype.Plo enca-1.13.patch/lib/.deps/ctype.Plo +--- enca-1.13/lib/.deps/ctype.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/ctype.Plo 2010-04-16 18:41:17.893451554 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/enca.Plo enca-1.13.patch/lib/.deps/enca.Plo +--- enca-1.13/lib/.deps/enca.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/enca.Plo 2010-04-16 18:41:17.895442575 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/encnames.Plo enca-1.13.patch/lib/.deps/encnames.Plo +--- enca-1.13/lib/.deps/encnames.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/encnames.Plo 2010-04-16 18:41:17.897451894 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/filters.Plo enca-1.13.patch/lib/.deps/filters.Plo +--- enca-1.13/lib/.deps/filters.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/filters.Plo 2010-04-16 18:41:17.899442844 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/guess.Plo enca-1.13.patch/lib/.deps/guess.Plo +--- enca-1.13/lib/.deps/guess.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/guess.Plo 2010-04-16 18:41:17.901442804 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang_be.Plo enca-1.13.patch/lib/.deps/lang_be.Plo +--- enca-1.13/lib/.deps/lang_be.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang_be.Plo 2010-04-16 18:41:17.905442794 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang_bg.Plo enca-1.13.patch/lib/.deps/lang_bg.Plo +--- enca-1.13/lib/.deps/lang_bg.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang_bg.Plo 2010-04-16 18:41:17.907468665 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang_cs.Plo enca-1.13.patch/lib/.deps/lang_cs.Plo +--- enca-1.13/lib/.deps/lang_cs.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang_cs.Plo 2010-04-16 18:41:17.909445438 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang_et.Plo enca-1.13.patch/lib/.deps/lang_et.Plo +--- enca-1.13/lib/.deps/lang_et.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang_et.Plo 2010-04-16 18:41:17.911442884 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang_hr.Plo enca-1.13.patch/lib/.deps/lang_hr.Plo +--- enca-1.13/lib/.deps/lang_hr.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang_hr.Plo 2010-04-16 18:41:17.912472267 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang_hu.Plo enca-1.13.patch/lib/.deps/lang_hu.Plo +--- enca-1.13/lib/.deps/lang_hu.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang_hu.Plo 2010-04-16 18:41:17.914442335 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang_lt.Plo enca-1.13.patch/lib/.deps/lang_lt.Plo +--- enca-1.13/lib/.deps/lang_lt.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang_lt.Plo 2010-04-16 18:41:17.915452163 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang_lv.Plo enca-1.13.patch/lib/.deps/lang_lv.Plo +--- enca-1.13/lib/.deps/lang_lv.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang_lv.Plo 2010-04-16 18:41:17.917443044 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang.Plo enca-1.13.patch/lib/.deps/lang.Plo +--- enca-1.13/lib/.deps/lang.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang.Plo 2010-04-16 18:41:17.903468815 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang_pl.Plo enca-1.13.patch/lib/.deps/lang_pl.Plo +--- enca-1.13/lib/.deps/lang_pl.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang_pl.Plo 2010-04-16 18:41:17.918456433 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang_ru.Plo enca-1.13.patch/lib/.deps/lang_ru.Plo +--- enca-1.13/lib/.deps/lang_ru.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang_ru.Plo 2010-04-16 18:41:17.920442775 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang_sk.Plo enca-1.13.patch/lib/.deps/lang_sk.Plo +--- enca-1.13/lib/.deps/lang_sk.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang_sk.Plo 2010-04-16 18:41:17.922468017 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang_sl.Plo enca-1.13.patch/lib/.deps/lang_sl.Plo +--- enca-1.13/lib/.deps/lang_sl.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang_sl.Plo 2010-04-16 18:41:17.924442904 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang_uk.Plo enca-1.13.patch/lib/.deps/lang_uk.Plo +--- enca-1.13/lib/.deps/lang_uk.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang_uk.Plo 2010-04-16 18:41:17.926468566 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/lang_zh.Plo enca-1.13.patch/lib/.deps/lang_zh.Plo +--- enca-1.13/lib/.deps/lang_zh.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/lang_zh.Plo 2010-04-16 18:41:17.928442615 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/multibyte.Plo enca-1.13.patch/lib/.deps/multibyte.Plo +--- enca-1.13/lib/.deps/multibyte.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/multibyte.Plo 2010-04-16 18:41:17.930468277 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/pair.Plo enca-1.13.patch/lib/.deps/pair.Plo +--- enca-1.13/lib/.deps/pair.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/pair.Plo 2010-04-16 18:41:17.932442885 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/unicodemap.Plo enca-1.13.patch/lib/.deps/unicodemap.Plo +--- enca-1.13/lib/.deps/unicodemap.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/unicodemap.Plo 2010-04-16 18:41:17.934452972 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/.deps/utf8_double.Plo enca-1.13.patch/lib/.deps/utf8_double.Plo +--- enca-1.13/lib/.deps/utf8_double.Plo 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/.deps/utf8_double.Plo 2010-04-16 18:41:17.936451675 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/lib/Makefile enca-1.13.patch/lib/Makefile +--- enca-1.13/lib/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/lib/Makefile 2010-04-16 18:41:17.578442538 +0200 +@@ -0,0 +1,631 @@ ++# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# lib/Makefile. Generated from Makefile.in by configure. ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, ++# Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++ ++ ++ ++ ++pkgdatadir = $(datadir)/enca ++pkgincludedir = $(includedir)/enca ++pkglibdir = $(libdir)/enca ++pkglibexecdir = $(libexecdir)/enca ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = i686-pc-linux-gnu ++host_triplet = i686-pc-linux-gnu ++subdir = lib ++DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ ++ $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ ++ $(top_srcdir)/m4/libiconv.m4 $(top_srcdir)/m4/libm.m4 \ ++ $(top_srcdir)/m4/librecode.m4 $(top_srcdir)/m4/libtool.m4 \ ++ $(top_srcdir)/m4/localias.m4 $(top_srcdir)/m4/ltoptions.m4 \ ++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ ++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/tools.m4 \ ++ $(top_srcdir)/m4/typevar.m4 $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++CONFIG_CLEAN_VPATH_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; ++am__install_max = 40 ++am__nobase_strip_setup = \ ++ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` ++am__nobase_strip = \ ++ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" ++am__nobase_list = $(am__nobase_strip_setup); \ ++ for p in $$list; do echo "$$p $$p"; done | \ ++ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ ++ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ ++ if (++n[$$2] == $(am__install_max)) \ ++ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ ++ END { for (dir in files) print dir, files[dir] }' ++am__base_list = \ ++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ ++ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' ++am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" ++LTLIBRARIES = $(lib_LTLIBRARIES) ++libenca_la_LIBADD = ++am_libenca_la_OBJECTS = common.lo ctype.lo enca.lo encnames.lo \ ++ filters.lo guess.lo lang.lo lang_be.lo lang_bg.lo lang_cs.lo \ ++ lang_et.lo lang_hr.lo lang_hu.lo lang_lt.lo lang_lv.lo \ ++ lang_pl.lo lang_ru.lo lang_sk.lo lang_sl.lo lang_uk.lo \ ++ lang_zh.lo multibyte.lo pair.lo unicodemap.lo utf8_double.lo ++libenca_la_OBJECTS = $(am_libenca_la_OBJECTS) ++libenca_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(libenca_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir) ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++am__mv = mv -f ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(libenca_la_SOURCES) ++DIST_SOURCES = $(libenca_la_SOURCES) ++HEADERS = $(include_HEADERS) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run aclocal-1.11 -I m4 ++AMTAR = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run tar ++AR = ar ++AUTOCONF = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoconf ++AUTOHEADER = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoheader ++AUTOMAKE = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run automake-1.11 ++AWK = gawk ++CC = gcc ++CCDEPMODE = depmode=gcc3 ++CFLAGS = -Wall -W -pedantic -g -O2 ++CONVERTER_LIBS = ++CPP = gcc -E ++CPPFLAGS = ++CSTOCS_PROG = ++CYGPATH_W = echo ++DEFAULT_CONVERTER_LIST = built-in,iconv ++DEFAULT_EXTERNAL_CONVERTER = piconv ++DEFS = -DHAVE_CONFIG_H ++DEPDIR = .deps ++DSYMUTIL = ++DUMPBIN = ++ECHO_C = ++ECHO_N = -n ++ECHO_T = ++EGREP = /bin/grep -E ++EXEEXT = ++FGREP = /bin/grep -F ++GREP = /bin/grep ++GTKDOC = true ++HTML_DIR = ${datarootdir}/gtk-doc/html ++INSTALL = /usr/bin/install -c ++INSTALL_DATA = ${INSTALL} -m 644 ++INSTALL_PROGRAM = ${INSTALL} ++INSTALL_SCRIPT = ${INSTALL} ++INSTALL_STRIP_PROGRAM = $(install_sh) -c -s ++LD = /usr/bin/ld ++LDFLAGS = ++LIBICONV = ++LIBM = -lm ++LIBOBJS = ++LIBS = -lm ++LIBTOOL = $(SHELL) $(top_builddir)/libtool ++LIPO = ++LN_S = ln -s ++LTLIBICONV = ++LTLIBOBJS = ++MAINT = # ++MAKEINFO = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run makeinfo ++MAP_PROG = ++MKDIR_P = /bin/mkdir -p ++MKTEMP_PROG = /bin/mktemp ++NM = /usr/bin/nm -B ++NMEDIT = ++OBJDUMP = objdump ++OBJEXT = o ++OTOOL = ++OTOOL64 = ++PACKAGE = enca ++PACKAGE_BUGREPORT = https://bugs.cihar.com/ ++PACKAGE_NAME = Enca ++PACKAGE_STRING = Enca 1.13 ++PACKAGE_TARNAME = enca ++PACKAGE_URL = ++PACKAGE_VERSION = 1.13 ++PATH_SEPARATOR = : ++PICONV_PROG = /usr/bin/piconv ++RANLIB = ranlib ++RECODE_PROG = ++RELEASE = 1 ++SED = /bin/sed ++SET_MAKE = ++SHELL = /bin/sh ++SHELL_RANDOM_FILENAME = `/bin/mktemp /tmp/enca-$$-XXXXXXXX` ++STRIP = strip ++UMAP_PROG = ++VERSION = 1.13 ++abs_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/lib ++abs_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/lib ++abs_top_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++abs_top_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++ac_ct_CC = gcc ++ac_ct_DUMPBIN = ++am__include = include ++am__leading_dot = . ++am__quote = ++am__tar = ${AMTAR} chof - "$$tardir" ++am__untar = ${AMTAR} xf - ++bindir = ${exec_prefix}/bin ++build = i686-pc-linux-gnu ++build_alias = ++build_cpu = i686 ++build_os = linux-gnu ++build_vendor = pc ++builddir = . ++datadir = ${datarootdir} ++datarootdir = ${prefix}/share ++docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} ++dvidir = ${docdir} ++exec_prefix = ${prefix} ++host = i686-pc-linux-gnu ++host_alias = ++host_cpu = i686 ++host_os = linux-gnu ++host_vendor = pc ++htmldir = ${docdir} ++includedir = ${prefix}/include ++infodir = ${datarootdir}/info ++install_sh = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/install-sh ++libdir = ${exec_prefix}/lib ++libexecdir = ${exec_prefix}/libexec ++localedir = ${datarootdir}/locale ++localstatedir = ${prefix}/var ++lt_ECHO = echo ++mandir = ${datarootdir}/man ++mkdir_p = /bin/mkdir -p ++oldincludedir = /usr/include ++pdfdir = ${docdir} ++prefix = /usr/local ++program_transform_name = s,x,x, ++psdir = ${docdir} ++sbindir = ${exec_prefix}/sbin ++sharedstatedir = ${prefix}/com ++srcdir = . ++sysconfdir = ${prefix}/etc ++target_alias = ++top_build_prefix = ../ ++top_builddir = .. ++top_srcdir = .. ++ ++# @(#) $Id: Makefile.am,v 1.29 2005/11/24 20:11:20 yeti Exp $ ++include_HEADERS = enca.h ++lib_LTLIBRARIES = libenca.la ++ ++# In following order do: ++# Any code change C: R++: A ++# Any iface change C++: 0: A ++# Adding ifaces C: R: A++ ++# Changing ifaces C: R: 0 ++libenca_la_LDFLAGS = -version-info 5:1:5 ++libenca_la_SOURCES = \ ++ common.c \ ++ ctype.c \ ++ enca.c \ ++ enca.h \ ++ encnames.c \ ++ filters.c \ ++ guess.c \ ++ internal.h \ ++ lang.c \ ++ lang_be.c \ ++ lang_bg.c \ ++ lang_cs.c \ ++ lang_et.c \ ++ lang_hr.c \ ++ lang_hu.c \ ++ lang_lt.c \ ++ lang_lv.c \ ++ lang_pl.c \ ++ lang_ru.c \ ++ lang_sk.c \ ++ lang_sl.c \ ++ lang_uk.c \ ++ lang_zh.c \ ++ multibyte.c \ ++ pair.c \ ++ unicodemap.c \ ++ utf8_double.c ++ ++INCLUDES = -I$(top_srcdir) ++all: all-am ++ ++.SUFFIXES: ++.SUFFIXES: .c .lo .o .obj ++$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --gnits lib/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: # $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): # $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(am__aclocal_m4_deps): ++install-libLTLIBRARIES: $(lib_LTLIBRARIES) ++ @$(NORMAL_INSTALL) ++ test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" ++ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ ++ list2=; for p in $$list; do \ ++ if test -f $$p; then \ ++ list2="$$list2 $$p"; \ ++ else :; fi; \ ++ done; \ ++ test -z "$$list2" || { \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ ++ } ++ ++uninstall-libLTLIBRARIES: ++ @$(NORMAL_UNINSTALL) ++ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ ++ for p in $$list; do \ ++ $(am__strip_dir) \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ ++ done ++ ++clean-libLTLIBRARIES: ++ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) ++ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ ++ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ ++ test "$$dir" != "$$p" || dir=.; \ ++ echo "rm -f \"$${dir}/so_locations\""; \ ++ rm -f "$${dir}/so_locations"; \ ++ done ++libenca.la: $(libenca_la_OBJECTS) $(libenca_la_DEPENDENCIES) ++ $(libenca_la_LINK) -rpath $(libdir) $(libenca_la_OBJECTS) $(libenca_la_LIBADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++include ./$(DEPDIR)/common.Plo ++include ./$(DEPDIR)/ctype.Plo ++include ./$(DEPDIR)/enca.Plo ++include ./$(DEPDIR)/encnames.Plo ++include ./$(DEPDIR)/filters.Plo ++include ./$(DEPDIR)/guess.Plo ++include ./$(DEPDIR)/lang.Plo ++include ./$(DEPDIR)/lang_be.Plo ++include ./$(DEPDIR)/lang_bg.Plo ++include ./$(DEPDIR)/lang_cs.Plo ++include ./$(DEPDIR)/lang_et.Plo ++include ./$(DEPDIR)/lang_hr.Plo ++include ./$(DEPDIR)/lang_hu.Plo ++include ./$(DEPDIR)/lang_lt.Plo ++include ./$(DEPDIR)/lang_lv.Plo ++include ./$(DEPDIR)/lang_pl.Plo ++include ./$(DEPDIR)/lang_ru.Plo ++include ./$(DEPDIR)/lang_sk.Plo ++include ./$(DEPDIR)/lang_sl.Plo ++include ./$(DEPDIR)/lang_uk.Plo ++include ./$(DEPDIR)/lang_zh.Plo ++include ./$(DEPDIR)/multibyte.Plo ++include ./$(DEPDIR)/pair.Plo ++include ./$(DEPDIR)/unicodemap.Plo ++include ./$(DEPDIR)/utf8_double.Plo ++ ++.c.o: ++ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++# source='$<' object='$@' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(COMPILE) -c $< ++ ++.c.obj: ++ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++# source='$<' object='$@' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(COMPILE) -c `$(CYGPATH_W) '$<'` ++ ++.c.lo: ++ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++# source='$<' object='$@' libtool=yes \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(LTCOMPILE) -c -o $@ $< ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++install-includeHEADERS: $(include_HEADERS) ++ @$(NORMAL_INSTALL) ++ test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" ++ @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ ++ for p in $$list; do \ ++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ++ echo "$$d$$p"; \ ++ done | $(am__base_list) | \ ++ while read files; do \ ++ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ ++ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ ++ done ++ ++uninstall-includeHEADERS: ++ @$(NORMAL_UNINSTALL) ++ @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ ++ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ ++ test -n "$$files" || exit 0; \ ++ echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \ ++ cd "$(DESTDIR)$(includedir)" && rm -f $$files ++ ++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ mkid -fID $$unique ++tags: TAGS ++ ++TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ set x; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ ++distdir: $(DISTFILES) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d "$(distdir)/$$file"; then \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ ++ else \ ++ test -f "$(distdir)/$$file" \ ++ || cp -p $$d/$$file "$(distdir)/$$file" \ ++ || exit 1; \ ++ fi; \ ++ done ++check-am: all-am ++check: check-am ++all-am: Makefile $(LTLIBRARIES) $(HEADERS) ++installdirs: ++ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done ++install: install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ `test -z '$(STRIP)' || \ ++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++clean: clean-am ++ ++clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \ ++ mostlyclean-am ++ ++distclean: distclean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: install-includeHEADERS ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: install-libLTLIBRARIES ++ ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES ++ ++.MAKE: install-am install-strip ++ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++ clean-libLTLIBRARIES clean-libtool clean-local ctags distclean \ ++ distclean-compile distclean-generic distclean-libtool \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-includeHEADERS install-info \ ++ install-info-am install-libLTLIBRARIES install-man install-pdf \ ++ install-pdf-am install-ps install-ps-am install-strip \ ++ installcheck installcheck-am installdirs maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-compile \ ++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ++ tags uninstall uninstall-am uninstall-includeHEADERS \ ++ uninstall-libLTLIBRARIES ++ ++ ++clean-local: ++ rm -f core.* *~ ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff -Naur enca-1.13/libtool enca-1.13.patch/libtool +--- enca-1.13/libtool 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/libtool 2010-04-16 18:41:18.072442468 +0200 +@@ -0,0 +1,8893 @@ ++#! /bin/sh ++ ++# libtool - Provide generalized library-building support services. ++# Generated automatically by config.status (enca) 1.13 ++# Libtool was configured on host x200t.openelec.tv: ++# NOTE: Changes made to this file will be lost: look at ltmain.sh. ++# ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, ++# 2006, 2007, 2008 Free Software Foundation, Inc. ++# Written by Gordon Matzigkeit, 1996 ++# ++# This file is part of GNU Libtool. ++# ++# GNU Libtool is free software; you can redistribute it and/or ++# modify it under the terms of the GNU General Public License as ++# published by the Free Software Foundation; either version 2 of ++# the License, or (at your option) any later version. ++# ++# As a special exception to the GNU General Public License, ++# if you distribute this file as part of a program or library that ++# is built using GNU Libtool, you may include this file under the ++# same distribution terms that you use for the rest of that program. ++# ++# GNU Libtool is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GNU Libtool; see the file COPYING. If not, a copy ++# can be downloaded from http://www.gnu.org/licenses/gpl.html, or ++# obtained by writing to the Free Software Foundation, Inc., ++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++ ++ ++# The names of the tagged configurations supported by this script. ++available_tags="" ++ ++# ### BEGIN LIBTOOL CONFIG ++ ++# Which release of libtool.m4 was used? ++macro_version=2.2.6b ++macro_revision=1.3017 ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=yes ++ ++# Whether or not to build static libraries. ++build_old_libs=yes ++ ++# What type of objects to build. ++pic_mode=default ++ ++# Whether or not to optimize for fast installation. ++fast_install=yes ++ ++# The host system. ++host_alias= ++host=i686-pc-linux-gnu ++host_os=linux-gnu ++ ++# The build system. ++build_alias= ++build=i686-pc-linux-gnu ++build_os=linux-gnu ++ ++# A sed program that does not truncate output. ++SED="/bin/sed" ++ ++# Sed that helps us avoid accidentally triggering echo(1) options like -n. ++Xsed="$SED -e 1s/^X//" ++ ++# A grep program that handles long lines. ++GREP="/bin/grep" ++ ++# An ERE matcher. ++EGREP="/bin/grep -E" ++ ++# A literal string matcher. ++FGREP="/bin/grep -F" ++ ++# A BSD- or MS-compatible name lister. ++NM="/usr/bin/nm -B" ++ ++# Whether we need soft or hard links. ++LN_S="ln -s" ++ ++# What is the maximum length of a command? ++max_cmd_len=1966080 ++ ++# Object file suffix (normally "o"). ++objext=o ++ ++# Executable file suffix (normally ""). ++exeext= ++ ++# whether the shell understands "unset". ++lt_unset=unset ++ ++# turn spaces into newlines. ++SP2NL="tr \\040 \\012" ++ ++# turn newlines into spaces. ++NL2SP="tr \\015\\012 \\040\\040" ++ ++# How to create reloadable object files. ++reload_flag=" -r" ++reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" ++ ++# An object symbol dumper. ++OBJDUMP="objdump" ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method="pass_all" ++ ++# Command to use when deplibs_check_method == "file_magic". ++file_magic_cmd="\$MAGIC_CMD" ++ ++# The archiver. ++AR="ar" ++AR_FLAGS="cru" ++ ++# A symbol stripping program. ++STRIP="strip" ++ ++# Commands used to install an old-style archive. ++RANLIB="ranlib" ++old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib" ++old_postuninstall_cmds="" ++ ++# A C compiler. ++LTCC="gcc" ++ ++# LTCC compiler flags. ++LTCFLAGS="-Wall -W -pedantic -g -O2" ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'" ++ ++# Transform the output of nm in a proper C declaration. ++global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'" ++ ++# Transform the output of nm in a C name address pair. ++global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'" ++ ++# Transform the output of nm in a C name address pair when lib prefix is needed. ++global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"lib\\2\", (void *) \\&\\2},/p'" ++ ++# The name of the directory that contains temporary libtool files. ++objdir=.libs ++ ++# Shell to use when invoking shell scripts. ++SHELL="/bin/sh" ++ ++# An echo program that does not interpret backslashes. ++ECHO="echo" ++ ++# Used to examine libraries when file_magic_cmd begins with "file". ++MAGIC_CMD=file ++ ++# Must we lock files when doing compilation? ++need_locks="no" ++ ++# Tool to manipulate archived DWARF debug symbol files on Mac OS X. ++DSYMUTIL="" ++ ++# Tool to change global to local symbols on Mac OS X. ++NMEDIT="" ++ ++# Tool to manipulate fat objects and archives on Mac OS X. ++LIPO="" ++ ++# ldd/readelf like tool for Mach-O binaries on Mac OS X. ++OTOOL="" ++ ++# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. ++OTOOL64="" ++ ++# Old archive suffix (normally "a"). ++libext=a ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds=".so" ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds="" ++ ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at link time. ++variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++ ++# Do we need the "lib" prefix for modules? ++need_lib_prefix=no ++ ++# Do we need a version for libraries? ++need_version=no ++ ++# Library versioning type. ++version_type=linux ++ ++# Shared library runtime path variable. ++runpath_var=LD_RUN_PATH ++ ++# Shared library path variable. ++shlibpath_var=LD_LIBRARY_PATH ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=no ++ ++# Format of library name prefix. ++libname_spec="lib\$name" ++ ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME ++library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" ++ ++# The coded name of the library, if different from the real name. ++soname_spec="\${libname}\${release}\${shared_ext}\$major" ++ ++# Command to use after installation of a shared archive. ++postinstall_cmds="" ++ ++# Command to use after uninstallation of a shared archive. ++postuninstall_cmds="" ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" ++ ++# As "finish_cmds", except a single script fragment to be evaled but ++# not shown. ++finish_eval="" ++ ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=yes ++ ++# Compile-time system search path for libraries. ++sys_lib_search_path_spec="/usr/lib/gcc/i686-redhat-linux/4.4.3 /usr/lib /lib" ++ ++# Run-time system search path for libraries. ++sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib /usr/lib/atlas /usr/lib/ctapi /usr/lib/mysql /usr/lib/OGRE /usr/lib/wine/ /usr/lib/xulrunner-1.9.1 " ++ ++# Whether dlopen is supported. ++dlopen_support=unknown ++ ++# Whether dlopen of programs is supported. ++dlopen_self=unknown ++ ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=unknown ++ ++# Commands to strip libraries. ++old_striplib="strip --strip-debug" ++striplib="strip --strip-unneeded" ++ ++ ++# The linker used to build libraries. ++LD="/usr/bin/ld" ++ ++# Commands used to build an old-style archive. ++old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib" ++ ++# A language specific compiler. ++CC="gcc" ++ ++# Is the compiler the GNU compiler? ++with_gcc=yes ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=" -fno-builtin" ++ ++# How to pass a linker flag through the compiler. ++wl="-Wl," ++ ++# Additional compiler flags for building library objects. ++pic_flag=" -fPIC -DPIC" ++ ++# Compiler flag to prevent dynamic linking. ++link_static_flag="-static" ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o="yes" ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=no ++ ++# Whether or not to disallow shared libs when runtime libs are static. ++allow_libtool_libs_with_static_runtimes=no ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec="\${wl}--export-dynamic" ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" ++ ++# Whether the compiler copes with passing no objects directly. ++compiler_needs_object="no" ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds="" ++ ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds="" ++ ++# Commands used to build a shared archive. ++archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" ++archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ ++ cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~ ++ echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~ ++ \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib" ++ ++# Commands used to build a loadable module if different from building ++# a shared archive. ++module_cmds="" ++module_expsym_cmds="" ++ ++# Whether we are building with GNU ld or not. ++with_gnu_ld="yes" ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag="" ++ ++# Flag that enforces no undefined symbols. ++no_undefined_flag="" ++ ++# Flag to hardcode $libdir into a binary during linking. ++# This must work even if $libdir does not exist ++hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir" ++ ++# If ld is used when linking, flag to hardcode $libdir into a binary ++# during linking. This must work even if $libdir does not exist. ++hardcode_libdir_flag_spec_ld="" ++ ++# Whether we need a single "-rpath" flag with a separated argument. ++hardcode_libdir_separator="" ++ ++# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes ++# DIR into the resulting binary. ++hardcode_direct=no ++ ++# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes ++# DIR into the resulting binary and the resulting library dependency is ++# "absolute",i.e impossible to change by setting ${shlibpath_var} if the ++# library is relocated. ++hardcode_direct_absolute=no ++ ++# Set to "yes" if using the -LDIR flag during linking hardcodes DIR ++# into the resulting binary. ++hardcode_minus_L=no ++ ++# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR ++# into the resulting binary. ++hardcode_shlibpath_var=unsupported ++ ++# Set to "yes" if building a shared library automatically hardcodes DIR ++# into the library and all subsequent libraries and executables linked ++# against it. ++hardcode_automatic=no ++ ++# Set to yes if linker adds runtime paths of dependent libraries ++# to runtime path list. ++inherit_rpath=no ++ ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=unknown ++ ++# Fix the shell variable $srcfile for the compiler. ++fix_srcfile_path="" ++ ++# Set to "yes" if exported symbols are required. ++always_export_symbols=no ++ ++# The commands to list exported symbols. ++export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" ++ ++# Symbols that must always be exported. ++include_expsyms="" ++ ++# Commands necessary for linking programs (against libraries) with templates. ++prelink_cmds="" ++ ++# Specify filename containing input files. ++file_list_spec="" ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=immediate ++ ++# ### END LIBTOOL CONFIG ++ ++# Generated from ltmain.m4sh. ++ ++# ltmain.sh (GNU libtool) 2.2.6b ++# Written by Gordon Matzigkeit , 1996 ++ ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. ++# This is free software; see the source for copying conditions. There is NO ++# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++ ++# GNU Libtool is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# As a special exception to the GNU General Public License, ++# if you distribute this file as part of a program or library that ++# is built using GNU Libtool, you may include this file under the ++# same distribution terms that you use for the rest of that program. ++# ++# GNU Libtool is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GNU Libtool; see the file COPYING. If not, a copy ++# can be downloaded from http://www.gnu.org/licenses/gpl.html, ++# or obtained by writing to the Free Software Foundation, Inc., ++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++ ++# Usage: $progname [OPTION]... [MODE-ARG]... ++# ++# Provide generalized library-building support services. ++# ++# --config show all configuration variables ++# --debug enable verbose shell tracing ++# -n, --dry-run display commands without modifying any files ++# --features display basic configuration information and exit ++# --mode=MODE use operation mode MODE ++# --preserve-dup-deps don't remove duplicate dependency libraries ++# --quiet, --silent don't print informational messages ++# --tag=TAG use configuration variables from tag TAG ++# -v, --verbose print informational messages (default) ++# --version print version information ++# -h, --help print short or long help message ++# ++# MODE must be one of the following: ++# ++# clean remove files from the build directory ++# compile compile a source file into a libtool object ++# execute automatically set library path, then run a program ++# finish complete the installation of libtool libraries ++# install install libraries or executables ++# link create a library or an executable ++# uninstall remove libraries from an installed directory ++# ++# MODE-ARGS vary depending on the MODE. ++# Try `$progname --help --mode=MODE' for a more detailed description of MODE. ++# ++# When reporting a bug, please describe a test case to reproduce it and ++# include the following information: ++# ++# host-triplet: $host ++# shell: $SHELL ++# compiler: $LTCC ++# compiler flags: $LTCFLAGS ++# linker: $LD (gnu? $with_gnu_ld) ++# $progname: (GNU libtool) 2.2.6b ++# automake: $automake_version ++# autoconf: $autoconf_version ++# ++# Report bugs to . ++ ++PROGRAM=ltmain.sh ++PACKAGE=libtool ++VERSION=2.2.6b ++TIMESTAMP="" ++package_revision=1.3017 ++ ++# Be Bourne compatible ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac ++fi ++BIN_SH=xpg4; export BIN_SH # for Tru64 ++DUALCASE=1; export DUALCASE # for MKS sh ++ ++# NLS nuisances: We save the old values to restore during execute mode. ++# Only set LANG and LC_ALL to C if already set. ++# These must not be set unconditionally because not all systems understand ++# e.g. LANG=C (notably SCO). ++lt_user_locale= ++lt_safe_locale= ++for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES ++do ++ eval "if test \"\${$lt_var+set}\" = set; then ++ save_$lt_var=\$$lt_var ++ $lt_var=C ++ export $lt_var ++ lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" ++ lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" ++ fi" ++done ++ ++$lt_unset CDPATH ++ ++ ++ ++ ++ ++: ${CP="cp -f"} ++: ${ECHO="echo"} ++: ${EGREP="/bin/grep -E"} ++: ${FGREP="/bin/grep -F"} ++: ${GREP="/bin/grep"} ++: ${LN_S="ln -s"} ++: ${MAKE="make"} ++: ${MKDIR="mkdir"} ++: ${MV="mv -f"} ++: ${RM="rm -f"} ++: ${SED="/bin/sed"} ++: ${SHELL="${CONFIG_SHELL-/bin/sh}"} ++: ${Xsed="$SED -e 1s/^X//"} ++ ++# Global variables: ++EXIT_SUCCESS=0 ++EXIT_FAILURE=1 ++EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. ++EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. ++ ++exit_status=$EXIT_SUCCESS ++ ++# Make sure IFS has a sensible default ++lt_nl=' ++' ++IFS=" $lt_nl" ++ ++dirname="s,/[^/]*$,," ++basename="s,^.*/,," ++ ++# func_dirname_and_basename file append nondir_replacement ++# perform func_basename and func_dirname in a single function ++# call: ++# dirname: Compute the dirname of FILE. If nonempty, ++# add APPEND to the result, otherwise set result ++# to NONDIR_REPLACEMENT. ++# value returned in "$func_dirname_result" ++# basename: Compute filename of FILE. ++# value retuned in "$func_basename_result" ++# Implementation must be kept synchronized with func_dirname ++# and func_basename. For efficiency, we do not delegate to ++# those functions but instead duplicate the functionality here. ++func_dirname_and_basename () ++{ ++ # Extract subdirectory from the argument. ++ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` ++ if test "X$func_dirname_result" = "X${1}"; then ++ func_dirname_result="${3}" ++ else ++ func_dirname_result="$func_dirname_result${2}" ++ fi ++ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` ++} ++ ++# Generated shell functions inserted here. ++ ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++} ++ ++# func_basename file ++func_basename () ++{ ++ func_basename_result="${1##*/}" ++} ++ ++# func_dirname_and_basename file append nondir_replacement ++# perform func_basename and func_dirname in a single function ++# call: ++# dirname: Compute the dirname of FILE. If nonempty, ++# add APPEND to the result, otherwise set result ++# to NONDIR_REPLACEMENT. ++# value returned in "$func_dirname_result" ++# basename: Compute filename of FILE. ++# value retuned in "$func_basename_result" ++# Implementation must be kept synchronized with func_dirname ++# and func_basename. For efficiency, we do not delegate to ++# those functions but instead duplicate the functionality here. ++func_dirname_and_basename () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++ func_basename_result="${1##*/}" ++} ++ ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++func_stripname () ++{ ++ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are ++ # positional parameters, so assign one to ordinary parameter first. ++ func_stripname_result=${3} ++ func_stripname_result=${func_stripname_result#"${1}"} ++ func_stripname_result=${func_stripname_result%"${2}"} ++} ++ ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=${1%%=*} ++ func_opt_split_arg=${1#*=} ++} ++ ++# func_lo2o object ++func_lo2o () ++{ ++ case ${1} in ++ *.lo) func_lo2o_result=${1%.lo}.${objext} ;; ++ *) func_lo2o_result=${1} ;; ++ esac ++} ++ ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=${1%.*}.lo ++} ++ ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=$(( $* )) ++} ++ ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=${#1} ++} ++ ++ ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$1+=\$2" ++} ++# Generated shell functions inserted here. ++ ++# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh ++# is ksh but when the shell is invoked as "sh" and the current value of ++# the _XPG environment variable is not equal to 1 (one), the special ++# positional parameter $0, within a function call, is the name of the ++# function. ++progpath="$0" ++ ++# The name of this program: ++# In the unlikely event $progname began with a '-', it would play havoc with ++# func_echo (imagine progname=-n), so we prepend ./ in that case: ++func_dirname_and_basename "$progpath" ++progname=$func_basename_result ++case $progname in ++ -*) progname=./$progname ;; ++esac ++ ++# Make sure we have an absolute path for reexecution: ++case $progpath in ++ [\\/]*|[A-Za-z]:\\*) ;; ++ *[\\/]*) ++ progdir=$func_dirname_result ++ progdir=`cd "$progdir" && pwd` ++ progpath="$progdir/$progname" ++ ;; ++ *) ++ save_IFS="$IFS" ++ IFS=: ++ for progdir in $PATH; do ++ IFS="$save_IFS" ++ test -x "$progdir/$progname" && break ++ done ++ IFS="$save_IFS" ++ test -n "$progdir" || progdir=`pwd` ++ progpath="$progdir/$progname" ++ ;; ++esac ++ ++# Sed substitution that helps us do robust quoting. It backslashifies ++# metacharacters that are still active within double-quoted strings. ++Xsed="${SED}"' -e 1s/^X//' ++sed_quote_subst='s/\([`"$\\]\)/\\\1/g' ++ ++# Same as above, but do not quote variable references. ++double_quote_subst='s/\(["`\\]\)/\\\1/g' ++ ++# Re-`\' parameter expansions in output of double_quote_subst that were ++# `\'-ed in input to the same. If an odd number of `\' preceded a '$' ++# in input to double_quote_subst, that '$' was protected from expansion. ++# Since each input `\' is now two `\'s, look for any number of runs of ++# four `\'s followed by two `\'s and then a '$'. `\' that '$'. ++bs='\\' ++bs2='\\\\' ++bs4='\\\\\\\\' ++dollar='\$' ++sed_double_backslash="\ ++ s/$bs4/&\\ ++/g ++ s/^$bs2$dollar/$bs&/ ++ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g ++ s/\n//g" ++ ++# Standard options: ++opt_dry_run=false ++opt_help=false ++opt_quiet=false ++opt_verbose=false ++opt_warning=: ++ ++# func_echo arg... ++# Echo program name prefixed message, along with the current mode ++# name if it has been set yet. ++func_echo () ++{ ++ $ECHO "$progname${mode+: }$mode: $*" ++} ++ ++# func_verbose arg... ++# Echo program name prefixed message in verbose mode only. ++func_verbose () ++{ ++ $opt_verbose && func_echo ${1+"$@"} ++ ++ # A bug in bash halts the script if the last line of a function ++ # fails when set -e is in force, so we need another command to ++ # work around that: ++ : ++} ++ ++# func_error arg... ++# Echo program name prefixed message to standard error. ++func_error () ++{ ++ $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 ++} ++ ++# func_warning arg... ++# Echo program name prefixed warning message to standard error. ++func_warning () ++{ ++ $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 ++ ++ # bash bug again: ++ : ++} ++ ++# func_fatal_error arg... ++# Echo program name prefixed message to standard error, and exit. ++func_fatal_error () ++{ ++ func_error ${1+"$@"} ++ exit $EXIT_FAILURE ++} ++ ++# func_fatal_help arg... ++# Echo program name prefixed message to standard error, followed by ++# a help hint, and exit. ++func_fatal_help () ++{ ++ func_error ${1+"$@"} ++ func_fatal_error "$help" ++} ++help="Try \`$progname --help' for more information." ## default ++ ++ ++# func_grep expression filename ++# Check whether EXPRESSION matches any line of FILENAME, without output. ++func_grep () ++{ ++ $GREP "$1" "$2" >/dev/null 2>&1 ++} ++ ++ ++# func_mkdir_p directory-path ++# Make sure the entire path to DIRECTORY-PATH is available. ++func_mkdir_p () ++{ ++ my_directory_path="$1" ++ my_dir_list= ++ ++ if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then ++ ++ # Protect directory names starting with `-' ++ case $my_directory_path in ++ -*) my_directory_path="./$my_directory_path" ;; ++ esac ++ ++ # While some portion of DIR does not yet exist... ++ while test ! -d "$my_directory_path"; do ++ # ...make a list in topmost first order. Use a colon delimited ++ # list incase some portion of path contains whitespace. ++ my_dir_list="$my_directory_path:$my_dir_list" ++ ++ # If the last portion added has no slash in it, the list is done ++ case $my_directory_path in */*) ;; *) break ;; esac ++ ++ # ...otherwise throw away the child directory and loop ++ my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` ++ done ++ my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` ++ ++ save_mkdir_p_IFS="$IFS"; IFS=':' ++ for my_dir in $my_dir_list; do ++ IFS="$save_mkdir_p_IFS" ++ # mkdir can fail with a `File exist' error if two processes ++ # try to create one of the directories concurrently. Don't ++ # stop in that case! ++ $MKDIR "$my_dir" 2>/dev/null || : ++ done ++ IFS="$save_mkdir_p_IFS" ++ ++ # Bail out if we (or some other process) failed to create a directory. ++ test -d "$my_directory_path" || \ ++ func_fatal_error "Failed to create \`$1'" ++ fi ++} ++ ++ ++# func_mktempdir [string] ++# Make a temporary directory that won't clash with other running ++# libtool processes, and avoids race conditions if possible. If ++# given, STRING is the basename for that directory. ++func_mktempdir () ++{ ++ my_template="${TMPDIR-/tmp}/${1-$progname}" ++ ++ if test "$opt_dry_run" = ":"; then ++ # Return a directory name, but don't create it in dry-run mode ++ my_tmpdir="${my_template}-$$" ++ else ++ ++ # If mktemp works, use that first and foremost ++ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` ++ ++ if test ! -d "$my_tmpdir"; then ++ # Failing that, at least try and use $RANDOM to avoid a race ++ my_tmpdir="${my_template}-${RANDOM-0}$$" ++ ++ save_mktempdir_umask=`umask` ++ umask 0077 ++ $MKDIR "$my_tmpdir" ++ umask $save_mktempdir_umask ++ fi ++ ++ # If we're not in dry-run mode, bomb out on failure ++ test -d "$my_tmpdir" || \ ++ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" ++ fi ++ ++ $ECHO "X$my_tmpdir" | $Xsed ++} ++ ++ ++# func_quote_for_eval arg ++# Aesthetically quote ARG to be evaled later. ++# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT ++# is double-quoted, suitable for a subsequent eval, whereas ++# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters ++# which are still active within double quotes backslashified. ++func_quote_for_eval () ++{ ++ case $1 in ++ *[\\\`\"\$]*) ++ func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; ++ *) ++ func_quote_for_eval_unquoted_result="$1" ;; ++ esac ++ ++ case $func_quote_for_eval_unquoted_result in ++ # Double-quote args containing shell metacharacters to delay ++ # word splitting, command substitution and and variable ++ # expansion for a subsequent eval. ++ # Many Bourne shells cannot handle close brackets correctly ++ # in scan sets, so we specify it separately. ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ++ ;; ++ *) ++ func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" ++ esac ++} ++ ++ ++# func_quote_for_expand arg ++# Aesthetically quote ARG to be evaled later; same as above, ++# but do not quote variable references. ++func_quote_for_expand () ++{ ++ case $1 in ++ *[\\\`\"]*) ++ my_arg=`$ECHO "X$1" | $Xsed \ ++ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; ++ *) ++ my_arg="$1" ;; ++ esac ++ ++ case $my_arg in ++ # Double-quote args containing shell metacharacters to delay ++ # word splitting and command substitution for a subsequent eval. ++ # Many Bourne shells cannot handle close brackets correctly ++ # in scan sets, so we specify it separately. ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ my_arg="\"$my_arg\"" ++ ;; ++ esac ++ ++ func_quote_for_expand_result="$my_arg" ++} ++ ++ ++# func_show_eval cmd [fail_exp] ++# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is ++# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP ++# is given, then evaluate it. ++func_show_eval () ++{ ++ my_cmd="$1" ++ my_fail_exp="${2-:}" ++ ++ ${opt_silent-false} || { ++ func_quote_for_expand "$my_cmd" ++ eval "func_echo $func_quote_for_expand_result" ++ } ++ ++ if ${opt_dry_run-false}; then :; else ++ eval "$my_cmd" ++ my_status=$? ++ if test "$my_status" -eq 0; then :; else ++ eval "(exit $my_status); $my_fail_exp" ++ fi ++ fi ++} ++ ++ ++# func_show_eval_locale cmd [fail_exp] ++# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is ++# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP ++# is given, then evaluate it. Use the saved locale for evaluation. ++func_show_eval_locale () ++{ ++ my_cmd="$1" ++ my_fail_exp="${2-:}" ++ ++ ${opt_silent-false} || { ++ func_quote_for_expand "$my_cmd" ++ eval "func_echo $func_quote_for_expand_result" ++ } ++ ++ if ${opt_dry_run-false}; then :; else ++ eval "$lt_user_locale ++ $my_cmd" ++ my_status=$? ++ eval "$lt_safe_locale" ++ if test "$my_status" -eq 0; then :; else ++ eval "(exit $my_status); $my_fail_exp" ++ fi ++ fi ++} ++ ++ ++ ++ ++ ++# func_version ++# Echo version message to standard output and exit. ++func_version () ++{ ++ $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { ++ s/^# // ++ s/^# *$// ++ s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ ++ p ++ }' < "$progpath" ++ exit $? ++} ++ ++# func_usage ++# Echo short help message to standard output and exit. ++func_usage () ++{ ++ $SED -n '/^# Usage:/,/# -h/ { ++ s/^# // ++ s/^# *$// ++ s/\$progname/'$progname'/ ++ p ++ }' < "$progpath" ++ $ECHO ++ $ECHO "run \`$progname --help | more' for full usage" ++ exit $? ++} ++ ++# func_help ++# Echo long help message to standard output and exit. ++func_help () ++{ ++ $SED -n '/^# Usage:/,/# Report bugs to/ { ++ s/^# // ++ s/^# *$// ++ s*\$progname*'$progname'* ++ s*\$host*'"$host"'* ++ s*\$SHELL*'"$SHELL"'* ++ s*\$LTCC*'"$LTCC"'* ++ s*\$LTCFLAGS*'"$LTCFLAGS"'* ++ s*\$LD*'"$LD"'* ++ s/\$with_gnu_ld/'"$with_gnu_ld"'/ ++ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ ++ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ ++ p ++ }' < "$progpath" ++ exit $? ++} ++ ++# func_missing_arg argname ++# Echo program name prefixed message to standard error and set global ++# exit_cmd. ++func_missing_arg () ++{ ++ func_error "missing argument for $1" ++ exit_cmd=exit ++} ++ ++exit_cmd=: ++ ++ ++ ++ ++ ++# Check that we have a working $ECHO. ++if test "X$1" = X--no-reexec; then ++ # Discard the --no-reexec flag, and continue. ++ shift ++elif test "X$1" = X--fallback-echo; then ++ # Avoid inline document here, it may be left over ++ : ++elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then ++ # Yippee, $ECHO works! ++ : ++else ++ # Restart under the correct shell, and then maybe $ECHO will work. ++ exec $SHELL "$progpath" --no-reexec ${1+"$@"} ++fi ++ ++if test "X$1" = X--fallback-echo; then ++ # used as fallback echo ++ shift ++ cat </dev/null 2>&1; then ++ taglist="$taglist $tagname" ++ ++ # Evaluate the configuration. Be careful to quote the path ++ # and the sed script, to avoid splitting on whitespace, but ++ # also don't use non-portable quotes within backquotes within ++ # quotes we have to do it in 2 steps: ++ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` ++ eval "$extractedcf" ++ else ++ func_error "ignoring unknown tag $tagname" ++ fi ++ ;; ++ esac ++} ++ ++# Parse options once, thoroughly. This comes as soon as possible in ++# the script to make things like `libtool --version' happen quickly. ++{ ++ ++ # Shorthand for --mode=foo, only valid as the first argument ++ case $1 in ++ clean|clea|cle|cl) ++ shift; set dummy --mode clean ${1+"$@"}; shift ++ ;; ++ compile|compil|compi|comp|com|co|c) ++ shift; set dummy --mode compile ${1+"$@"}; shift ++ ;; ++ execute|execut|execu|exec|exe|ex|e) ++ shift; set dummy --mode execute ${1+"$@"}; shift ++ ;; ++ finish|finis|fini|fin|fi|f) ++ shift; set dummy --mode finish ${1+"$@"}; shift ++ ;; ++ install|instal|insta|inst|ins|in|i) ++ shift; set dummy --mode install ${1+"$@"}; shift ++ ;; ++ link|lin|li|l) ++ shift; set dummy --mode link ${1+"$@"}; shift ++ ;; ++ uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) ++ shift; set dummy --mode uninstall ${1+"$@"}; shift ++ ;; ++ esac ++ ++ # Parse non-mode specific arguments: ++ while test "$#" -gt 0; do ++ opt="$1" ++ shift ++ ++ case $opt in ++ --config) func_config ;; ++ ++ --debug) preserve_args="$preserve_args $opt" ++ func_echo "enabling shell trace mode" ++ opt_debug='set -x' ++ $opt_debug ++ ;; ++ ++ -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break ++ execute_dlfiles="$execute_dlfiles $1" ++ shift ++ ;; ++ ++ --dry-run | -n) opt_dry_run=: ;; ++ --features) func_features ;; ++ --finish) mode="finish" ;; ++ ++ --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break ++ case $1 in ++ # Valid mode arguments: ++ clean) ;; ++ compile) ;; ++ execute) ;; ++ finish) ;; ++ install) ;; ++ link) ;; ++ relink) ;; ++ uninstall) ;; ++ ++ # Catch anything else as an error ++ *) func_error "invalid argument for $opt" ++ exit_cmd=exit ++ break ++ ;; ++ esac ++ ++ mode="$1" ++ shift ++ ;; ++ ++ --preserve-dup-deps) ++ opt_duplicate_deps=: ;; ++ ++ --quiet|--silent) preserve_args="$preserve_args $opt" ++ opt_silent=: ++ ;; ++ ++ --verbose| -v) preserve_args="$preserve_args $opt" ++ opt_silent=false ++ ;; ++ ++ --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break ++ preserve_args="$preserve_args $opt $1" ++ func_enable_tag "$1" # tagname is set here ++ shift ++ ;; ++ ++ # Separate optargs to long options: ++ -dlopen=*|--mode=*|--tag=*) ++ func_opt_split "$opt" ++ set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} ++ shift ++ ;; ++ ++ -\?|-h) func_usage ;; ++ --help) opt_help=: ;; ++ --version) func_version ;; ++ ++ -*) func_fatal_help "unrecognized option \`$opt'" ;; ++ ++ *) nonopt="$opt" ++ break ++ ;; ++ esac ++ done ++ ++ ++ case $host in ++ *cygwin* | *mingw* | *pw32* | *cegcc*) ++ # don't eliminate duplications in $postdeps and $predeps ++ opt_duplicate_compiler_generated_deps=: ++ ;; ++ *) ++ opt_duplicate_compiler_generated_deps=$opt_duplicate_deps ++ ;; ++ esac ++ ++ # Having warned about all mis-specified options, bail out if ++ # anything was wrong. ++ $exit_cmd $EXIT_FAILURE ++} ++ ++# func_check_version_match ++# Ensure that we are using m4 macros, and libtool script from the same ++# release of libtool. ++func_check_version_match () ++{ ++ if test "$package_revision" != "$macro_revision"; then ++ if test "$VERSION" != "$macro_version"; then ++ if test -z "$macro_version"; then ++ cat >&2 <<_LT_EOF ++$progname: Version mismatch error. This is $PACKAGE $VERSION, but the ++$progname: definition of this LT_INIT comes from an older release. ++$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION ++$progname: and run autoconf again. ++_LT_EOF ++ else ++ cat >&2 <<_LT_EOF ++$progname: Version mismatch error. This is $PACKAGE $VERSION, but the ++$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. ++$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION ++$progname: and run autoconf again. ++_LT_EOF ++ fi ++ else ++ cat >&2 <<_LT_EOF ++$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, ++$progname: but the definition of this LT_INIT comes from revision $macro_revision. ++$progname: You should recreate aclocal.m4 with macros from revision $package_revision ++$progname: of $PACKAGE $VERSION and run autoconf again. ++_LT_EOF ++ fi ++ ++ exit $EXIT_MISMATCH ++ fi ++} ++ ++ ++## ----------- ## ++## Main. ## ++## ----------- ## ++ ++$opt_help || { ++ # Sanity checks first: ++ func_check_version_match ++ ++ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then ++ func_fatal_configuration "not configured to build any kind of library" ++ fi ++ ++ test -z "$mode" && func_fatal_error "error: you must specify a MODE." ++ ++ ++ # Darwin sucks ++ eval std_shrext=\"$shrext_cmds\" ++ ++ ++ # Only execute mode is allowed to have -dlopen flags. ++ if test -n "$execute_dlfiles" && test "$mode" != execute; then ++ func_error "unrecognized option \`-dlopen'" ++ $ECHO "$help" 1>&2 ++ exit $EXIT_FAILURE ++ fi ++ ++ # Change the help message to a mode-specific one. ++ generic_help="$help" ++ help="Try \`$progname --help --mode=$mode' for more information." ++} ++ ++ ++# func_lalib_p file ++# True iff FILE is a libtool `.la' library or `.lo' object file. ++# This function is only a basic sanity check; it will hardly flush out ++# determined imposters. ++func_lalib_p () ++{ ++ test -f "$1" && ++ $SED -e 4q "$1" 2>/dev/null \ ++ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 ++} ++ ++# func_lalib_unsafe_p file ++# True iff FILE is a libtool `.la' library or `.lo' object file. ++# This function implements the same check as func_lalib_p without ++# resorting to external programs. To this end, it redirects stdin and ++# closes it afterwards, without saving the original file descriptor. ++# As a safety measure, use it only where a negative result would be ++# fatal anyway. Works if `file' does not exist. ++func_lalib_unsafe_p () ++{ ++ lalib_p=no ++ if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then ++ for lalib_p_l in 1 2 3 4 ++ do ++ read lalib_p_line ++ case "$lalib_p_line" in ++ \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; ++ esac ++ done ++ exec 0<&5 5<&- ++ fi ++ test "$lalib_p" = yes ++} ++ ++# func_ltwrapper_script_p file ++# True iff FILE is a libtool wrapper script ++# This function is only a basic sanity check; it will hardly flush out ++# determined imposters. ++func_ltwrapper_script_p () ++{ ++ func_lalib_p "$1" ++} ++ ++# func_ltwrapper_executable_p file ++# True iff FILE is a libtool wrapper executable ++# This function is only a basic sanity check; it will hardly flush out ++# determined imposters. ++func_ltwrapper_executable_p () ++{ ++ func_ltwrapper_exec_suffix= ++ case $1 in ++ *.exe) ;; ++ *) func_ltwrapper_exec_suffix=.exe ;; ++ esac ++ $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 ++} ++ ++# func_ltwrapper_scriptname file ++# Assumes file is an ltwrapper_executable ++# uses $file to determine the appropriate filename for a ++# temporary ltwrapper_script. ++func_ltwrapper_scriptname () ++{ ++ func_ltwrapper_scriptname_result="" ++ if func_ltwrapper_executable_p "$1"; then ++ func_dirname_and_basename "$1" "" "." ++ func_stripname '' '.exe' "$func_basename_result" ++ func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" ++ fi ++} ++ ++# func_ltwrapper_p file ++# True iff FILE is a libtool wrapper script or wrapper executable ++# This function is only a basic sanity check; it will hardly flush out ++# determined imposters. ++func_ltwrapper_p () ++{ ++ func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" ++} ++ ++ ++# func_execute_cmds commands fail_cmd ++# Execute tilde-delimited COMMANDS. ++# If FAIL_CMD is given, eval that upon failure. ++# FAIL_CMD may read-access the current command in variable CMD! ++func_execute_cmds () ++{ ++ $opt_debug ++ save_ifs=$IFS; IFS='~' ++ for cmd in $1; do ++ IFS=$save_ifs ++ eval cmd=\"$cmd\" ++ func_show_eval "$cmd" "${2-:}" ++ done ++ IFS=$save_ifs ++} ++ ++ ++# func_source file ++# Source FILE, adding directory component if necessary. ++# Note that it is not necessary on cygwin/mingw to append a dot to ++# FILE even if both FILE and FILE.exe exist: automatic-append-.exe ++# behavior happens only for exec(3), not for open(2)! Also, sourcing ++# `FILE.' does not work on cygwin managed mounts. ++func_source () ++{ ++ $opt_debug ++ case $1 in ++ */* | *\\*) . "$1" ;; ++ *) . "./$1" ;; ++ esac ++} ++ ++ ++# func_infer_tag arg ++# Infer tagged configuration to use if any are available and ++# if one wasn't chosen via the "--tag" command line option. ++# Only attempt this if the compiler in the base compile ++# command doesn't match the default compiler. ++# arg is usually of the form 'gcc ...' ++func_infer_tag () ++{ ++ $opt_debug ++ if test -n "$available_tags" && test -z "$tagname"; then ++ CC_quoted= ++ for arg in $CC; do ++ func_quote_for_eval "$arg" ++ CC_quoted="$CC_quoted $func_quote_for_eval_result" ++ done ++ case $@ in ++ # Blanks in the command may have been stripped by the calling shell, ++ # but not from the CC environment variable when configure was run. ++ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; ++ # Blanks at the start of $base_compile will cause this to fail ++ # if we don't check for them as well. ++ *) ++ for z in $available_tags; do ++ if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then ++ # Evaluate the configuration. ++ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" ++ CC_quoted= ++ for arg in $CC; do ++ # Double-quote args containing other shell metacharacters. ++ func_quote_for_eval "$arg" ++ CC_quoted="$CC_quoted $func_quote_for_eval_result" ++ done ++ case "$@ " in ++ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ++ # The compiler in the base compile command matches ++ # the one in the tagged configuration. ++ # Assume this is the tagged configuration we want. ++ tagname=$z ++ break ++ ;; ++ esac ++ fi ++ done ++ # If $tagname still isn't set, then no tagged configuration ++ # was found and let the user know that the "--tag" command ++ # line option must be used. ++ if test -z "$tagname"; then ++ func_echo "unable to infer tagged configuration" ++ func_fatal_error "specify a tag with \`--tag'" ++# else ++# func_verbose "using $tagname tagged configuration" ++ fi ++ ;; ++ esac ++ fi ++} ++ ++ ++ ++# func_write_libtool_object output_name pic_name nonpic_name ++# Create a libtool object file (analogous to a ".la" file), ++# but don't create it if we're doing a dry run. ++func_write_libtool_object () ++{ ++ write_libobj=${1} ++ if test "$build_libtool_libs" = yes; then ++ write_lobj=\'${2}\' ++ else ++ write_lobj=none ++ fi ++ ++ if test "$build_old_libs" = yes; then ++ write_oldobj=\'${3}\' ++ else ++ write_oldobj=none ++ fi ++ ++ $opt_dry_run || { ++ cat >${write_libobj}T <?"'"'"' &()|`$[]' \ ++ && func_warning "libobj name \`$libobj' may not contain shell special characters." ++ func_dirname_and_basename "$obj" "/" "" ++ objname="$func_basename_result" ++ xdir="$func_dirname_result" ++ lobj=${xdir}$objdir/$objname ++ ++ test -z "$base_compile" && \ ++ func_fatal_help "you must specify a compilation command" ++ ++ # Delete any leftover library objects. ++ if test "$build_old_libs" = yes; then ++ removelist="$obj $lobj $libobj ${libobj}T" ++ else ++ removelist="$lobj $libobj ${libobj}T" ++ fi ++ ++ # On Cygwin there's no "real" PIC flag so we must build both object types ++ case $host_os in ++ cygwin* | mingw* | pw32* | os2* | cegcc*) ++ pic_mode=default ++ ;; ++ esac ++ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then ++ # non-PIC code in shared libraries is not supported ++ pic_mode=default ++ fi ++ ++ # Calculate the filename of the output object if compiler does ++ # not support -o with -c ++ if test "$compiler_c_o" = no; then ++ output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} ++ lockfile="$output_obj.lock" ++ else ++ output_obj= ++ need_locks=no ++ lockfile= ++ fi ++ ++ # Lock this critical section if it is needed ++ # We use this script file to make the link, it avoids creating a new file ++ if test "$need_locks" = yes; then ++ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do ++ func_echo "Waiting for $lockfile to be removed" ++ sleep 2 ++ done ++ elif test "$need_locks" = warn; then ++ if test -f "$lockfile"; then ++ $ECHO "\ ++*** ERROR, $lockfile exists and contains: ++`cat $lockfile 2>/dev/null` ++ ++This indicates that another process is trying to use the same ++temporary object file, and libtool could not work around it because ++your compiler does not support \`-c' and \`-o' together. If you ++repeat this compilation, it may succeed, by chance, but you had better ++avoid parallel builds (make -j) in this platform, or get a better ++compiler." ++ ++ $opt_dry_run || $RM $removelist ++ exit $EXIT_FAILURE ++ fi ++ removelist="$removelist $output_obj" ++ $ECHO "$srcfile" > "$lockfile" ++ fi ++ ++ $opt_dry_run || $RM $removelist ++ removelist="$removelist $lockfile" ++ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 ++ ++ if test -n "$fix_srcfile_path"; then ++ eval srcfile=\"$fix_srcfile_path\" ++ fi ++ func_quote_for_eval "$srcfile" ++ qsrcfile=$func_quote_for_eval_result ++ ++ # Only build a PIC object if we are building libtool libraries. ++ if test "$build_libtool_libs" = yes; then ++ # Without this assignment, base_compile gets emptied. ++ fbsd_hideous_sh_bug=$base_compile ++ ++ if test "$pic_mode" != no; then ++ command="$base_compile $qsrcfile $pic_flag" ++ else ++ # Don't build PIC code ++ command="$base_compile $qsrcfile" ++ fi ++ ++ func_mkdir_p "$xdir$objdir" ++ ++ if test -z "$output_obj"; then ++ # Place PIC objects in $objdir ++ command="$command -o $lobj" ++ fi ++ ++ func_show_eval_locale "$command" \ ++ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' ++ ++ if test "$need_locks" = warn && ++ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then ++ $ECHO "\ ++*** ERROR, $lockfile contains: ++`cat $lockfile 2>/dev/null` ++ ++but it should contain: ++$srcfile ++ ++This indicates that another process is trying to use the same ++temporary object file, and libtool could not work around it because ++your compiler does not support \`-c' and \`-o' together. If you ++repeat this compilation, it may succeed, by chance, but you had better ++avoid parallel builds (make -j) in this platform, or get a better ++compiler." ++ ++ $opt_dry_run || $RM $removelist ++ exit $EXIT_FAILURE ++ fi ++ ++ # Just move the object if needed, then go on to compile the next one ++ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then ++ func_show_eval '$MV "$output_obj" "$lobj"' \ ++ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' ++ fi ++ ++ # Allow error messages only from the first compilation. ++ if test "$suppress_opt" = yes; then ++ suppress_output=' >/dev/null 2>&1' ++ fi ++ fi ++ ++ # Only build a position-dependent object if we build old libraries. ++ if test "$build_old_libs" = yes; then ++ if test "$pic_mode" != yes; then ++ # Don't build PIC code ++ command="$base_compile $qsrcfile$pie_flag" ++ else ++ command="$base_compile $qsrcfile $pic_flag" ++ fi ++ if test "$compiler_c_o" = yes; then ++ command="$command -o $obj" ++ fi ++ ++ # Suppress compiler output if we already did a PIC compilation. ++ command="$command$suppress_output" ++ func_show_eval_locale "$command" \ ++ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' ++ ++ if test "$need_locks" = warn && ++ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then ++ $ECHO "\ ++*** ERROR, $lockfile contains: ++`cat $lockfile 2>/dev/null` ++ ++but it should contain: ++$srcfile ++ ++This indicates that another process is trying to use the same ++temporary object file, and libtool could not work around it because ++your compiler does not support \`-c' and \`-o' together. If you ++repeat this compilation, it may succeed, by chance, but you had better ++avoid parallel builds (make -j) in this platform, or get a better ++compiler." ++ ++ $opt_dry_run || $RM $removelist ++ exit $EXIT_FAILURE ++ fi ++ ++ # Just move the object if needed ++ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then ++ func_show_eval '$MV "$output_obj" "$obj"' \ ++ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' ++ fi ++ fi ++ ++ $opt_dry_run || { ++ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" ++ ++ # Unlock the critical section if it was locked ++ if test "$need_locks" != no; then ++ removelist=$lockfile ++ $RM "$lockfile" ++ fi ++ } ++ ++ exit $EXIT_SUCCESS ++} ++ ++$opt_help || { ++test "$mode" = compile && func_mode_compile ${1+"$@"} ++} ++ ++func_mode_help () ++{ ++ # We need to display help for each of the modes. ++ case $mode in ++ "") ++ # Generic help is extracted from the usage comments ++ # at the start of this file. ++ func_help ++ ;; ++ ++ clean) ++ $ECHO \ ++"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... ++ ++Remove files from the build directory. ++ ++RM is the name of the program to use to delete files associated with each FILE ++(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed ++to RM. ++ ++If FILE is a libtool library, object or program, all the files associated ++with it are deleted. Otherwise, only FILE itself is deleted using RM." ++ ;; ++ ++ compile) ++ $ECHO \ ++"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE ++ ++Compile a source file into a libtool library object. ++ ++This mode accepts the following additional options: ++ ++ -o OUTPUT-FILE set the output file name to OUTPUT-FILE ++ -no-suppress do not suppress compiler output for multiple passes ++ -prefer-pic try to building PIC objects only ++ -prefer-non-pic try to building non-PIC objects only ++ -shared do not build a \`.o' file suitable for static linking ++ -static only build a \`.o' file suitable for static linking ++ ++COMPILE-COMMAND is a command to be used in creating a \`standard' object file ++from the given SOURCEFILE. ++ ++The output file name is determined by removing the directory component from ++SOURCEFILE, then substituting the C source code suffix \`.c' with the ++library object suffix, \`.lo'." ++ ;; ++ ++ execute) ++ $ECHO \ ++"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... ++ ++Automatically set library path, then run a program. ++ ++This mode accepts the following additional options: ++ ++ -dlopen FILE add the directory containing FILE to the library path ++ ++This mode sets the library path environment variable according to \`-dlopen' ++flags. ++ ++If any of the ARGS are libtool executable wrappers, then they are translated ++into their corresponding uninstalled binary, and any of their required library ++directories are added to the library path. ++ ++Then, COMMAND is executed, with ARGS as arguments." ++ ;; ++ ++ finish) ++ $ECHO \ ++"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... ++ ++Complete the installation of libtool libraries. ++ ++Each LIBDIR is a directory that contains libtool libraries. ++ ++The commands that this mode executes may require superuser privileges. Use ++the \`--dry-run' option if you just want to see what would be executed." ++ ;; ++ ++ install) ++ $ECHO \ ++"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... ++ ++Install executables or libraries. ++ ++INSTALL-COMMAND is the installation command. The first component should be ++either the \`install' or \`cp' program. ++ ++The following components of INSTALL-COMMAND are treated specially: ++ ++ -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation ++ ++The rest of the components are interpreted as arguments to that command (only ++BSD-compatible install options are recognized)." ++ ;; ++ ++ link) ++ $ECHO \ ++"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... ++ ++Link object files or libraries together to form another library, or to ++create an executable program. ++ ++LINK-COMMAND is a command using the C compiler that you would use to create ++a program from several object files. ++ ++The following components of LINK-COMMAND are treated specially: ++ ++ -all-static do not do any dynamic linking at all ++ -avoid-version do not add a version suffix if possible ++ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime ++ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols ++ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) ++ -export-symbols SYMFILE ++ try to export only the symbols listed in SYMFILE ++ -export-symbols-regex REGEX ++ try to export only the symbols matching REGEX ++ -LLIBDIR search LIBDIR for required installed libraries ++ -lNAME OUTPUT-FILE requires the installed library libNAME ++ -module build a library that can dlopened ++ -no-fast-install disable the fast-install mode ++ -no-install link a not-installable executable ++ -no-undefined declare that a library does not refer to external symbols ++ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects ++ -objectlist FILE Use a list of object files found in FILE to specify objects ++ -precious-files-regex REGEX ++ don't remove output files matching REGEX ++ -release RELEASE specify package release information ++ -rpath LIBDIR the created library will eventually be installed in LIBDIR ++ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries ++ -shared only do dynamic linking of libtool libraries ++ -shrext SUFFIX override the standard shared library file extension ++ -static do not do any dynamic linking of uninstalled libtool libraries ++ -static-libtool-libs ++ do not do any dynamic linking of libtool libraries ++ -version-info CURRENT[:REVISION[:AGE]] ++ specify library version info [each variable defaults to 0] ++ -weak LIBNAME declare that the target provides the LIBNAME interface ++ ++All other options (arguments beginning with \`-') are ignored. ++ ++Every other argument is treated as a filename. Files ending in \`.la' are ++treated as uninstalled libtool libraries, other files are standard or library ++object files. ++ ++If the OUTPUT-FILE ends in \`.la', then a libtool library is created, ++only library objects (\`.lo' files) may be specified, and \`-rpath' is ++required, except when creating a convenience library. ++ ++If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created ++using \`ar' and \`ranlib', or on Windows using \`lib'. ++ ++If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file ++is created, otherwise an executable program is created." ++ ;; ++ ++ uninstall) ++ $ECHO \ ++"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... ++ ++Remove libraries from an installation directory. ++ ++RM is the name of the program to use to delete files associated with each FILE ++(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed ++to RM. ++ ++If FILE is a libtool library, all the files associated with it are deleted. ++Otherwise, only FILE itself is deleted using RM." ++ ;; ++ ++ *) ++ func_fatal_help "invalid operation mode \`$mode'" ++ ;; ++ esac ++ ++ $ECHO ++ $ECHO "Try \`$progname --help' for more information about other modes." ++ ++ exit $? ++} ++ ++ # Now that we've collected a possible --mode arg, show help if necessary ++ $opt_help && func_mode_help ++ ++ ++# func_mode_execute arg... ++func_mode_execute () ++{ ++ $opt_debug ++ # The first argument is the command name. ++ cmd="$nonopt" ++ test -z "$cmd" && \ ++ func_fatal_help "you must specify a COMMAND" ++ ++ # Handle -dlopen flags immediately. ++ for file in $execute_dlfiles; do ++ test -f "$file" \ ++ || func_fatal_help "\`$file' is not a file" ++ ++ dir= ++ case $file in ++ *.la) ++ # Check to see that this really is a libtool archive. ++ func_lalib_unsafe_p "$file" \ ++ || func_fatal_help "\`$lib' is not a valid libtool archive" ++ ++ # Read the libtool library. ++ dlname= ++ library_names= ++ func_source "$file" ++ ++ # Skip this library if it cannot be dlopened. ++ if test -z "$dlname"; then ++ # Warn if it was a shared library. ++ test -n "$library_names" && \ ++ func_warning "\`$file' was not linked with \`-export-dynamic'" ++ continue ++ fi ++ ++ func_dirname "$file" "" "." ++ dir="$func_dirname_result" ++ ++ if test -f "$dir/$objdir/$dlname"; then ++ dir="$dir/$objdir" ++ else ++ if test ! -f "$dir/$dlname"; then ++ func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" ++ fi ++ fi ++ ;; ++ ++ *.lo) ++ # Just add the directory containing the .lo file. ++ func_dirname "$file" "" "." ++ dir="$func_dirname_result" ++ ;; ++ ++ *) ++ func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" ++ continue ++ ;; ++ esac ++ ++ # Get the absolute pathname. ++ absdir=`cd "$dir" && pwd` ++ test -n "$absdir" && dir="$absdir" ++ ++ # Now add the directory to shlibpath_var. ++ if eval "test -z \"\$$shlibpath_var\""; then ++ eval "$shlibpath_var=\"\$dir\"" ++ else ++ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" ++ fi ++ done ++ ++ # This variable tells wrapper scripts just to set shlibpath_var ++ # rather than running their programs. ++ libtool_execute_magic="$magic" ++ ++ # Check if any of the arguments is a wrapper script. ++ args= ++ for file ++ do ++ case $file in ++ -*) ;; ++ *) ++ # Do a test to see if this is really a libtool program. ++ if func_ltwrapper_script_p "$file"; then ++ func_source "$file" ++ # Transform arg to wrapped name. ++ file="$progdir/$program" ++ elif func_ltwrapper_executable_p "$file"; then ++ func_ltwrapper_scriptname "$file" ++ func_source "$func_ltwrapper_scriptname_result" ++ # Transform arg to wrapped name. ++ file="$progdir/$program" ++ fi ++ ;; ++ esac ++ # Quote arguments (to preserve shell metacharacters). ++ func_quote_for_eval "$file" ++ args="$args $func_quote_for_eval_result" ++ done ++ ++ if test "X$opt_dry_run" = Xfalse; then ++ if test -n "$shlibpath_var"; then ++ # Export the shlibpath_var. ++ eval "export $shlibpath_var" ++ fi ++ ++ # Restore saved environment variables ++ for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES ++ do ++ eval "if test \"\${save_$lt_var+set}\" = set; then ++ $lt_var=\$save_$lt_var; export $lt_var ++ else ++ $lt_unset $lt_var ++ fi" ++ done ++ ++ # Now prepare to actually exec the command. ++ exec_cmd="\$cmd$args" ++ else ++ # Display what would be done. ++ if test -n "$shlibpath_var"; then ++ eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" ++ $ECHO "export $shlibpath_var" ++ fi ++ $ECHO "$cmd$args" ++ exit $EXIT_SUCCESS ++ fi ++} ++ ++test "$mode" = execute && func_mode_execute ${1+"$@"} ++ ++ ++# func_mode_finish arg... ++func_mode_finish () ++{ ++ $opt_debug ++ libdirs="$nonopt" ++ admincmds= ++ ++ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then ++ for dir ++ do ++ libdirs="$libdirs $dir" ++ done ++ ++ for libdir in $libdirs; do ++ if test -n "$finish_cmds"; then ++ # Do each command in the finish commands. ++ func_execute_cmds "$finish_cmds" 'admincmds="$admincmds ++'"$cmd"'"' ++ fi ++ if test -n "$finish_eval"; then ++ # Do the single finish_eval. ++ eval cmds=\"$finish_eval\" ++ $opt_dry_run || eval "$cmds" || admincmds="$admincmds ++ $cmds" ++ fi ++ done ++ fi ++ ++ # Exit here if they wanted silent mode. ++ $opt_silent && exit $EXIT_SUCCESS ++ ++ $ECHO "X----------------------------------------------------------------------" | $Xsed ++ $ECHO "Libraries have been installed in:" ++ for libdir in $libdirs; do ++ $ECHO " $libdir" ++ done ++ $ECHO ++ $ECHO "If you ever happen to want to link against installed libraries" ++ $ECHO "in a given directory, LIBDIR, you must either use libtool, and" ++ $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" ++ $ECHO "flag during linking and do at least one of the following:" ++ if test -n "$shlibpath_var"; then ++ $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" ++ $ECHO " during execution" ++ fi ++ if test -n "$runpath_var"; then ++ $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" ++ $ECHO " during linking" ++ fi ++ if test -n "$hardcode_libdir_flag_spec"; then ++ libdir=LIBDIR ++ eval flag=\"$hardcode_libdir_flag_spec\" ++ ++ $ECHO " - use the \`$flag' linker flag" ++ fi ++ if test -n "$admincmds"; then ++ $ECHO " - have your system administrator run these commands:$admincmds" ++ fi ++ if test -f /etc/ld.so.conf; then ++ $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" ++ fi ++ $ECHO ++ ++ $ECHO "See any operating system documentation about shared libraries for" ++ case $host in ++ solaris2.[6789]|solaris2.1[0-9]) ++ $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" ++ $ECHO "pages." ++ ;; ++ *) ++ $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." ++ ;; ++ esac ++ $ECHO "X----------------------------------------------------------------------" | $Xsed ++ exit $EXIT_SUCCESS ++} ++ ++test "$mode" = finish && func_mode_finish ${1+"$@"} ++ ++ ++# func_mode_install arg... ++func_mode_install () ++{ ++ $opt_debug ++ # There may be an optional sh(1) argument at the beginning of ++ # install_prog (especially on Windows NT). ++ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || ++ # Allow the use of GNU shtool's install command. ++ $ECHO "X$nonopt" | $GREP shtool >/dev/null; then ++ # Aesthetically quote it. ++ func_quote_for_eval "$nonopt" ++ install_prog="$func_quote_for_eval_result " ++ arg=$1 ++ shift ++ else ++ install_prog= ++ arg=$nonopt ++ fi ++ ++ # The real first argument should be the name of the installation program. ++ # Aesthetically quote it. ++ func_quote_for_eval "$arg" ++ install_prog="$install_prog$func_quote_for_eval_result" ++ ++ # We need to accept at least all the BSD install flags. ++ dest= ++ files= ++ opts= ++ prev= ++ install_type= ++ isdir=no ++ stripme= ++ for arg ++ do ++ if test -n "$dest"; then ++ files="$files $dest" ++ dest=$arg ++ continue ++ fi ++ ++ case $arg in ++ -d) isdir=yes ;; ++ -f) ++ case " $install_prog " in ++ *[\\\ /]cp\ *) ;; ++ *) prev=$arg ;; ++ esac ++ ;; ++ -g | -m | -o) ++ prev=$arg ++ ;; ++ -s) ++ stripme=" -s" ++ continue ++ ;; ++ -*) ++ ;; ++ *) ++ # If the previous option needed an argument, then skip it. ++ if test -n "$prev"; then ++ prev= ++ else ++ dest=$arg ++ continue ++ fi ++ ;; ++ esac ++ ++ # Aesthetically quote the argument. ++ func_quote_for_eval "$arg" ++ install_prog="$install_prog $func_quote_for_eval_result" ++ done ++ ++ test -z "$install_prog" && \ ++ func_fatal_help "you must specify an install program" ++ ++ test -n "$prev" && \ ++ func_fatal_help "the \`$prev' option requires an argument" ++ ++ if test -z "$files"; then ++ if test -z "$dest"; then ++ func_fatal_help "no file or destination specified" ++ else ++ func_fatal_help "you must specify a destination" ++ fi ++ fi ++ ++ # Strip any trailing slash from the destination. ++ func_stripname '' '/' "$dest" ++ dest=$func_stripname_result ++ ++ # Check to see that the destination is a directory. ++ test -d "$dest" && isdir=yes ++ if test "$isdir" = yes; then ++ destdir="$dest" ++ destname= ++ else ++ func_dirname_and_basename "$dest" "" "." ++ destdir="$func_dirname_result" ++ destname="$func_basename_result" ++ ++ # Not a directory, so check to see that there is only one file specified. ++ set dummy $files; shift ++ test "$#" -gt 1 && \ ++ func_fatal_help "\`$dest' is not a directory" ++ fi ++ case $destdir in ++ [\\/]* | [A-Za-z]:[\\/]*) ;; ++ *) ++ for file in $files; do ++ case $file in ++ *.lo) ;; ++ *) ++ func_fatal_help "\`$destdir' must be an absolute directory name" ++ ;; ++ esac ++ done ++ ;; ++ esac ++ ++ # This variable tells wrapper scripts just to set variables rather ++ # than running their programs. ++ libtool_install_magic="$magic" ++ ++ staticlibs= ++ future_libdirs= ++ current_libdirs= ++ for file in $files; do ++ ++ # Do each installation. ++ case $file in ++ *.$libext) ++ # Do the static libraries later. ++ staticlibs="$staticlibs $file" ++ ;; ++ ++ *.la) ++ # Check to see that this really is a libtool archive. ++ func_lalib_unsafe_p "$file" \ ++ || func_fatal_help "\`$file' is not a valid libtool archive" ++ ++ library_names= ++ old_library= ++ relink_command= ++ func_source "$file" ++ ++ # Add the libdir to current_libdirs if it is the destination. ++ if test "X$destdir" = "X$libdir"; then ++ case "$current_libdirs " in ++ *" $libdir "*) ;; ++ *) current_libdirs="$current_libdirs $libdir" ;; ++ esac ++ else ++ # Note the libdir as a future libdir. ++ case "$future_libdirs " in ++ *" $libdir "*) ;; ++ *) future_libdirs="$future_libdirs $libdir" ;; ++ esac ++ fi ++ ++ func_dirname "$file" "/" "" ++ dir="$func_dirname_result" ++ dir="$dir$objdir" ++ ++ if test -n "$relink_command"; then ++ # Determine the prefix the user has applied to our future dir. ++ inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` ++ ++ # Don't allow the user to place us outside of our expected ++ # location b/c this prevents finding dependent libraries that ++ # are installed to the same prefix. ++ # At present, this check doesn't affect windows .dll's that ++ # are installed into $libdir/../bin (currently, that works fine) ++ # but it's something to keep an eye on. ++ test "$inst_prefix_dir" = "$destdir" && \ ++ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" ++ ++ if test -n "$inst_prefix_dir"; then ++ # Stick the inst_prefix_dir data into the link command. ++ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` ++ else ++ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` ++ fi ++ ++ func_warning "relinking \`$file'" ++ func_show_eval "$relink_command" \ ++ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' ++ fi ++ ++ # See the names of the shared library. ++ set dummy $library_names; shift ++ if test -n "$1"; then ++ realname="$1" ++ shift ++ ++ srcname="$realname" ++ test -n "$relink_command" && srcname="$realname"T ++ ++ # Install the shared library and build the symlinks. ++ func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ ++ 'exit $?' ++ tstripme="$stripme" ++ case $host_os in ++ cygwin* | mingw* | pw32* | cegcc*) ++ case $realname in ++ *.dll.a) ++ tstripme="" ++ ;; ++ esac ++ ;; ++ esac ++ if test -n "$tstripme" && test -n "$striplib"; then ++ func_show_eval "$striplib $destdir/$realname" 'exit $?' ++ fi ++ ++ if test "$#" -gt 0; then ++ # Delete the old symlinks, and create new ones. ++ # Try `ln -sf' first, because the `ln' binary might depend on ++ # the symlink we replace! Solaris /bin/ln does not understand -f, ++ # so we also need to try rm && ln -s. ++ for linkname ++ do ++ test "$linkname" != "$realname" \ ++ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" ++ done ++ fi ++ ++ # Do each command in the postinstall commands. ++ lib="$destdir/$realname" ++ func_execute_cmds "$postinstall_cmds" 'exit $?' ++ fi ++ ++ # Install the pseudo-library for information purposes. ++ func_basename "$file" ++ name="$func_basename_result" ++ instname="$dir/$name"i ++ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' ++ ++ # Maybe install the static library, too. ++ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ++ ;; ++ ++ *.lo) ++ # Install (i.e. copy) a libtool object. ++ ++ # Figure out destination file name, if it wasn't already specified. ++ if test -n "$destname"; then ++ destfile="$destdir/$destname" ++ else ++ func_basename "$file" ++ destfile="$func_basename_result" ++ destfile="$destdir/$destfile" ++ fi ++ ++ # Deduce the name of the destination old-style object file. ++ case $destfile in ++ *.lo) ++ func_lo2o "$destfile" ++ staticdest=$func_lo2o_result ++ ;; ++ *.$objext) ++ staticdest="$destfile" ++ destfile= ++ ;; ++ *) ++ func_fatal_help "cannot copy a libtool object to \`$destfile'" ++ ;; ++ esac ++ ++ # Install the libtool object if requested. ++ test -n "$destfile" && \ ++ func_show_eval "$install_prog $file $destfile" 'exit $?' ++ ++ # Install the old object if enabled. ++ if test "$build_old_libs" = yes; then ++ # Deduce the name of the old-style object file. ++ func_lo2o "$file" ++ staticobj=$func_lo2o_result ++ func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' ++ fi ++ exit $EXIT_SUCCESS ++ ;; ++ ++ *) ++ # Figure out destination file name, if it wasn't already specified. ++ if test -n "$destname"; then ++ destfile="$destdir/$destname" ++ else ++ func_basename "$file" ++ destfile="$func_basename_result" ++ destfile="$destdir/$destfile" ++ fi ++ ++ # If the file is missing, and there is a .exe on the end, strip it ++ # because it is most likely a libtool script we actually want to ++ # install ++ stripped_ext="" ++ case $file in ++ *.exe) ++ if test ! -f "$file"; then ++ func_stripname '' '.exe' "$file" ++ file=$func_stripname_result ++ stripped_ext=".exe" ++ fi ++ ;; ++ esac ++ ++ # Do a test to see if this is really a libtool program. ++ case $host in ++ *cygwin* | *mingw*) ++ if func_ltwrapper_executable_p "$file"; then ++ func_ltwrapper_scriptname "$file" ++ wrapper=$func_ltwrapper_scriptname_result ++ else ++ func_stripname '' '.exe' "$file" ++ wrapper=$func_stripname_result ++ fi ++ ;; ++ *) ++ wrapper=$file ++ ;; ++ esac ++ if func_ltwrapper_script_p "$wrapper"; then ++ notinst_deplibs= ++ relink_command= ++ ++ func_source "$wrapper" ++ ++ # Check the variables that should have been set. ++ test -z "$generated_by_libtool_version" && \ ++ func_fatal_error "invalid libtool wrapper script \`$wrapper'" ++ ++ finalize=yes ++ for lib in $notinst_deplibs; do ++ # Check to see that each library is installed. ++ libdir= ++ if test -f "$lib"; then ++ func_source "$lib" ++ fi ++ libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test ++ if test -n "$libdir" && test ! -f "$libfile"; then ++ func_warning "\`$lib' has not been installed in \`$libdir'" ++ finalize=no ++ fi ++ done ++ ++ relink_command= ++ func_source "$wrapper" ++ ++ outputname= ++ if test "$fast_install" = no && test -n "$relink_command"; then ++ $opt_dry_run || { ++ if test "$finalize" = yes; then ++ tmpdir=`func_mktempdir` ++ func_basename "$file$stripped_ext" ++ file="$func_basename_result" ++ outputname="$tmpdir/$file" ++ # Replace the output file specification. ++ relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` ++ ++ $opt_silent || { ++ func_quote_for_expand "$relink_command" ++ eval "func_echo $func_quote_for_expand_result" ++ } ++ if eval "$relink_command"; then : ++ else ++ func_error "error: relink \`$file' with the above command before installing it" ++ $opt_dry_run || ${RM}r "$tmpdir" ++ continue ++ fi ++ file="$outputname" ++ else ++ func_warning "cannot relink \`$file'" ++ fi ++ } ++ else ++ # Install the binary that we compiled earlier. ++ file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` ++ fi ++ fi ++ ++ # remove .exe since cygwin /usr/bin/install will append another ++ # one anyway ++ case $install_prog,$host in ++ */usr/bin/install*,*cygwin*) ++ case $file:$destfile in ++ *.exe:*.exe) ++ # this is ok ++ ;; ++ *.exe:*) ++ destfile=$destfile.exe ++ ;; ++ *:*.exe) ++ func_stripname '' '.exe' "$destfile" ++ destfile=$func_stripname_result ++ ;; ++ esac ++ ;; ++ esac ++ func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' ++ $opt_dry_run || if test -n "$outputname"; then ++ ${RM}r "$tmpdir" ++ fi ++ ;; ++ esac ++ done ++ ++ for file in $staticlibs; do ++ func_basename "$file" ++ name="$func_basename_result" ++ ++ # Set up the ranlib parameters. ++ oldlib="$destdir/$name" ++ ++ func_show_eval "$install_prog \$file \$oldlib" 'exit $?' ++ ++ if test -n "$stripme" && test -n "$old_striplib"; then ++ func_show_eval "$old_striplib $oldlib" 'exit $?' ++ fi ++ ++ # Do each command in the postinstall commands. ++ func_execute_cmds "$old_postinstall_cmds" 'exit $?' ++ done ++ ++ test -n "$future_libdirs" && \ ++ func_warning "remember to run \`$progname --finish$future_libdirs'" ++ ++ if test -n "$current_libdirs"; then ++ # Maybe just do a dry run. ++ $opt_dry_run && current_libdirs=" -n$current_libdirs" ++ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' ++ else ++ exit $EXIT_SUCCESS ++ fi ++} ++ ++test "$mode" = install && func_mode_install ${1+"$@"} ++ ++ ++# func_generate_dlsyms outputname originator pic_p ++# Extract symbols from dlprefiles and create ${outputname}S.o with ++# a dlpreopen symbol table. ++func_generate_dlsyms () ++{ ++ $opt_debug ++ my_outputname="$1" ++ my_originator="$2" ++ my_pic_p="${3-no}" ++ my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` ++ my_dlsyms= ++ ++ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then ++ if test -n "$NM" && test -n "$global_symbol_pipe"; then ++ my_dlsyms="${my_outputname}S.c" ++ else ++ func_error "not configured to extract global symbols from dlpreopened files" ++ fi ++ fi ++ ++ if test -n "$my_dlsyms"; then ++ case $my_dlsyms in ++ "") ;; ++ *.c) ++ # Discover the nlist of each of the dlfiles. ++ nlist="$output_objdir/${my_outputname}.nm" ++ ++ func_show_eval "$RM $nlist ${nlist}S ${nlist}T" ++ ++ # Parse the name list into a source file. ++ func_verbose "creating $output_objdir/$my_dlsyms" ++ ++ $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ ++/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ ++/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ ++ ++#ifdef __cplusplus ++extern \"C\" { ++#endif ++ ++/* External symbol declarations for the compiler. */\ ++" ++ ++ if test "$dlself" = yes; then ++ func_verbose "generating symbol list for \`$output'" ++ ++ $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" ++ ++ # Add our own program objects to the symbol list. ++ progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` ++ for progfile in $progfiles; do ++ func_verbose "extracting global C symbols from \`$progfile'" ++ $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" ++ done ++ ++ if test -n "$exclude_expsyms"; then ++ $opt_dry_run || { ++ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' ++ eval '$MV "$nlist"T "$nlist"' ++ } ++ fi ++ ++ if test -n "$export_symbols_regex"; then ++ $opt_dry_run || { ++ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' ++ eval '$MV "$nlist"T "$nlist"' ++ } ++ fi ++ ++ # Prepare the list of exported symbols ++ if test -z "$export_symbols"; then ++ export_symbols="$output_objdir/$outputname.exp" ++ $opt_dry_run || { ++ $RM $export_symbols ++ eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' ++ case $host in ++ *cygwin* | *mingw* | *cegcc* ) ++ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' ++ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ++ ;; ++ esac ++ } ++ else ++ $opt_dry_run || { ++ eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' ++ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' ++ eval '$MV "$nlist"T "$nlist"' ++ case $host in ++ *cygwin | *mingw* | *cegcc* ) ++ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' ++ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ++ ;; ++ esac ++ } ++ fi ++ fi ++ ++ for dlprefile in $dlprefiles; do ++ func_verbose "extracting global C symbols from \`$dlprefile'" ++ func_basename "$dlprefile" ++ name="$func_basename_result" ++ $opt_dry_run || { ++ eval '$ECHO ": $name " >> "$nlist"' ++ eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" ++ } ++ done ++ ++ $opt_dry_run || { ++ # Make sure we have at least an empty file. ++ test -f "$nlist" || : > "$nlist" ++ ++ if test -n "$exclude_expsyms"; then ++ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T ++ $MV "$nlist"T "$nlist" ++ fi ++ ++ # Try sorting and uniquifying the output. ++ if $GREP -v "^: " < "$nlist" | ++ if sort -k 3 /dev/null 2>&1; then ++ sort -k 3 ++ else ++ sort +2 ++ fi | ++ uniq > "$nlist"S; then ++ : ++ else ++ $GREP -v "^: " < "$nlist" > "$nlist"S ++ fi ++ ++ if test -f "$nlist"S; then ++ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' ++ else ++ $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" ++ fi ++ ++ $ECHO >> "$output_objdir/$my_dlsyms" "\ ++ ++/* The mapping between symbol names and symbols. */ ++typedef struct { ++ const char *name; ++ void *address; ++} lt_dlsymlist; ++" ++ case $host in ++ *cygwin* | *mingw* | *cegcc* ) ++ $ECHO >> "$output_objdir/$my_dlsyms" "\ ++/* DATA imports from DLLs on WIN32 con't be const, because ++ runtime relocations are performed -- see ld's documentation ++ on pseudo-relocs. */" ++ lt_dlsym_const= ;; ++ *osf5*) ++ echo >> "$output_objdir/$my_dlsyms" "\ ++/* This system does not cope well with relocations in const data */" ++ lt_dlsym_const= ;; ++ *) ++ lt_dlsym_const=const ;; ++ esac ++ ++ $ECHO >> "$output_objdir/$my_dlsyms" "\ ++extern $lt_dlsym_const lt_dlsymlist ++lt_${my_prefix}_LTX_preloaded_symbols[]; ++$lt_dlsym_const lt_dlsymlist ++lt_${my_prefix}_LTX_preloaded_symbols[] = ++{\ ++ { \"$my_originator\", (void *) 0 }," ++ ++ case $need_lib_prefix in ++ no) ++ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ++ ;; ++ *) ++ eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ++ ;; ++ esac ++ $ECHO >> "$output_objdir/$my_dlsyms" "\ ++ {0, (void *) 0} ++}; ++ ++/* This works around a problem in FreeBSD linker */ ++#ifdef FREEBSD_WORKAROUND ++static const void *lt_preloaded_setup() { ++ return lt_${my_prefix}_LTX_preloaded_symbols; ++} ++#endif ++ ++#ifdef __cplusplus ++} ++#endif\ ++" ++ } # !$opt_dry_run ++ ++ pic_flag_for_symtable= ++ case "$compile_command " in ++ *" -static "*) ;; ++ *) ++ case $host in ++ # compiling the symbol table file with pic_flag works around ++ # a FreeBSD bug that causes programs to crash when -lm is ++ # linked before any other PIC object. But we must not use ++ # pic_flag when linking with -static. The problem exists in ++ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. ++ *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) ++ pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; ++ *-*-hpux*) ++ pic_flag_for_symtable=" $pic_flag" ;; ++ *) ++ if test "X$my_pic_p" != Xno; then ++ pic_flag_for_symtable=" $pic_flag" ++ fi ++ ;; ++ esac ++ ;; ++ esac ++ symtab_cflags= ++ for arg in $LTCFLAGS; do ++ case $arg in ++ -pie | -fpie | -fPIE) ;; ++ *) symtab_cflags="$symtab_cflags $arg" ;; ++ esac ++ done ++ ++ # Now compile the dynamic symbol file. ++ func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' ++ ++ # Clean up the generated files. ++ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' ++ ++ # Transform the symbol file into the correct name. ++ symfileobj="$output_objdir/${my_outputname}S.$objext" ++ case $host in ++ *cygwin* | *mingw* | *cegcc* ) ++ if test -f "$output_objdir/$my_outputname.def"; then ++ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` ++ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` ++ else ++ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` ++ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` ++ fi ++ ;; ++ *) ++ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` ++ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` ++ ;; ++ esac ++ ;; ++ *) ++ func_fatal_error "unknown suffix for \`$my_dlsyms'" ++ ;; ++ esac ++ else ++ # We keep going just in case the user didn't refer to ++ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe ++ # really was required. ++ ++ # Nullify the symbol file. ++ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` ++ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` ++ fi ++} ++ ++# func_win32_libid arg ++# return the library type of file 'arg' ++# ++# Need a lot of goo to handle *both* DLLs and import libs ++# Has to be a shell function in order to 'eat' the argument ++# that is supplied when $file_magic_command is called. ++func_win32_libid () ++{ ++ $opt_debug ++ win32_libid_type="unknown" ++ win32_fileres=`file -L $1 2>/dev/null` ++ case $win32_fileres in ++ *ar\ archive\ import\ library*) # definitely import ++ win32_libid_type="x86 archive import" ++ ;; ++ *ar\ archive*) # could be an import, or static ++ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | ++ $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then ++ win32_nmres=`eval $NM -f posix -A $1 | ++ $SED -n -e ' ++ 1,100{ ++ / I /{ ++ s,.*,import, ++ p ++ q ++ } ++ }'` ++ case $win32_nmres in ++ import*) win32_libid_type="x86 archive import";; ++ *) win32_libid_type="x86 archive static";; ++ esac ++ fi ++ ;; ++ *DLL*) ++ win32_libid_type="x86 DLL" ++ ;; ++ *executable*) # but shell scripts are "executable" too... ++ case $win32_fileres in ++ *MS\ Windows\ PE\ Intel*) ++ win32_libid_type="x86 DLL" ++ ;; ++ esac ++ ;; ++ esac ++ $ECHO "$win32_libid_type" ++} ++ ++ ++ ++# func_extract_an_archive dir oldlib ++func_extract_an_archive () ++{ ++ $opt_debug ++ f_ex_an_ar_dir="$1"; shift ++ f_ex_an_ar_oldlib="$1" ++ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' ++ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then ++ : ++ else ++ func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" ++ fi ++} ++ ++ ++# func_extract_archives gentop oldlib ... ++func_extract_archives () ++{ ++ $opt_debug ++ my_gentop="$1"; shift ++ my_oldlibs=${1+"$@"} ++ my_oldobjs="" ++ my_xlib="" ++ my_xabs="" ++ my_xdir="" ++ ++ for my_xlib in $my_oldlibs; do ++ # Extract the objects. ++ case $my_xlib in ++ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; ++ *) my_xabs=`pwd`"/$my_xlib" ;; ++ esac ++ func_basename "$my_xlib" ++ my_xlib="$func_basename_result" ++ my_xlib_u=$my_xlib ++ while :; do ++ case " $extracted_archives " in ++ *" $my_xlib_u "*) ++ func_arith $extracted_serial + 1 ++ extracted_serial=$func_arith_result ++ my_xlib_u=lt$extracted_serial-$my_xlib ;; ++ *) break ;; ++ esac ++ done ++ extracted_archives="$extracted_archives $my_xlib_u" ++ my_xdir="$my_gentop/$my_xlib_u" ++ ++ func_mkdir_p "$my_xdir" ++ ++ case $host in ++ *-darwin*) ++ func_verbose "Extracting $my_xabs" ++ # Do not bother doing anything if just a dry run ++ $opt_dry_run || { ++ darwin_orig_dir=`pwd` ++ cd $my_xdir || exit $? ++ darwin_archive=$my_xabs ++ darwin_curdir=`pwd` ++ darwin_base_archive=`basename "$darwin_archive"` ++ darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` ++ if test -n "$darwin_arches"; then ++ darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` ++ darwin_arch= ++ func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" ++ for darwin_arch in $darwin_arches ; do ++ func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" ++ $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" ++ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" ++ func_extract_an_archive "`pwd`" "${darwin_base_archive}" ++ cd "$darwin_curdir" ++ $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" ++ done # $darwin_arches ++ ## Okay now we've a bunch of thin objects, gotta fatten them up :) ++ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` ++ darwin_file= ++ darwin_files= ++ for darwin_file in $darwin_filelist; do ++ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` ++ $LIPO -create -output "$darwin_file" $darwin_files ++ done # $darwin_filelist ++ $RM -rf unfat-$$ ++ cd "$darwin_orig_dir" ++ else ++ cd $darwin_orig_dir ++ func_extract_an_archive "$my_xdir" "$my_xabs" ++ fi # $darwin_arches ++ } # !$opt_dry_run ++ ;; ++ *) ++ func_extract_an_archive "$my_xdir" "$my_xabs" ++ ;; ++ esac ++ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` ++ done ++ ++ func_extract_archives_result="$my_oldobjs" ++} ++ ++ ++ ++# func_emit_wrapper_part1 [arg=no] ++# ++# Emit the first part of a libtool wrapper script on stdout. ++# For more information, see the description associated with ++# func_emit_wrapper(), below. ++func_emit_wrapper_part1 () ++{ ++ func_emit_wrapper_part1_arg1=no ++ if test -n "$1" ; then ++ func_emit_wrapper_part1_arg1=$1 ++ fi ++ ++ $ECHO "\ ++#! $SHELL ++ ++# $output - temporary wrapper script for $objdir/$outputname ++# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION ++# ++# The $output program cannot be directly executed until all the libtool ++# libraries that it depends on are installed. ++# ++# This wrapper script should never be moved out of the build directory. ++# If it is, it will not operate correctly. ++ ++# Sed substitution that helps us do robust quoting. It backslashifies ++# metacharacters that are still active within double-quoted strings. ++Xsed='${SED} -e 1s/^X//' ++sed_quote_subst='$sed_quote_subst' ++ ++# Be Bourne compatible ++if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '\${1+\"\$@\"}'='\"\$@\"' ++ setopt NO_GLOB_SUBST ++else ++ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac ++fi ++BIN_SH=xpg4; export BIN_SH # for Tru64 ++DUALCASE=1; export DUALCASE # for MKS sh ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++relink_command=\"$relink_command\" ++ ++# This environment variable determines our operation mode. ++if test \"\$libtool_install_magic\" = \"$magic\"; then ++ # install mode needs the following variables: ++ generated_by_libtool_version='$macro_version' ++ notinst_deplibs='$notinst_deplibs' ++else ++ # When we are sourced in execute mode, \$file and \$ECHO are already set. ++ if test \"\$libtool_execute_magic\" != \"$magic\"; then ++ ECHO=\"$qecho\" ++ file=\"\$0\" ++ # Make sure echo works. ++ if test \"X\$1\" = X--no-reexec; then ++ # Discard the --no-reexec flag, and continue. ++ shift ++ elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then ++ # Yippee, \$ECHO works! ++ : ++ else ++ # Restart under the correct shell, and then maybe \$ECHO will work. ++ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} ++ fi ++ fi\ ++" ++ $ECHO "\ ++ ++ # Find the directory that this script lives in. ++ thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` ++ test \"x\$thisdir\" = \"x\$file\" && thisdir=. ++ ++ # Follow symbolic links until we get to the real thisdir. ++ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` ++ while test -n \"\$file\"; do ++ destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` ++ ++ # If there was a directory component, then change thisdir. ++ if test \"x\$destdir\" != \"x\$file\"; then ++ case \"\$destdir\" in ++ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; ++ *) thisdir=\"\$thisdir/\$destdir\" ;; ++ esac ++ fi ++ ++ file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` ++ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` ++ done ++" ++} ++# end: func_emit_wrapper_part1 ++ ++# func_emit_wrapper_part2 [arg=no] ++# ++# Emit the second part of a libtool wrapper script on stdout. ++# For more information, see the description associated with ++# func_emit_wrapper(), below. ++func_emit_wrapper_part2 () ++{ ++ func_emit_wrapper_part2_arg1=no ++ if test -n "$1" ; then ++ func_emit_wrapper_part2_arg1=$1 ++ fi ++ ++ $ECHO "\ ++ ++ # Usually 'no', except on cygwin/mingw when embedded into ++ # the cwrapper. ++ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 ++ if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then ++ # special case for '.' ++ if test \"\$thisdir\" = \".\"; then ++ thisdir=\`pwd\` ++ fi ++ # remove .libs from thisdir ++ case \"\$thisdir\" in ++ *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; ++ $objdir ) thisdir=. ;; ++ esac ++ fi ++ ++ # Try to get the absolute directory name. ++ absdir=\`cd \"\$thisdir\" && pwd\` ++ test -n \"\$absdir\" && thisdir=\"\$absdir\" ++" ++ ++ if test "$fast_install" = yes; then ++ $ECHO "\ ++ program=lt-'$outputname'$exeext ++ progdir=\"\$thisdir/$objdir\" ++ ++ if test ! -f \"\$progdir/\$program\" || ++ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ ++ test \"X\$file\" != \"X\$progdir/\$program\"; }; then ++ ++ file=\"\$\$-\$program\" ++ ++ if test ! -d \"\$progdir\"; then ++ $MKDIR \"\$progdir\" ++ else ++ $RM \"\$progdir/\$file\" ++ fi" ++ ++ $ECHO "\ ++ ++ # relink executable if necessary ++ if test -n \"\$relink_command\"; then ++ if relink_command_output=\`eval \$relink_command 2>&1\`; then : ++ else ++ $ECHO \"\$relink_command_output\" >&2 ++ $RM \"\$progdir/\$file\" ++ exit 1 ++ fi ++ fi ++ ++ $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || ++ { $RM \"\$progdir/\$program\"; ++ $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } ++ $RM \"\$progdir/\$file\" ++ fi" ++ else ++ $ECHO "\ ++ program='$outputname' ++ progdir=\"\$thisdir/$objdir\" ++" ++ fi ++ ++ $ECHO "\ ++ ++ if test -f \"\$progdir/\$program\"; then" ++ ++ # Export our shlibpath_var if we have one. ++ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then ++ $ECHO "\ ++ # Add our own library path to $shlibpath_var ++ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" ++ ++ # Some systems cannot cope with colon-terminated $shlibpath_var ++ # The second colon is a workaround for a bug in BeOS R4 sed ++ $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` ++ ++ export $shlibpath_var ++" ++ fi ++ ++ # fixup the dll searchpath if we need to. ++ if test -n "$dllsearchpath"; then ++ $ECHO "\ ++ # Add the dll search path components to the executable PATH ++ PATH=$dllsearchpath:\$PATH ++" ++ fi ++ ++ $ECHO "\ ++ if test \"\$libtool_execute_magic\" != \"$magic\"; then ++ # Run the actual program with our arguments. ++" ++ case $host in ++ # Backslashes separate directories on plain windows ++ *-*-mingw | *-*-os2* | *-cegcc*) ++ $ECHO "\ ++ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} ++" ++ ;; ++ ++ *) ++ $ECHO "\ ++ exec \"\$progdir/\$program\" \${1+\"\$@\"} ++" ++ ;; ++ esac ++ $ECHO "\ ++ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 ++ exit 1 ++ fi ++ else ++ # The program doesn't exist. ++ \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 ++ \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 ++ $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 ++ exit 1 ++ fi ++fi\ ++" ++} ++# end: func_emit_wrapper_part2 ++ ++ ++# func_emit_wrapper [arg=no] ++# ++# Emit a libtool wrapper script on stdout. ++# Don't directly open a file because we may want to ++# incorporate the script contents within a cygwin/mingw ++# wrapper executable. Must ONLY be called from within ++# func_mode_link because it depends on a number of variables ++# set therein. ++# ++# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR ++# variable will take. If 'yes', then the emitted script ++# will assume that the directory in which it is stored is ++# the $objdir directory. This is a cygwin/mingw-specific ++# behavior. ++func_emit_wrapper () ++{ ++ func_emit_wrapper_arg1=no ++ if test -n "$1" ; then ++ func_emit_wrapper_arg1=$1 ++ fi ++ ++ # split this up so that func_emit_cwrapperexe_src ++ # can call each part independently. ++ func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" ++ func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" ++} ++ ++ ++# func_to_host_path arg ++# ++# Convert paths to host format when used with build tools. ++# Intended for use with "native" mingw (where libtool itself ++# is running under the msys shell), or in the following cross- ++# build environments: ++# $build $host ++# mingw (msys) mingw [e.g. native] ++# cygwin mingw ++# *nix + wine mingw ++# where wine is equipped with the `winepath' executable. ++# In the native mingw case, the (msys) shell automatically ++# converts paths for any non-msys applications it launches, ++# but that facility isn't available from inside the cwrapper. ++# Similar accommodations are necessary for $host mingw and ++# $build cygwin. Calling this function does no harm for other ++# $host/$build combinations not listed above. ++# ++# ARG is the path (on $build) that should be converted to ++# the proper representation for $host. The result is stored ++# in $func_to_host_path_result. ++func_to_host_path () ++{ ++ func_to_host_path_result="$1" ++ if test -n "$1" ; then ++ case $host in ++ *mingw* ) ++ lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' ++ case $build in ++ *mingw* ) # actually, msys ++ # awkward: cmd appends spaces to result ++ lt_sed_strip_trailing_spaces="s/[ ]*\$//" ++ func_to_host_path_tmp1=`( cmd //c echo "$1" |\ ++ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` ++ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ ++ $SED -e "$lt_sed_naive_backslashify"` ++ ;; ++ *cygwin* ) ++ func_to_host_path_tmp1=`cygpath -w "$1"` ++ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ ++ $SED -e "$lt_sed_naive_backslashify"` ++ ;; ++ * ) ++ # Unfortunately, winepath does not exit with a non-zero ++ # error code, so we are forced to check the contents of ++ # stdout. On the other hand, if the command is not ++ # found, the shell will set an exit code of 127 and print ++ # *an error message* to stdout. So we must check for both ++ # error code of zero AND non-empty stdout, which explains ++ # the odd construction: ++ func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` ++ if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then ++ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ ++ $SED -e "$lt_sed_naive_backslashify"` ++ else ++ # Allow warning below. ++ func_to_host_path_result="" ++ fi ++ ;; ++ esac ++ if test -z "$func_to_host_path_result" ; then ++ func_error "Could not determine host path corresponding to" ++ func_error " '$1'" ++ func_error "Continuing, but uninstalled executables may not work." ++ # Fallback: ++ func_to_host_path_result="$1" ++ fi ++ ;; ++ esac ++ fi ++} ++# end: func_to_host_path ++ ++# func_to_host_pathlist arg ++# ++# Convert pathlists to host format when used with build tools. ++# See func_to_host_path(), above. This function supports the ++# following $build/$host combinations (but does no harm for ++# combinations not listed here): ++# $build $host ++# mingw (msys) mingw [e.g. native] ++# cygwin mingw ++# *nix + wine mingw ++# ++# Path separators are also converted from $build format to ++# $host format. If ARG begins or ends with a path separator ++# character, it is preserved (but converted to $host format) ++# on output. ++# ++# ARG is a pathlist (on $build) that should be converted to ++# the proper representation on $host. The result is stored ++# in $func_to_host_pathlist_result. ++func_to_host_pathlist () ++{ ++ func_to_host_pathlist_result="$1" ++ if test -n "$1" ; then ++ case $host in ++ *mingw* ) ++ lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' ++ # Remove leading and trailing path separator characters from ++ # ARG. msys behavior is inconsistent here, cygpath turns them ++ # into '.;' and ';.', and winepath ignores them completely. ++ func_to_host_pathlist_tmp2="$1" ++ # Once set for this call, this variable should not be ++ # reassigned. It is used in tha fallback case. ++ func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ ++ $SED -e 's|^:*||' -e 's|:*$||'` ++ case $build in ++ *mingw* ) # Actually, msys. ++ # Awkward: cmd appends spaces to result. ++ lt_sed_strip_trailing_spaces="s/[ ]*\$//" ++ func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ ++ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` ++ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ ++ $SED -e "$lt_sed_naive_backslashify"` ++ ;; ++ *cygwin* ) ++ func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` ++ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ ++ $SED -e "$lt_sed_naive_backslashify"` ++ ;; ++ * ) ++ # unfortunately, winepath doesn't convert pathlists ++ func_to_host_pathlist_result="" ++ func_to_host_pathlist_oldIFS=$IFS ++ IFS=: ++ for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do ++ IFS=$func_to_host_pathlist_oldIFS ++ if test -n "$func_to_host_pathlist_f" ; then ++ func_to_host_path "$func_to_host_pathlist_f" ++ if test -n "$func_to_host_path_result" ; then ++ if test -z "$func_to_host_pathlist_result" ; then ++ func_to_host_pathlist_result="$func_to_host_path_result" ++ else ++ func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" ++ fi ++ fi ++ fi ++ IFS=: ++ done ++ IFS=$func_to_host_pathlist_oldIFS ++ ;; ++ esac ++ if test -z "$func_to_host_pathlist_result" ; then ++ func_error "Could not determine the host path(s) corresponding to" ++ func_error " '$1'" ++ func_error "Continuing, but uninstalled executables may not work." ++ # Fallback. This may break if $1 contains DOS-style drive ++ # specifications. The fix is not to complicate the expression ++ # below, but for the user to provide a working wine installation ++ # with winepath so that path translation in the cross-to-mingw ++ # case works properly. ++ lt_replace_pathsep_nix_to_dos="s|:|;|g" ++ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ ++ $SED -e "$lt_replace_pathsep_nix_to_dos"` ++ fi ++ # Now, add the leading and trailing path separators back ++ case "$1" in ++ :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" ++ ;; ++ esac ++ case "$1" in ++ *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" ++ ;; ++ esac ++ ;; ++ esac ++ fi ++} ++# end: func_to_host_pathlist ++ ++# func_emit_cwrapperexe_src ++# emit the source code for a wrapper executable on stdout ++# Must ONLY be called from within func_mode_link because ++# it depends on a number of variable set therein. ++func_emit_cwrapperexe_src () ++{ ++ cat < ++#include ++#ifdef _MSC_VER ++# include ++# include ++# include ++# define setmode _setmode ++#else ++# include ++# include ++# ifdef __CYGWIN__ ++# include ++# define HAVE_SETENV ++# ifdef __STRICT_ANSI__ ++char *realpath (const char *, char *); ++int putenv (char *); ++int setenv (const char *, const char *, int); ++# endif ++# endif ++#endif ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#if defined(PATH_MAX) ++# define LT_PATHMAX PATH_MAX ++#elif defined(MAXPATHLEN) ++# define LT_PATHMAX MAXPATHLEN ++#else ++# define LT_PATHMAX 1024 ++#endif ++ ++#ifndef S_IXOTH ++# define S_IXOTH 0 ++#endif ++#ifndef S_IXGRP ++# define S_IXGRP 0 ++#endif ++ ++#ifdef _MSC_VER ++# define S_IXUSR _S_IEXEC ++# define stat _stat ++# ifndef _INTPTR_T_DEFINED ++# define intptr_t int ++# endif ++#endif ++ ++#ifndef DIR_SEPARATOR ++# define DIR_SEPARATOR '/' ++# define PATH_SEPARATOR ':' ++#endif ++ ++#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ ++ defined (__OS2__) ++# define HAVE_DOS_BASED_FILE_SYSTEM ++# define FOPEN_WB "wb" ++# ifndef DIR_SEPARATOR_2 ++# define DIR_SEPARATOR_2 '\\' ++# endif ++# ifndef PATH_SEPARATOR_2 ++# define PATH_SEPARATOR_2 ';' ++# endif ++#endif ++ ++#ifndef DIR_SEPARATOR_2 ++# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) ++#else /* DIR_SEPARATOR_2 */ ++# define IS_DIR_SEPARATOR(ch) \ ++ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) ++#endif /* DIR_SEPARATOR_2 */ ++ ++#ifndef PATH_SEPARATOR_2 ++# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) ++#else /* PATH_SEPARATOR_2 */ ++# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) ++#endif /* PATH_SEPARATOR_2 */ ++ ++#ifdef __CYGWIN__ ++# define FOPEN_WB "wb" ++#endif ++ ++#ifndef FOPEN_WB ++# define FOPEN_WB "w" ++#endif ++#ifndef _O_BINARY ++# define _O_BINARY 0 ++#endif ++ ++#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) ++#define XFREE(stale) do { \ ++ if (stale) { free ((void *) stale); stale = 0; } \ ++} while (0) ++ ++#undef LTWRAPPER_DEBUGPRINTF ++#if defined DEBUGWRAPPER ++# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args ++static void ++ltwrapper_debugprintf (const char *fmt, ...) ++{ ++ va_list args; ++ va_start (args, fmt); ++ (void) vfprintf (stderr, fmt, args); ++ va_end (args); ++} ++#else ++# define LTWRAPPER_DEBUGPRINTF(args) ++#endif ++ ++const char *program_name = NULL; ++ ++void *xmalloc (size_t num); ++char *xstrdup (const char *string); ++const char *base_name (const char *name); ++char *find_executable (const char *wrapper); ++char *chase_symlinks (const char *pathspec); ++int make_executable (const char *path); ++int check_executable (const char *path); ++char *strendzap (char *str, const char *pat); ++void lt_fatal (const char *message, ...); ++void lt_setenv (const char *name, const char *value); ++char *lt_extend_str (const char *orig_value, const char *add, int to_end); ++void lt_opt_process_env_set (const char *arg); ++void lt_opt_process_env_prepend (const char *arg); ++void lt_opt_process_env_append (const char *arg); ++int lt_split_name_value (const char *arg, char** name, char** value); ++void lt_update_exe_path (const char *name, const char *value); ++void lt_update_lib_path (const char *name, const char *value); ++ ++static const char *script_text_part1 = ++EOF ++ ++ func_emit_wrapper_part1 yes | ++ $SED -e 's/\([\\"]\)/\\\1/g' \ ++ -e 's/^/ "/' -e 's/$/\\n"/' ++ echo ";" ++ cat <"))); ++ for (i = 0; i < newargc; i++) ++ { ++ LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); ++ } ++ ++EOF ++ ++ case $host_os in ++ mingw*) ++ cat <<"EOF" ++ /* execv doesn't actually work on mingw as expected on unix */ ++ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); ++ if (rval == -1) ++ { ++ /* failed to start process */ ++ LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); ++ return 127; ++ } ++ return rval; ++EOF ++ ;; ++ *) ++ cat <<"EOF" ++ execv (lt_argv_zero, newargz); ++ return rval; /* =127, but avoids unused variable warning */ ++EOF ++ ;; ++ esac ++ ++ cat <<"EOF" ++} ++ ++void * ++xmalloc (size_t num) ++{ ++ void *p = (void *) malloc (num); ++ if (!p) ++ lt_fatal ("Memory exhausted"); ++ ++ return p; ++} ++ ++char * ++xstrdup (const char *string) ++{ ++ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), ++ string) : NULL; ++} ++ ++const char * ++base_name (const char *name) ++{ ++ const char *base; ++ ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM) ++ /* Skip over the disk name in MSDOS pathnames. */ ++ if (isalpha ((unsigned char) name[0]) && name[1] == ':') ++ name += 2; ++#endif ++ ++ for (base = name; *name; name++) ++ if (IS_DIR_SEPARATOR (*name)) ++ base = name + 1; ++ return base; ++} ++ ++int ++check_executable (const char *path) ++{ ++ struct stat st; ++ ++ LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", ++ path ? (*path ? path : "EMPTY!") : "NULL!")); ++ if ((!path) || (!*path)) ++ return 0; ++ ++ if ((stat (path, &st) >= 0) ++ && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) ++ return 1; ++ else ++ return 0; ++} ++ ++int ++make_executable (const char *path) ++{ ++ int rval = 0; ++ struct stat st; ++ ++ LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", ++ path ? (*path ? path : "EMPTY!") : "NULL!")); ++ if ((!path) || (!*path)) ++ return 0; ++ ++ if (stat (path, &st) >= 0) ++ { ++ rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); ++ } ++ return rval; ++} ++ ++/* Searches for the full path of the wrapper. Returns ++ newly allocated full path name if found, NULL otherwise ++ Does not chase symlinks, even on platforms that support them. ++*/ ++char * ++find_executable (const char *wrapper) ++{ ++ int has_slash = 0; ++ const char *p; ++ const char *p_next; ++ /* static buffer for getcwd */ ++ char tmp[LT_PATHMAX + 1]; ++ int tmp_len; ++ char *concat_name; ++ ++ LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", ++ wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); ++ ++ if ((wrapper == NULL) || (*wrapper == '\0')) ++ return NULL; ++ ++ /* Absolute path? */ ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM) ++ if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') ++ { ++ concat_name = xstrdup (wrapper); ++ if (check_executable (concat_name)) ++ return concat_name; ++ XFREE (concat_name); ++ } ++ else ++ { ++#endif ++ if (IS_DIR_SEPARATOR (wrapper[0])) ++ { ++ concat_name = xstrdup (wrapper); ++ if (check_executable (concat_name)) ++ return concat_name; ++ XFREE (concat_name); ++ } ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM) ++ } ++#endif ++ ++ for (p = wrapper; *p; p++) ++ if (*p == '/') ++ { ++ has_slash = 1; ++ break; ++ } ++ if (!has_slash) ++ { ++ /* no slashes; search PATH */ ++ const char *path = getenv ("PATH"); ++ if (path != NULL) ++ { ++ for (p = path; *p; p = p_next) ++ { ++ const char *q; ++ size_t p_len; ++ for (q = p; *q; q++) ++ if (IS_PATH_SEPARATOR (*q)) ++ break; ++ p_len = q - p; ++ p_next = (*q == '\0' ? q : q + 1); ++ if (p_len == 0) ++ { ++ /* empty path: current directory */ ++ if (getcwd (tmp, LT_PATHMAX) == NULL) ++ lt_fatal ("getcwd failed"); ++ tmp_len = strlen (tmp); ++ concat_name = ++ XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); ++ memcpy (concat_name, tmp, tmp_len); ++ concat_name[tmp_len] = '/'; ++ strcpy (concat_name + tmp_len + 1, wrapper); ++ } ++ else ++ { ++ concat_name = ++ XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); ++ memcpy (concat_name, p, p_len); ++ concat_name[p_len] = '/'; ++ strcpy (concat_name + p_len + 1, wrapper); ++ } ++ if (check_executable (concat_name)) ++ return concat_name; ++ XFREE (concat_name); ++ } ++ } ++ /* not found in PATH; assume curdir */ ++ } ++ /* Relative path | not found in path: prepend cwd */ ++ if (getcwd (tmp, LT_PATHMAX) == NULL) ++ lt_fatal ("getcwd failed"); ++ tmp_len = strlen (tmp); ++ concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); ++ memcpy (concat_name, tmp, tmp_len); ++ concat_name[tmp_len] = '/'; ++ strcpy (concat_name + tmp_len + 1, wrapper); ++ ++ if (check_executable (concat_name)) ++ return concat_name; ++ XFREE (concat_name); ++ return NULL; ++} ++ ++char * ++chase_symlinks (const char *pathspec) ++{ ++#ifndef S_ISLNK ++ return xstrdup (pathspec); ++#else ++ char buf[LT_PATHMAX]; ++ struct stat s; ++ char *tmp_pathspec = xstrdup (pathspec); ++ char *p; ++ int has_symlinks = 0; ++ while (strlen (tmp_pathspec) && !has_symlinks) ++ { ++ LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", ++ tmp_pathspec)); ++ if (lstat (tmp_pathspec, &s) == 0) ++ { ++ if (S_ISLNK (s.st_mode) != 0) ++ { ++ has_symlinks = 1; ++ break; ++ } ++ ++ /* search backwards for last DIR_SEPARATOR */ ++ p = tmp_pathspec + strlen (tmp_pathspec) - 1; ++ while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) ++ p--; ++ if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) ++ { ++ /* no more DIR_SEPARATORS left */ ++ break; ++ } ++ *p = '\0'; ++ } ++ else ++ { ++ char *errstr = strerror (errno); ++ lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); ++ } ++ } ++ XFREE (tmp_pathspec); ++ ++ if (!has_symlinks) ++ { ++ return xstrdup (pathspec); ++ } ++ ++ tmp_pathspec = realpath (pathspec, buf); ++ if (tmp_pathspec == 0) ++ { ++ lt_fatal ("Could not follow symlinks for %s", pathspec); ++ } ++ return xstrdup (tmp_pathspec); ++#endif ++} ++ ++char * ++strendzap (char *str, const char *pat) ++{ ++ size_t len, patlen; ++ ++ assert (str != NULL); ++ assert (pat != NULL); ++ ++ len = strlen (str); ++ patlen = strlen (pat); ++ ++ if (patlen <= len) ++ { ++ str += len - patlen; ++ if (strcmp (str, pat) == 0) ++ *str = '\0'; ++ } ++ return str; ++} ++ ++static void ++lt_error_core (int exit_status, const char *mode, ++ const char *message, va_list ap) ++{ ++ fprintf (stderr, "%s: %s: ", program_name, mode); ++ vfprintf (stderr, message, ap); ++ fprintf (stderr, ".\n"); ++ ++ if (exit_status >= 0) ++ exit (exit_status); ++} ++ ++void ++lt_fatal (const char *message, ...) ++{ ++ va_list ap; ++ va_start (ap, message); ++ lt_error_core (EXIT_FAILURE, "FATAL", message, ap); ++ va_end (ap); ++} ++ ++void ++lt_setenv (const char *name, const char *value) ++{ ++ LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", ++ (name ? name : ""), ++ (value ? value : ""))); ++ { ++#ifdef HAVE_SETENV ++ /* always make a copy, for consistency with !HAVE_SETENV */ ++ char *str = xstrdup (value); ++ setenv (name, str, 1); ++#else ++ int len = strlen (name) + 1 + strlen (value) + 1; ++ char *str = XMALLOC (char, len); ++ sprintf (str, "%s=%s", name, value); ++ if (putenv (str) != EXIT_SUCCESS) ++ { ++ XFREE (str); ++ } ++#endif ++ } ++} ++ ++char * ++lt_extend_str (const char *orig_value, const char *add, int to_end) ++{ ++ char *new_value; ++ if (orig_value && *orig_value) ++ { ++ int orig_value_len = strlen (orig_value); ++ int add_len = strlen (add); ++ new_value = XMALLOC (char, add_len + orig_value_len + 1); ++ if (to_end) ++ { ++ strcpy (new_value, orig_value); ++ strcpy (new_value + orig_value_len, add); ++ } ++ else ++ { ++ strcpy (new_value, add); ++ strcpy (new_value + add_len, orig_value); ++ } ++ } ++ else ++ { ++ new_value = xstrdup (add); ++ } ++ return new_value; ++} ++ ++int ++lt_split_name_value (const char *arg, char** name, char** value) ++{ ++ const char *p; ++ int len; ++ if (!arg || !*arg) ++ return 1; ++ ++ p = strchr (arg, (int)'='); ++ ++ if (!p) ++ return 1; ++ ++ *value = xstrdup (++p); ++ ++ len = strlen (arg) - strlen (*value); ++ *name = XMALLOC (char, len); ++ strncpy (*name, arg, len-1); ++ (*name)[len - 1] = '\0'; ++ ++ return 0; ++} ++ ++void ++lt_opt_process_env_set (const char *arg) ++{ ++ char *name = NULL; ++ char *value = NULL; ++ ++ if (lt_split_name_value (arg, &name, &value) != 0) ++ { ++ XFREE (name); ++ XFREE (value); ++ lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); ++ } ++ ++ lt_setenv (name, value); ++ XFREE (name); ++ XFREE (value); ++} ++ ++void ++lt_opt_process_env_prepend (const char *arg) ++{ ++ char *name = NULL; ++ char *value = NULL; ++ char *new_value = NULL; ++ ++ if (lt_split_name_value (arg, &name, &value) != 0) ++ { ++ XFREE (name); ++ XFREE (value); ++ lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); ++ } ++ ++ new_value = lt_extend_str (getenv (name), value, 0); ++ lt_setenv (name, new_value); ++ XFREE (new_value); ++ XFREE (name); ++ XFREE (value); ++} ++ ++void ++lt_opt_process_env_append (const char *arg) ++{ ++ char *name = NULL; ++ char *value = NULL; ++ char *new_value = NULL; ++ ++ if (lt_split_name_value (arg, &name, &value) != 0) ++ { ++ XFREE (name); ++ XFREE (value); ++ lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); ++ } ++ ++ new_value = lt_extend_str (getenv (name), value, 1); ++ lt_setenv (name, new_value); ++ XFREE (new_value); ++ XFREE (name); ++ XFREE (value); ++} ++ ++void ++lt_update_exe_path (const char *name, const char *value) ++{ ++ LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", ++ (name ? name : ""), ++ (value ? value : ""))); ++ ++ if (name && *name && value && *value) ++ { ++ char *new_value = lt_extend_str (getenv (name), value, 0); ++ /* some systems can't cope with a ':'-terminated path #' */ ++ int len = strlen (new_value); ++ while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) ++ { ++ new_value[len-1] = '\0'; ++ } ++ lt_setenv (name, new_value); ++ XFREE (new_value); ++ } ++} ++ ++void ++lt_update_lib_path (const char *name, const char *value) ++{ ++ LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", ++ (name ? name : ""), ++ (value ? value : ""))); ++ ++ if (name && *name && value && *value) ++ { ++ char *new_value = lt_extend_str (getenv (name), value, 0); ++ lt_setenv (name, new_value); ++ XFREE (new_value); ++ } ++} ++ ++ ++EOF ++} ++# end: func_emit_cwrapperexe_src ++ ++# func_mode_link arg... ++func_mode_link () ++{ ++ $opt_debug ++ case $host in ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) ++ # It is impossible to link a dll without this setting, and ++ # we shouldn't force the makefile maintainer to figure out ++ # which system we are compiling for in order to pass an extra ++ # flag for every libtool invocation. ++ # allow_undefined=no ++ ++ # FIXME: Unfortunately, there are problems with the above when trying ++ # to make a dll which has undefined symbols, in which case not ++ # even a static library is built. For now, we need to specify ++ # -no-undefined on the libtool link line when we can be certain ++ # that all symbols are satisfied, otherwise we get a static library. ++ allow_undefined=yes ++ ;; ++ *) ++ allow_undefined=yes ++ ;; ++ esac ++ libtool_args=$nonopt ++ base_compile="$nonopt $@" ++ compile_command=$nonopt ++ finalize_command=$nonopt ++ ++ compile_rpath= ++ finalize_rpath= ++ compile_shlibpath= ++ finalize_shlibpath= ++ convenience= ++ old_convenience= ++ deplibs= ++ old_deplibs= ++ compiler_flags= ++ linker_flags= ++ dllsearchpath= ++ lib_search_path=`pwd` ++ inst_prefix_dir= ++ new_inherited_linker_flags= ++ ++ avoid_version=no ++ dlfiles= ++ dlprefiles= ++ dlself=no ++ export_dynamic=no ++ export_symbols= ++ export_symbols_regex= ++ generated= ++ libobjs= ++ ltlibs= ++ module=no ++ no_install=no ++ objs= ++ non_pic_objects= ++ precious_files_regex= ++ prefer_static_libs=no ++ preload=no ++ prev= ++ prevarg= ++ release= ++ rpath= ++ xrpath= ++ perm_rpath= ++ temp_rpath= ++ thread_safe=no ++ vinfo= ++ vinfo_number=no ++ weak_libs= ++ single_module="${wl}-single_module" ++ func_infer_tag $base_compile ++ ++ # We need to know -static, to get the right output filenames. ++ for arg ++ do ++ case $arg in ++ -shared) ++ test "$build_libtool_libs" != yes && \ ++ func_fatal_configuration "can not build a shared library" ++ build_old_libs=no ++ break ++ ;; ++ -all-static | -static | -static-libtool-libs) ++ case $arg in ++ -all-static) ++ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then ++ func_warning "complete static linking is impossible in this configuration" ++ fi ++ if test -n "$link_static_flag"; then ++ dlopen_self=$dlopen_self_static ++ fi ++ prefer_static_libs=yes ++ ;; ++ -static) ++ if test -z "$pic_flag" && test -n "$link_static_flag"; then ++ dlopen_self=$dlopen_self_static ++ fi ++ prefer_static_libs=built ++ ;; ++ -static-libtool-libs) ++ if test -z "$pic_flag" && test -n "$link_static_flag"; then ++ dlopen_self=$dlopen_self_static ++ fi ++ prefer_static_libs=yes ++ ;; ++ esac ++ build_libtool_libs=no ++ build_old_libs=yes ++ break ++ ;; ++ esac ++ done ++ ++ # See if our shared archives depend on static archives. ++ test -n "$old_archive_from_new_cmds" && build_old_libs=yes ++ ++ # Go through the arguments, transforming them on the way. ++ while test "$#" -gt 0; do ++ arg="$1" ++ shift ++ func_quote_for_eval "$arg" ++ qarg=$func_quote_for_eval_unquoted_result ++ func_append libtool_args " $func_quote_for_eval_result" ++ ++ # If the previous option needs an argument, assign it. ++ if test -n "$prev"; then ++ case $prev in ++ output) ++ func_append compile_command " @OUTPUT@" ++ func_append finalize_command " @OUTPUT@" ++ ;; ++ esac ++ ++ case $prev in ++ dlfiles|dlprefiles) ++ if test "$preload" = no; then ++ # Add the symbol object into the linking commands. ++ func_append compile_command " @SYMFILE@" ++ func_append finalize_command " @SYMFILE@" ++ preload=yes ++ fi ++ case $arg in ++ *.la | *.lo) ;; # We handle these cases below. ++ force) ++ if test "$dlself" = no; then ++ dlself=needless ++ export_dynamic=yes ++ fi ++ prev= ++ continue ++ ;; ++ self) ++ if test "$prev" = dlprefiles; then ++ dlself=yes ++ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then ++ dlself=yes ++ else ++ dlself=needless ++ export_dynamic=yes ++ fi ++ prev= ++ continue ++ ;; ++ *) ++ if test "$prev" = dlfiles; then ++ dlfiles="$dlfiles $arg" ++ else ++ dlprefiles="$dlprefiles $arg" ++ fi ++ prev= ++ continue ++ ;; ++ esac ++ ;; ++ expsyms) ++ export_symbols="$arg" ++ test -f "$arg" \ ++ || func_fatal_error "symbol file \`$arg' does not exist" ++ prev= ++ continue ++ ;; ++ expsyms_regex) ++ export_symbols_regex="$arg" ++ prev= ++ continue ++ ;; ++ framework) ++ case $host in ++ *-*-darwin*) ++ case "$deplibs " in ++ *" $qarg.ltframework "*) ;; ++ *) deplibs="$deplibs $qarg.ltframework" # this is fixed later ++ ;; ++ esac ++ ;; ++ esac ++ prev= ++ continue ++ ;; ++ inst_prefix) ++ inst_prefix_dir="$arg" ++ prev= ++ continue ++ ;; ++ objectlist) ++ if test -f "$arg"; then ++ save_arg=$arg ++ moreargs= ++ for fil in `cat "$save_arg"` ++ do ++# moreargs="$moreargs $fil" ++ arg=$fil ++ # A libtool-controlled object. ++ ++ # Check to see that this really is a libtool object. ++ if func_lalib_unsafe_p "$arg"; then ++ pic_object= ++ non_pic_object= ++ ++ # Read the .lo file ++ func_source "$arg" ++ ++ if test -z "$pic_object" || ++ test -z "$non_pic_object" || ++ test "$pic_object" = none && ++ test "$non_pic_object" = none; then ++ func_fatal_error "cannot find name of object for \`$arg'" ++ fi ++ ++ # Extract subdirectory from the argument. ++ func_dirname "$arg" "/" "" ++ xdir="$func_dirname_result" ++ ++ if test "$pic_object" != none; then ++ # Prepend the subdirectory the object is found in. ++ pic_object="$xdir$pic_object" ++ ++ if test "$prev" = dlfiles; then ++ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then ++ dlfiles="$dlfiles $pic_object" ++ prev= ++ continue ++ else ++ # If libtool objects are unsupported, then we need to preload. ++ prev=dlprefiles ++ fi ++ fi ++ ++ # CHECK ME: I think I busted this. -Ossama ++ if test "$prev" = dlprefiles; then ++ # Preload the old-style object. ++ dlprefiles="$dlprefiles $pic_object" ++ prev= ++ fi ++ ++ # A PIC object. ++ func_append libobjs " $pic_object" ++ arg="$pic_object" ++ fi ++ ++ # Non-PIC object. ++ if test "$non_pic_object" != none; then ++ # Prepend the subdirectory the object is found in. ++ non_pic_object="$xdir$non_pic_object" ++ ++ # A standard non-PIC object ++ func_append non_pic_objects " $non_pic_object" ++ if test -z "$pic_object" || test "$pic_object" = none ; then ++ arg="$non_pic_object" ++ fi ++ else ++ # If the PIC object exists, use it instead. ++ # $xdir was prepended to $pic_object above. ++ non_pic_object="$pic_object" ++ func_append non_pic_objects " $non_pic_object" ++ fi ++ else ++ # Only an error if not doing a dry-run. ++ if $opt_dry_run; then ++ # Extract subdirectory from the argument. ++ func_dirname "$arg" "/" "" ++ xdir="$func_dirname_result" ++ ++ func_lo2o "$arg" ++ pic_object=$xdir$objdir/$func_lo2o_result ++ non_pic_object=$xdir$func_lo2o_result ++ func_append libobjs " $pic_object" ++ func_append non_pic_objects " $non_pic_object" ++ else ++ func_fatal_error "\`$arg' is not a valid libtool object" ++ fi ++ fi ++ done ++ else ++ func_fatal_error "link input file \`$arg' does not exist" ++ fi ++ arg=$save_arg ++ prev= ++ continue ++ ;; ++ precious_regex) ++ precious_files_regex="$arg" ++ prev= ++ continue ++ ;; ++ release) ++ release="-$arg" ++ prev= ++ continue ++ ;; ++ rpath | xrpath) ++ # We need an absolute path. ++ case $arg in ++ [\\/]* | [A-Za-z]:[\\/]*) ;; ++ *) ++ func_fatal_error "only absolute run-paths are allowed" ++ ;; ++ esac ++ if test "$prev" = rpath; then ++ case "$rpath " in ++ *" $arg "*) ;; ++ *) rpath="$rpath $arg" ;; ++ esac ++ else ++ case "$xrpath " in ++ *" $arg "*) ;; ++ *) xrpath="$xrpath $arg" ;; ++ esac ++ fi ++ prev= ++ continue ++ ;; ++ shrext) ++ shrext_cmds="$arg" ++ prev= ++ continue ++ ;; ++ weak) ++ weak_libs="$weak_libs $arg" ++ prev= ++ continue ++ ;; ++ xcclinker) ++ linker_flags="$linker_flags $qarg" ++ compiler_flags="$compiler_flags $qarg" ++ prev= ++ func_append compile_command " $qarg" ++ func_append finalize_command " $qarg" ++ continue ++ ;; ++ xcompiler) ++ compiler_flags="$compiler_flags $qarg" ++ prev= ++ func_append compile_command " $qarg" ++ func_append finalize_command " $qarg" ++ continue ++ ;; ++ xlinker) ++ linker_flags="$linker_flags $qarg" ++ compiler_flags="$compiler_flags $wl$qarg" ++ prev= ++ func_append compile_command " $wl$qarg" ++ func_append finalize_command " $wl$qarg" ++ continue ++ ;; ++ *) ++ eval "$prev=\"\$arg\"" ++ prev= ++ continue ++ ;; ++ esac ++ fi # test -n "$prev" ++ ++ prevarg="$arg" ++ ++ case $arg in ++ -all-static) ++ if test -n "$link_static_flag"; then ++ # See comment for -static flag below, for more details. ++ func_append compile_command " $link_static_flag" ++ func_append finalize_command " $link_static_flag" ++ fi ++ continue ++ ;; ++ ++ -allow-undefined) ++ # FIXME: remove this flag sometime in the future. ++ func_fatal_error "\`-allow-undefined' must not be used because it is the default" ++ ;; ++ ++ -avoid-version) ++ avoid_version=yes ++ continue ++ ;; ++ ++ -dlopen) ++ prev=dlfiles ++ continue ++ ;; ++ ++ -dlpreopen) ++ prev=dlprefiles ++ continue ++ ;; ++ ++ -export-dynamic) ++ export_dynamic=yes ++ continue ++ ;; ++ ++ -export-symbols | -export-symbols-regex) ++ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then ++ func_fatal_error "more than one -exported-symbols argument is not allowed" ++ fi ++ if test "X$arg" = "X-export-symbols"; then ++ prev=expsyms ++ else ++ prev=expsyms_regex ++ fi ++ continue ++ ;; ++ ++ -framework) ++ prev=framework ++ continue ++ ;; ++ ++ -inst-prefix-dir) ++ prev=inst_prefix ++ continue ++ ;; ++ ++ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* ++ # so, if we see these flags be careful not to treat them like -L ++ -L[A-Z][A-Z]*:*) ++ case $with_gcc/$host in ++ no/*-*-irix* | /*-*-irix*) ++ func_append compile_command " $arg" ++ func_append finalize_command " $arg" ++ ;; ++ esac ++ continue ++ ;; ++ ++ -L*) ++ func_stripname '-L' '' "$arg" ++ dir=$func_stripname_result ++ if test -z "$dir"; then ++ if test "$#" -gt 0; then ++ func_fatal_error "require no space between \`-L' and \`$1'" ++ else ++ func_fatal_error "need path for \`-L' option" ++ fi ++ fi ++ # We need an absolute path. ++ case $dir in ++ [\\/]* | [A-Za-z]:[\\/]*) ;; ++ *) ++ absdir=`cd "$dir" && pwd` ++ test -z "$absdir" && \ ++ func_fatal_error "cannot determine absolute directory name of \`$dir'" ++ dir="$absdir" ++ ;; ++ esac ++ case "$deplibs " in ++ *" -L$dir "*) ;; ++ *) ++ deplibs="$deplibs -L$dir" ++ lib_search_path="$lib_search_path $dir" ++ ;; ++ esac ++ case $host in ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) ++ testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` ++ case :$dllsearchpath: in ++ *":$dir:"*) ;; ++ ::) dllsearchpath=$dir;; ++ *) dllsearchpath="$dllsearchpath:$dir";; ++ esac ++ case :$dllsearchpath: in ++ *":$testbindir:"*) ;; ++ ::) dllsearchpath=$testbindir;; ++ *) dllsearchpath="$dllsearchpath:$testbindir";; ++ esac ++ ;; ++ esac ++ continue ++ ;; ++ ++ -l*) ++ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then ++ case $host in ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) ++ # These systems don't actually have a C or math library (as such) ++ continue ++ ;; ++ *-*-os2*) ++ # These systems don't actually have a C library (as such) ++ test "X$arg" = "X-lc" && continue ++ ;; ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) ++ # Do not include libc due to us having libc/libc_r. ++ test "X$arg" = "X-lc" && continue ++ ;; ++ *-*-rhapsody* | *-*-darwin1.[012]) ++ # Rhapsody C and math libraries are in the System framework ++ deplibs="$deplibs System.ltframework" ++ continue ++ ;; ++ *-*-sco3.2v5* | *-*-sco5v6*) ++ # Causes problems with __ctype ++ test "X$arg" = "X-lc" && continue ++ ;; ++ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) ++ # Compiler inserts libc in the correct place for threads to work ++ test "X$arg" = "X-lc" && continue ++ ;; ++ esac ++ elif test "X$arg" = "X-lc_r"; then ++ case $host in ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) ++ # Do not include libc_r directly, use -pthread flag. ++ continue ++ ;; ++ esac ++ fi ++ deplibs="$deplibs $arg" ++ continue ++ ;; ++ ++ -module) ++ module=yes ++ continue ++ ;; ++ ++ # Tru64 UNIX uses -model [arg] to determine the layout of C++ ++ # classes, name mangling, and exception handling. ++ # Darwin uses the -arch flag to determine output architecture. ++ -model|-arch|-isysroot) ++ compiler_flags="$compiler_flags $arg" ++ func_append compile_command " $arg" ++ func_append finalize_command " $arg" ++ prev=xcompiler ++ continue ++ ;; ++ ++ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) ++ compiler_flags="$compiler_flags $arg" ++ func_append compile_command " $arg" ++ func_append finalize_command " $arg" ++ case "$new_inherited_linker_flags " in ++ *" $arg "*) ;; ++ * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; ++ esac ++ continue ++ ;; ++ ++ -multi_module) ++ single_module="${wl}-multi_module" ++ continue ++ ;; ++ ++ -no-fast-install) ++ fast_install=no ++ continue ++ ;; ++ ++ -no-install) ++ case $host in ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) ++ # The PATH hackery in wrapper scripts is required on Windows ++ # and Darwin in order for the loader to find any dlls it needs. ++ func_warning "\`-no-install' is ignored for $host" ++ func_warning "assuming \`-no-fast-install' instead" ++ fast_install=no ++ ;; ++ *) no_install=yes ;; ++ esac ++ continue ++ ;; ++ ++ -no-undefined) ++ allow_undefined=no ++ continue ++ ;; ++ ++ -objectlist) ++ prev=objectlist ++ continue ++ ;; ++ ++ -o) prev=output ;; ++ ++ -precious-files-regex) ++ prev=precious_regex ++ continue ++ ;; ++ ++ -release) ++ prev=release ++ continue ++ ;; ++ ++ -rpath) ++ prev=rpath ++ continue ++ ;; ++ ++ -R) ++ prev=xrpath ++ continue ++ ;; ++ ++ -R*) ++ func_stripname '-R' '' "$arg" ++ dir=$func_stripname_result ++ # We need an absolute path. ++ case $dir in ++ [\\/]* | [A-Za-z]:[\\/]*) ;; ++ *) ++ func_fatal_error "only absolute run-paths are allowed" ++ ;; ++ esac ++ case "$xrpath " in ++ *" $dir "*) ;; ++ *) xrpath="$xrpath $dir" ;; ++ esac ++ continue ++ ;; ++ ++ -shared) ++ # The effects of -shared are defined in a previous loop. ++ continue ++ ;; ++ ++ -shrext) ++ prev=shrext ++ continue ++ ;; ++ ++ -static | -static-libtool-libs) ++ # The effects of -static are defined in a previous loop. ++ # We used to do the same as -all-static on platforms that ++ # didn't have a PIC flag, but the assumption that the effects ++ # would be equivalent was wrong. It would break on at least ++ # Digital Unix and AIX. ++ continue ++ ;; ++ ++ -thread-safe) ++ thread_safe=yes ++ continue ++ ;; ++ ++ -version-info) ++ prev=vinfo ++ continue ++ ;; ++ ++ -version-number) ++ prev=vinfo ++ vinfo_number=yes ++ continue ++ ;; ++ ++ -weak) ++ prev=weak ++ continue ++ ;; ++ ++ -Wc,*) ++ func_stripname '-Wc,' '' "$arg" ++ args=$func_stripname_result ++ arg= ++ save_ifs="$IFS"; IFS=',' ++ for flag in $args; do ++ IFS="$save_ifs" ++ func_quote_for_eval "$flag" ++ arg="$arg $wl$func_quote_for_eval_result" ++ compiler_flags="$compiler_flags $func_quote_for_eval_result" ++ done ++ IFS="$save_ifs" ++ func_stripname ' ' '' "$arg" ++ arg=$func_stripname_result ++ ;; ++ ++ -Wl,*) ++ func_stripname '-Wl,' '' "$arg" ++ args=$func_stripname_result ++ arg= ++ save_ifs="$IFS"; IFS=',' ++ for flag in $args; do ++ IFS="$save_ifs" ++ func_quote_for_eval "$flag" ++ arg="$arg $wl$func_quote_for_eval_result" ++ compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" ++ linker_flags="$linker_flags $func_quote_for_eval_result" ++ done ++ IFS="$save_ifs" ++ func_stripname ' ' '' "$arg" ++ arg=$func_stripname_result ++ ;; ++ ++ -Xcompiler) ++ prev=xcompiler ++ continue ++ ;; ++ ++ -Xlinker) ++ prev=xlinker ++ continue ++ ;; ++ ++ -XCClinker) ++ prev=xcclinker ++ continue ++ ;; ++ ++ # -msg_* for osf cc ++ -msg_*) ++ func_quote_for_eval "$arg" ++ arg="$func_quote_for_eval_result" ++ ;; ++ ++ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler ++ # -r[0-9][0-9]* specifies the processor on the SGI compiler ++ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler ++ # +DA*, +DD* enable 64-bit mode on the HP compiler ++ # -q* pass through compiler args for the IBM compiler ++ # -m*, -t[45]*, -txscale* pass through architecture-specific ++ # compiler args for GCC ++ # -F/path gives path to uninstalled frameworks, gcc on darwin ++ # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC ++ # @file GCC response files ++ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ ++ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) ++ func_quote_for_eval "$arg" ++ arg="$func_quote_for_eval_result" ++ func_append compile_command " $arg" ++ func_append finalize_command " $arg" ++ compiler_flags="$compiler_flags $arg" ++ continue ++ ;; ++ ++ # Some other compiler flag. ++ -* | +*) ++ func_quote_for_eval "$arg" ++ arg="$func_quote_for_eval_result" ++ ;; ++ ++ *.$objext) ++ # A standard object. ++ objs="$objs $arg" ++ ;; ++ ++ *.lo) ++ # A libtool-controlled object. ++ ++ # Check to see that this really is a libtool object. ++ if func_lalib_unsafe_p "$arg"; then ++ pic_object= ++ non_pic_object= ++ ++ # Read the .lo file ++ func_source "$arg" ++ ++ if test -z "$pic_object" || ++ test -z "$non_pic_object" || ++ test "$pic_object" = none && ++ test "$non_pic_object" = none; then ++ func_fatal_error "cannot find name of object for \`$arg'" ++ fi ++ ++ # Extract subdirectory from the argument. ++ func_dirname "$arg" "/" "" ++ xdir="$func_dirname_result" ++ ++ if test "$pic_object" != none; then ++ # Prepend the subdirectory the object is found in. ++ pic_object="$xdir$pic_object" ++ ++ if test "$prev" = dlfiles; then ++ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then ++ dlfiles="$dlfiles $pic_object" ++ prev= ++ continue ++ else ++ # If libtool objects are unsupported, then we need to preload. ++ prev=dlprefiles ++ fi ++ fi ++ ++ # CHECK ME: I think I busted this. -Ossama ++ if test "$prev" = dlprefiles; then ++ # Preload the old-style object. ++ dlprefiles="$dlprefiles $pic_object" ++ prev= ++ fi ++ ++ # A PIC object. ++ func_append libobjs " $pic_object" ++ arg="$pic_object" ++ fi ++ ++ # Non-PIC object. ++ if test "$non_pic_object" != none; then ++ # Prepend the subdirectory the object is found in. ++ non_pic_object="$xdir$non_pic_object" ++ ++ # A standard non-PIC object ++ func_append non_pic_objects " $non_pic_object" ++ if test -z "$pic_object" || test "$pic_object" = none ; then ++ arg="$non_pic_object" ++ fi ++ else ++ # If the PIC object exists, use it instead. ++ # $xdir was prepended to $pic_object above. ++ non_pic_object="$pic_object" ++ func_append non_pic_objects " $non_pic_object" ++ fi ++ else ++ # Only an error if not doing a dry-run. ++ if $opt_dry_run; then ++ # Extract subdirectory from the argument. ++ func_dirname "$arg" "/" "" ++ xdir="$func_dirname_result" ++ ++ func_lo2o "$arg" ++ pic_object=$xdir$objdir/$func_lo2o_result ++ non_pic_object=$xdir$func_lo2o_result ++ func_append libobjs " $pic_object" ++ func_append non_pic_objects " $non_pic_object" ++ else ++ func_fatal_error "\`$arg' is not a valid libtool object" ++ fi ++ fi ++ ;; ++ ++ *.$libext) ++ # An archive. ++ deplibs="$deplibs $arg" ++ old_deplibs="$old_deplibs $arg" ++ continue ++ ;; ++ ++ *.la) ++ # A libtool-controlled library. ++ ++ if test "$prev" = dlfiles; then ++ # This library was specified with -dlopen. ++ dlfiles="$dlfiles $arg" ++ prev= ++ elif test "$prev" = dlprefiles; then ++ # The library was specified with -dlpreopen. ++ dlprefiles="$dlprefiles $arg" ++ prev= ++ else ++ deplibs="$deplibs $arg" ++ fi ++ continue ++ ;; ++ ++ # Some other compiler argument. ++ *) ++ # Unknown arguments in both finalize_command and compile_command need ++ # to be aesthetically quoted because they are evaled later. ++ func_quote_for_eval "$arg" ++ arg="$func_quote_for_eval_result" ++ ;; ++ esac # arg ++ ++ # Now actually substitute the argument into the commands. ++ if test -n "$arg"; then ++ func_append compile_command " $arg" ++ func_append finalize_command " $arg" ++ fi ++ done # argument parsing loop ++ ++ test -n "$prev" && \ ++ func_fatal_help "the \`$prevarg' option requires an argument" ++ ++ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then ++ eval arg=\"$export_dynamic_flag_spec\" ++ func_append compile_command " $arg" ++ func_append finalize_command " $arg" ++ fi ++ ++ oldlibs= ++ # calculate the name of the file, without its directory ++ func_basename "$output" ++ outputname="$func_basename_result" ++ libobjs_save="$libobjs" ++ ++ if test -n "$shlibpath_var"; then ++ # get the directories listed in $shlibpath_var ++ eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` ++ else ++ shlib_search_path= ++ fi ++ eval sys_lib_search_path=\"$sys_lib_search_path_spec\" ++ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" ++ ++ func_dirname "$output" "/" "" ++ output_objdir="$func_dirname_result$objdir" ++ # Create the object directory. ++ func_mkdir_p "$output_objdir" ++ ++ # Determine the type of output ++ case $output in ++ "") ++ func_fatal_help "you must specify an output file" ++ ;; ++ *.$libext) linkmode=oldlib ;; ++ *.lo | *.$objext) linkmode=obj ;; ++ *.la) linkmode=lib ;; ++ *) linkmode=prog ;; # Anything else should be a program. ++ esac ++ ++ specialdeplibs= ++ ++ libs= ++ # Find all interdependent deplibs by searching for libraries ++ # that are linked more than once (e.g. -la -lb -la) ++ for deplib in $deplibs; do ++ if $opt_duplicate_deps ; then ++ case "$libs " in ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; ++ esac ++ fi ++ libs="$libs $deplib" ++ done ++ ++ if test "$linkmode" = lib; then ++ libs="$predeps $libs $compiler_lib_search_path $postdeps" ++ ++ # Compute libraries that are listed more than once in $predeps ++ # $postdeps and mark them as special (i.e., whose duplicates are ++ # not to be eliminated). ++ pre_post_deps= ++ if $opt_duplicate_compiler_generated_deps; then ++ for pre_post_dep in $predeps $postdeps; do ++ case "$pre_post_deps " in ++ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; ++ esac ++ pre_post_deps="$pre_post_deps $pre_post_dep" ++ done ++ fi ++ pre_post_deps= ++ fi ++ ++ deplibs= ++ newdependency_libs= ++ newlib_search_path= ++ need_relink=no # whether we're linking any uninstalled libtool libraries ++ notinst_deplibs= # not-installed libtool libraries ++ notinst_path= # paths that contain not-installed libtool libraries ++ ++ case $linkmode in ++ lib) ++ passes="conv dlpreopen link" ++ for file in $dlfiles $dlprefiles; do ++ case $file in ++ *.la) ;; ++ *) ++ func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ++ ;; ++ esac ++ done ++ ;; ++ prog) ++ compile_deplibs= ++ finalize_deplibs= ++ alldeplibs=no ++ newdlfiles= ++ newdlprefiles= ++ passes="conv scan dlopen dlpreopen link" ++ ;; ++ *) passes="conv" ++ ;; ++ esac ++ ++ for pass in $passes; do ++ # The preopen pass in lib mode reverses $deplibs; put it back here ++ # so that -L comes before libs that need it for instance... ++ if test "$linkmode,$pass" = "lib,link"; then ++ ## FIXME: Find the place where the list is rebuilt in the wrong ++ ## order, and fix it there properly ++ tmp_deplibs= ++ for deplib in $deplibs; do ++ tmp_deplibs="$deplib $tmp_deplibs" ++ done ++ deplibs="$tmp_deplibs" ++ fi ++ ++ if test "$linkmode,$pass" = "lib,link" || ++ test "$linkmode,$pass" = "prog,scan"; then ++ libs="$deplibs" ++ deplibs= ++ fi ++ if test "$linkmode" = prog; then ++ case $pass in ++ dlopen) libs="$dlfiles" ;; ++ dlpreopen) libs="$dlprefiles" ;; ++ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; ++ esac ++ fi ++ if test "$linkmode,$pass" = "lib,dlpreopen"; then ++ # Collect and forward deplibs of preopened libtool libs ++ for lib in $dlprefiles; do ++ # Ignore non-libtool-libs ++ dependency_libs= ++ case $lib in ++ *.la) func_source "$lib" ;; ++ esac ++ ++ # Collect preopened libtool deplibs, except any this library ++ # has declared as weak libs ++ for deplib in $dependency_libs; do ++ deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` ++ case " $weak_libs " in ++ *" $deplib_base "*) ;; ++ *) deplibs="$deplibs $deplib" ;; ++ esac ++ done ++ done ++ libs="$dlprefiles" ++ fi ++ if test "$pass" = dlopen; then ++ # Collect dlpreopened libraries ++ save_deplibs="$deplibs" ++ deplibs= ++ fi ++ ++ for deplib in $libs; do ++ lib= ++ found=no ++ case $deplib in ++ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) ++ if test "$linkmode,$pass" = "prog,link"; then ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ compiler_flags="$compiler_flags $deplib" ++ if test "$linkmode" = lib ; then ++ case "$new_inherited_linker_flags " in ++ *" $deplib "*) ;; ++ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; ++ esac ++ fi ++ fi ++ continue ++ ;; ++ -l*) ++ if test "$linkmode" != lib && test "$linkmode" != prog; then ++ func_warning "\`-l' is ignored for archives/objects" ++ continue ++ fi ++ func_stripname '-l' '' "$deplib" ++ name=$func_stripname_result ++ if test "$linkmode" = lib; then ++ searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" ++ else ++ searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" ++ fi ++ for searchdir in $searchdirs; do ++ for search_ext in .la $std_shrext .so .a; do ++ # Search the libtool library ++ lib="$searchdir/lib${name}${search_ext}" ++ if test -f "$lib"; then ++ if test "$search_ext" = ".la"; then ++ found=yes ++ else ++ found=no ++ fi ++ break 2 ++ fi ++ done ++ done ++ if test "$found" != yes; then ++ # deplib doesn't seem to be a libtool library ++ if test "$linkmode,$pass" = "prog,link"; then ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ deplibs="$deplib $deplibs" ++ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" ++ fi ++ continue ++ else # deplib is a libtool library ++ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, ++ # We need to do some special things here, and not later. ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ case " $predeps $postdeps " in ++ *" $deplib "*) ++ if func_lalib_p "$lib"; then ++ library_names= ++ old_library= ++ func_source "$lib" ++ for l in $old_library $library_names; do ++ ll="$l" ++ done ++ if test "X$ll" = "X$old_library" ; then # only static version available ++ found=no ++ func_dirname "$lib" "" "." ++ ladir="$func_dirname_result" ++ lib=$ladir/$old_library ++ if test "$linkmode,$pass" = "prog,link"; then ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ deplibs="$deplib $deplibs" ++ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" ++ fi ++ continue ++ fi ++ fi ++ ;; ++ *) ;; ++ esac ++ fi ++ fi ++ ;; # -l ++ *.ltframework) ++ if test "$linkmode,$pass" = "prog,link"; then ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ deplibs="$deplib $deplibs" ++ if test "$linkmode" = lib ; then ++ case "$new_inherited_linker_flags " in ++ *" $deplib "*) ;; ++ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; ++ esac ++ fi ++ fi ++ continue ++ ;; ++ -L*) ++ case $linkmode in ++ lib) ++ deplibs="$deplib $deplibs" ++ test "$pass" = conv && continue ++ newdependency_libs="$deplib $newdependency_libs" ++ func_stripname '-L' '' "$deplib" ++ newlib_search_path="$newlib_search_path $func_stripname_result" ++ ;; ++ prog) ++ if test "$pass" = conv; then ++ deplibs="$deplib $deplibs" ++ continue ++ fi ++ if test "$pass" = scan; then ++ deplibs="$deplib $deplibs" ++ else ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ fi ++ func_stripname '-L' '' "$deplib" ++ newlib_search_path="$newlib_search_path $func_stripname_result" ++ ;; ++ *) ++ func_warning "\`-L' is ignored for archives/objects" ++ ;; ++ esac # linkmode ++ continue ++ ;; # -L ++ -R*) ++ if test "$pass" = link; then ++ func_stripname '-R' '' "$deplib" ++ dir=$func_stripname_result ++ # Make sure the xrpath contains only unique directories. ++ case "$xrpath " in ++ *" $dir "*) ;; ++ *) xrpath="$xrpath $dir" ;; ++ esac ++ fi ++ deplibs="$deplib $deplibs" ++ continue ++ ;; ++ *.la) lib="$deplib" ;; ++ *.$libext) ++ if test "$pass" = conv; then ++ deplibs="$deplib $deplibs" ++ continue ++ fi ++ case $linkmode in ++ lib) ++ # Linking convenience modules into shared libraries is allowed, ++ # but linking other static libraries is non-portable. ++ case " $dlpreconveniencelibs " in ++ *" $deplib "*) ;; ++ *) ++ valid_a_lib=no ++ case $deplibs_check_method in ++ match_pattern*) ++ set dummy $deplibs_check_method; shift ++ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` ++ if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ ++ | $EGREP "$match_pattern_regex" > /dev/null; then ++ valid_a_lib=yes ++ fi ++ ;; ++ pass_all) ++ valid_a_lib=yes ++ ;; ++ esac ++ if test "$valid_a_lib" != yes; then ++ $ECHO ++ $ECHO "*** Warning: Trying to link with static lib archive $deplib." ++ $ECHO "*** I have the capability to make that library automatically link in when" ++ $ECHO "*** you link to this library. But I can only do this if you have a" ++ $ECHO "*** shared version of the library, which you do not appear to have" ++ $ECHO "*** because the file extensions .$libext of this argument makes me believe" ++ $ECHO "*** that it is just a static archive that I should not use here." ++ else ++ $ECHO ++ $ECHO "*** Warning: Linking the shared library $output against the" ++ $ECHO "*** static library $deplib is not portable!" ++ deplibs="$deplib $deplibs" ++ fi ++ ;; ++ esac ++ continue ++ ;; ++ prog) ++ if test "$pass" != link; then ++ deplibs="$deplib $deplibs" ++ else ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ fi ++ continue ++ ;; ++ esac # linkmode ++ ;; # *.$libext ++ *.lo | *.$objext) ++ if test "$pass" = conv; then ++ deplibs="$deplib $deplibs" ++ elif test "$linkmode" = prog; then ++ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then ++ # If there is no dlopen support or we're linking statically, ++ # we need to preload. ++ newdlprefiles="$newdlprefiles $deplib" ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ newdlfiles="$newdlfiles $deplib" ++ fi ++ fi ++ continue ++ ;; ++ %DEPLIBS%) ++ alldeplibs=yes ++ continue ++ ;; ++ esac # case $deplib ++ ++ if test "$found" = yes || test -f "$lib"; then : ++ else ++ func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" ++ fi ++ ++ # Check to see that this really is a libtool archive. ++ func_lalib_unsafe_p "$lib" \ ++ || func_fatal_error "\`$lib' is not a valid libtool archive" ++ ++ func_dirname "$lib" "" "." ++ ladir="$func_dirname_result" ++ ++ dlname= ++ dlopen= ++ dlpreopen= ++ libdir= ++ library_names= ++ old_library= ++ inherited_linker_flags= ++ # If the library was installed with an old release of libtool, ++ # it will not redefine variables installed, or shouldnotlink ++ installed=yes ++ shouldnotlink=no ++ avoidtemprpath= ++ ++ ++ # Read the .la file ++ func_source "$lib" ++ ++ # Convert "-framework foo" to "foo.ltframework" ++ if test -n "$inherited_linker_flags"; then ++ tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` ++ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do ++ case " $new_inherited_linker_flags " in ++ *" $tmp_inherited_linker_flag "*) ;; ++ *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; ++ esac ++ done ++ fi ++ dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ++ if test "$linkmode,$pass" = "lib,link" || ++ test "$linkmode,$pass" = "prog,scan" || ++ { test "$linkmode" != prog && test "$linkmode" != lib; }; then ++ test -n "$dlopen" && dlfiles="$dlfiles $dlopen" ++ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" ++ fi ++ ++ if test "$pass" = conv; then ++ # Only check for convenience libraries ++ deplibs="$lib $deplibs" ++ if test -z "$libdir"; then ++ if test -z "$old_library"; then ++ func_fatal_error "cannot find name of link library for \`$lib'" ++ fi ++ # It is a libtool convenience library, so add in its objects. ++ convenience="$convenience $ladir/$objdir/$old_library" ++ old_convenience="$old_convenience $ladir/$objdir/$old_library" ++ elif test "$linkmode" != prog && test "$linkmode" != lib; then ++ func_fatal_error "\`$lib' is not a convenience library" ++ fi ++ tmp_libs= ++ for deplib in $dependency_libs; do ++ deplibs="$deplib $deplibs" ++ if $opt_duplicate_deps ; then ++ case "$tmp_libs " in ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; ++ esac ++ fi ++ tmp_libs="$tmp_libs $deplib" ++ done ++ continue ++ fi # $pass = conv ++ ++ ++ # Get the name of the library we link against. ++ linklib= ++ for l in $old_library $library_names; do ++ linklib="$l" ++ done ++ if test -z "$linklib"; then ++ func_fatal_error "cannot find name of link library for \`$lib'" ++ fi ++ ++ # This library was specified with -dlopen. ++ if test "$pass" = dlopen; then ++ if test -z "$libdir"; then ++ func_fatal_error "cannot -dlopen a convenience library: \`$lib'" ++ fi ++ if test -z "$dlname" || ++ test "$dlopen_support" != yes || ++ test "$build_libtool_libs" = no; then ++ # If there is no dlname, no dlopen support or we're linking ++ # statically, we need to preload. We also need to preload any ++ # dependent libraries so libltdl's deplib preloader doesn't ++ # bomb out in the load deplibs phase. ++ dlprefiles="$dlprefiles $lib $dependency_libs" ++ else ++ newdlfiles="$newdlfiles $lib" ++ fi ++ continue ++ fi # $pass = dlopen ++ ++ # We need an absolute path. ++ case $ladir in ++ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; ++ *) ++ abs_ladir=`cd "$ladir" && pwd` ++ if test -z "$abs_ladir"; then ++ func_warning "cannot determine absolute directory name of \`$ladir'" ++ func_warning "passing it literally to the linker, although it might fail" ++ abs_ladir="$ladir" ++ fi ++ ;; ++ esac ++ func_basename "$lib" ++ laname="$func_basename_result" ++ ++ # Find the relevant object directory and library name. ++ if test "X$installed" = Xyes; then ++ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then ++ func_warning "library \`$lib' was moved." ++ dir="$ladir" ++ absdir="$abs_ladir" ++ libdir="$abs_ladir" ++ else ++ dir="$libdir" ++ absdir="$libdir" ++ fi ++ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes ++ else ++ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then ++ dir="$ladir" ++ absdir="$abs_ladir" ++ # Remove this search path later ++ notinst_path="$notinst_path $abs_ladir" ++ else ++ dir="$ladir/$objdir" ++ absdir="$abs_ladir/$objdir" ++ # Remove this search path later ++ notinst_path="$notinst_path $abs_ladir" ++ fi ++ fi # $installed = yes ++ func_stripname 'lib' '.la' "$laname" ++ name=$func_stripname_result ++ ++ # This library was specified with -dlpreopen. ++ if test "$pass" = dlpreopen; then ++ if test -z "$libdir" && test "$linkmode" = prog; then ++ func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" ++ fi ++ # Prefer using a static library (so that no silly _DYNAMIC symbols ++ # are required to link). ++ if test -n "$old_library"; then ++ newdlprefiles="$newdlprefiles $dir/$old_library" ++ # Keep a list of preopened convenience libraries to check ++ # that they are being used correctly in the link pass. ++ test -z "$libdir" && \ ++ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" ++ # Otherwise, use the dlname, so that lt_dlopen finds it. ++ elif test -n "$dlname"; then ++ newdlprefiles="$newdlprefiles $dir/$dlname" ++ else ++ newdlprefiles="$newdlprefiles $dir/$linklib" ++ fi ++ fi # $pass = dlpreopen ++ ++ if test -z "$libdir"; then ++ # Link the convenience library ++ if test "$linkmode" = lib; then ++ deplibs="$dir/$old_library $deplibs" ++ elif test "$linkmode,$pass" = "prog,link"; then ++ compile_deplibs="$dir/$old_library $compile_deplibs" ++ finalize_deplibs="$dir/$old_library $finalize_deplibs" ++ else ++ deplibs="$lib $deplibs" # used for prog,scan pass ++ fi ++ continue ++ fi ++ ++ ++ if test "$linkmode" = prog && test "$pass" != link; then ++ newlib_search_path="$newlib_search_path $ladir" ++ deplibs="$lib $deplibs" ++ ++ linkalldeplibs=no ++ if test "$link_all_deplibs" != no || test -z "$library_names" || ++ test "$build_libtool_libs" = no; then ++ linkalldeplibs=yes ++ fi ++ ++ tmp_libs= ++ for deplib in $dependency_libs; do ++ case $deplib in ++ -L*) func_stripname '-L' '' "$deplib" ++ newlib_search_path="$newlib_search_path $func_stripname_result" ++ ;; ++ esac ++ # Need to link against all dependency_libs? ++ if test "$linkalldeplibs" = yes; then ++ deplibs="$deplib $deplibs" ++ else ++ # Need to hardcode shared library paths ++ # or/and link against static libraries ++ newdependency_libs="$deplib $newdependency_libs" ++ fi ++ if $opt_duplicate_deps ; then ++ case "$tmp_libs " in ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; ++ esac ++ fi ++ tmp_libs="$tmp_libs $deplib" ++ done # for deplib ++ continue ++ fi # $linkmode = prog... ++ ++ if test "$linkmode,$pass" = "prog,link"; then ++ if test -n "$library_names" && ++ { { test "$prefer_static_libs" = no || ++ test "$prefer_static_libs,$installed" = "built,yes"; } || ++ test -z "$old_library"; }; then ++ # We need to hardcode the library path ++ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then ++ # Make sure the rpath contains only unique directories. ++ case "$temp_rpath:" in ++ *"$absdir:"*) ;; ++ *) temp_rpath="$temp_rpath$absdir:" ;; ++ esac ++ fi ++ ++ # Hardcode the library path. ++ # Skip directories that are in the system default run-time ++ # search path. ++ case " $sys_lib_dlsearch_path " in ++ *" $absdir "*) ;; ++ *) ++ case "$compile_rpath " in ++ *" $absdir "*) ;; ++ *) compile_rpath="$compile_rpath $absdir" ++ esac ++ ;; ++ esac ++ case " $sys_lib_dlsearch_path " in ++ *" $libdir "*) ;; ++ *) ++ case "$finalize_rpath " in ++ *" $libdir "*) ;; ++ *) finalize_rpath="$finalize_rpath $libdir" ++ esac ++ ;; ++ esac ++ fi # $linkmode,$pass = prog,link... ++ ++ if test "$alldeplibs" = yes && ++ { test "$deplibs_check_method" = pass_all || ++ { test "$build_libtool_libs" = yes && ++ test -n "$library_names"; }; }; then ++ # We only need to search for static libraries ++ continue ++ fi ++ fi ++ ++ link_static=no # Whether the deplib will be linked statically ++ use_static_libs=$prefer_static_libs ++ if test "$use_static_libs" = built && test "$installed" = yes; then ++ use_static_libs=no ++ fi ++ if test -n "$library_names" && ++ { test "$use_static_libs" = no || test -z "$old_library"; }; then ++ case $host in ++ *cygwin* | *mingw* | *cegcc*) ++ # No point in relinking DLLs because paths are not encoded ++ notinst_deplibs="$notinst_deplibs $lib" ++ need_relink=no ++ ;; ++ *) ++ if test "$installed" = no; then ++ notinst_deplibs="$notinst_deplibs $lib" ++ need_relink=yes ++ fi ++ ;; ++ esac ++ # This is a shared library ++ ++ # Warn about portability, can't link against -module's on some ++ # systems (darwin). Don't bleat about dlopened modules though! ++ dlopenmodule="" ++ for dlpremoduletest in $dlprefiles; do ++ if test "X$dlpremoduletest" = "X$lib"; then ++ dlopenmodule="$dlpremoduletest" ++ break ++ fi ++ done ++ if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then ++ $ECHO ++ if test "$linkmode" = prog; then ++ $ECHO "*** Warning: Linking the executable $output against the loadable module" ++ else ++ $ECHO "*** Warning: Linking the shared library $output against the loadable module" ++ fi ++ $ECHO "*** $linklib is not portable!" ++ fi ++ if test "$linkmode" = lib && ++ test "$hardcode_into_libs" = yes; then ++ # Hardcode the library path. ++ # Skip directories that are in the system default run-time ++ # search path. ++ case " $sys_lib_dlsearch_path " in ++ *" $absdir "*) ;; ++ *) ++ case "$compile_rpath " in ++ *" $absdir "*) ;; ++ *) compile_rpath="$compile_rpath $absdir" ++ esac ++ ;; ++ esac ++ case " $sys_lib_dlsearch_path " in ++ *" $libdir "*) ;; ++ *) ++ case "$finalize_rpath " in ++ *" $libdir "*) ;; ++ *) finalize_rpath="$finalize_rpath $libdir" ++ esac ++ ;; ++ esac ++ fi ++ ++ if test -n "$old_archive_from_expsyms_cmds"; then ++ # figure out the soname ++ set dummy $library_names ++ shift ++ realname="$1" ++ shift ++ libname=`eval "\\$ECHO \"$libname_spec\""` ++ # use dlname if we got it. it's perfectly good, no? ++ if test -n "$dlname"; then ++ soname="$dlname" ++ elif test -n "$soname_spec"; then ++ # bleh windows ++ case $host in ++ *cygwin* | mingw* | *cegcc*) ++ func_arith $current - $age ++ major=$func_arith_result ++ versuffix="-$major" ++ ;; ++ esac ++ eval soname=\"$soname_spec\" ++ else ++ soname="$realname" ++ fi ++ ++ # Make a new name for the extract_expsyms_cmds to use ++ soroot="$soname" ++ func_basename "$soroot" ++ soname="$func_basename_result" ++ func_stripname 'lib' '.dll' "$soname" ++ newlib=libimp-$func_stripname_result.a ++ ++ # If the library has no export list, then create one now ++ if test -f "$output_objdir/$soname-def"; then : ++ else ++ func_verbose "extracting exported symbol list from \`$soname'" ++ func_execute_cmds "$extract_expsyms_cmds" 'exit $?' ++ fi ++ ++ # Create $newlib ++ if test -f "$output_objdir/$newlib"; then :; else ++ func_verbose "generating import library for \`$soname'" ++ func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' ++ fi ++ # make sure the library variables are pointing to the new library ++ dir=$output_objdir ++ linklib=$newlib ++ fi # test -n "$old_archive_from_expsyms_cmds" ++ ++ if test "$linkmode" = prog || test "$mode" != relink; then ++ add_shlibpath= ++ add_dir= ++ add= ++ lib_linked=yes ++ case $hardcode_action in ++ immediate | unsupported) ++ if test "$hardcode_direct" = no; then ++ add="$dir/$linklib" ++ case $host in ++ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; ++ *-*-sysv4*uw2*) add_dir="-L$dir" ;; ++ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ ++ *-*-unixware7*) add_dir="-L$dir" ;; ++ *-*-darwin* ) ++ # if the lib is a (non-dlopened) module then we can not ++ # link against it, someone is ignoring the earlier warnings ++ if /usr/bin/file -L $add 2> /dev/null | ++ $GREP ": [^:]* bundle" >/dev/null ; then ++ if test "X$dlopenmodule" != "X$lib"; then ++ $ECHO "*** Warning: lib $linklib is a module, not a shared library" ++ if test -z "$old_library" ; then ++ $ECHO ++ $ECHO "*** And there doesn't seem to be a static archive available" ++ $ECHO "*** The link will probably fail, sorry" ++ else ++ add="$dir/$old_library" ++ fi ++ elif test -n "$old_library"; then ++ add="$dir/$old_library" ++ fi ++ fi ++ esac ++ elif test "$hardcode_minus_L" = no; then ++ case $host in ++ *-*-sunos*) add_shlibpath="$dir" ;; ++ esac ++ add_dir="-L$dir" ++ add="-l$name" ++ elif test "$hardcode_shlibpath_var" = no; then ++ add_shlibpath="$dir" ++ add="-l$name" ++ else ++ lib_linked=no ++ fi ++ ;; ++ relink) ++ if test "$hardcode_direct" = yes && ++ test "$hardcode_direct_absolute" = no; then ++ add="$dir/$linklib" ++ elif test "$hardcode_minus_L" = yes; then ++ add_dir="-L$dir" ++ # Try looking first in the location we're being installed to. ++ if test -n "$inst_prefix_dir"; then ++ case $libdir in ++ [\\/]*) ++ add_dir="$add_dir -L$inst_prefix_dir$libdir" ++ ;; ++ esac ++ fi ++ add="-l$name" ++ elif test "$hardcode_shlibpath_var" = yes; then ++ add_shlibpath="$dir" ++ add="-l$name" ++ else ++ lib_linked=no ++ fi ++ ;; ++ *) lib_linked=no ;; ++ esac ++ ++ if test "$lib_linked" != yes; then ++ func_fatal_configuration "unsupported hardcode properties" ++ fi ++ ++ if test -n "$add_shlibpath"; then ++ case :$compile_shlibpath: in ++ *":$add_shlibpath:"*) ;; ++ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; ++ esac ++ fi ++ if test "$linkmode" = prog; then ++ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" ++ test -n "$add" && compile_deplibs="$add $compile_deplibs" ++ else ++ test -n "$add_dir" && deplibs="$add_dir $deplibs" ++ test -n "$add" && deplibs="$add $deplibs" ++ if test "$hardcode_direct" != yes && ++ test "$hardcode_minus_L" != yes && ++ test "$hardcode_shlibpath_var" = yes; then ++ case :$finalize_shlibpath: in ++ *":$libdir:"*) ;; ++ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; ++ esac ++ fi ++ fi ++ fi ++ ++ if test "$linkmode" = prog || test "$mode" = relink; then ++ add_shlibpath= ++ add_dir= ++ add= ++ # Finalize command for both is simple: just hardcode it. ++ if test "$hardcode_direct" = yes && ++ test "$hardcode_direct_absolute" = no; then ++ add="$libdir/$linklib" ++ elif test "$hardcode_minus_L" = yes; then ++ add_dir="-L$libdir" ++ add="-l$name" ++ elif test "$hardcode_shlibpath_var" = yes; then ++ case :$finalize_shlibpath: in ++ *":$libdir:"*) ;; ++ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; ++ esac ++ add="-l$name" ++ elif test "$hardcode_automatic" = yes; then ++ if test -n "$inst_prefix_dir" && ++ test -f "$inst_prefix_dir$libdir/$linklib" ; then ++ add="$inst_prefix_dir$libdir/$linklib" ++ else ++ add="$libdir/$linklib" ++ fi ++ else ++ # We cannot seem to hardcode it, guess we'll fake it. ++ add_dir="-L$libdir" ++ # Try looking first in the location we're being installed to. ++ if test -n "$inst_prefix_dir"; then ++ case $libdir in ++ [\\/]*) ++ add_dir="$add_dir -L$inst_prefix_dir$libdir" ++ ;; ++ esac ++ fi ++ add="-l$name" ++ fi ++ ++ if test "$linkmode" = prog; then ++ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" ++ test -n "$add" && finalize_deplibs="$add $finalize_deplibs" ++ else ++ test -n "$add_dir" && deplibs="$add_dir $deplibs" ++ test -n "$add" && deplibs="$add $deplibs" ++ fi ++ fi ++ elif test "$linkmode" = prog; then ++ # Here we assume that one of hardcode_direct or hardcode_minus_L ++ # is not unsupported. This is valid on all known static and ++ # shared platforms. ++ if test "$hardcode_direct" != unsupported; then ++ test -n "$old_library" && linklib="$old_library" ++ compile_deplibs="$dir/$linklib $compile_deplibs" ++ finalize_deplibs="$dir/$linklib $finalize_deplibs" ++ else ++ compile_deplibs="-l$name -L$dir $compile_deplibs" ++ finalize_deplibs="-l$name -L$dir $finalize_deplibs" ++ fi ++ elif test "$build_libtool_libs" = yes; then ++ # Not a shared library ++ if test "$deplibs_check_method" != pass_all; then ++ # We're trying link a shared library against a static one ++ # but the system doesn't support it. ++ ++ # Just print a warning and add the library to dependency_libs so ++ # that the program can be linked against the static library. ++ $ECHO ++ $ECHO "*** Warning: This system can not link to static lib archive $lib." ++ $ECHO "*** I have the capability to make that library automatically link in when" ++ $ECHO "*** you link to this library. But I can only do this if you have a" ++ $ECHO "*** shared version of the library, which you do not appear to have." ++ if test "$module" = yes; then ++ $ECHO "*** But as you try to build a module library, libtool will still create " ++ $ECHO "*** a static module, that should work as long as the dlopening application" ++ $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." ++ if test -z "$global_symbol_pipe"; then ++ $ECHO ++ $ECHO "*** However, this would only work if libtool was able to extract symbol" ++ $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" ++ $ECHO "*** not find such a program. So, this module is probably useless." ++ $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." ++ fi ++ if test "$build_old_libs" = no; then ++ build_libtool_libs=module ++ build_old_libs=yes ++ else ++ build_libtool_libs=no ++ fi ++ fi ++ else ++ deplibs="$dir/$old_library $deplibs" ++ link_static=yes ++ fi ++ fi # link shared/static library? ++ ++ if test "$linkmode" = lib; then ++ if test -n "$dependency_libs" && ++ { test "$hardcode_into_libs" != yes || ++ test "$build_old_libs" = yes || ++ test "$link_static" = yes; }; then ++ # Extract -R from dependency_libs ++ temp_deplibs= ++ for libdir in $dependency_libs; do ++ case $libdir in ++ -R*) func_stripname '-R' '' "$libdir" ++ temp_xrpath=$func_stripname_result ++ case " $xrpath " in ++ *" $temp_xrpath "*) ;; ++ *) xrpath="$xrpath $temp_xrpath";; ++ esac;; ++ *) temp_deplibs="$temp_deplibs $libdir";; ++ esac ++ done ++ dependency_libs="$temp_deplibs" ++ fi ++ ++ newlib_search_path="$newlib_search_path $absdir" ++ # Link against this library ++ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" ++ # ... and its dependency_libs ++ tmp_libs= ++ for deplib in $dependency_libs; do ++ newdependency_libs="$deplib $newdependency_libs" ++ if $opt_duplicate_deps ; then ++ case "$tmp_libs " in ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; ++ esac ++ fi ++ tmp_libs="$tmp_libs $deplib" ++ done ++ ++ if test "$link_all_deplibs" != no; then ++ # Add the search paths of all dependency libraries ++ for deplib in $dependency_libs; do ++ case $deplib in ++ -L*) path="$deplib" ;; ++ *.la) ++ func_dirname "$deplib" "" "." ++ dir="$func_dirname_result" ++ # We need an absolute path. ++ case $dir in ++ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; ++ *) ++ absdir=`cd "$dir" && pwd` ++ if test -z "$absdir"; then ++ func_warning "cannot determine absolute directory name of \`$dir'" ++ absdir="$dir" ++ fi ++ ;; ++ esac ++ if $GREP "^installed=no" $deplib > /dev/null; then ++ case $host in ++ *-*-darwin*) ++ depdepl= ++ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` ++ if test -n "$deplibrary_names" ; then ++ for tmp in $deplibrary_names ; do ++ depdepl=$tmp ++ done ++ if test -f "$absdir/$objdir/$depdepl" ; then ++ depdepl="$absdir/$objdir/$depdepl" ++ darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` ++ if test -z "$darwin_install_name"; then ++ darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` ++ fi ++ compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" ++ linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" ++ path= ++ fi ++ fi ++ ;; ++ *) ++ path="-L$absdir/$objdir" ++ ;; ++ esac ++ else ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` ++ test -z "$libdir" && \ ++ func_fatal_error "\`$deplib' is not a valid libtool archive" ++ test "$absdir" != "$libdir" && \ ++ func_warning "\`$deplib' seems to be moved" ++ ++ path="-L$absdir" ++ fi ++ ;; ++ esac ++ case " $deplibs " in ++ *" $path "*) ;; ++ *) deplibs="$path $deplibs" ;; ++ esac ++ done ++ fi # link_all_deplibs != no ++ fi # linkmode = lib ++ done # for deplib in $libs ++ if test "$pass" = link; then ++ if test "$linkmode" = "prog"; then ++ compile_deplibs="$new_inherited_linker_flags $compile_deplibs" ++ finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" ++ else ++ compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ++ fi ++ fi ++ dependency_libs="$newdependency_libs" ++ if test "$pass" = dlpreopen; then ++ # Link the dlpreopened libraries before other libraries ++ for deplib in $save_deplibs; do ++ deplibs="$deplib $deplibs" ++ done ++ fi ++ if test "$pass" != dlopen; then ++ if test "$pass" != conv; then ++ # Make sure lib_search_path contains only unique directories. ++ lib_search_path= ++ for dir in $newlib_search_path; do ++ case "$lib_search_path " in ++ *" $dir "*) ;; ++ *) lib_search_path="$lib_search_path $dir" ;; ++ esac ++ done ++ newlib_search_path= ++ fi ++ ++ if test "$linkmode,$pass" != "prog,link"; then ++ vars="deplibs" ++ else ++ vars="compile_deplibs finalize_deplibs" ++ fi ++ for var in $vars dependency_libs; do ++ # Add libraries to $var in reverse order ++ eval tmp_libs=\"\$$var\" ++ new_libs= ++ for deplib in $tmp_libs; do ++ # FIXME: Pedantically, this is the right thing to do, so ++ # that some nasty dependency loop isn't accidentally ++ # broken: ++ #new_libs="$deplib $new_libs" ++ # Pragmatically, this seems to cause very few problems in ++ # practice: ++ case $deplib in ++ -L*) new_libs="$deplib $new_libs" ;; ++ -R*) ;; ++ *) ++ # And here is the reason: when a library appears more ++ # than once as an explicit dependence of a library, or ++ # is implicitly linked in more than once by the ++ # compiler, it is considered special, and multiple ++ # occurrences thereof are not removed. Compare this ++ # with having the same library being listed as a ++ # dependency of multiple other libraries: in this case, ++ # we know (pedantically, we assume) the library does not ++ # need to be listed more than once, so we keep only the ++ # last copy. This is not always right, but it is rare ++ # enough that we require users that really mean to play ++ # such unportable linking tricks to link the library ++ # using -Wl,-lname, so that libtool does not consider it ++ # for duplicate removal. ++ case " $specialdeplibs " in ++ *" $deplib "*) new_libs="$deplib $new_libs" ;; ++ *) ++ case " $new_libs " in ++ *" $deplib "*) ;; ++ *) new_libs="$deplib $new_libs" ;; ++ esac ++ ;; ++ esac ++ ;; ++ esac ++ done ++ tmp_libs= ++ for deplib in $new_libs; do ++ case $deplib in ++ -L*) ++ case " $tmp_libs " in ++ *" $deplib "*) ;; ++ *) tmp_libs="$tmp_libs $deplib" ;; ++ esac ++ ;; ++ *) tmp_libs="$tmp_libs $deplib" ;; ++ esac ++ done ++ eval $var=\"$tmp_libs\" ++ done # for var ++ fi ++ # Last step: remove runtime libs from dependency_libs ++ # (they stay in deplibs) ++ tmp_libs= ++ for i in $dependency_libs ; do ++ case " $predeps $postdeps $compiler_lib_search_path " in ++ *" $i "*) ++ i="" ++ ;; ++ esac ++ if test -n "$i" ; then ++ tmp_libs="$tmp_libs $i" ++ fi ++ done ++ dependency_libs=$tmp_libs ++ done # for pass ++ if test "$linkmode" = prog; then ++ dlfiles="$newdlfiles" ++ fi ++ if test "$linkmode" = prog || test "$linkmode" = lib; then ++ dlprefiles="$newdlprefiles" ++ fi ++ ++ case $linkmode in ++ oldlib) ++ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then ++ func_warning "\`-dlopen' is ignored for archives" ++ fi ++ ++ case " $deplibs" in ++ *\ -l* | *\ -L*) ++ func_warning "\`-l' and \`-L' are ignored for archives" ;; ++ esac ++ ++ test -n "$rpath" && \ ++ func_warning "\`-rpath' is ignored for archives" ++ ++ test -n "$xrpath" && \ ++ func_warning "\`-R' is ignored for archives" ++ ++ test -n "$vinfo" && \ ++ func_warning "\`-version-info/-version-number' is ignored for archives" ++ ++ test -n "$release" && \ ++ func_warning "\`-release' is ignored for archives" ++ ++ test -n "$export_symbols$export_symbols_regex" && \ ++ func_warning "\`-export-symbols' is ignored for archives" ++ ++ # Now set the variables for building old libraries. ++ build_libtool_libs=no ++ oldlibs="$output" ++ objs="$objs$old_deplibs" ++ ;; ++ ++ lib) ++ # Make sure we only generate libraries of the form `libNAME.la'. ++ case $outputname in ++ lib*) ++ func_stripname 'lib' '.la' "$outputname" ++ name=$func_stripname_result ++ eval shared_ext=\"$shrext_cmds\" ++ eval libname=\"$libname_spec\" ++ ;; ++ *) ++ test "$module" = no && \ ++ func_fatal_help "libtool library \`$output' must begin with \`lib'" ++ ++ if test "$need_lib_prefix" != no; then ++ # Add the "lib" prefix for modules if required ++ func_stripname '' '.la' "$outputname" ++ name=$func_stripname_result ++ eval shared_ext=\"$shrext_cmds\" ++ eval libname=\"$libname_spec\" ++ else ++ func_stripname '' '.la' "$outputname" ++ libname=$func_stripname_result ++ fi ++ ;; ++ esac ++ ++ if test -n "$objs"; then ++ if test "$deplibs_check_method" != pass_all; then ++ func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" ++ else ++ $ECHO ++ $ECHO "*** Warning: Linking the shared library $output against the non-libtool" ++ $ECHO "*** objects $objs is not portable!" ++ libobjs="$libobjs $objs" ++ fi ++ fi ++ ++ test "$dlself" != no && \ ++ func_warning "\`-dlopen self' is ignored for libtool libraries" ++ ++ set dummy $rpath ++ shift ++ test "$#" -gt 1 && \ ++ func_warning "ignoring multiple \`-rpath's for a libtool library" ++ ++ install_libdir="$1" ++ ++ oldlibs= ++ if test -z "$rpath"; then ++ if test "$build_libtool_libs" = yes; then ++ # Building a libtool convenience library. ++ # Some compilers have problems with a `.al' extension so ++ # convenience libraries should have the same extension an ++ # archive normally would. ++ oldlibs="$output_objdir/$libname.$libext $oldlibs" ++ build_libtool_libs=convenience ++ build_old_libs=yes ++ fi ++ ++ test -n "$vinfo" && \ ++ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" ++ ++ test -n "$release" && \ ++ func_warning "\`-release' is ignored for convenience libraries" ++ else ++ ++ # Parse the version information argument. ++ save_ifs="$IFS"; IFS=':' ++ set dummy $vinfo 0 0 0 ++ shift ++ IFS="$save_ifs" ++ ++ test -n "$7" && \ ++ func_fatal_help "too many parameters to \`-version-info'" ++ ++ # convert absolute version numbers to libtool ages ++ # this retains compatibility with .la files and attempts ++ # to make the code below a bit more comprehensible ++ ++ case $vinfo_number in ++ yes) ++ number_major="$1" ++ number_minor="$2" ++ number_revision="$3" ++ # ++ # There are really only two kinds -- those that ++ # use the current revision as the major version ++ # and those that subtract age and use age as ++ # a minor version. But, then there is irix ++ # which has an extra 1 added just for fun ++ # ++ case $version_type in ++ darwin|linux|osf|windows|none) ++ func_arith $number_major + $number_minor ++ current=$func_arith_result ++ age="$number_minor" ++ revision="$number_revision" ++ ;; ++ freebsd-aout|freebsd-elf|sunos) ++ current="$number_major" ++ revision="$number_minor" ++ age="0" ++ ;; ++ irix|nonstopux) ++ func_arith $number_major + $number_minor ++ current=$func_arith_result ++ age="$number_minor" ++ revision="$number_minor" ++ lt_irix_increment=no ++ ;; ++ esac ++ ;; ++ no) ++ current="$1" ++ revision="$2" ++ age="$3" ++ ;; ++ esac ++ ++ # Check that each of the things are valid numbers. ++ case $current in ++ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; ++ *) ++ func_error "CURRENT \`$current' must be a nonnegative integer" ++ func_fatal_error "\`$vinfo' is not valid version information" ++ ;; ++ esac ++ ++ case $revision in ++ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; ++ *) ++ func_error "REVISION \`$revision' must be a nonnegative integer" ++ func_fatal_error "\`$vinfo' is not valid version information" ++ ;; ++ esac ++ ++ case $age in ++ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; ++ *) ++ func_error "AGE \`$age' must be a nonnegative integer" ++ func_fatal_error "\`$vinfo' is not valid version information" ++ ;; ++ esac ++ ++ if test "$age" -gt "$current"; then ++ func_error "AGE \`$age' is greater than the current interface number \`$current'" ++ func_fatal_error "\`$vinfo' is not valid version information" ++ fi ++ ++ # Calculate the version variables. ++ major= ++ versuffix= ++ verstring= ++ case $version_type in ++ none) ;; ++ ++ darwin) ++ # Like Linux, but with the current version available in ++ # verstring for coding it into the library header ++ func_arith $current - $age ++ major=.$func_arith_result ++ versuffix="$major.$age.$revision" ++ # Darwin ld doesn't like 0 for these options... ++ func_arith $current + 1 ++ minor_current=$func_arith_result ++ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" ++ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ++ ;; ++ ++ freebsd-aout) ++ major=".$current" ++ versuffix=".$current.$revision"; ++ ;; ++ ++ freebsd-elf) ++ major=".$current" ++ versuffix=".$current" ++ ;; ++ ++ irix | nonstopux) ++ if test "X$lt_irix_increment" = "Xno"; then ++ func_arith $current - $age ++ else ++ func_arith $current - $age + 1 ++ fi ++ major=$func_arith_result ++ ++ case $version_type in ++ nonstopux) verstring_prefix=nonstopux ;; ++ *) verstring_prefix=sgi ;; ++ esac ++ verstring="$verstring_prefix$major.$revision" ++ ++ # Add in all the interfaces that we are compatible with. ++ loop=$revision ++ while test "$loop" -ne 0; do ++ func_arith $revision - $loop ++ iface=$func_arith_result ++ func_arith $loop - 1 ++ loop=$func_arith_result ++ verstring="$verstring_prefix$major.$iface:$verstring" ++ done ++ ++ # Before this point, $major must not contain `.'. ++ major=.$major ++ versuffix="$major.$revision" ++ ;; ++ ++ linux) ++ func_arith $current - $age ++ major=.$func_arith_result ++ versuffix="$major.$age.$revision" ++ ;; ++ ++ osf) ++ func_arith $current - $age ++ major=.$func_arith_result ++ versuffix=".$current.$age.$revision" ++ verstring="$current.$age.$revision" ++ ++ # Add in all the interfaces that we are compatible with. ++ loop=$age ++ while test "$loop" -ne 0; do ++ func_arith $current - $loop ++ iface=$func_arith_result ++ func_arith $loop - 1 ++ loop=$func_arith_result ++ verstring="$verstring:${iface}.0" ++ done ++ ++ # Make executables depend on our current version. ++ verstring="$verstring:${current}.0" ++ ;; ++ ++ qnx) ++ major=".$current" ++ versuffix=".$current" ++ ;; ++ ++ sunos) ++ major=".$current" ++ versuffix=".$current.$revision" ++ ;; ++ ++ windows) ++ # Use '-' rather than '.', since we only want one ++ # extension on DOS 8.3 filesystems. ++ func_arith $current - $age ++ major=$func_arith_result ++ versuffix="-$major" ++ ;; ++ ++ *) ++ func_fatal_configuration "unknown library version type \`$version_type'" ++ ;; ++ esac ++ ++ # Clear the version info if we defaulted, and they specified a release. ++ if test -z "$vinfo" && test -n "$release"; then ++ major= ++ case $version_type in ++ darwin) ++ # we can't check for "0.0" in archive_cmds due to quoting ++ # problems, so we reset it completely ++ verstring= ++ ;; ++ *) ++ verstring="0.0" ++ ;; ++ esac ++ if test "$need_version" = no; then ++ versuffix= ++ else ++ versuffix=".0.0" ++ fi ++ fi ++ ++ # Remove version info from name if versioning should be avoided ++ if test "$avoid_version" = yes && test "$need_version" = no; then ++ major= ++ versuffix= ++ verstring="" ++ fi ++ ++ # Check to see if the archive will have undefined symbols. ++ if test "$allow_undefined" = yes; then ++ if test "$allow_undefined_flag" = unsupported; then ++ func_warning "undefined symbols not allowed in $host shared libraries" ++ build_libtool_libs=no ++ build_old_libs=yes ++ fi ++ else ++ # Don't allow undefined symbols. ++ allow_undefined_flag="$no_undefined_flag" ++ fi ++ ++ fi ++ ++ func_generate_dlsyms "$libname" "$libname" "yes" ++ libobjs="$libobjs $symfileobj" ++ test "X$libobjs" = "X " && libobjs= ++ ++ if test "$mode" != relink; then ++ # Remove our outputs, but don't remove object files since they ++ # may have been created when compiling PIC objects. ++ removelist= ++ tempremovelist=`$ECHO "$output_objdir/*"` ++ for p in $tempremovelist; do ++ case $p in ++ *.$objext | *.gcno) ++ ;; ++ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) ++ if test "X$precious_files_regex" != "X"; then ++ if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 ++ then ++ continue ++ fi ++ fi ++ removelist="$removelist $p" ++ ;; ++ *) ;; ++ esac ++ done ++ test -n "$removelist" && \ ++ func_show_eval "${RM}r \$removelist" ++ fi ++ ++ # Now set the variables for building old libraries. ++ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then ++ oldlibs="$oldlibs $output_objdir/$libname.$libext" ++ ++ # Transform .lo files to .o files. ++ oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` ++ fi ++ ++ # Eliminate all temporary directories. ++ #for path in $notinst_path; do ++ # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` ++ # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` ++ # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` ++ #done ++ ++ if test -n "$xrpath"; then ++ # If the user specified any rpath flags, then add them. ++ temp_xrpath= ++ for libdir in $xrpath; do ++ temp_xrpath="$temp_xrpath -R$libdir" ++ case "$finalize_rpath " in ++ *" $libdir "*) ;; ++ *) finalize_rpath="$finalize_rpath $libdir" ;; ++ esac ++ done ++ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then ++ dependency_libs="$temp_xrpath $dependency_libs" ++ fi ++ fi ++ ++ # Make sure dlfiles contains only unique files that won't be dlpreopened ++ old_dlfiles="$dlfiles" ++ dlfiles= ++ for lib in $old_dlfiles; do ++ case " $dlprefiles $dlfiles " in ++ *" $lib "*) ;; ++ *) dlfiles="$dlfiles $lib" ;; ++ esac ++ done ++ ++ # Make sure dlprefiles contains only unique files ++ old_dlprefiles="$dlprefiles" ++ dlprefiles= ++ for lib in $old_dlprefiles; do ++ case "$dlprefiles " in ++ *" $lib "*) ;; ++ *) dlprefiles="$dlprefiles $lib" ;; ++ esac ++ done ++ ++ if test "$build_libtool_libs" = yes; then ++ if test -n "$rpath"; then ++ case $host in ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) ++ # these systems don't actually have a c library (as such)! ++ ;; ++ *-*-rhapsody* | *-*-darwin1.[012]) ++ # Rhapsody C library is in the System framework ++ deplibs="$deplibs System.ltframework" ++ ;; ++ *-*-netbsd*) ++ # Don't link with libc until the a.out ld.so is fixed. ++ ;; ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) ++ # Do not include libc due to us having libc/libc_r. ++ ;; ++ *-*-sco3.2v5* | *-*-sco5v6*) ++ # Causes problems with __ctype ++ ;; ++ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) ++ # Compiler inserts libc in the correct place for threads to work ++ ;; ++ *) ++ # Add libc to deplibs on all other systems if necessary. ++ if test "$build_libtool_need_lc" = "yes"; then ++ deplibs="$deplibs -lc" ++ fi ++ ;; ++ esac ++ fi ++ ++ # Transform deplibs into only deplibs that can be linked in shared. ++ name_save=$name ++ libname_save=$libname ++ release_save=$release ++ versuffix_save=$versuffix ++ major_save=$major ++ # I'm not sure if I'm treating the release correctly. I think ++ # release should show up in the -l (ie -lgmp5) so we don't want to ++ # add it in twice. Is that correct? ++ release="" ++ versuffix="" ++ major="" ++ newdeplibs= ++ droppeddeps=no ++ case $deplibs_check_method in ++ pass_all) ++ # Don't check for shared/static. Everything works. ++ # This might be a little naive. We might want to check ++ # whether the library exists or not. But this is on ++ # osf3 & osf4 and I'm not really sure... Just ++ # implementing what was already the behavior. ++ newdeplibs=$deplibs ++ ;; ++ test_compile) ++ # This code stresses the "libraries are programs" paradigm to its ++ # limits. Maybe even breaks it. We compile a program, linking it ++ # against the deplibs as a proxy for the library. Then we can check ++ # whether they linked in statically or dynamically with ldd. ++ $opt_dry_run || $RM conftest.c ++ cat > conftest.c </dev/null` ++ for potent_lib in $potential_libs; do ++ # Follow soft links. ++ if ls -lLd "$potent_lib" 2>/dev/null | ++ $GREP " -> " >/dev/null; then ++ continue ++ fi ++ # The statement above tries to avoid entering an ++ # endless loop below, in case of cyclic links. ++ # We might still enter an endless loop, since a link ++ # loop can be closed while we follow links, ++ # but so what? ++ potlib="$potent_lib" ++ while test -h "$potlib" 2>/dev/null; do ++ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` ++ case $potliblink in ++ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; ++ *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; ++ esac ++ done ++ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | ++ $SED -e 10q | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ newdeplibs="$newdeplibs $a_deplib" ++ a_deplib="" ++ break 2 ++ fi ++ done ++ done ++ fi ++ if test -n "$a_deplib" ; then ++ droppeddeps=yes ++ $ECHO ++ $ECHO "*** Warning: linker path does not have real file for library $a_deplib." ++ $ECHO "*** I have the capability to make that library automatically link in when" ++ $ECHO "*** you link to this library. But I can only do this if you have a" ++ $ECHO "*** shared version of the library, which you do not appear to have" ++ $ECHO "*** because I did check the linker path looking for a file starting" ++ if test -z "$potlib" ; then ++ $ECHO "*** with $libname but no candidates were found. (...for file magic test)" ++ else ++ $ECHO "*** with $libname and none of the candidates passed a file format test" ++ $ECHO "*** using a file magic. Last file checked: $potlib" ++ fi ++ fi ++ ;; ++ *) ++ # Add a -L argument. ++ newdeplibs="$newdeplibs $a_deplib" ++ ;; ++ esac ++ done # Gone through all deplibs. ++ ;; ++ match_pattern*) ++ set dummy $deplibs_check_method; shift ++ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` ++ for a_deplib in $deplibs; do ++ case $a_deplib in ++ -l*) ++ func_stripname -l '' "$a_deplib" ++ name=$func_stripname_result ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ case " $predeps $postdeps " in ++ *" $a_deplib "*) ++ newdeplibs="$newdeplibs $a_deplib" ++ a_deplib="" ++ ;; ++ esac ++ fi ++ if test -n "$a_deplib" ; then ++ libname=`eval "\\$ECHO \"$libname_spec\""` ++ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do ++ potential_libs=`ls $i/$libname[.-]* 2>/dev/null` ++ for potent_lib in $potential_libs; do ++ potlib="$potent_lib" # see symlink-check above in file_magic test ++ if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ ++ $EGREP "$match_pattern_regex" > /dev/null; then ++ newdeplibs="$newdeplibs $a_deplib" ++ a_deplib="" ++ break 2 ++ fi ++ done ++ done ++ fi ++ if test -n "$a_deplib" ; then ++ droppeddeps=yes ++ $ECHO ++ $ECHO "*** Warning: linker path does not have real file for library $a_deplib." ++ $ECHO "*** I have the capability to make that library automatically link in when" ++ $ECHO "*** you link to this library. But I can only do this if you have a" ++ $ECHO "*** shared version of the library, which you do not appear to have" ++ $ECHO "*** because I did check the linker path looking for a file starting" ++ if test -z "$potlib" ; then ++ $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" ++ else ++ $ECHO "*** with $libname and none of the candidates passed a file format test" ++ $ECHO "*** using a regex pattern. Last file checked: $potlib" ++ fi ++ fi ++ ;; ++ *) ++ # Add a -L argument. ++ newdeplibs="$newdeplibs $a_deplib" ++ ;; ++ esac ++ done # Gone through all deplibs. ++ ;; ++ none | unknown | *) ++ newdeplibs="" ++ tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ ++ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ for i in $predeps $postdeps ; do ++ # can't use Xsed below, because $i might contain '/' ++ tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` ++ done ++ fi ++ if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | ++ $GREP . >/dev/null; then ++ $ECHO ++ if test "X$deplibs_check_method" = "Xnone"; then ++ $ECHO "*** Warning: inter-library dependencies are not supported in this platform." ++ else ++ $ECHO "*** Warning: inter-library dependencies are not known to be supported." ++ fi ++ $ECHO "*** All declared inter-library dependencies are being dropped." ++ droppeddeps=yes ++ fi ++ ;; ++ esac ++ versuffix=$versuffix_save ++ major=$major_save ++ release=$release_save ++ libname=$libname_save ++ name=$name_save ++ ++ case $host in ++ *-*-rhapsody* | *-*-darwin1.[012]) ++ # On Rhapsody replace the C library with the System framework ++ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ++ ;; ++ esac ++ ++ if test "$droppeddeps" = yes; then ++ if test "$module" = yes; then ++ $ECHO ++ $ECHO "*** Warning: libtool could not satisfy all declared inter-library" ++ $ECHO "*** dependencies of module $libname. Therefore, libtool will create" ++ $ECHO "*** a static module, that should work as long as the dlopening" ++ $ECHO "*** application is linked with the -dlopen flag." ++ if test -z "$global_symbol_pipe"; then ++ $ECHO ++ $ECHO "*** However, this would only work if libtool was able to extract symbol" ++ $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" ++ $ECHO "*** not find such a program. So, this module is probably useless." ++ $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." ++ fi ++ if test "$build_old_libs" = no; then ++ oldlibs="$output_objdir/$libname.$libext" ++ build_libtool_libs=module ++ build_old_libs=yes ++ else ++ build_libtool_libs=no ++ fi ++ else ++ $ECHO "*** The inter-library dependencies that have been dropped here will be" ++ $ECHO "*** automatically added whenever a program is linked with this library" ++ $ECHO "*** or is declared to -dlopen it." ++ ++ if test "$allow_undefined" = no; then ++ $ECHO ++ $ECHO "*** Since this library must not contain undefined symbols," ++ $ECHO "*** because either the platform does not support them or" ++ $ECHO "*** it was explicitly requested with -no-undefined," ++ $ECHO "*** libtool will only create a static version of it." ++ if test "$build_old_libs" = no; then ++ oldlibs="$output_objdir/$libname.$libext" ++ build_libtool_libs=module ++ build_old_libs=yes ++ else ++ build_libtool_libs=no ++ fi ++ fi ++ fi ++ fi ++ # Done checking deplibs! ++ deplibs=$newdeplibs ++ fi ++ # Time to change all our "foo.ltframework" stuff back to "-framework foo" ++ case $host in ++ *-*-darwin*) ++ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ++ new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ++ deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ++ ;; ++ esac ++ ++ # move library search paths that coincide with paths to not yet ++ # installed libraries to the beginning of the library search list ++ new_libs= ++ for path in $notinst_path; do ++ case " $new_libs " in ++ *" -L$path/$objdir "*) ;; ++ *) ++ case " $deplibs " in ++ *" -L$path/$objdir "*) ++ new_libs="$new_libs -L$path/$objdir" ;; ++ esac ++ ;; ++ esac ++ done ++ for deplib in $deplibs; do ++ case $deplib in ++ -L*) ++ case " $new_libs " in ++ *" $deplib "*) ;; ++ *) new_libs="$new_libs $deplib" ;; ++ esac ++ ;; ++ *) new_libs="$new_libs $deplib" ;; ++ esac ++ done ++ deplibs="$new_libs" ++ ++ # All the library-specific variables (install_libdir is set above). ++ library_names= ++ old_library= ++ dlname= ++ ++ # Test again, we may have decided not to build it any more ++ if test "$build_libtool_libs" = yes; then ++ if test "$hardcode_into_libs" = yes; then ++ # Hardcode the library paths ++ hardcode_libdirs= ++ dep_rpath= ++ rpath="$finalize_rpath" ++ test "$mode" != relink && rpath="$compile_rpath$rpath" ++ for libdir in $rpath; do ++ if test -n "$hardcode_libdir_flag_spec"; then ++ if test -n "$hardcode_libdir_separator"; then ++ if test -z "$hardcode_libdirs"; then ++ hardcode_libdirs="$libdir" ++ else ++ # Just accumulate the unique libdirs. ++ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in ++ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ++ ;; ++ *) ++ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ++ ;; ++ esac ++ fi ++ else ++ eval flag=\"$hardcode_libdir_flag_spec\" ++ dep_rpath="$dep_rpath $flag" ++ fi ++ elif test -n "$runpath_var"; then ++ case "$perm_rpath " in ++ *" $libdir "*) ;; ++ *) perm_rpath="$perm_rpath $libdir" ;; ++ esac ++ fi ++ done ++ # Substitute the hardcoded libdirs into the rpath. ++ if test -n "$hardcode_libdir_separator" && ++ test -n "$hardcode_libdirs"; then ++ libdir="$hardcode_libdirs" ++ if test -n "$hardcode_libdir_flag_spec_ld"; then ++ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ++ else ++ eval dep_rpath=\"$hardcode_libdir_flag_spec\" ++ fi ++ fi ++ if test -n "$runpath_var" && test -n "$perm_rpath"; then ++ # We should set the runpath_var. ++ rpath= ++ for dir in $perm_rpath; do ++ rpath="$rpath$dir:" ++ done ++ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" ++ fi ++ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" ++ fi ++ ++ shlibpath="$finalize_shlibpath" ++ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" ++ if test -n "$shlibpath"; then ++ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" ++ fi ++ ++ # Get the real and link names of the library. ++ eval shared_ext=\"$shrext_cmds\" ++ eval library_names=\"$library_names_spec\" ++ set dummy $library_names ++ shift ++ realname="$1" ++ shift ++ ++ if test -n "$soname_spec"; then ++ eval soname=\"$soname_spec\" ++ else ++ soname="$realname" ++ fi ++ if test -z "$dlname"; then ++ dlname=$soname ++ fi ++ ++ lib="$output_objdir/$realname" ++ linknames= ++ for link ++ do ++ linknames="$linknames $link" ++ done ++ ++ # Use standard objects if they are pic ++ test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` ++ test "X$libobjs" = "X " && libobjs= ++ ++ delfiles= ++ if test -n "$export_symbols" && test -n "$include_expsyms"; then ++ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" ++ export_symbols="$output_objdir/$libname.uexp" ++ delfiles="$delfiles $export_symbols" ++ fi ++ ++ orig_export_symbols= ++ case $host_os in ++ cygwin* | mingw* | cegcc*) ++ if test -n "$export_symbols" && test -z "$export_symbols_regex"; then ++ # exporting using user supplied symfile ++ if test "x`$SED 1q $export_symbols`" != xEXPORTS; then ++ # and it's NOT already a .def file. Must figure out ++ # which of the given symbols are data symbols and tag ++ # them as such. So, trigger use of export_symbols_cmds. ++ # export_symbols gets reassigned inside the "prepare ++ # the list of exported symbols" if statement, so the ++ # include_expsyms logic still works. ++ orig_export_symbols="$export_symbols" ++ export_symbols= ++ always_export_symbols=yes ++ fi ++ fi ++ ;; ++ esac ++ ++ # Prepare the list of exported symbols ++ if test -z "$export_symbols"; then ++ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then ++ func_verbose "generating symbol list for \`$libname.la'" ++ export_symbols="$output_objdir/$libname.exp" ++ $opt_dry_run || $RM $export_symbols ++ cmds=$export_symbols_cmds ++ save_ifs="$IFS"; IFS='~' ++ for cmd in $cmds; do ++ IFS="$save_ifs" ++ eval cmd=\"$cmd\" ++ func_len " $cmd" ++ len=$func_len_result ++ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then ++ func_show_eval "$cmd" 'exit $?' ++ skipped_export=false ++ else ++ # The command line is too long to execute in one step. ++ func_verbose "using reloadable object file for export list..." ++ skipped_export=: ++ # Break out early, otherwise skipped_export may be ++ # set to false by a later but shorter cmd. ++ break ++ fi ++ done ++ IFS="$save_ifs" ++ if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then ++ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' ++ func_show_eval '$MV "${export_symbols}T" "$export_symbols"' ++ fi ++ fi ++ fi ++ ++ if test -n "$export_symbols" && test -n "$include_expsyms"; then ++ tmp_export_symbols="$export_symbols" ++ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" ++ $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' ++ fi ++ ++ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then ++ # The given exports_symbols file has to be filtered, so filter it. ++ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" ++ # FIXME: $output_objdir/$libname.filter potentially contains lots of ++ # 's' commands which not all seds can handle. GNU sed should be fine ++ # though. Also, the filter scales superlinearly with the number of ++ # global variables. join(1) would be nice here, but unfortunately ++ # isn't a blessed tool. ++ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter ++ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" ++ export_symbols=$output_objdir/$libname.def ++ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols ++ fi ++ ++ tmp_deplibs= ++ for test_deplib in $deplibs; do ++ case " $convenience " in ++ *" $test_deplib "*) ;; ++ *) ++ tmp_deplibs="$tmp_deplibs $test_deplib" ++ ;; ++ esac ++ done ++ deplibs="$tmp_deplibs" ++ ++ if test -n "$convenience"; then ++ if test -n "$whole_archive_flag_spec" && ++ test "$compiler_needs_object" = yes && ++ test -z "$libobjs"; then ++ # extract the archives, so we have objects to list. ++ # TODO: could optimize this to just extract one archive. ++ whole_archive_flag_spec= ++ fi ++ if test -n "$whole_archive_flag_spec"; then ++ save_libobjs=$libobjs ++ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" ++ test "X$libobjs" = "X " && libobjs= ++ else ++ gentop="$output_objdir/${outputname}x" ++ generated="$generated $gentop" ++ ++ func_extract_archives $gentop $convenience ++ libobjs="$libobjs $func_extract_archives_result" ++ test "X$libobjs" = "X " && libobjs= ++ fi ++ fi ++ ++ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then ++ eval flag=\"$thread_safe_flag_spec\" ++ linker_flags="$linker_flags $flag" ++ fi ++ ++ # Make a backup of the uninstalled library when relinking ++ if test "$mode" = relink; then ++ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? ++ fi ++ ++ # Do each of the archive commands. ++ if test "$module" = yes && test -n "$module_cmds" ; then ++ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then ++ eval test_cmds=\"$module_expsym_cmds\" ++ cmds=$module_expsym_cmds ++ else ++ eval test_cmds=\"$module_cmds\" ++ cmds=$module_cmds ++ fi ++ else ++ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then ++ eval test_cmds=\"$archive_expsym_cmds\" ++ cmds=$archive_expsym_cmds ++ else ++ eval test_cmds=\"$archive_cmds\" ++ cmds=$archive_cmds ++ fi ++ fi ++ ++ if test "X$skipped_export" != "X:" && ++ func_len " $test_cmds" && ++ len=$func_len_result && ++ test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then ++ : ++ else ++ # The command line is too long to link in one step, link piecewise ++ # or, if using GNU ld and skipped_export is not :, use a linker ++ # script. ++ ++ # Save the value of $output and $libobjs because we want to ++ # use them later. If we have whole_archive_flag_spec, we ++ # want to use save_libobjs as it was before ++ # whole_archive_flag_spec was expanded, because we can't ++ # assume the linker understands whole_archive_flag_spec. ++ # This may have to be revisited, in case too many ++ # convenience libraries get linked in and end up exceeding ++ # the spec. ++ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then ++ save_libobjs=$libobjs ++ fi ++ save_output=$output ++ output_la=`$ECHO "X$output" | $Xsed -e "$basename"` ++ ++ # Clear the reloadable object creation command queue and ++ # initialize k to one. ++ test_cmds= ++ concat_cmds= ++ objlist= ++ last_robj= ++ k=1 ++ ++ if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then ++ output=${output_objdir}/${output_la}.lnkscript ++ func_verbose "creating GNU ld script: $output" ++ $ECHO 'INPUT (' > $output ++ for obj in $save_libobjs ++ do ++ $ECHO "$obj" >> $output ++ done ++ $ECHO ')' >> $output ++ delfiles="$delfiles $output" ++ elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then ++ output=${output_objdir}/${output_la}.lnk ++ func_verbose "creating linker input file list: $output" ++ : > $output ++ set x $save_libobjs ++ shift ++ firstobj= ++ if test "$compiler_needs_object" = yes; then ++ firstobj="$1 " ++ shift ++ fi ++ for obj ++ do ++ $ECHO "$obj" >> $output ++ done ++ delfiles="$delfiles $output" ++ output=$firstobj\"$file_list_spec$output\" ++ else ++ if test -n "$save_libobjs"; then ++ func_verbose "creating reloadable object files..." ++ output=$output_objdir/$output_la-${k}.$objext ++ eval test_cmds=\"$reload_cmds\" ++ func_len " $test_cmds" ++ len0=$func_len_result ++ len=$len0 ++ ++ # Loop over the list of objects to be linked. ++ for obj in $save_libobjs ++ do ++ func_len " $obj" ++ func_arith $len + $func_len_result ++ len=$func_arith_result ++ if test "X$objlist" = X || ++ test "$len" -lt "$max_cmd_len"; then ++ func_append objlist " $obj" ++ else ++ # The command $test_cmds is almost too long, add a ++ # command to the queue. ++ if test "$k" -eq 1 ; then ++ # The first file doesn't have a previous command to add. ++ eval concat_cmds=\"$reload_cmds $objlist $last_robj\" ++ else ++ # All subsequent reloadable object files will link in ++ # the last one created. ++ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" ++ fi ++ last_robj=$output_objdir/$output_la-${k}.$objext ++ func_arith $k + 1 ++ k=$func_arith_result ++ output=$output_objdir/$output_la-${k}.$objext ++ objlist=$obj ++ func_len " $last_robj" ++ func_arith $len0 + $func_len_result ++ len=$func_arith_result ++ fi ++ done ++ # Handle the remaining objects by creating one last ++ # reloadable object file. All subsequent reloadable object ++ # files will link in the last one created. ++ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ ++ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" ++ if test -n "$last_robj"; then ++ eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" ++ fi ++ delfiles="$delfiles $output" ++ ++ else ++ output= ++ fi ++ ++ if ${skipped_export-false}; then ++ func_verbose "generating symbol list for \`$libname.la'" ++ export_symbols="$output_objdir/$libname.exp" ++ $opt_dry_run || $RM $export_symbols ++ libobjs=$output ++ # Append the command to create the export file. ++ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ ++ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" ++ if test -n "$last_robj"; then ++ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" ++ fi ++ fi ++ ++ test -n "$save_libobjs" && ++ func_verbose "creating a temporary reloadable object file: $output" ++ ++ # Loop through the commands generated above and execute them. ++ save_ifs="$IFS"; IFS='~' ++ for cmd in $concat_cmds; do ++ IFS="$save_ifs" ++ $opt_silent || { ++ func_quote_for_expand "$cmd" ++ eval "func_echo $func_quote_for_expand_result" ++ } ++ $opt_dry_run || eval "$cmd" || { ++ lt_exit=$? ++ ++ # Restore the uninstalled library and exit ++ if test "$mode" = relink; then ++ ( cd "$output_objdir" && \ ++ $RM "${realname}T" && \ ++ $MV "${realname}U" "$realname" ) ++ fi ++ ++ exit $lt_exit ++ } ++ done ++ IFS="$save_ifs" ++ ++ if test -n "$export_symbols_regex" && ${skipped_export-false}; then ++ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' ++ func_show_eval '$MV "${export_symbols}T" "$export_symbols"' ++ fi ++ fi ++ ++ if ${skipped_export-false}; then ++ if test -n "$export_symbols" && test -n "$include_expsyms"; then ++ tmp_export_symbols="$export_symbols" ++ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" ++ $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' ++ fi ++ ++ if test -n "$orig_export_symbols"; then ++ # The given exports_symbols file has to be filtered, so filter it. ++ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" ++ # FIXME: $output_objdir/$libname.filter potentially contains lots of ++ # 's' commands which not all seds can handle. GNU sed should be fine ++ # though. Also, the filter scales superlinearly with the number of ++ # global variables. join(1) would be nice here, but unfortunately ++ # isn't a blessed tool. ++ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter ++ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" ++ export_symbols=$output_objdir/$libname.def ++ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols ++ fi ++ fi ++ ++ libobjs=$output ++ # Restore the value of output. ++ output=$save_output ++ ++ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then ++ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" ++ test "X$libobjs" = "X " && libobjs= ++ fi ++ # Expand the library linking commands again to reset the ++ # value of $libobjs for piecewise linking. ++ ++ # Do each of the archive commands. ++ if test "$module" = yes && test -n "$module_cmds" ; then ++ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then ++ cmds=$module_expsym_cmds ++ else ++ cmds=$module_cmds ++ fi ++ else ++ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then ++ cmds=$archive_expsym_cmds ++ else ++ cmds=$archive_cmds ++ fi ++ fi ++ fi ++ ++ if test -n "$delfiles"; then ++ # Append the command to remove temporary files to $cmds. ++ eval cmds=\"\$cmds~\$RM $delfiles\" ++ fi ++ ++ # Add any objects from preloaded convenience libraries ++ if test -n "$dlprefiles"; then ++ gentop="$output_objdir/${outputname}x" ++ generated="$generated $gentop" ++ ++ func_extract_archives $gentop $dlprefiles ++ libobjs="$libobjs $func_extract_archives_result" ++ test "X$libobjs" = "X " && libobjs= ++ fi ++ ++ save_ifs="$IFS"; IFS='~' ++ for cmd in $cmds; do ++ IFS="$save_ifs" ++ eval cmd=\"$cmd\" ++ $opt_silent || { ++ func_quote_for_expand "$cmd" ++ eval "func_echo $func_quote_for_expand_result" ++ } ++ $opt_dry_run || eval "$cmd" || { ++ lt_exit=$? ++ ++ # Restore the uninstalled library and exit ++ if test "$mode" = relink; then ++ ( cd "$output_objdir" && \ ++ $RM "${realname}T" && \ ++ $MV "${realname}U" "$realname" ) ++ fi ++ ++ exit $lt_exit ++ } ++ done ++ IFS="$save_ifs" ++ ++ # Restore the uninstalled library and exit ++ if test "$mode" = relink; then ++ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? ++ ++ if test -n "$convenience"; then ++ if test -z "$whole_archive_flag_spec"; then ++ func_show_eval '${RM}r "$gentop"' ++ fi ++ fi ++ ++ exit $EXIT_SUCCESS ++ fi ++ ++ # Create links to the real library. ++ for linkname in $linknames; do ++ if test "$realname" != "$linkname"; then ++ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' ++ fi ++ done ++ ++ # If -module or -export-dynamic was specified, set the dlname. ++ if test "$module" = yes || test "$export_dynamic" = yes; then ++ # On all known operating systems, these are identical. ++ dlname="$soname" ++ fi ++ fi ++ ;; ++ ++ obj) ++ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then ++ func_warning "\`-dlopen' is ignored for objects" ++ fi ++ ++ case " $deplibs" in ++ *\ -l* | *\ -L*) ++ func_warning "\`-l' and \`-L' are ignored for objects" ;; ++ esac ++ ++ test -n "$rpath" && \ ++ func_warning "\`-rpath' is ignored for objects" ++ ++ test -n "$xrpath" && \ ++ func_warning "\`-R' is ignored for objects" ++ ++ test -n "$vinfo" && \ ++ func_warning "\`-version-info' is ignored for objects" ++ ++ test -n "$release" && \ ++ func_warning "\`-release' is ignored for objects" ++ ++ case $output in ++ *.lo) ++ test -n "$objs$old_deplibs" && \ ++ func_fatal_error "cannot build library object \`$output' from non-libtool objects" ++ ++ libobj=$output ++ func_lo2o "$libobj" ++ obj=$func_lo2o_result ++ ;; ++ *) ++ libobj= ++ obj="$output" ++ ;; ++ esac ++ ++ # Delete the old objects. ++ $opt_dry_run || $RM $obj $libobj ++ ++ # Objects from convenience libraries. This assumes ++ # single-version convenience libraries. Whenever we create ++ # different ones for PIC/non-PIC, this we'll have to duplicate ++ # the extraction. ++ reload_conv_objs= ++ gentop= ++ # reload_cmds runs $LD directly, so let us get rid of ++ # -Wl from whole_archive_flag_spec and hope we can get by with ++ # turning comma into space.. ++ wl= ++ ++ if test -n "$convenience"; then ++ if test -n "$whole_archive_flag_spec"; then ++ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" ++ reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` ++ else ++ gentop="$output_objdir/${obj}x" ++ generated="$generated $gentop" ++ ++ func_extract_archives $gentop $convenience ++ reload_conv_objs="$reload_objs $func_extract_archives_result" ++ fi ++ fi ++ ++ # Create the old-style object. ++ reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test ++ ++ output="$obj" ++ func_execute_cmds "$reload_cmds" 'exit $?' ++ ++ # Exit if we aren't doing a library object file. ++ if test -z "$libobj"; then ++ if test -n "$gentop"; then ++ func_show_eval '${RM}r "$gentop"' ++ fi ++ ++ exit $EXIT_SUCCESS ++ fi ++ ++ if test "$build_libtool_libs" != yes; then ++ if test -n "$gentop"; then ++ func_show_eval '${RM}r "$gentop"' ++ fi ++ ++ # Create an invalid libtool object if no PIC, so that we don't ++ # accidentally link it into a program. ++ # $show "echo timestamp > $libobj" ++ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? ++ exit $EXIT_SUCCESS ++ fi ++ ++ if test -n "$pic_flag" || test "$pic_mode" != default; then ++ # Only do commands if we really have different PIC objects. ++ reload_objs="$libobjs $reload_conv_objs" ++ output="$libobj" ++ func_execute_cmds "$reload_cmds" 'exit $?' ++ fi ++ ++ if test -n "$gentop"; then ++ func_show_eval '${RM}r "$gentop"' ++ fi ++ ++ exit $EXIT_SUCCESS ++ ;; ++ ++ prog) ++ case $host in ++ *cygwin*) func_stripname '' '.exe' "$output" ++ output=$func_stripname_result.exe;; ++ esac ++ test -n "$vinfo" && \ ++ func_warning "\`-version-info' is ignored for programs" ++ ++ test -n "$release" && \ ++ func_warning "\`-release' is ignored for programs" ++ ++ test "$preload" = yes \ ++ && test "$dlopen_support" = unknown \ ++ && test "$dlopen_self" = unknown \ ++ && test "$dlopen_self_static" = unknown && \ ++ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." ++ ++ case $host in ++ *-*-rhapsody* | *-*-darwin1.[012]) ++ # On Rhapsody replace the C library is the System framework ++ compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ++ finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ++ ;; ++ esac ++ ++ case $host in ++ *-*-darwin*) ++ # Don't allow lazy linking, it breaks C++ global constructors ++ # But is supposedly fixed on 10.4 or later (yay!). ++ if test "$tagname" = CXX ; then ++ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in ++ 10.[0123]) ++ compile_command="$compile_command ${wl}-bind_at_load" ++ finalize_command="$finalize_command ${wl}-bind_at_load" ++ ;; ++ esac ++ fi ++ # Time to change all our "foo.ltframework" stuff back to "-framework foo" ++ compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ++ finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ++ ;; ++ esac ++ ++ ++ # move library search paths that coincide with paths to not yet ++ # installed libraries to the beginning of the library search list ++ new_libs= ++ for path in $notinst_path; do ++ case " $new_libs " in ++ *" -L$path/$objdir "*) ;; ++ *) ++ case " $compile_deplibs " in ++ *" -L$path/$objdir "*) ++ new_libs="$new_libs -L$path/$objdir" ;; ++ esac ++ ;; ++ esac ++ done ++ for deplib in $compile_deplibs; do ++ case $deplib in ++ -L*) ++ case " $new_libs " in ++ *" $deplib "*) ;; ++ *) new_libs="$new_libs $deplib" ;; ++ esac ++ ;; ++ *) new_libs="$new_libs $deplib" ;; ++ esac ++ done ++ compile_deplibs="$new_libs" ++ ++ ++ compile_command="$compile_command $compile_deplibs" ++ finalize_command="$finalize_command $finalize_deplibs" ++ ++ if test -n "$rpath$xrpath"; then ++ # If the user specified any rpath flags, then add them. ++ for libdir in $rpath $xrpath; do ++ # This is the magic to use -rpath. ++ case "$finalize_rpath " in ++ *" $libdir "*) ;; ++ *) finalize_rpath="$finalize_rpath $libdir" ;; ++ esac ++ done ++ fi ++ ++ # Now hardcode the library paths ++ rpath= ++ hardcode_libdirs= ++ for libdir in $compile_rpath $finalize_rpath; do ++ if test -n "$hardcode_libdir_flag_spec"; then ++ if test -n "$hardcode_libdir_separator"; then ++ if test -z "$hardcode_libdirs"; then ++ hardcode_libdirs="$libdir" ++ else ++ # Just accumulate the unique libdirs. ++ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in ++ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ++ ;; ++ *) ++ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ++ ;; ++ esac ++ fi ++ else ++ eval flag=\"$hardcode_libdir_flag_spec\" ++ rpath="$rpath $flag" ++ fi ++ elif test -n "$runpath_var"; then ++ case "$perm_rpath " in ++ *" $libdir "*) ;; ++ *) perm_rpath="$perm_rpath $libdir" ;; ++ esac ++ fi ++ case $host in ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) ++ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` ++ case :$dllsearchpath: in ++ *":$libdir:"*) ;; ++ ::) dllsearchpath=$libdir;; ++ *) dllsearchpath="$dllsearchpath:$libdir";; ++ esac ++ case :$dllsearchpath: in ++ *":$testbindir:"*) ;; ++ ::) dllsearchpath=$testbindir;; ++ *) dllsearchpath="$dllsearchpath:$testbindir";; ++ esac ++ ;; ++ esac ++ done ++ # Substitute the hardcoded libdirs into the rpath. ++ if test -n "$hardcode_libdir_separator" && ++ test -n "$hardcode_libdirs"; then ++ libdir="$hardcode_libdirs" ++ eval rpath=\" $hardcode_libdir_flag_spec\" ++ fi ++ compile_rpath="$rpath" ++ ++ rpath= ++ hardcode_libdirs= ++ for libdir in $finalize_rpath; do ++ if test -n "$hardcode_libdir_flag_spec"; then ++ if test -n "$hardcode_libdir_separator"; then ++ if test -z "$hardcode_libdirs"; then ++ hardcode_libdirs="$libdir" ++ else ++ # Just accumulate the unique libdirs. ++ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in ++ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ++ ;; ++ *) ++ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ++ ;; ++ esac ++ fi ++ else ++ eval flag=\"$hardcode_libdir_flag_spec\" ++ rpath="$rpath $flag" ++ fi ++ elif test -n "$runpath_var"; then ++ case "$finalize_perm_rpath " in ++ *" $libdir "*) ;; ++ *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; ++ esac ++ fi ++ done ++ # Substitute the hardcoded libdirs into the rpath. ++ if test -n "$hardcode_libdir_separator" && ++ test -n "$hardcode_libdirs"; then ++ libdir="$hardcode_libdirs" ++ eval rpath=\" $hardcode_libdir_flag_spec\" ++ fi ++ finalize_rpath="$rpath" ++ ++ if test -n "$libobjs" && test "$build_old_libs" = yes; then ++ # Transform all the library objects into standard objects. ++ compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` ++ finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` ++ fi ++ ++ func_generate_dlsyms "$outputname" "@PROGRAM@" "no" ++ ++ # template prelinking step ++ if test -n "$prelink_cmds"; then ++ func_execute_cmds "$prelink_cmds" 'exit $?' ++ fi ++ ++ wrappers_required=yes ++ case $host in ++ *cygwin* | *mingw* ) ++ if test "$build_libtool_libs" != yes; then ++ wrappers_required=no ++ fi ++ ;; ++ *cegcc) ++ # Disable wrappers for cegcc, we are cross compiling anyway. ++ wrappers_required=no ++ ;; ++ *) ++ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then ++ wrappers_required=no ++ fi ++ ;; ++ esac ++ if test "$wrappers_required" = no; then ++ # Replace the output file specification. ++ compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` ++ link_command="$compile_command$compile_rpath" ++ ++ # We have no uninstalled library dependencies, so finalize right now. ++ exit_status=0 ++ func_show_eval "$link_command" 'exit_status=$?' ++ ++ # Delete the generated files. ++ if test -f "$output_objdir/${outputname}S.${objext}"; then ++ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' ++ fi ++ ++ exit $exit_status ++ fi ++ ++ if test -n "$compile_shlibpath$finalize_shlibpath"; then ++ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" ++ fi ++ if test -n "$finalize_shlibpath"; then ++ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" ++ fi ++ ++ compile_var= ++ finalize_var= ++ if test -n "$runpath_var"; then ++ if test -n "$perm_rpath"; then ++ # We should set the runpath_var. ++ rpath= ++ for dir in $perm_rpath; do ++ rpath="$rpath$dir:" ++ done ++ compile_var="$runpath_var=\"$rpath\$$runpath_var\" " ++ fi ++ if test -n "$finalize_perm_rpath"; then ++ # We should set the runpath_var. ++ rpath= ++ for dir in $finalize_perm_rpath; do ++ rpath="$rpath$dir:" ++ done ++ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " ++ fi ++ fi ++ ++ if test "$no_install" = yes; then ++ # We don't need to create a wrapper script. ++ link_command="$compile_var$compile_command$compile_rpath" ++ # Replace the output file specification. ++ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` ++ # Delete the old output file. ++ $opt_dry_run || $RM $output ++ # Link the executable and exit ++ func_show_eval "$link_command" 'exit $?' ++ exit $EXIT_SUCCESS ++ fi ++ ++ if test "$hardcode_action" = relink; then ++ # Fast installation is not supported ++ link_command="$compile_var$compile_command$compile_rpath" ++ relink_command="$finalize_var$finalize_command$finalize_rpath" ++ ++ func_warning "this platform does not like uninstalled shared libraries" ++ func_warning "\`$output' will be relinked during installation" ++ else ++ if test "$fast_install" != no; then ++ link_command="$finalize_var$compile_command$finalize_rpath" ++ if test "$fast_install" = yes; then ++ relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` ++ else ++ # fast_install is set to needless ++ relink_command= ++ fi ++ else ++ link_command="$compile_var$compile_command$compile_rpath" ++ relink_command="$finalize_var$finalize_command$finalize_rpath" ++ fi ++ fi ++ ++ # Replace the output file specification. ++ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` ++ ++ # Delete the old output files. ++ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname ++ ++ func_show_eval "$link_command" 'exit $?' ++ ++ # Now create the wrapper script. ++ func_verbose "creating $output" ++ ++ # Quote the relink command for shipping. ++ if test -n "$relink_command"; then ++ # Preserve any variables that may affect compiler behavior ++ for var in $variables_saved_for_relink; do ++ if eval test -z \"\${$var+set}\"; then ++ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" ++ elif eval var_value=\$$var; test -z "$var_value"; then ++ relink_command="$var=; export $var; $relink_command" ++ else ++ func_quote_for_eval "$var_value" ++ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" ++ fi ++ done ++ relink_command="(cd `pwd`; $relink_command)" ++ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` ++ fi ++ ++ # Quote $ECHO for shipping. ++ if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then ++ case $progpath in ++ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; ++ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; ++ esac ++ qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` ++ else ++ qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` ++ fi ++ ++ # Only actually do things if not in dry run mode. ++ $opt_dry_run || { ++ # win32 will think the script is a binary if it has ++ # a .exe suffix, so we strip it off here. ++ case $output in ++ *.exe) func_stripname '' '.exe' "$output" ++ output=$func_stripname_result ;; ++ esac ++ # test for cygwin because mv fails w/o .exe extensions ++ case $host in ++ *cygwin*) ++ exeext=.exe ++ func_stripname '' '.exe' "$outputname" ++ outputname=$func_stripname_result ;; ++ *) exeext= ;; ++ esac ++ case $host in ++ *cygwin* | *mingw* ) ++ func_dirname_and_basename "$output" "" "." ++ output_name=$func_basename_result ++ output_path=$func_dirname_result ++ cwrappersource="$output_path/$objdir/lt-$output_name.c" ++ cwrapper="$output_path/$output_name.exe" ++ $RM $cwrappersource $cwrapper ++ trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 ++ ++ func_emit_cwrapperexe_src > $cwrappersource ++ ++ # The wrapper executable is built using the $host compiler, ++ # because it contains $host paths and files. If cross- ++ # compiling, it, like the target executable, must be ++ # executed on the $host or under an emulation environment. ++ $opt_dry_run || { ++ $LTCC $LTCFLAGS -o $cwrapper $cwrappersource ++ $STRIP $cwrapper ++ } ++ ++ # Now, create the wrapper script for func_source use: ++ func_ltwrapper_scriptname $cwrapper ++ $RM $func_ltwrapper_scriptname_result ++ trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 ++ $opt_dry_run || { ++ # note: this script will not be executed, so do not chmod. ++ if test "x$build" = "x$host" ; then ++ $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result ++ else ++ func_emit_wrapper no > $func_ltwrapper_scriptname_result ++ fi ++ } ++ ;; ++ * ) ++ $RM $output ++ trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 ++ ++ func_emit_wrapper no > $output ++ chmod +x $output ++ ;; ++ esac ++ } ++ exit $EXIT_SUCCESS ++ ;; ++ esac ++ ++ # See if we need to build an old-fashioned archive. ++ for oldlib in $oldlibs; do ++ ++ if test "$build_libtool_libs" = convenience; then ++ oldobjs="$libobjs_save $symfileobj" ++ addlibs="$convenience" ++ build_libtool_libs=no ++ else ++ if test "$build_libtool_libs" = module; then ++ oldobjs="$libobjs_save" ++ build_libtool_libs=no ++ else ++ oldobjs="$old_deplibs $non_pic_objects" ++ if test "$preload" = yes && test -f "$symfileobj"; then ++ oldobjs="$oldobjs $symfileobj" ++ fi ++ fi ++ addlibs="$old_convenience" ++ fi ++ ++ if test -n "$addlibs"; then ++ gentop="$output_objdir/${outputname}x" ++ generated="$generated $gentop" ++ ++ func_extract_archives $gentop $addlibs ++ oldobjs="$oldobjs $func_extract_archives_result" ++ fi ++ ++ # Do each command in the archive commands. ++ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then ++ cmds=$old_archive_from_new_cmds ++ else ++ ++ # Add any objects from preloaded convenience libraries ++ if test -n "$dlprefiles"; then ++ gentop="$output_objdir/${outputname}x" ++ generated="$generated $gentop" ++ ++ func_extract_archives $gentop $dlprefiles ++ oldobjs="$oldobjs $func_extract_archives_result" ++ fi ++ ++ # POSIX demands no paths to be encoded in archives. We have ++ # to avoid creating archives with duplicate basenames if we ++ # might have to extract them afterwards, e.g., when creating a ++ # static archive out of a convenience library, or when linking ++ # the entirety of a libtool archive into another (currently ++ # not supported by libtool). ++ if (for obj in $oldobjs ++ do ++ func_basename "$obj" ++ $ECHO "$func_basename_result" ++ done | sort | sort -uc >/dev/null 2>&1); then ++ : ++ else ++ $ECHO "copying selected object files to avoid basename conflicts..." ++ gentop="$output_objdir/${outputname}x" ++ generated="$generated $gentop" ++ func_mkdir_p "$gentop" ++ save_oldobjs=$oldobjs ++ oldobjs= ++ counter=1 ++ for obj in $save_oldobjs ++ do ++ func_basename "$obj" ++ objbase="$func_basename_result" ++ case " $oldobjs " in ++ " ") oldobjs=$obj ;; ++ *[\ /]"$objbase "*) ++ while :; do ++ # Make sure we don't pick an alternate name that also ++ # overlaps. ++ newobj=lt$counter-$objbase ++ func_arith $counter + 1 ++ counter=$func_arith_result ++ case " $oldobjs " in ++ *[\ /]"$newobj "*) ;; ++ *) if test ! -f "$gentop/$newobj"; then break; fi ;; ++ esac ++ done ++ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" ++ oldobjs="$oldobjs $gentop/$newobj" ++ ;; ++ *) oldobjs="$oldobjs $obj" ;; ++ esac ++ done ++ fi ++ eval cmds=\"$old_archive_cmds\" ++ ++ func_len " $cmds" ++ len=$func_len_result ++ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then ++ cmds=$old_archive_cmds ++ else ++ # the command line is too long to link in one step, link in parts ++ func_verbose "using piecewise archive linking..." ++ save_RANLIB=$RANLIB ++ RANLIB=: ++ objlist= ++ concat_cmds= ++ save_oldobjs=$oldobjs ++ oldobjs= ++ # Is there a better way of finding the last object in the list? ++ for obj in $save_oldobjs ++ do ++ last_oldobj=$obj ++ done ++ eval test_cmds=\"$old_archive_cmds\" ++ func_len " $test_cmds" ++ len0=$func_len_result ++ len=$len0 ++ for obj in $save_oldobjs ++ do ++ func_len " $obj" ++ func_arith $len + $func_len_result ++ len=$func_arith_result ++ func_append objlist " $obj" ++ if test "$len" -lt "$max_cmd_len"; then ++ : ++ else ++ # the above command should be used before it gets too long ++ oldobjs=$objlist ++ if test "$obj" = "$last_oldobj" ; then ++ RANLIB=$save_RANLIB ++ fi ++ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ ++ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" ++ objlist= ++ len=$len0 ++ fi ++ done ++ RANLIB=$save_RANLIB ++ oldobjs=$objlist ++ if test "X$oldobjs" = "X" ; then ++ eval cmds=\"\$concat_cmds\" ++ else ++ eval cmds=\"\$concat_cmds~\$old_archive_cmds\" ++ fi ++ fi ++ fi ++ func_execute_cmds "$cmds" 'exit $?' ++ done ++ ++ test -n "$generated" && \ ++ func_show_eval "${RM}r$generated" ++ ++ # Now create the libtool archive. ++ case $output in ++ *.la) ++ old_library= ++ test "$build_old_libs" = yes && old_library="$libname.$libext" ++ func_verbose "creating $output" ++ ++ # Preserve any variables that may affect compiler behavior ++ for var in $variables_saved_for_relink; do ++ if eval test -z \"\${$var+set}\"; then ++ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" ++ elif eval var_value=\$$var; test -z "$var_value"; then ++ relink_command="$var=; export $var; $relink_command" ++ else ++ func_quote_for_eval "$var_value" ++ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" ++ fi ++ done ++ # Quote the link command for shipping. ++ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" ++ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` ++ if test "$hardcode_automatic" = yes ; then ++ relink_command= ++ fi ++ ++ # Only create the output if not a dry run. ++ $opt_dry_run || { ++ for installed in no yes; do ++ if test "$installed" = yes; then ++ if test -z "$install_libdir"; then ++ break ++ fi ++ output="$output_objdir/$outputname"i ++ # Replace all uninstalled libtool libraries with the installed ones ++ newdependency_libs= ++ for deplib in $dependency_libs; do ++ case $deplib in ++ *.la) ++ func_basename "$deplib" ++ name="$func_basename_result" ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` ++ test -z "$libdir" && \ ++ func_fatal_error "\`$deplib' is not a valid libtool archive" ++ newdependency_libs="$newdependency_libs $libdir/$name" ++ ;; ++ *) newdependency_libs="$newdependency_libs $deplib" ;; ++ esac ++ done ++ dependency_libs="$newdependency_libs" ++ newdlfiles= ++ ++ for lib in $dlfiles; do ++ case $lib in ++ *.la) ++ func_basename "$lib" ++ name="$func_basename_result" ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` ++ test -z "$libdir" && \ ++ func_fatal_error "\`$lib' is not a valid libtool archive" ++ newdlfiles="$newdlfiles $libdir/$name" ++ ;; ++ *) newdlfiles="$newdlfiles $lib" ;; ++ esac ++ done ++ dlfiles="$newdlfiles" ++ newdlprefiles= ++ for lib in $dlprefiles; do ++ case $lib in ++ *.la) ++ # Only pass preopened files to the pseudo-archive (for ++ # eventual linking with the app. that links it) if we ++ # didn't already link the preopened objects directly into ++ # the library: ++ func_basename "$lib" ++ name="$func_basename_result" ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` ++ test -z "$libdir" && \ ++ func_fatal_error "\`$lib' is not a valid libtool archive" ++ newdlprefiles="$newdlprefiles $libdir/$name" ++ ;; ++ esac ++ done ++ dlprefiles="$newdlprefiles" ++ else ++ newdlfiles= ++ for lib in $dlfiles; do ++ case $lib in ++ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; ++ *) abs=`pwd`"/$lib" ;; ++ esac ++ newdlfiles="$newdlfiles $abs" ++ done ++ dlfiles="$newdlfiles" ++ newdlprefiles= ++ for lib in $dlprefiles; do ++ case $lib in ++ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; ++ *) abs=`pwd`"/$lib" ;; ++ esac ++ newdlprefiles="$newdlprefiles $abs" ++ done ++ dlprefiles="$newdlprefiles" ++ fi ++ $RM $output ++ # place dlname in correct position for cygwin ++ tdlname=$dlname ++ case $host,$output,$installed,$module,$dlname in ++ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; ++ esac ++ $ECHO > $output "\ ++# $outputname - a libtool library file ++# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION ++# ++# Please DO NOT delete this file! ++# It is necessary for linking the library. ++ ++# The name that we can dlopen(3). ++dlname='$tdlname' ++ ++# Names of this library. ++library_names='$library_names' ++ ++# The name of the static archive. ++old_library='$old_library' ++ ++# Linker flags that can not go in dependency_libs. ++inherited_linker_flags='$new_inherited_linker_flags' ++ ++# Libraries that this one depends upon. ++dependency_libs='$dependency_libs' ++ ++# Names of additional weak libraries provided by this library ++weak_library_names='$weak_libs' ++ ++# Version information for $libname. ++current=$current ++age=$age ++revision=$revision ++ ++# Is this an already installed library? ++installed=$installed ++ ++# Should we warn about portability when linking against -modules? ++shouldnotlink=$module ++ ++# Files to dlopen/dlpreopen ++dlopen='$dlfiles' ++dlpreopen='$dlprefiles' ++ ++# Directory that this library needs to be installed in: ++libdir='$install_libdir'" ++ if test "$installed" = no && test "$need_relink" = yes; then ++ $ECHO >> $output "\ ++relink_command=\"$relink_command\"" ++ fi ++ done ++ } ++ ++ # Do a symbolic link so that the libtool archive can be found in ++ # LD_LIBRARY_PATH before the program is installed. ++ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ++ ;; ++ esac ++ exit $EXIT_SUCCESS ++} ++ ++{ test "$mode" = link || test "$mode" = relink; } && ++ func_mode_link ${1+"$@"} ++ ++ ++# func_mode_uninstall arg... ++func_mode_uninstall () ++{ ++ $opt_debug ++ RM="$nonopt" ++ files= ++ rmforce= ++ exit_status=0 ++ ++ # This variable tells wrapper scripts just to set variables rather ++ # than running their programs. ++ libtool_install_magic="$magic" ++ ++ for arg ++ do ++ case $arg in ++ -f) RM="$RM $arg"; rmforce=yes ;; ++ -*) RM="$RM $arg" ;; ++ *) files="$files $arg" ;; ++ esac ++ done ++ ++ test -z "$RM" && \ ++ func_fatal_help "you must specify an RM program" ++ ++ rmdirs= ++ ++ origobjdir="$objdir" ++ for file in $files; do ++ func_dirname "$file" "" "." ++ dir="$func_dirname_result" ++ if test "X$dir" = X.; then ++ objdir="$origobjdir" ++ else ++ objdir="$dir/$origobjdir" ++ fi ++ func_basename "$file" ++ name="$func_basename_result" ++ test "$mode" = uninstall && objdir="$dir" ++ ++ # Remember objdir for removal later, being careful to avoid duplicates ++ if test "$mode" = clean; then ++ case " $rmdirs " in ++ *" $objdir "*) ;; ++ *) rmdirs="$rmdirs $objdir" ;; ++ esac ++ fi ++ ++ # Don't error if the file doesn't exist and rm -f was used. ++ if { test -L "$file"; } >/dev/null 2>&1 || ++ { test -h "$file"; } >/dev/null 2>&1 || ++ test -f "$file"; then ++ : ++ elif test -d "$file"; then ++ exit_status=1 ++ continue ++ elif test "$rmforce" = yes; then ++ continue ++ fi ++ ++ rmfiles="$file" ++ ++ case $name in ++ *.la) ++ # Possibly a libtool archive, so verify it. ++ if func_lalib_p "$file"; then ++ func_source $dir/$name ++ ++ # Delete the libtool libraries and symlinks. ++ for n in $library_names; do ++ rmfiles="$rmfiles $objdir/$n" ++ done ++ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" ++ ++ case "$mode" in ++ clean) ++ case " $library_names " in ++ # " " in the beginning catches empty $dlname ++ *" $dlname "*) ;; ++ *) rmfiles="$rmfiles $objdir/$dlname" ;; ++ esac ++ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" ++ ;; ++ uninstall) ++ if test -n "$library_names"; then ++ # Do each command in the postuninstall commands. ++ func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' ++ fi ++ ++ if test -n "$old_library"; then ++ # Do each command in the old_postuninstall commands. ++ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' ++ fi ++ # FIXME: should reinstall the best remaining shared library. ++ ;; ++ esac ++ fi ++ ;; ++ ++ *.lo) ++ # Possibly a libtool object, so verify it. ++ if func_lalib_p "$file"; then ++ ++ # Read the .lo file ++ func_source $dir/$name ++ ++ # Add PIC object to the list of files to remove. ++ if test -n "$pic_object" && ++ test "$pic_object" != none; then ++ rmfiles="$rmfiles $dir/$pic_object" ++ fi ++ ++ # Add non-PIC object to the list of files to remove. ++ if test -n "$non_pic_object" && ++ test "$non_pic_object" != none; then ++ rmfiles="$rmfiles $dir/$non_pic_object" ++ fi ++ fi ++ ;; ++ ++ *) ++ if test "$mode" = clean ; then ++ noexename=$name ++ case $file in ++ *.exe) ++ func_stripname '' '.exe' "$file" ++ file=$func_stripname_result ++ func_stripname '' '.exe' "$name" ++ noexename=$func_stripname_result ++ # $file with .exe has already been added to rmfiles, ++ # add $file without .exe ++ rmfiles="$rmfiles $file" ++ ;; ++ esac ++ # Do a test to see if this is a libtool program. ++ if func_ltwrapper_p "$file"; then ++ if func_ltwrapper_executable_p "$file"; then ++ func_ltwrapper_scriptname "$file" ++ relink_command= ++ func_source $func_ltwrapper_scriptname_result ++ rmfiles="$rmfiles $func_ltwrapper_scriptname_result" ++ else ++ relink_command= ++ func_source $dir/$noexename ++ fi ++ ++ # note $name still contains .exe if it was in $file originally ++ # as does the version of $file that was added into $rmfiles ++ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" ++ if test "$fast_install" = yes && test -n "$relink_command"; then ++ rmfiles="$rmfiles $objdir/lt-$name" ++ fi ++ if test "X$noexename" != "X$name" ; then ++ rmfiles="$rmfiles $objdir/lt-${noexename}.c" ++ fi ++ fi ++ fi ++ ;; ++ esac ++ func_show_eval "$RM $rmfiles" 'exit_status=1' ++ done ++ objdir="$origobjdir" ++ ++ # Try to remove the ${objdir}s in the directories where we deleted files ++ for dir in $rmdirs; do ++ if test -d "$dir"; then ++ func_show_eval "rmdir $dir >/dev/null 2>&1" ++ fi ++ done ++ ++ exit $exit_status ++} ++ ++{ test "$mode" = uninstall || test "$mode" = clean; } && ++ func_mode_uninstall ${1+"$@"} ++ ++test -z "$mode" && { ++ help="$generic_help" ++ func_fatal_help "you must specify a MODE" ++} ++ ++test -z "$exec_cmd" && \ ++ func_fatal_help "invalid operation mode \`$mode'" ++ ++if test -n "$exec_cmd"; then ++ eval exec "$exec_cmd" ++ exit $EXIT_FAILURE ++fi ++ ++exit $exit_status ++ ++ ++# The TAGs below are defined such that we never get into a situation ++# in which we disable both kinds of libraries. Given conflicting ++# choices, we go for a static library, that is the most portable, ++# since we can't tell whether shared libraries were disabled because ++# the user asked for that or because the platform doesn't support ++# them. This is particularly important on AIX, because we don't ++# support having both static and shared libraries enabled at the same ++# time on that platform, so we default to a shared-only configuration. ++# If a disable-shared tag is given, we'll fallback to a static-only ++# configuration. But we'll never go from static-only to shared-only. ++ ++# ### BEGIN LIBTOOL TAG CONFIG: disable-shared ++build_libtool_libs=no ++build_old_libs=yes ++# ### END LIBTOOL TAG CONFIG: disable-shared ++ ++# ### BEGIN LIBTOOL TAG CONFIG: disable-static ++build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` ++# ### END LIBTOOL TAG CONFIG: disable-static ++ ++# Local Variables: ++# mode:shell-script ++# sh-indentation:2 ++# End: ++# vi:sw=2 ++ +diff -Naur enca-1.13/ltmain.sh enca-1.13.patch/ltmain.sh +--- enca-1.13/ltmain.sh 2010-02-09 11:23:03.000000000 +0100 ++++ enca-1.13.patch/ltmain.sh 2010-04-16 18:40:59.525444818 +0200 +@@ -65,7 +65,7 @@ + # compiler: $LTCC + # compiler flags: $LTCFLAGS + # linker: $LD (gnu? $with_gnu_ld) +-# $progname: (GNU libtool) 2.2.6b Debian-2.2.6b-2 ++# $progname: (GNU libtool) 2.2.6b + # automake: $automake_version + # autoconf: $autoconf_version + # +@@ -73,7 +73,7 @@ + + PROGRAM=ltmain.sh + PACKAGE=libtool +-VERSION="2.2.6b Debian-2.2.6b-2" ++VERSION=2.2.6b + TIMESTAMP="" + package_revision=1.3017 + +@@ -5033,10 +5033,7 @@ + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; +- link) +- libs="$deplibs %DEPLIBS%" +- test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" +- ;; ++ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then +@@ -5347,19 +5344,19 @@ + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" +- tmp_libs= +- for deplib in $dependency_libs; do +- deplibs="$deplib $deplibs" +- if $opt_duplicate_deps ; then +- case "$tmp_libs " in +- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; +- esac +- fi +- tmp_libs="$tmp_libs $deplib" +- done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi ++ tmp_libs= ++ for deplib in $dependency_libs; do ++ deplibs="$deplib $deplibs" ++ if $opt_duplicate_deps ; then ++ case "$tmp_libs " in ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; ++ esac ++ fi ++ tmp_libs="$tmp_libs $deplib" ++ done + continue + fi # $pass = conv + +@@ -5896,7 +5893,6 @@ + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do +- path= + case $deplib in + -L*) path="$deplib" ;; + *.la) +@@ -6210,9 +6206,6 @@ + revision="$number_minor" + lt_irix_increment=no + ;; +- *) +- func_fatal_configuration "$modename: unknown library version type \`$version_type'" +- ;; + esac + ;; + no) +diff -Naur enca-1.13/m4/libtool.m4 enca-1.13.patch/m4/libtool.m4 +--- enca-1.13/m4/libtool.m4 2010-02-09 11:23:03.000000000 +0100 ++++ enca-1.13.patch/m4/libtool.m4 2010-04-16 18:40:59.606321058 +0200 +@@ -2445,7 +2445,7 @@ + ;; + + # This must be Linux ELF. +-linux* | k*bsd*-gnu | kopensolaris*-gnu) ++linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no +@@ -2470,10 +2470,13 @@ + # before this can be enabled. + hardcode_into_libs=yes + ++ # Add ABI-specific directories to the system library path. ++ sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" ++ + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` +- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on +@@ -2485,18 +2488,6 @@ + dynamic_linker='GNU/Linux ld.so' + ;; + +-netbsdelf*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='NetBSD ld.elf_so' +- ;; +- + netbsd*) + version_type=sunos + need_lib_prefix=no +@@ -3084,11 +3075,11 @@ + ;; + + # This must be Linux ELF. +-linux* | k*bsd*-gnu | kopensolaris*-gnu) ++linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +-netbsd* | netbsdelf*-gnu) ++netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else +@@ -3705,7 +3696,7 @@ + ;; + esac + ;; +- linux* | k*bsd*-gnu | kopensolaris*-gnu) ++ linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler +@@ -3769,7 +3760,7 @@ + ;; + esac + ;; +- netbsd* | netbsdelf*-gnu) ++ netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise +@@ -3989,7 +3980,7 @@ + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + +- linux* | k*bsd*-gnu | kopensolaris*-gnu) ++ linux* | k*bsd*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) +@@ -4194,9 +4185,6 @@ + cygwin* | mingw* | cegcc*) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + ;; +- linux* | k*bsd*-gnu) +- _LT_TAGVAR(link_all_deplibs, $1)=no +- ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; +@@ -4261,9 +4249,6 @@ + openbsd*) + with_gnu_ld=no + ;; +- linux* | k*bsd*-gnu) +- _LT_TAGVAR(link_all_deplibs, $1)=no +- ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes +@@ -4285,7 +4270,6 @@ + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in +- *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... +@@ -4377,7 +4361,7 @@ + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + +- gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) ++ gnu* | linux* | tpf* | k*bsd*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in +@@ -4447,7 +4431,7 @@ + fi + ;; + +- netbsd* | netbsdelf*-gnu) ++ netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= +@@ -4622,7 +4606,6 @@ + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi +- _LT_TAGVAR(link_all_deplibs, $1)=no + else + # not using gcc + if test "$host_cpu" = ia64; then +@@ -4861,7 +4844,7 @@ + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + +- netbsd* | netbsdelf*-gnu) ++ netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else +@@ -5861,7 +5844,7 @@ + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + +- linux* | k*bsd*-gnu | kopensolaris*-gnu) ++ linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler +diff -Naur enca-1.13/Makefile enca-1.13.patch/Makefile +--- enca-1.13/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/Makefile 2010-04-16 18:41:17.475317761 +0200 +@@ -0,0 +1,937 @@ ++# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# Makefile. Generated from Makefile.in by configure. ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, ++# Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++ ++ ++ ++pkgdatadir = $(datadir)/enca ++pkgincludedir = $(includedir)/enca ++pkglibdir = $(libdir)/enca ++pkglibexecdir = $(libexecdir)/enca ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = i686-pc-linux-gnu ++host_triplet = i686-pc-linux-gnu ++subdir = . ++DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ ++ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ ++ $(srcdir)/enca.pc.in $(srcdir)/enca.spec.in \ ++ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ ++ THANKS TODO compile config.guess config.rpath config.sub \ ++ depcomp install-sh ltmain.sh missing mkinstalldirs ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ ++ $(top_srcdir)/m4/libiconv.m4 $(top_srcdir)/m4/libm.m4 \ ++ $(top_srcdir)/m4/librecode.m4 $(top_srcdir)/m4/libtool.m4 \ ++ $(top_srcdir)/m4/localias.m4 $(top_srcdir)/m4/ltoptions.m4 \ ++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ ++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/tools.m4 \ ++ $(top_srcdir)/m4/typevar.m4 $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ ++ configure.lineno config.status.lineno ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = config.h ++CONFIG_CLEAN_FILES = enca.spec enca.pc ++CONFIG_CLEAN_VPATH_FILES = ++SOURCES = ++DIST_SOURCES = ++RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ ++ html-recursive info-recursive install-data-recursive \ ++ install-dvi-recursive install-exec-recursive \ ++ install-html-recursive install-info-recursive \ ++ install-pdf-recursive install-ps-recursive install-recursive \ ++ installcheck-recursive installdirs-recursive pdf-recursive \ ++ ps-recursive uninstall-recursive ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; ++am__install_max = 40 ++am__nobase_strip_setup = \ ++ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` ++am__nobase_strip = \ ++ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" ++am__nobase_list = $(am__nobase_strip_setup); \ ++ for p in $$list; do echo "$$p $$p"; done | \ ++ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ ++ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ ++ if (++n[$$2] == $(am__install_max)) \ ++ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ ++ END { for (dir in files) print dir, files[dir] }' ++am__base_list = \ ++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ ++ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' ++man1dir = $(mandir)/man1 ++am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(pkgconfigdir)" ++NROFF = nroff ++MANS = $(man_MANS) ++DATA = $(pkgconfig_DATA) ++RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ ++ distclean-recursive maintainer-clean-recursive ++AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ ++ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ ++ distdir dist dist-all distcheck ++ETAGS = etags ++CTAGS = ctags ++DIST_SUBDIRS = tools script lib src devel-docs test data ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++distdir = $(PACKAGE)-$(VERSION) ++top_distdir = $(distdir) ++am__remove_distdir = \ ++ { test ! -d "$(distdir)" \ ++ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ ++ && rm -fr "$(distdir)"; }; } ++am__relativize = \ ++ dir0=`pwd`; \ ++ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ ++ sed_rest='s,^[^/]*/*,,'; \ ++ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ ++ sed_butlast='s,/*[^/]*$$,,'; \ ++ while test -n "$$dir1"; do \ ++ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ ++ if test "$$first" != "."; then \ ++ if test "$$first" = ".."; then \ ++ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ ++ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ ++ else \ ++ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ ++ if test "$$first2" = "$$first"; then \ ++ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ ++ else \ ++ dir2="../$$dir2"; \ ++ fi; \ ++ dir0="$$dir0"/"$$first"; \ ++ fi; \ ++ fi; \ ++ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ ++ done; \ ++ reldir="$$dir2" ++DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 ++GZIP_ENV = --best ++distuninstallcheck_listfiles = find . -type f -print ++distcleancheck_listfiles = find . -type f -print ++ACLOCAL = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run aclocal-1.11 -I m4 ++AMTAR = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run tar ++AR = ar ++AUTOCONF = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoconf ++AUTOHEADER = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoheader ++AUTOMAKE = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run automake-1.11 ++AWK = gawk ++CC = gcc ++CCDEPMODE = depmode=gcc3 ++CFLAGS = -Wall -W -pedantic -g -O2 ++CONVERTER_LIBS = ++CPP = gcc -E ++CPPFLAGS = ++CSTOCS_PROG = ++CYGPATH_W = echo ++DEFAULT_CONVERTER_LIST = built-in,iconv ++DEFAULT_EXTERNAL_CONVERTER = piconv ++DEFS = -DHAVE_CONFIG_H ++DEPDIR = .deps ++DSYMUTIL = ++DUMPBIN = ++ECHO_C = ++ECHO_N = -n ++ECHO_T = ++EGREP = /bin/grep -E ++EXEEXT = ++FGREP = /bin/grep -F ++GREP = /bin/grep ++GTKDOC = true ++HTML_DIR = ${datarootdir}/gtk-doc/html ++INSTALL = /usr/bin/install -c ++INSTALL_DATA = ${INSTALL} -m 644 ++INSTALL_PROGRAM = ${INSTALL} ++INSTALL_SCRIPT = ${INSTALL} ++INSTALL_STRIP_PROGRAM = $(install_sh) -c -s ++LD = /usr/bin/ld ++LDFLAGS = ++LIBICONV = ++LIBM = -lm ++LIBOBJS = ++LIBS = -lm ++LIBTOOL = $(SHELL) $(top_builddir)/libtool ++LIPO = ++LN_S = ln -s ++LTLIBICONV = ++LTLIBOBJS = ++MAINT = # ++MAKEINFO = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run makeinfo ++MAP_PROG = ++MKDIR_P = /bin/mkdir -p ++MKTEMP_PROG = /bin/mktemp ++NM = /usr/bin/nm -B ++NMEDIT = ++OBJDUMP = objdump ++OBJEXT = o ++OTOOL = ++OTOOL64 = ++PACKAGE = enca ++PACKAGE_BUGREPORT = https://bugs.cihar.com/ ++PACKAGE_NAME = Enca ++PACKAGE_STRING = Enca 1.13 ++PACKAGE_TARNAME = enca ++PACKAGE_URL = ++PACKAGE_VERSION = 1.13 ++PATH_SEPARATOR = : ++PICONV_PROG = /usr/bin/piconv ++RANLIB = ranlib ++RECODE_PROG = ++RELEASE = 1 ++SED = /bin/sed ++SET_MAKE = ++SHELL = /bin/sh ++SHELL_RANDOM_FILENAME = `/bin/mktemp /tmp/enca-$$-XXXXXXXX` ++STRIP = strip ++UMAP_PROG = ++VERSION = 1.13 ++abs_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++abs_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++abs_top_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++abs_top_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++ac_ct_CC = gcc ++ac_ct_DUMPBIN = ++am__include = include ++am__leading_dot = . ++am__quote = ++am__tar = ${AMTAR} chof - "$$tardir" ++am__untar = ${AMTAR} xf - ++bindir = ${exec_prefix}/bin ++build = i686-pc-linux-gnu ++build_alias = ++build_cpu = i686 ++build_os = linux-gnu ++build_vendor = pc ++builddir = . ++datadir = ${datarootdir} ++datarootdir = ${prefix}/share ++docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} ++dvidir = ${docdir} ++exec_prefix = ${prefix} ++host = i686-pc-linux-gnu ++host_alias = ++host_cpu = i686 ++host_os = linux-gnu ++host_vendor = pc ++htmldir = ${docdir} ++includedir = ${prefix}/include ++infodir = ${datarootdir}/info ++install_sh = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/install-sh ++libdir = ${exec_prefix}/lib ++libexecdir = ${exec_prefix}/libexec ++localedir = ${datarootdir}/locale ++localstatedir = ${prefix}/var ++lt_ECHO = echo ++mandir = ${datarootdir}/man ++mkdir_p = /bin/mkdir -p ++oldincludedir = /usr/include ++pdfdir = ${docdir} ++prefix = /usr/local ++program_transform_name = s,x,x, ++psdir = ${docdir} ++sbindir = ${exec_prefix}/sbin ++sharedstatedir = ${prefix}/com ++srcdir = . ++sysconfdir = ${prefix}/etc ++target_alias = ++top_build_prefix = ++top_builddir = . ++top_srcdir = . ++SUBDIRS = tools script lib src devel-docs test ++ ++# @(#) $Id: Makefile.am,v 1.35 2005/11/24 10:21:32 yeti Exp $ ++#SUBDIRS = tools data script lib src devel-docs test ++man_MANS = man/enca.1 ++DISTCHECK_CONFIGURE_FLAGS = --enable-maintainer-mode ++ACLOCAL_AMFLAGS = -I m4 ++M4TESTS = \ ++ m4/crash-me \ ++ m4/gtk-doc.m4 \ ++ m4/libiconv.m4 \ ++ m4/libm.m4 \ ++ m4/librecode.m4 \ ++ m4/localias.m4 \ ++ m4/long-text.l2 \ ++ m4/recode-bugs.m4 \ ++ m4/scanf.m4 \ ++ m4/tools.m4 \ ++ m4/typevar.m4 ++ ++EXTRA_DIST = \ ++ FAQ \ ++ README.devel \ ++ TODO \ ++ ChangeLog.prelib \ ++ autogen.sh \ ++ config.rpath \ ++ enca.pc.in \ ++ enca.spec \ ++ enca.spec.in \ ++ iconvcap.c \ ++ topline.sh \ ++ man/enca.1 \ ++ $(M4TESTS) ++ ++pkgconfigdir = $(libdir)/pkgconfig ++pkgconfig_DATA = enca.pc ++all: config.h ++ $(MAKE) $(AM_MAKEFLAGS) all-recursive ++ ++.SUFFIXES: ++am--refresh: ++ @: ++$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ echo ' cd $(srcdir) && $(AUTOMAKE) --gnits'; \ ++ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnits \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --gnits Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ echo ' $(SHELL) ./config.status'; \ ++ $(SHELL) ./config.status;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ $(SHELL) ./config.status --recheck ++ ++$(top_srcdir)/configure: # $(am__configure_deps) ++ $(am__cd) $(srcdir) && $(AUTOCONF) ++$(ACLOCAL_M4): # $(am__aclocal_m4_deps) ++ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) ++$(am__aclocal_m4_deps): ++ ++config.h: stamp-h1 ++ @if test ! -f $@; then \ ++ rm -f stamp-h1; \ ++ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ ++ else :; fi ++ ++stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status ++ @rm -f stamp-h1 ++ cd $(top_builddir) && $(SHELL) ./config.status config.h ++$(srcdir)/config.h.in: # $(am__configure_deps) ++ ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) ++ rm -f stamp-h1 ++ touch $@ ++ ++distclean-hdr: ++ -rm -f config.h stamp-h1 ++enca.spec: $(top_builddir)/config.status $(srcdir)/enca.spec.in ++ cd $(top_builddir) && $(SHELL) ./config.status $@ ++enca.pc: $(top_builddir)/config.status $(srcdir)/enca.pc.in ++ cd $(top_builddir) && $(SHELL) ./config.status $@ ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++distclean-libtool: ++ -rm -f libtool config.lt ++install-man1: $(man_MANS) ++ @$(NORMAL_INSTALL) ++ test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" ++ @list=''; test -n "$(man1dir)" || exit 0; \ ++ { for i in $$list; do echo "$$i"; done; \ ++ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ ++ sed -n '/\.1[a-z]*$$/p'; \ ++ } | while read p; do \ ++ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ ++ echo "$$d$$p"; echo "$$p"; \ ++ done | \ ++ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ ++ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ ++ sed 'N;N;s,\n, ,g' | { \ ++ list=; while read file base inst; do \ ++ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ ++ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ ++ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ ++ fi; \ ++ done; \ ++ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ ++ while read files; do \ ++ test -z "$$files" || { \ ++ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ ++ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ ++ done; } ++ ++uninstall-man1: ++ @$(NORMAL_UNINSTALL) ++ @list=''; test -n "$(man1dir)" || exit 0; \ ++ files=`{ for i in $$list; do echo "$$i"; done; \ ++ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ ++ sed -n '/\.1[a-z]*$$/p'; \ ++ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ ++ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ ++ test -z "$$files" || { \ ++ echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ ++ cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } ++install-pkgconfigDATA: $(pkgconfig_DATA) ++ @$(NORMAL_INSTALL) ++ test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" ++ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ ++ for p in $$list; do \ ++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ++ echo "$$d$$p"; \ ++ done | $(am__base_list) | \ ++ while read files; do \ ++ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ ++ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ ++ done ++ ++uninstall-pkgconfigDATA: ++ @$(NORMAL_UNINSTALL) ++ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ ++ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ ++ test -n "$$files" || exit 0; \ ++ echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \ ++ cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files ++ ++# This directory's subdirectories are mostly independent; you can cd ++# into them and run `make' without going through this Makefile. ++# To change the values of `make' variables: instead of editing Makefiles, ++# (1) if the variable is set in `config.status', edit `config.status' ++# (which will cause the Makefiles to be regenerated when you run `make'); ++# (2) otherwise, pass the desired values on the `make' command line. ++$(RECURSIVE_TARGETS): ++ @fail= failcom='exit 1'; \ ++ for f in x $$MAKEFLAGS; do \ ++ case $$f in \ ++ *=* | --[!k]*);; \ ++ *k*) failcom='fail=yes';; \ ++ esac; \ ++ done; \ ++ dot_seen=no; \ ++ target=`echo $@ | sed s/-recursive//`; \ ++ list='$(SUBDIRS)'; for subdir in $$list; do \ ++ echo "Making $$target in $$subdir"; \ ++ if test "$$subdir" = "."; then \ ++ dot_seen=yes; \ ++ local_target="$$target-am"; \ ++ else \ ++ local_target="$$target"; \ ++ fi; \ ++ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ ++ || eval $$failcom; \ ++ done; \ ++ if test "$$dot_seen" = "no"; then \ ++ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ ++ fi; test -z "$$fail" ++ ++$(RECURSIVE_CLEAN_TARGETS): ++ @fail= failcom='exit 1'; \ ++ for f in x $$MAKEFLAGS; do \ ++ case $$f in \ ++ *=* | --[!k]*);; \ ++ *k*) failcom='fail=yes';; \ ++ esac; \ ++ done; \ ++ dot_seen=no; \ ++ case "$@" in \ ++ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ ++ *) list='$(SUBDIRS)' ;; \ ++ esac; \ ++ rev=''; for subdir in $$list; do \ ++ if test "$$subdir" = "."; then :; else \ ++ rev="$$subdir $$rev"; \ ++ fi; \ ++ done; \ ++ rev="$$rev ."; \ ++ target=`echo $@ | sed s/-recursive//`; \ ++ for subdir in $$rev; do \ ++ echo "Making $$target in $$subdir"; \ ++ if test "$$subdir" = "."; then \ ++ local_target="$$target-am"; \ ++ else \ ++ local_target="$$target"; \ ++ fi; \ ++ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ ++ || eval $$failcom; \ ++ done && test -z "$$fail" ++tags-recursive: ++ list='$(SUBDIRS)'; for subdir in $$list; do \ ++ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ ++ done ++ctags-recursive: ++ list='$(SUBDIRS)'; for subdir in $$list; do \ ++ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ ++ done ++ ++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ mkid -fID $$unique ++tags: TAGS ++ ++TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ set x; \ ++ here=`pwd`; \ ++ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ ++ include_option=--etags-include; \ ++ empty_fix=.; \ ++ else \ ++ include_option=--include; \ ++ empty_fix=; \ ++ fi; \ ++ list='$(SUBDIRS)'; for subdir in $$list; do \ ++ if test "$$subdir" = .; then :; else \ ++ test ! -f $$subdir/TAGS || \ ++ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ ++ fi; \ ++ done; \ ++ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: CTAGS ++CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ ++distdir: $(DISTFILES) ++ @case `sed 15q $(srcdir)/NEWS` in \ ++ *"$(VERSION)"*) : ;; \ ++ *) \ ++ echo "NEWS not updated; not releasing" 1>&2; \ ++ exit 1;; \ ++ esac ++ @list='$(MANS)'; if test -n "$$list"; then \ ++ list=`for p in $$list; do \ ++ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ ++ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ ++ if test -n "$$list" && \ ++ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ ++ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ ++ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ ++ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ ++ echo " typically \`make maintainer-clean' will remove them" >&2; \ ++ exit 1; \ ++ else :; fi; \ ++ else :; fi ++ $(am__remove_distdir) ++ test -d "$(distdir)" || mkdir "$(distdir)" ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d "$(distdir)/$$file"; then \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ ++ else \ ++ test -f "$(distdir)/$$file" \ ++ || cp -p $$d/$$file "$(distdir)/$$file" \ ++ || exit 1; \ ++ fi; \ ++ done ++ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ ++ if test "$$subdir" = .; then :; else \ ++ test -d "$(distdir)/$$subdir" \ ++ || $(MKDIR_P) "$(distdir)/$$subdir" \ ++ || exit 1; \ ++ fi; \ ++ done ++ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ ++ if test "$$subdir" = .; then :; else \ ++ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ ++ $(am__relativize); \ ++ new_distdir=$$reldir; \ ++ dir1=$$subdir; dir2="$(top_distdir)"; \ ++ $(am__relativize); \ ++ new_top_distdir=$$reldir; \ ++ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ ++ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ++ ($(am__cd) $$subdir && \ ++ $(MAKE) $(AM_MAKEFLAGS) \ ++ top_distdir="$$new_top_distdir" \ ++ distdir="$$new_distdir" \ ++ am__remove_distdir=: \ ++ am__skip_length_check=: \ ++ am__skip_mode_fix=: \ ++ distdir) \ ++ || exit 1; \ ++ fi; \ ++ done ++ $(MAKE) $(AM_MAKEFLAGS) \ ++ top_distdir="$(top_distdir)" distdir="$(distdir)" \ ++ dist-hook ++ -test -n "$(am__skip_mode_fix)" \ ++ || find "$(distdir)" -type d ! -perm -755 \ ++ -exec chmod u+rwx,go+rx {} \; -o \ ++ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ++ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ++ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ ++ || chmod -R a+r "$(distdir)" ++dist-gzip: distdir ++ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz ++ $(am__remove_distdir) ++dist-bzip2: distdir ++ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 ++ $(am__remove_distdir) ++ ++dist-lzma: distdir ++ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma ++ $(am__remove_distdir) ++ ++dist-xz: distdir ++ tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz ++ $(am__remove_distdir) ++ ++dist-tarZ: distdir ++ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z ++ $(am__remove_distdir) ++ ++dist-shar: distdir ++ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz ++ $(am__remove_distdir) ++ ++dist-zip: distdir ++ -rm -f $(distdir).zip ++ zip -rq $(distdir).zip $(distdir) ++ $(am__remove_distdir) ++ ++dist dist-all: distdir ++ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz ++ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 ++ $(am__remove_distdir) ++ ++# This target untars the dist file and tries a VPATH configuration. Then ++# it guarantees that the distribution is self-contained by making another ++# tarfile. ++distcheck: dist ++ case '$(DIST_ARCHIVES)' in \ ++ *.tar.gz*) \ ++ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ ++ *.tar.bz2*) \ ++ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ ++ *.tar.lzma*) \ ++ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ ++ *.tar.xz*) \ ++ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ ++ *.tar.Z*) \ ++ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ ++ *.shar.gz*) \ ++ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ ++ *.zip*) \ ++ unzip $(distdir).zip ;;\ ++ esac ++ chmod -R a-w $(distdir); chmod a+w $(distdir) ++ mkdir $(distdir)/_build ++ mkdir $(distdir)/_inst ++ chmod a-w $(distdir) ++ test -d $(distdir)/_build || exit 0; \ ++ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ ++ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ ++ && am__cwd=`pwd` \ ++ && $(am__cd) $(distdir)/_build \ ++ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ ++ $(DISTCHECK_CONFIGURE_FLAGS) \ ++ && $(MAKE) $(AM_MAKEFLAGS) \ ++ && $(MAKE) $(AM_MAKEFLAGS) dvi \ ++ && $(MAKE) $(AM_MAKEFLAGS) check \ ++ && $(MAKE) $(AM_MAKEFLAGS) install \ ++ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ ++ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ ++ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ ++ distuninstallcheck \ ++ && chmod -R a-w "$$dc_install_base" \ ++ && ({ \ ++ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ ++ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ ++ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ ++ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ ++ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ ++ } || { rm -rf "$$dc_destdir"; exit 1; }) \ ++ && rm -rf "$$dc_destdir" \ ++ && $(MAKE) $(AM_MAKEFLAGS) dist \ ++ && rm -rf $(DIST_ARCHIVES) \ ++ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ ++ && cd "$$am__cwd" \ ++ || exit 1 ++ $(am__remove_distdir) ++ @(echo "$(distdir) archives ready for distribution: "; \ ++ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ ++ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' ++distuninstallcheck: ++ @$(am__cd) '$(distuninstallcheck_dir)' \ ++ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ ++ || { echo "ERROR: files left after uninstall:" ; \ ++ if test -n "$(DESTDIR)"; then \ ++ echo " (check DESTDIR support)"; \ ++ fi ; \ ++ $(distuninstallcheck_listfiles) ; \ ++ exit 1; } >&2 ++distcleancheck: distclean ++ @if test '$(srcdir)' = . ; then \ ++ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ ++ exit 1 ; \ ++ fi ++ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ ++ || { echo "ERROR: files left in build directory after distclean:" ; \ ++ $(distcleancheck_listfiles) ; \ ++ exit 1; } >&2 ++check-am: all-am ++check: check-recursive ++all-am: Makefile $(MANS) $(DATA) config.h ++installdirs: installdirs-recursive ++installdirs-am: ++ for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(pkgconfigdir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done ++install: install-recursive ++install-exec: install-exec-recursive ++install-data: install-data-recursive ++uninstall: uninstall-recursive ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-recursive ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ `test -z '$(STRIP)' || \ ++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++clean: clean-recursive ++ ++clean-am: clean-generic clean-libtool clean-local mostlyclean-am ++ ++distclean: distclean-recursive ++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) ++ -rm -f Makefile ++distclean-am: clean-am distclean-generic distclean-hdr \ ++ distclean-libtool distclean-local distclean-tags ++ ++dvi: dvi-recursive ++ ++dvi-am: ++ ++html: html-recursive ++ ++html-am: ++ ++info: info-recursive ++ ++info-am: ++ ++install-data-am: install-man install-pkgconfigDATA ++ @$(NORMAL_INSTALL) ++ $(MAKE) $(AM_MAKEFLAGS) install-data-hook ++install-dvi: install-dvi-recursive ++ ++install-dvi-am: ++ ++install-exec-am: ++ ++install-html: install-html-recursive ++ ++install-html-am: ++ ++install-info: install-info-recursive ++ ++install-info-am: ++ ++install-man: install-man1 ++ ++install-pdf: install-pdf-recursive ++ ++install-pdf-am: ++ ++install-ps: install-ps-recursive ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-recursive ++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) ++ -rm -rf $(top_srcdir)/autom4te.cache ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-recursive ++ ++mostlyclean-am: mostlyclean-generic mostlyclean-libtool ++ ++pdf: pdf-recursive ++ ++pdf-am: ++ ++ps: ps-recursive ++ ++ps-am: ++ ++uninstall-am: uninstall-man uninstall-pkgconfigDATA ++ @$(NORMAL_INSTALL) ++ $(MAKE) $(AM_MAKEFLAGS) uninstall-hook ++uninstall-man: uninstall-man1 ++ ++.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ++ ctags-recursive install-am install-data-am install-strip \ ++ tags-recursive uninstall-am ++ ++.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ ++ all all-am am--refresh check check-am clean clean-generic \ ++ clean-libtool clean-local ctags ctags-recursive dist dist-all \ ++ dist-bzip2 dist-gzip dist-hook dist-lzma dist-shar dist-tarZ \ ++ dist-xz dist-zip distcheck distclean distclean-generic \ ++ distclean-hdr distclean-libtool distclean-local distclean-tags \ ++ distcleancheck distdir distuninstallcheck dvi dvi-am html \ ++ html-am info info-am install install-am install-data \ ++ install-data-am install-data-hook install-dvi install-dvi-am \ ++ install-exec install-exec-am install-html install-html-am \ ++ install-info install-info-am install-man install-man1 \ ++ install-pdf install-pdf-am install-pkgconfigDATA install-ps \ ++ install-ps-am install-strip installcheck installcheck-am \ ++ installdirs installdirs-am maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-generic \ ++ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ ++ uninstall uninstall-am uninstall-hook uninstall-man \ ++ uninstall-man1 uninstall-pkgconfigDATA ++ ++ ++####################### maintainer's targets ###################### ++# alias test=check ++test: check ++ ++docs: ++ cd $(srcdir)/devel-docs && $(MAKE) docs ++ ++.PHONY: test docs ++ ++$(pkgconfig_DATA): config.status ++ ++install-data-hook: ++ cd $(DESTDIR)$(man1dir); \ ++ inst1=`echo enca | sed '$(transform)'`.1; \ ++ inst2=`echo enconv | sed '$(transform)'`.1; \ ++ $(LN_S) $$inst1 $$inst2 ++ ++uninstall-hook: ++ inst=`echo enconv | sed '$(transform)'`.1; \ ++ rm -f $(DESTDIR)$(man1dir)/$$inst ++ ++clean-local: ++ rm -f iconvcap iconvcap.o *~ core.* ++ ++distclean-local: ++ rm -f iconvenc.h ++ ++#dist-check-maintainer: ++dist-check-maintainer: ++ @echo "*** maintainer mode must be enabled in order to make dist" ++ @false ++ ++dist-hook: dist-check-maintainer ++ cat $(distdir)/tools/iconvenc.null >$(distdir)/iconvenc.h ++ ++# To be run [by hand] before release (not the same as before making dists). ++#update: ++# ./topline.sh ++ ++.PHONY: update ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff -Naur enca-1.13/script/b-cstocs enca-1.13.patch/script/b-cstocs +--- enca-1.13/script/b-cstocs 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/script/b-cstocs 2010-04-16 18:41:17.622443058 +0200 +@@ -0,0 +1,50 @@ ++#! /bin/sh ++# @(#) $Id: b-cstocs.in,v 1.3 2003/12/22 15:32:37 yeti Exp $ ++# cstocs batch-call wrapper. ++# To be called by enca, don't use directly. See enca(1) for calling convention. ++# ++# Copyright (C) 2000-2003 David Necas (Yeti) . ++# This is free software; it can be copied and/or modified under the terms of ++# version 2 of GNU General Public License, see COPYING for details. There is ++# NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++transform_enc_name() { ++ case "$1" in ++ ASCII*) echo ascii ; return ;; ++ CP1250*) echo 1250 ; return ;; ++ IBM852*) echo pc2 ; return ;; ++ ISO-8859-2*) echo il2 ; return ;; ++ KEYBCS2*) echo kam ; return ;; ++ KOI-8_CS2*) echo koi ; return ;; ++ UTF-8*) echo utf8 ; return ;; ++ TeX*) echo tex ; return ;; ++ esac ++ echo "$1"|sed -e 's:/.*::' ++} ++if test "x$3" = "x"; then ++ echo "$0 has to be called by enca" 1>&2 ++ exit 1 ++fi ++umask 077 ++inenc=`transform_enc_name "$1"` ++outenc=`transform_enc_name "$2"` ++if test "$4" = "-"; then ++ if cstocs "$inenc" "$outenc" <"$3"; then ++ rm -- "$3" ++ else ++ echo "$0: cstocs $inenc $outenc failed" 1>&2 ++ rm -- "$3" ++ exit 1 ++ fi ++else ++ temp=`/bin/mktemp /tmp/enca-$$-XXXXXXXX` || exit 1 ++ if cstocs "$inenc" "$outenc" <"$3" >>"$temp"; then ++ # use cat > to preserve permissions ++ cat $temp >"$3" ++ else ++ echo "$0: cstocs $inenc $outenc $3 failed, file $3 unchanged" 1>&2 ++ rm -f $temp ++ exit 1 ++ fi ++ rm -f $temp ++fi ++ +diff -Naur enca-1.13/script/b-map enca-1.13.patch/script/b-map +--- enca-1.13/script/b-map 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/script/b-map 2010-04-16 18:41:17.641443238 +0200 +@@ -0,0 +1,41 @@ ++#! /bin/sh ++# @(#) $Id: b-map.in,v 1.4 2003/12/22 15:32:37 yeti Exp $ ++# map batch-call wrapper. ++# To be called by enca, don't use directly. See enca(1) for calling convention. ++# ++# Copyright (C) 2000-2003 David Necas (Yeti) . ++# This is free software; it can be copied and/or modified under the terms of ++# version 2 of GNU General Public License, see COPYING for details. There is ++# NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++transform_enc_name() { ++ echo "$1" | sed -e 's:/.*::' ++} ++if test "x$3" = "x"; then ++ echo "$0 has to be called by enca" 1>&2 ++ exit 1 ++fi ++umask 077 ++inenc=`transform_enc_name "$1"` ++outenc=`transform_enc_name "$2"` ++if test "$4" = "-"; then ++ # Note map returns 0 on failure and 1 on success! ++ if map --from "$inenc" --to "$outenc" <"$3"; then ++ echo "$0: map --from $inenc --to $outenc failed" 1>&2 ++ rm -- "$3" ++ exit 1 ++ else ++ rm -- "$3" ++ fi ++else ++ temp=`/bin/mktemp /tmp/enca-$$-XXXXXXXX` || exit 1 ++ # Note map returns 0 on failure and 1 on success! ++ if map --from "$inenc" --to "$outenc" <"$3" >"$temp"; then ++ echo "$0: map --from $inenc --to $outenc <$3 failed, file $3 unchanged" 1>&2 ++ rm -f $temp ++ exit 1 ++ else ++ # use cat > to preserve permissions ++ cat $temp >"$3" ++ fi ++ rm -f $temp ++fi +diff -Naur enca-1.13/script/b-piconv enca-1.13.patch/script/b-piconv +--- enca-1.13/script/b-piconv 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/script/b-piconv 2010-04-16 18:41:17.662443239 +0200 +@@ -0,0 +1,40 @@ ++#! /bin/sh ++# @(#) $Id: b-piconv.in,v 1.3 2003/12/22 15:32:37 yeti Exp $ ++# piconv wrapper. ++# To be called by enca, don't use directly. See enca(1) for calling convention. ++# ++# Copyright (C) 2000-2003 David Necas (Yeti) . ++# This is free software; it can be copied and/or modified under the terms of ++# version 2 of GNU General Public License, see COPYING for details. There is ++# NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++transform_enc_name() { ++ echo "$1" | sed -e 's:/.*::' ++} ++if test "x$3" = "x"; then ++ echo "$0 has to be called by enca" 1>&2 ++ exit 1 ++fi ++umask 077 ++inenc=`transform_enc_name "$1"` ++outenc=`transform_enc_name "$2"` ++if test "$4" = "-"; then ++ if piconv -f "$inenc" -t "$outenc" <"$3"; then ++ rm -- "$3" ++ else ++ echo "$0: piconv -f $inenc -t $outenc failed" 1>&2 ++ rm -- "$3" ++ exit 1 ++ fi ++else ++ temp=`/bin/mktemp /tmp/enca-$$-XXXXXXXX` || exit 1 ++ if piconv -f "$inenc" -t "$outenc" <"$3" >"$temp"; then ++ # use cat > to preserve permissions ++ cat $temp >"$3" ++ else ++ echo "$0: piconv -f $inenc -t $outenc <$3 failed, file $3 unchanged" 1>&2 ++ rm -f $temp ++ exit 1 ++ fi ++ rm -f $temp ++fi ++ +diff -Naur enca-1.13/script/b-umap enca-1.13.patch/script/b-umap +--- enca-1.13/script/b-umap 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/script/b-umap 2010-04-16 18:41:17.683442820 +0200 +@@ -0,0 +1,39 @@ ++#! /bin/sh ++# @(#) $Id: b-umap.in,v 1.4 2003/12/22 15:32:37 yeti Exp $ ++# umap batch-call wrapper. ++# To be called by enca, don't use directly. See enca(1) for calling convention. ++# ++# Copyright (C) 2000-2003 David Necas (Yeti) . ++# This is free software; it can be copied and/or modified under the terms of ++# version 2 of GNU General Public License, see COPYING for details. There is ++# NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++transform_enc_name() { ++ echo "$1" | sed -e 's:/.*::' ++} ++if test "x$3" = "x"; then ++ echo "$0 has to be called by enca" 1>&2 ++ exit 1 ++fi ++umask 077 ++inenc=`transform_enc_name "$1"` ++outenc=`transform_enc_name "$2"` ++if test "$4" = "-"; then ++ if umap "$inenc:$outenc" <"$3"; then ++ rm -- "$3" ++ else ++ echo "$0: umap $inenc:$outenc failed" 1>&2 ++ rm -- "$3" ++ exit 1 ++ fi ++else ++ temp=`/bin/mktemp /tmp/enca-$$-XXXXXXXX` || exit 1 ++ if umap "$inenc:$outenc" <"$3" >"$temp"; then ++ # use cat > to preserve permissions ++ cat $temp >"$3" ++ else ++ echo "$0: umap $inenc:$outenc <$3 failed, file $3 unchanged" 1>&2 ++ rm -f $temp ++ exit 1 ++ fi ++ rm -f $temp ++fi +diff -Naur enca-1.13/script/Makefile enca-1.13.patch/script/Makefile +--- enca-1.13/script/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/script/Makefile 2010-04-16 18:41:17.602468040 +0200 +@@ -0,0 +1,482 @@ ++# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# script/Makefile. Generated from Makefile.in by configure. ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, ++# Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++ ++ ++# @(#) $Id: Makefile.am,v 1.7 2003/12/22 15:32:37 yeti Exp $ ++ ++ ++pkgdatadir = $(datadir)/enca ++pkgincludedir = $(includedir)/enca ++pkglibdir = $(libdir)/enca ++pkglibexecdir = $(libexecdir)/enca ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = i686-pc-linux-gnu ++host_triplet = i686-pc-linux-gnu ++subdir = script ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ ++ $(srcdir)/b-cstocs.in $(srcdir)/b-map.in $(srcdir)/b-piconv.in \ ++ $(srcdir)/b-umap.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ ++ $(top_srcdir)/m4/libiconv.m4 $(top_srcdir)/m4/libm.m4 \ ++ $(top_srcdir)/m4/librecode.m4 $(top_srcdir)/m4/libtool.m4 \ ++ $(top_srcdir)/m4/localias.m4 $(top_srcdir)/m4/ltoptions.m4 \ ++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ ++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/tools.m4 \ ++ $(top_srcdir)/m4/typevar.m4 $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = b-cstocs b-map b-piconv b-umap ++CONFIG_CLEAN_VPATH_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; ++am__install_max = 40 ++am__nobase_strip_setup = \ ++ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` ++am__nobase_strip = \ ++ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" ++am__nobase_list = $(am__nobase_strip_setup); \ ++ for p in $$list; do echo "$$p $$p"; done | \ ++ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ ++ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ ++ if (++n[$$2] == $(am__install_max)) \ ++ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ ++ END { for (dir in files) print dir, files[dir] }' ++am__base_list = \ ++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ ++ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' ++am__installdirs = "$(DESTDIR)$(extconvdir)" ++SCRIPTS = $(extconv_SCRIPTS) ++SOURCES = ++DIST_SOURCES = ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run aclocal-1.11 -I m4 ++AMTAR = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run tar ++AR = ar ++AUTOCONF = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoconf ++AUTOHEADER = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoheader ++AUTOMAKE = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run automake-1.11 ++AWK = gawk ++CC = gcc ++CCDEPMODE = depmode=gcc3 ++CFLAGS = -Wall -W -pedantic -g -O2 ++CONVERTER_LIBS = ++CPP = gcc -E ++CPPFLAGS = ++CSTOCS_PROG = ++CYGPATH_W = echo ++DEFAULT_CONVERTER_LIST = built-in,iconv ++DEFAULT_EXTERNAL_CONVERTER = piconv ++DEFS = -DHAVE_CONFIG_H ++DEPDIR = .deps ++DSYMUTIL = ++DUMPBIN = ++ECHO_C = ++ECHO_N = -n ++ECHO_T = ++EGREP = /bin/grep -E ++EXEEXT = ++FGREP = /bin/grep -F ++GREP = /bin/grep ++GTKDOC = true ++HTML_DIR = ${datarootdir}/gtk-doc/html ++INSTALL = /usr/bin/install -c ++INSTALL_DATA = ${INSTALL} -m 644 ++INSTALL_PROGRAM = ${INSTALL} ++INSTALL_SCRIPT = ${INSTALL} ++INSTALL_STRIP_PROGRAM = $(install_sh) -c -s ++LD = /usr/bin/ld ++LDFLAGS = ++LIBICONV = ++LIBM = -lm ++LIBOBJS = ++LIBS = -lm ++LIBTOOL = $(SHELL) $(top_builddir)/libtool ++LIPO = ++LN_S = ln -s ++LTLIBICONV = ++LTLIBOBJS = ++MAINT = # ++MAKEINFO = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run makeinfo ++MAP_PROG = ++MKDIR_P = /bin/mkdir -p ++MKTEMP_PROG = /bin/mktemp ++NM = /usr/bin/nm -B ++NMEDIT = ++OBJDUMP = objdump ++OBJEXT = o ++OTOOL = ++OTOOL64 = ++PACKAGE = enca ++PACKAGE_BUGREPORT = https://bugs.cihar.com/ ++PACKAGE_NAME = Enca ++PACKAGE_STRING = Enca 1.13 ++PACKAGE_TARNAME = enca ++PACKAGE_URL = ++PACKAGE_VERSION = 1.13 ++PATH_SEPARATOR = : ++PICONV_PROG = /usr/bin/piconv ++RANLIB = ranlib ++RECODE_PROG = ++RELEASE = 1 ++SED = /bin/sed ++SET_MAKE = ++SHELL = /bin/sh ++SHELL_RANDOM_FILENAME = `/bin/mktemp /tmp/enca-$$-XXXXXXXX` ++STRIP = strip ++UMAP_PROG = ++VERSION = 1.13 ++abs_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/script ++abs_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/script ++abs_top_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++abs_top_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++ac_ct_CC = gcc ++ac_ct_DUMPBIN = ++am__include = include ++am__leading_dot = . ++am__quote = ++am__tar = ${AMTAR} chof - "$$tardir" ++am__untar = ${AMTAR} xf - ++bindir = ${exec_prefix}/bin ++build = i686-pc-linux-gnu ++build_alias = ++build_cpu = i686 ++build_os = linux-gnu ++build_vendor = pc ++builddir = . ++datadir = ${datarootdir} ++datarootdir = ${prefix}/share ++docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} ++dvidir = ${docdir} ++exec_prefix = ${prefix} ++host = i686-pc-linux-gnu ++host_alias = ++host_cpu = i686 ++host_os = linux-gnu ++host_vendor = pc ++htmldir = ${docdir} ++includedir = ${prefix}/include ++infodir = ${datarootdir}/info ++install_sh = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/install-sh ++libdir = ${exec_prefix}/lib ++libexecdir = ${exec_prefix}/libexec ++localedir = ${datarootdir}/locale ++localstatedir = ${prefix}/var ++lt_ECHO = echo ++mandir = ${datarootdir}/man ++mkdir_p = /bin/mkdir -p ++oldincludedir = /usr/include ++pdfdir = ${docdir} ++prefix = /usr/local ++program_transform_name = s,x,x, ++psdir = ${docdir} ++sbindir = ${exec_prefix}/sbin ++sharedstatedir = ${prefix}/com ++srcdir = . ++sysconfdir = ${prefix}/etc ++target_alias = ++top_build_prefix = ../ ++top_builddir = .. ++top_srcdir = .. ++AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = $(extconv_SCRIPTS) ++extconvdir = $(libexecdir)/enca/extconv ++extconv_SCRIPTS = \ ++ cstocs \ ++ map \ ++ piconv \ ++ recode \ ++ umap ++ ++EXTRA_DIST = \ ++ b-recode \ ++ b-cstocs.in \ ++ b-map.in \ ++ b-piconv.in \ ++ b-umap.in ++ ++all: all-am ++ ++.SUFFIXES: ++$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits script/Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --gnits script/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: # $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): # $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(am__aclocal_m4_deps): ++b-cstocs: $(top_builddir)/config.status $(srcdir)/b-cstocs.in ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ++b-map: $(top_builddir)/config.status $(srcdir)/b-map.in ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ++b-piconv: $(top_builddir)/config.status $(srcdir)/b-piconv.in ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ++b-umap: $(top_builddir)/config.status $(srcdir)/b-umap.in ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ++install-extconvSCRIPTS: $(extconv_SCRIPTS) ++ @$(NORMAL_INSTALL) ++ test -z "$(extconvdir)" || $(MKDIR_P) "$(DESTDIR)$(extconvdir)" ++ @list='$(extconv_SCRIPTS)'; test -n "$(extconvdir)" || list=; \ ++ for p in $$list; do \ ++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ++ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ ++ done | \ ++ sed -e 'p;s,.*/,,;n' \ ++ -e 'h;s|.*|.|' \ ++ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ ++ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ ++ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ ++ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ ++ if (++n[d] == $(am__install_max)) { \ ++ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ ++ else { print "f", d "/" $$4, $$1 } } \ ++ END { for (d in files) print "f", d, files[d] }' | \ ++ while read type dir files; do \ ++ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ ++ test -z "$$files" || { \ ++ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(extconvdir)$$dir'"; \ ++ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(extconvdir)$$dir" || exit $$?; \ ++ } \ ++ ; done ++ ++uninstall-extconvSCRIPTS: ++ @$(NORMAL_UNINSTALL) ++ @list='$(extconv_SCRIPTS)'; test -n "$(extconvdir)" || exit 0; \ ++ files=`for p in $$list; do echo "$$p"; done | \ ++ sed -e 's,.*/,,;$(transform)'`; \ ++ test -n "$$list" || exit 0; \ ++ echo " ( cd '$(DESTDIR)$(extconvdir)' && rm -f" $$files ")"; \ ++ cd "$(DESTDIR)$(extconvdir)" && rm -f $$files ++ ++installcheck-extconvSCRIPTS: $(extconv_SCRIPTS) ++ bad=0; pid=$$$$; list="$(extconv_SCRIPTS)"; for p in $$list; do \ ++ case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ ++ *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ ++ esac; \ ++ f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \ ++ for opt in --help --version; do \ ++ if "$(DESTDIR)$(extconvdir)/$$f" $$opt >c$${pid}_.out \ ++ 2>c$${pid}_.err &2; bad=1; fi; \ ++ done; \ ++ done; rm -f c$${pid}_.???; exit $$bad ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++tags: TAGS ++TAGS: ++ ++ctags: CTAGS ++CTAGS: ++ ++ ++distdir: $(DISTFILES) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d "$(distdir)/$$file"; then \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ ++ else \ ++ test -f "$(distdir)/$$file" \ ++ || cp -p $$d/$$file "$(distdir)/$$file" \ ++ || exit 1; \ ++ fi; \ ++ done ++check-am: all-am ++check: check-am ++all-am: Makefile $(SCRIPTS) ++installdirs: ++ for dir in "$(DESTDIR)$(extconvdir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done ++install: install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ `test -z '$(STRIP)' || \ ++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++clean: clean-am ++ ++clean-am: clean-generic clean-libtool clean-local mostlyclean-am ++ ++distclean: distclean-am ++ -rm -f Makefile ++distclean-am: clean-am distclean-generic ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: install-extconvSCRIPTS ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: ++ ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: installcheck-extconvSCRIPTS ++ ++maintainer-clean: maintainer-clean-am ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-generic mostlyclean-libtool ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-extconvSCRIPTS ++ ++.MAKE: install-am install-strip ++ ++.PHONY: all all-am check check-am clean clean-generic clean-libtool \ ++ clean-local distclean distclean-generic distclean-libtool \ ++ distdir dvi dvi-am html html-am info info-am install \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am \ ++ install-extconvSCRIPTS install-html install-html-am \ ++ install-info install-info-am install-man install-pdf \ ++ install-pdf-am install-ps install-ps-am install-strip \ ++ installcheck installcheck-am installcheck-extconvSCRIPTS \ ++ installdirs maintainer-clean maintainer-clean-generic \ ++ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ++ ps ps-am uninstall uninstall-am uninstall-extconvSCRIPTS ++ ++ ++%: b-% ++ cat $< >$@ ++ ++clean-local: ++ rm -f $(extconv_SCRIPTS) *~ core.* ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff -Naur enca-1.13/src/.deps/enca-convert_extern.Po enca-1.13.patch/src/.deps/enca-convert_extern.Po +--- enca-1.13/src/.deps/enca-convert_extern.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/src/.deps/enca-convert_extern.Po 2010-04-16 18:41:17.996442866 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/src/.deps/enca-convert_iconv.Po enca-1.13.patch/src/.deps/enca-convert_iconv.Po +--- enca-1.13/src/.deps/enca-convert_iconv.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/src/.deps/enca-convert_iconv.Po 2010-04-16 18:41:17.998468108 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/src/.deps/enca-convert.Po enca-1.13.patch/src/.deps/enca-convert.Po +--- enca-1.13/src/.deps/enca-convert.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/src/.deps/enca-convert.Po 2010-04-16 18:41:17.994468607 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/src/.deps/enca-convert_recode.Po enca-1.13.patch/src/.deps/enca-convert_recode.Po +--- enca-1.13/src/.deps/enca-convert_recode.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/src/.deps/enca-convert_recode.Po 2010-04-16 18:41:18.000442856 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/src/.deps/enca-COPYING.Po enca-1.13.patch/src/.deps/enca-COPYING.Po +--- enca-1.13/src/.deps/enca-COPYING.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/src/.deps/enca-COPYING.Po 2010-04-16 18:41:17.990468547 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/src/.deps/enca-enca.Po enca-1.13.patch/src/.deps/enca-enca.Po +--- enca-1.13/src/.deps/enca-enca.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/src/.deps/enca-enca.Po 2010-04-16 18:41:18.002467470 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/src/.deps/enca-filebuf.Po enca-1.13.patch/src/.deps/enca-filebuf.Po +--- enca-1.13/src/.deps/enca-filebuf.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/src/.deps/enca-filebuf.Po 2010-04-16 18:41:18.003442726 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/src/.deps/enca-HELP.Po enca-1.13.patch/src/.deps/enca-HELP.Po +--- enca-1.13/src/.deps/enca-HELP.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/src/.deps/enca-HELP.Po 2010-04-16 18:41:17.992442736 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/src/.deps/enca-locale_detect.Po enca-1.13.patch/src/.deps/enca-locale_detect.Po +--- enca-1.13/src/.deps/enca-locale_detect.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/src/.deps/enca-locale_detect.Po 2010-04-16 18:41:18.005442686 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/src/.deps/enca-options.Po enca-1.13.patch/src/.deps/enca-options.Po +--- enca-1.13/src/.deps/enca-options.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/src/.deps/enca-options.Po 2010-04-16 18:41:18.006442876 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/src/.deps/getopt_long.Po enca-1.13.patch/src/.deps/getopt_long.Po +--- enca-1.13/src/.deps/getopt_long.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/src/.deps/getopt_long.Po 2010-04-16 18:41:17.988442676 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/src/HELP enca-1.13.patch/src/HELP +--- enca-1.13/src/HELP 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/src/HELP 2010-04-16 18:41:17.727318046 +0200 +@@ -0,0 +1,50 @@ ++Usage: enca [-L LANGUAGE] [OPTION]... [FILE]... ++ enconv [-L LANGUAGE] [OPTION]... [FILE]... ++Detect encoding of text files and convert them if required. ++ ++Operation modes: ++ -g, --guess Behave as `enca' (just detect encoding by default) ++ -c, --auto-convert Behave as `enconv' (autoconvert by default) ++ ++Output type selectors: ++ -d, --details Print failure reason when encoding was not recognized ++ -e, --enca-name Print enca's encoding name (passed to converters) ++ -f, --human-readable Print full (descriptive) encoding name (default) ++ -i, --iconv-name Print how iconv calls the encoding ++ -m, --mime-name Print preferred MIME encoding name ++ -r, --rfc1345-name Print RFC 1345 (or otherwise canonized) encoding name ++ -s, --cstocs-name Print how cstocs calls the encoding ++ -n, --name=WORD Print required name (enca-name, human-readable, etc.) ++ -x, --convert-to=ENC Convert file to some other encoding ENC ++ ++Guessing parameters: ++ -L, --language=LANG Set language of FILEs; obligatory, when cannot be ++ determined from locale settings ++ ++Conversion parameters: ++ -E, --external-converter-program=PATH ++ Set external converter program name ++ (default: piconv) ++ -C, --try-converters=LIST Converters to be tried (associative) ++ (default: built-in,iconv) ++ ++General options: ++ -p, --with-filename Print the file name for each result ++ -P, --no-filename Suppress the prefixing filename on output ++ -V, --verbose Increase verbosity level ++ ++Listings: ++ -G, --license Print full enca license and terminate ++ -h, --help Print this help and terminate ++ -l, --list=WORD Print required list (built-in-charsets, converters, ++ charsets, languages, lists, names, surfaces) ++ and terminate ++ -v, --version Print version and build information and terminate ++ ++With no FILE, reads standard input and possibly writes converted stream to ++standard output. Exit status is 0 if all files were successfully proceeded, ++1 if some were not recognized or converted, 2 in real troubles. ++ ++When called as `enconv' without -x, target encoding it guessed from locales. ++ ++Report bugs to https://bugs.cihar.com/ +diff -Naur enca-1.13/src/Makefile enca-1.13.patch/src/Makefile +--- enca-1.13/src/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/src/Makefile 2010-04-16 18:41:17.711325139 +0200 +@@ -0,0 +1,769 @@ ++# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# src/Makefile. Generated from Makefile.in by configure. ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, ++# Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++ ++ ++ ++ ++pkgdatadir = $(datadir)/enca ++pkgincludedir = $(includedir)/enca ++pkglibdir = $(libdir)/enca ++pkglibexecdir = $(libexecdir)/enca ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = i686-pc-linux-gnu ++host_triplet = i686-pc-linux-gnu ++bin_PROGRAMS = enca$(EXEEXT) ++subdir = src ++DIST_COMMON = $(srcdir)/HELP.in $(srcdir)/Makefile.am \ ++ $(srcdir)/Makefile.in getopt_long.c ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ ++ $(top_srcdir)/m4/libiconv.m4 $(top_srcdir)/m4/libm.m4 \ ++ $(top_srcdir)/m4/librecode.m4 $(top_srcdir)/m4/libtool.m4 \ ++ $(top_srcdir)/m4/localias.m4 $(top_srcdir)/m4/ltoptions.m4 \ ++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ ++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/tools.m4 \ ++ $(top_srcdir)/m4/typevar.m4 $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = HELP ++CONFIG_CLEAN_VPATH_FILES = ++am__installdirs = "$(DESTDIR)$(bindir)" ++PROGRAMS = $(bin_PROGRAMS) ++am_enca_OBJECTS = enca-COPYING.$(OBJEXT) enca-HELP.$(OBJEXT) \ ++ enca-convert.$(OBJEXT) enca-convert_extern.$(OBJEXT) \ ++ enca-convert_recode.$(OBJEXT) enca-convert_iconv.$(OBJEXT) \ ++ enca-enca.$(OBJEXT) enca-filebuf.$(OBJEXT) \ ++ enca-locale_detect.$(OBJEXT) enca-options.$(OBJEXT) ++enca_OBJECTS = $(am_enca_OBJECTS) ++enca_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(enca_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SCRIPTS = $(noinst_SCRIPTS) ++DEFAULT_INCLUDES = -I. -I$(top_builddir) ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++am__mv = mv -f ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(enca_SOURCES) $(EXTRA_enca_SOURCES) ++DIST_SOURCES = $(enca_SOURCES) $(EXTRA_enca_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run aclocal-1.11 -I m4 ++AMTAR = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run tar ++AR = ar ++AUTOCONF = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoconf ++AUTOHEADER = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoheader ++AUTOMAKE = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run automake-1.11 ++AWK = gawk ++CC = gcc ++CCDEPMODE = depmode=gcc3 ++CFLAGS = -Wall -W -pedantic -g -O2 ++CONVERTER_LIBS = ++CPP = gcc -E ++CPPFLAGS = ++CSTOCS_PROG = ++CYGPATH_W = echo ++DEFAULT_CONVERTER_LIST = built-in,iconv ++DEFAULT_EXTERNAL_CONVERTER = piconv ++DEFS = -DHAVE_CONFIG_H ++DEPDIR = .deps ++DSYMUTIL = ++DUMPBIN = ++ECHO_C = ++ECHO_N = -n ++ECHO_T = ++EGREP = /bin/grep -E ++EXEEXT = ++FGREP = /bin/grep -F ++GREP = /bin/grep ++GTKDOC = true ++HTML_DIR = ${datarootdir}/gtk-doc/html ++INSTALL = /usr/bin/install -c ++INSTALL_DATA = ${INSTALL} -m 644 ++INSTALL_PROGRAM = ${INSTALL} ++INSTALL_SCRIPT = ${INSTALL} ++INSTALL_STRIP_PROGRAM = $(install_sh) -c -s ++LD = /usr/bin/ld ++LDFLAGS = ++LIBICONV = ++LIBM = -lm ++LIBOBJS = ++LIBS = -lm ++LIBTOOL = $(SHELL) $(top_builddir)/libtool ++LIPO = ++LN_S = ln -s ++LTLIBICONV = ++LTLIBOBJS = ++MAINT = # ++MAKEINFO = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run makeinfo ++MAP_PROG = ++MKDIR_P = /bin/mkdir -p ++MKTEMP_PROG = /bin/mktemp ++NM = /usr/bin/nm -B ++NMEDIT = ++OBJDUMP = objdump ++OBJEXT = o ++OTOOL = ++OTOOL64 = ++PACKAGE = enca ++PACKAGE_BUGREPORT = https://bugs.cihar.com/ ++PACKAGE_NAME = Enca ++PACKAGE_STRING = Enca 1.13 ++PACKAGE_TARNAME = enca ++PACKAGE_URL = ++PACKAGE_VERSION = 1.13 ++PATH_SEPARATOR = : ++PICONV_PROG = /usr/bin/piconv ++RANLIB = ranlib ++RECODE_PROG = ++RELEASE = 1 ++SED = /bin/sed ++SET_MAKE = ++SHELL = /bin/sh ++SHELL_RANDOM_FILENAME = `/bin/mktemp /tmp/enca-$$-XXXXXXXX` ++STRIP = strip ++UMAP_PROG = ++VERSION = 1.13 ++abs_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/src ++abs_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/src ++abs_top_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++abs_top_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++ac_ct_CC = gcc ++ac_ct_DUMPBIN = ++am__include = include ++am__leading_dot = . ++am__quote = ++am__tar = ${AMTAR} chof - "$$tardir" ++am__untar = ${AMTAR} xf - ++bindir = ${exec_prefix}/bin ++build = i686-pc-linux-gnu ++build_alias = ++build_cpu = i686 ++build_os = linux-gnu ++build_vendor = pc ++builddir = . ++datadir = ${datarootdir} ++datarootdir = ${prefix}/share ++docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} ++dvidir = ${docdir} ++exec_prefix = ${prefix} ++host = i686-pc-linux-gnu ++host_alias = ++host_cpu = i686 ++host_os = linux-gnu ++host_vendor = pc ++htmldir = ${docdir} ++includedir = ${prefix}/include ++infodir = ${datarootdir}/info ++install_sh = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/install-sh ++libdir = ${exec_prefix}/lib ++libexecdir = ${exec_prefix}/libexec ++localedir = ${datarootdir}/locale ++localstatedir = ${prefix}/var ++lt_ECHO = echo ++mandir = ${datarootdir}/man ++mkdir_p = /bin/mkdir -p ++oldincludedir = /usr/include ++pdfdir = ${docdir} ++prefix = /usr/local ++program_transform_name = s,x,x, ++psdir = ${docdir} ++sbindir = ${exec_prefix}/sbin ++sharedstatedir = ${prefix}/com ++srcdir = . ++sysconfdir = ${prefix}/etc ++target_alias = ++top_build_prefix = ../ ++top_builddir = .. ++top_srcdir = .. ++noinst_SCRIPTS = text2c.sh ++enca_SOURCES = \ ++ COPYING.c \ ++ HELP.c \ ++ common.h \ ++ convert.c \ ++ convert_extern.c \ ++ convert_recode.c \ ++ convert_iconv.c \ ++ enca.c \ ++ filebuf.c \ ++ locale_detect.c \ ++ options.c ++ ++EXTRA_enca_SOURCES = \ ++ getopt.h ++ ++BUILT_SOURCES = \ ++ COPYING.c \ ++ HELP.c ++ ++EXTRA_DIST = \ ++ HELP.in \ ++ text2c.sh ++ ++enca_LDADD = ../lib/libenca.la ++enca_LDFLAGS = -lm ++enca_DEPENDENCIES = ../lib/libenca.la ++enca_CPPFLAGS = -DEXTCONV_DIR=\"${exec_prefix}/libexec/enca/extconv\" ++INCLUDES = -I$(top_srcdir)/lib ++all: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) all-am ++ ++.SUFFIXES: ++.SUFFIXES: .c .lo .o .obj ++$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits src/Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --gnits src/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: # $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): # $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(am__aclocal_m4_deps): ++HELP: $(top_builddir)/config.status $(srcdir)/HELP.in ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ++install-binPROGRAMS: $(bin_PROGRAMS) ++ @$(NORMAL_INSTALL) ++ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" ++ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ ++ for p in $$list; do echo "$$p $$p"; done | \ ++ sed 's/$(EXEEXT)$$//' | \ ++ while read p p1; do if test -f $$p || test -f $$p1; \ ++ then echo "$$p"; echo "$$p"; else :; fi; \ ++ done | \ ++ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ ++ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ ++ sed 'N;N;N;s,\n, ,g' | \ ++ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ ++ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ ++ if ($$2 == $$4) files[d] = files[d] " " $$1; \ ++ else { print "f", $$3 "/" $$4, $$1; } } \ ++ END { for (d in files) print "f", d, files[d] }' | \ ++ while read type dir files; do \ ++ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ ++ test -z "$$files" || { \ ++ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ ++ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ ++ } \ ++ ; done ++ ++uninstall-binPROGRAMS: ++ @$(NORMAL_UNINSTALL) ++ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ ++ files=`for p in $$list; do echo "$$p"; done | \ ++ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ ++ -e 's/$$/$(EXEEXT)/' `; \ ++ test -n "$$list" || exit 0; \ ++ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ ++ cd "$(DESTDIR)$(bindir)" && rm -f $$files ++ ++clean-binPROGRAMS: ++ @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ ++ echo " rm -f" $$list; \ ++ rm -f $$list || exit $$?; \ ++ test -n "$(EXEEXT)" || exit 0; \ ++ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ ++ echo " rm -f" $$list; \ ++ rm -f $$list ++ ++installcheck-binPROGRAMS: $(bin_PROGRAMS) ++ bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ ++ case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ ++ *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ ++ esac; \ ++ f=`echo "$$p" | \ ++ sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ ++ for opt in --help --version; do \ ++ if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \ ++ 2>c$${pid}_.err &2; bad=1; fi; \ ++ done; \ ++ done; rm -f c$${pid}_.???; exit $$bad ++enca$(EXEEXT): $(enca_OBJECTS) $(enca_DEPENDENCIES) ++ @rm -f enca$(EXEEXT) ++ $(enca_LINK) $(enca_OBJECTS) $(enca_LDADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++include $(DEPDIR)/getopt_long.Po ++include ./$(DEPDIR)/enca-COPYING.Po ++include ./$(DEPDIR)/enca-HELP.Po ++include ./$(DEPDIR)/enca-convert.Po ++include ./$(DEPDIR)/enca-convert_extern.Po ++include ./$(DEPDIR)/enca-convert_iconv.Po ++include ./$(DEPDIR)/enca-convert_recode.Po ++include ./$(DEPDIR)/enca-enca.Po ++include ./$(DEPDIR)/enca-filebuf.Po ++include ./$(DEPDIR)/enca-locale_detect.Po ++include ./$(DEPDIR)/enca-options.Po ++ ++.c.o: ++ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++# source='$<' object='$@' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(COMPILE) -c $< ++ ++.c.obj: ++ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++# source='$<' object='$@' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(COMPILE) -c `$(CYGPATH_W) '$<'` ++ ++.c.lo: ++ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++# source='$<' object='$@' libtool=yes \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(LTCOMPILE) -c -o $@ $< ++ ++enca-COPYING.o: COPYING.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-COPYING.o -MD -MP -MF $(DEPDIR)/enca-COPYING.Tpo -c -o enca-COPYING.o `test -f 'COPYING.c' || echo '$(srcdir)/'`COPYING.c ++ $(am__mv) $(DEPDIR)/enca-COPYING.Tpo $(DEPDIR)/enca-COPYING.Po ++# source='COPYING.c' object='enca-COPYING.o' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-COPYING.o `test -f 'COPYING.c' || echo '$(srcdir)/'`COPYING.c ++ ++enca-COPYING.obj: COPYING.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-COPYING.obj -MD -MP -MF $(DEPDIR)/enca-COPYING.Tpo -c -o enca-COPYING.obj `if test -f 'COPYING.c'; then $(CYGPATH_W) 'COPYING.c'; else $(CYGPATH_W) '$(srcdir)/COPYING.c'; fi` ++ $(am__mv) $(DEPDIR)/enca-COPYING.Tpo $(DEPDIR)/enca-COPYING.Po ++# source='COPYING.c' object='enca-COPYING.obj' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-COPYING.obj `if test -f 'COPYING.c'; then $(CYGPATH_W) 'COPYING.c'; else $(CYGPATH_W) '$(srcdir)/COPYING.c'; fi` ++ ++enca-HELP.o: HELP.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-HELP.o -MD -MP -MF $(DEPDIR)/enca-HELP.Tpo -c -o enca-HELP.o `test -f 'HELP.c' || echo '$(srcdir)/'`HELP.c ++ $(am__mv) $(DEPDIR)/enca-HELP.Tpo $(DEPDIR)/enca-HELP.Po ++# source='HELP.c' object='enca-HELP.o' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-HELP.o `test -f 'HELP.c' || echo '$(srcdir)/'`HELP.c ++ ++enca-HELP.obj: HELP.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-HELP.obj -MD -MP -MF $(DEPDIR)/enca-HELP.Tpo -c -o enca-HELP.obj `if test -f 'HELP.c'; then $(CYGPATH_W) 'HELP.c'; else $(CYGPATH_W) '$(srcdir)/HELP.c'; fi` ++ $(am__mv) $(DEPDIR)/enca-HELP.Tpo $(DEPDIR)/enca-HELP.Po ++# source='HELP.c' object='enca-HELP.obj' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-HELP.obj `if test -f 'HELP.c'; then $(CYGPATH_W) 'HELP.c'; else $(CYGPATH_W) '$(srcdir)/HELP.c'; fi` ++ ++enca-convert.o: convert.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-convert.o -MD -MP -MF $(DEPDIR)/enca-convert.Tpo -c -o enca-convert.o `test -f 'convert.c' || echo '$(srcdir)/'`convert.c ++ $(am__mv) $(DEPDIR)/enca-convert.Tpo $(DEPDIR)/enca-convert.Po ++# source='convert.c' object='enca-convert.o' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-convert.o `test -f 'convert.c' || echo '$(srcdir)/'`convert.c ++ ++enca-convert.obj: convert.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-convert.obj -MD -MP -MF $(DEPDIR)/enca-convert.Tpo -c -o enca-convert.obj `if test -f 'convert.c'; then $(CYGPATH_W) 'convert.c'; else $(CYGPATH_W) '$(srcdir)/convert.c'; fi` ++ $(am__mv) $(DEPDIR)/enca-convert.Tpo $(DEPDIR)/enca-convert.Po ++# source='convert.c' object='enca-convert.obj' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-convert.obj `if test -f 'convert.c'; then $(CYGPATH_W) 'convert.c'; else $(CYGPATH_W) '$(srcdir)/convert.c'; fi` ++ ++enca-convert_extern.o: convert_extern.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-convert_extern.o -MD -MP -MF $(DEPDIR)/enca-convert_extern.Tpo -c -o enca-convert_extern.o `test -f 'convert_extern.c' || echo '$(srcdir)/'`convert_extern.c ++ $(am__mv) $(DEPDIR)/enca-convert_extern.Tpo $(DEPDIR)/enca-convert_extern.Po ++# source='convert_extern.c' object='enca-convert_extern.o' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-convert_extern.o `test -f 'convert_extern.c' || echo '$(srcdir)/'`convert_extern.c ++ ++enca-convert_extern.obj: convert_extern.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-convert_extern.obj -MD -MP -MF $(DEPDIR)/enca-convert_extern.Tpo -c -o enca-convert_extern.obj `if test -f 'convert_extern.c'; then $(CYGPATH_W) 'convert_extern.c'; else $(CYGPATH_W) '$(srcdir)/convert_extern.c'; fi` ++ $(am__mv) $(DEPDIR)/enca-convert_extern.Tpo $(DEPDIR)/enca-convert_extern.Po ++# source='convert_extern.c' object='enca-convert_extern.obj' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-convert_extern.obj `if test -f 'convert_extern.c'; then $(CYGPATH_W) 'convert_extern.c'; else $(CYGPATH_W) '$(srcdir)/convert_extern.c'; fi` ++ ++enca-convert_recode.o: convert_recode.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-convert_recode.o -MD -MP -MF $(DEPDIR)/enca-convert_recode.Tpo -c -o enca-convert_recode.o `test -f 'convert_recode.c' || echo '$(srcdir)/'`convert_recode.c ++ $(am__mv) $(DEPDIR)/enca-convert_recode.Tpo $(DEPDIR)/enca-convert_recode.Po ++# source='convert_recode.c' object='enca-convert_recode.o' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-convert_recode.o `test -f 'convert_recode.c' || echo '$(srcdir)/'`convert_recode.c ++ ++enca-convert_recode.obj: convert_recode.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-convert_recode.obj -MD -MP -MF $(DEPDIR)/enca-convert_recode.Tpo -c -o enca-convert_recode.obj `if test -f 'convert_recode.c'; then $(CYGPATH_W) 'convert_recode.c'; else $(CYGPATH_W) '$(srcdir)/convert_recode.c'; fi` ++ $(am__mv) $(DEPDIR)/enca-convert_recode.Tpo $(DEPDIR)/enca-convert_recode.Po ++# source='convert_recode.c' object='enca-convert_recode.obj' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-convert_recode.obj `if test -f 'convert_recode.c'; then $(CYGPATH_W) 'convert_recode.c'; else $(CYGPATH_W) '$(srcdir)/convert_recode.c'; fi` ++ ++enca-convert_iconv.o: convert_iconv.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-convert_iconv.o -MD -MP -MF $(DEPDIR)/enca-convert_iconv.Tpo -c -o enca-convert_iconv.o `test -f 'convert_iconv.c' || echo '$(srcdir)/'`convert_iconv.c ++ $(am__mv) $(DEPDIR)/enca-convert_iconv.Tpo $(DEPDIR)/enca-convert_iconv.Po ++# source='convert_iconv.c' object='enca-convert_iconv.o' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-convert_iconv.o `test -f 'convert_iconv.c' || echo '$(srcdir)/'`convert_iconv.c ++ ++enca-convert_iconv.obj: convert_iconv.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-convert_iconv.obj -MD -MP -MF $(DEPDIR)/enca-convert_iconv.Tpo -c -o enca-convert_iconv.obj `if test -f 'convert_iconv.c'; then $(CYGPATH_W) 'convert_iconv.c'; else $(CYGPATH_W) '$(srcdir)/convert_iconv.c'; fi` ++ $(am__mv) $(DEPDIR)/enca-convert_iconv.Tpo $(DEPDIR)/enca-convert_iconv.Po ++# source='convert_iconv.c' object='enca-convert_iconv.obj' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-convert_iconv.obj `if test -f 'convert_iconv.c'; then $(CYGPATH_W) 'convert_iconv.c'; else $(CYGPATH_W) '$(srcdir)/convert_iconv.c'; fi` ++ ++enca-enca.o: enca.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-enca.o -MD -MP -MF $(DEPDIR)/enca-enca.Tpo -c -o enca-enca.o `test -f 'enca.c' || echo '$(srcdir)/'`enca.c ++ $(am__mv) $(DEPDIR)/enca-enca.Tpo $(DEPDIR)/enca-enca.Po ++# source='enca.c' object='enca-enca.o' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-enca.o `test -f 'enca.c' || echo '$(srcdir)/'`enca.c ++ ++enca-enca.obj: enca.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-enca.obj -MD -MP -MF $(DEPDIR)/enca-enca.Tpo -c -o enca-enca.obj `if test -f 'enca.c'; then $(CYGPATH_W) 'enca.c'; else $(CYGPATH_W) '$(srcdir)/enca.c'; fi` ++ $(am__mv) $(DEPDIR)/enca-enca.Tpo $(DEPDIR)/enca-enca.Po ++# source='enca.c' object='enca-enca.obj' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-enca.obj `if test -f 'enca.c'; then $(CYGPATH_W) 'enca.c'; else $(CYGPATH_W) '$(srcdir)/enca.c'; fi` ++ ++enca-filebuf.o: filebuf.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-filebuf.o -MD -MP -MF $(DEPDIR)/enca-filebuf.Tpo -c -o enca-filebuf.o `test -f 'filebuf.c' || echo '$(srcdir)/'`filebuf.c ++ $(am__mv) $(DEPDIR)/enca-filebuf.Tpo $(DEPDIR)/enca-filebuf.Po ++# source='filebuf.c' object='enca-filebuf.o' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-filebuf.o `test -f 'filebuf.c' || echo '$(srcdir)/'`filebuf.c ++ ++enca-filebuf.obj: filebuf.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-filebuf.obj -MD -MP -MF $(DEPDIR)/enca-filebuf.Tpo -c -o enca-filebuf.obj `if test -f 'filebuf.c'; then $(CYGPATH_W) 'filebuf.c'; else $(CYGPATH_W) '$(srcdir)/filebuf.c'; fi` ++ $(am__mv) $(DEPDIR)/enca-filebuf.Tpo $(DEPDIR)/enca-filebuf.Po ++# source='filebuf.c' object='enca-filebuf.obj' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-filebuf.obj `if test -f 'filebuf.c'; then $(CYGPATH_W) 'filebuf.c'; else $(CYGPATH_W) '$(srcdir)/filebuf.c'; fi` ++ ++enca-locale_detect.o: locale_detect.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-locale_detect.o -MD -MP -MF $(DEPDIR)/enca-locale_detect.Tpo -c -o enca-locale_detect.o `test -f 'locale_detect.c' || echo '$(srcdir)/'`locale_detect.c ++ $(am__mv) $(DEPDIR)/enca-locale_detect.Tpo $(DEPDIR)/enca-locale_detect.Po ++# source='locale_detect.c' object='enca-locale_detect.o' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-locale_detect.o `test -f 'locale_detect.c' || echo '$(srcdir)/'`locale_detect.c ++ ++enca-locale_detect.obj: locale_detect.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-locale_detect.obj -MD -MP -MF $(DEPDIR)/enca-locale_detect.Tpo -c -o enca-locale_detect.obj `if test -f 'locale_detect.c'; then $(CYGPATH_W) 'locale_detect.c'; else $(CYGPATH_W) '$(srcdir)/locale_detect.c'; fi` ++ $(am__mv) $(DEPDIR)/enca-locale_detect.Tpo $(DEPDIR)/enca-locale_detect.Po ++# source='locale_detect.c' object='enca-locale_detect.obj' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-locale_detect.obj `if test -f 'locale_detect.c'; then $(CYGPATH_W) 'locale_detect.c'; else $(CYGPATH_W) '$(srcdir)/locale_detect.c'; fi` ++ ++enca-options.o: options.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-options.o -MD -MP -MF $(DEPDIR)/enca-options.Tpo -c -o enca-options.o `test -f 'options.c' || echo '$(srcdir)/'`options.c ++ $(am__mv) $(DEPDIR)/enca-options.Tpo $(DEPDIR)/enca-options.Po ++# source='options.c' object='enca-options.o' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-options.o `test -f 'options.c' || echo '$(srcdir)/'`options.c ++ ++enca-options.obj: options.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT enca-options.obj -MD -MP -MF $(DEPDIR)/enca-options.Tpo -c -o enca-options.obj `if test -f 'options.c'; then $(CYGPATH_W) 'options.c'; else $(CYGPATH_W) '$(srcdir)/options.c'; fi` ++ $(am__mv) $(DEPDIR)/enca-options.Tpo $(DEPDIR)/enca-options.Po ++# source='options.c' object='enca-options.obj' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(enca_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o enca-options.obj `if test -f 'options.c'; then $(CYGPATH_W) 'options.c'; else $(CYGPATH_W) '$(srcdir)/options.c'; fi` ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ mkid -fID $$unique ++tags: TAGS ++ ++TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ set x; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ ++distdir: $(DISTFILES) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d "$(distdir)/$$file"; then \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ ++ else \ ++ test -f "$(distdir)/$$file" \ ++ || cp -p $$d/$$file "$(distdir)/$$file" \ ++ || exit 1; \ ++ fi; \ ++ done ++ $(MAKE) $(AM_MAKEFLAGS) \ ++ top_distdir="$(top_distdir)" distdir="$(distdir)" \ ++ dist-hook ++check-am: all-am ++check: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) check-am ++all-am: Makefile $(PROGRAMS) $(SCRIPTS) ++installdirs: ++ for dir in "$(DESTDIR)$(bindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done ++install: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ `test -z '$(STRIP)' || \ ++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) ++clean: clean-am ++ ++clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \ ++ mostlyclean-am ++ ++distclean: distclean-am ++ -rm -rf $(DEPDIR) ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: install-binPROGRAMS ++ @$(NORMAL_INSTALL) ++ $(MAKE) $(AM_MAKEFLAGS) install-exec-hook ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: installcheck-binPROGRAMS ++ ++maintainer-clean: maintainer-clean-am ++ -rm -rf $(DEPDIR) ./$(DEPDIR) ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-binPROGRAMS ++ @$(NORMAL_INSTALL) ++ $(MAKE) $(AM_MAKEFLAGS) uninstall-hook ++.MAKE: all check install install-am install-exec-am install-strip \ ++ uninstall-am ++ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ ++ clean-generic clean-libtool clean-local ctags dist-hook \ ++ distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-am install-binPROGRAMS \ ++ install-data install-data-am install-dvi install-dvi-am \ ++ install-exec install-exec-am install-exec-hook install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am \ ++ installcheck-binPROGRAMS installdirs maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-compile \ ++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ++ tags uninstall uninstall-am uninstall-binPROGRAMS \ ++ uninstall-hook ++ ++ ++# BUILT_SOURCES. How we build them: ++ ++# For inclusion of GNU General Public License directly into Enca ++COPYING.c: $(top_srcdir)/COPYING $(srcdir)/text2c.sh ++ $(srcdir)/text2c.sh $(top_srcdir)/COPYING >COPYING.c ++ ++HELP.c: HELP $(srcdir)/text2c.sh ++ $(srcdir)/text2c.sh HELP >HELP.c ++ ++install-exec-hook: ++ cd $(DESTDIR)$(bindir); \ ++ inst1=`echo enca | sed '$(transform)'`; \ ++ inst2=`echo enconv | sed '$(transform)'`; \ ++ $(LN_S) $$inst1$(EXEEXT) $$inst2$(EXEEXT) ++ ++uninstall-hook: ++ inst=`echo enconv | sed '$(transform)'`; \ ++ rm -f $(DESTDIR)$(bindir)/$$inst$(EXEEXT) ++ ++clean-local: ++ rm -f core.* *~ HELP.c COPYING.c ++ ++dist-hook: ++ rm -f $(distdir)/HELP.c $(distdir)/COPYING.c ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff -Naur enca-1.13/stamp-h1 enca-1.13.patch/stamp-h1 +--- enca-1.13/stamp-h1 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/stamp-h1 2010-04-16 18:41:17.791443112 +0200 +@@ -0,0 +1 @@ ++timestamp for config.h +diff -Naur enca-1.13/test/.deps/simtable.Po enca-1.13.patch/test/.deps/simtable.Po +--- enca-1.13/test/.deps/simtable.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/test/.deps/simtable.Po 2010-04-16 18:41:18.030442607 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/test/Makefile enca-1.13.patch/test/Makefile +--- enca-1.13/test/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/test/Makefile 2010-04-16 18:41:17.756442831 +0200 +@@ -0,0 +1,797 @@ ++# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# test/Makefile. Generated from Makefile.in by configure. ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, ++# Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++ ++ ++ ++ ++pkgdatadir = $(datadir)/enca ++pkgincludedir = $(includedir)/enca ++pkglibdir = $(libdir)/enca ++pkglibexecdir = $(libexecdir)/enca ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = i686-pc-linux-gnu ++host_triplet = i686-pc-linux-gnu ++#noinst_PROGRAMS = simtable$(EXEEXT) ++subdir = test ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ ++ $(top_srcdir)/m4/libiconv.m4 $(top_srcdir)/m4/libm.m4 \ ++ $(top_srcdir)/m4/librecode.m4 $(top_srcdir)/m4/libtool.m4 \ ++ $(top_srcdir)/m4/localias.m4 $(top_srcdir)/m4/ltoptions.m4 \ ++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ ++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/tools.m4 \ ++ $(top_srcdir)/m4/typevar.m4 $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++CONFIG_CLEAN_VPATH_FILES = ++PROGRAMS = $(noinst_PROGRAMS) ++am__simtable_SOURCES_DIST = simtable.c ++#am_simtable_OBJECTS = simtable.$(OBJEXT) ++simtable_OBJECTS = $(am_simtable_OBJECTS) ++simtable_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(simtable_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SCRIPTS = $(noinst_SCRIPTS) ++DEFAULT_INCLUDES = -I. -I$(top_builddir) ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++am__mv = mv -f ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(simtable_SOURCES) ++DIST_SOURCES = $(am__simtable_SOURCES_DIST) ++ETAGS = etags ++CTAGS = ctags ++am__tty_colors = \ ++red=; grn=; lgn=; blu=; std= ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run aclocal-1.11 -I m4 ++AMTAR = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run tar ++AR = ar ++AUTOCONF = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoconf ++AUTOHEADER = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoheader ++AUTOMAKE = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run automake-1.11 ++AWK = gawk ++CC = gcc ++CCDEPMODE = depmode=gcc3 ++CFLAGS = -Wall -W -pedantic -g -O2 ++CONVERTER_LIBS = ++CPP = gcc -E ++CPPFLAGS = ++CSTOCS_PROG = ++CYGPATH_W = echo ++DEFAULT_CONVERTER_LIST = built-in,iconv ++DEFAULT_EXTERNAL_CONVERTER = piconv ++DEFS = -DHAVE_CONFIG_H ++DEPDIR = .deps ++DSYMUTIL = ++DUMPBIN = ++ECHO_C = ++ECHO_N = -n ++ECHO_T = ++EGREP = /bin/grep -E ++EXEEXT = ++FGREP = /bin/grep -F ++GREP = /bin/grep ++GTKDOC = true ++HTML_DIR = ${datarootdir}/gtk-doc/html ++INSTALL = /usr/bin/install -c ++INSTALL_DATA = ${INSTALL} -m 644 ++INSTALL_PROGRAM = ${INSTALL} ++INSTALL_SCRIPT = ${INSTALL} ++INSTALL_STRIP_PROGRAM = $(install_sh) -c -s ++LD = /usr/bin/ld ++LDFLAGS = ++LIBICONV = ++LIBM = -lm ++LIBOBJS = ++LIBS = -lm ++LIBTOOL = $(SHELL) $(top_builddir)/libtool ++LIPO = ++LN_S = ln -s ++LTLIBICONV = ++LTLIBOBJS = ++MAINT = # ++MAKEINFO = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run makeinfo ++MAP_PROG = ++MKDIR_P = /bin/mkdir -p ++MKTEMP_PROG = /bin/mktemp ++NM = /usr/bin/nm -B ++NMEDIT = ++OBJDUMP = objdump ++OBJEXT = o ++OTOOL = ++OTOOL64 = ++PACKAGE = enca ++PACKAGE_BUGREPORT = https://bugs.cihar.com/ ++PACKAGE_NAME = Enca ++PACKAGE_STRING = Enca 1.13 ++PACKAGE_TARNAME = enca ++PACKAGE_URL = ++PACKAGE_VERSION = 1.13 ++PATH_SEPARATOR = : ++PICONV_PROG = /usr/bin/piconv ++RANLIB = ranlib ++RECODE_PROG = ++RELEASE = 1 ++SED = /bin/sed ++SET_MAKE = ++SHELL = /bin/sh ++SHELL_RANDOM_FILENAME = `/bin/mktemp /tmp/enca-$$-XXXXXXXX` ++STRIP = strip ++UMAP_PROG = ++VERSION = 1.13 ++abs_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/test ++abs_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/test ++abs_top_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++abs_top_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++ac_ct_CC = gcc ++ac_ct_DUMPBIN = ++am__include = include ++am__leading_dot = . ++am__quote = ++am__tar = ${AMTAR} chof - "$$tardir" ++am__untar = ${AMTAR} xf - ++bindir = ${exec_prefix}/bin ++build = i686-pc-linux-gnu ++build_alias = ++build_cpu = i686 ++build_os = linux-gnu ++build_vendor = pc ++builddir = . ++datadir = ${datarootdir} ++datarootdir = ${prefix}/share ++docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} ++dvidir = ${docdir} ++exec_prefix = ${prefix} ++host = i686-pc-linux-gnu ++host_alias = ++host_cpu = i686 ++host_os = linux-gnu ++host_vendor = pc ++htmldir = ${docdir} ++includedir = ${prefix}/include ++infodir = ${datarootdir}/info ++install_sh = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/install-sh ++libdir = ${exec_prefix}/lib ++libexecdir = ${exec_prefix}/libexec ++localedir = ${datarootdir}/locale ++localstatedir = ${prefix}/var ++lt_ECHO = echo ++mandir = ${datarootdir}/man ++mkdir_p = /bin/mkdir -p ++oldincludedir = /usr/include ++pdfdir = ${docdir} ++prefix = /usr/local ++program_transform_name = s,x,x, ++psdir = ${docdir} ++sbindir = ${exec_prefix}/sbin ++sharedstatedir = ${prefix}/com ++srcdir = . ++sysconfdir = ${prefix}/etc ++target_alias = ++top_build_prefix = ../ ++top_builddir = .. ++top_srcdir = .. ++ ++# @(#) $Id: Makefile.am,v 1.26 2005/12/01 10:12:10 yeti Exp $ ++TESTS_ENVIRONMENT = srcdir=. top_srcdir=.. top_builddir=.. ++TESTS = \ ++ ./test-lists.sh \ ++ ./test-long-texts.sh \ ++ ./test-convlist.sh \ ++ ./test-guess-short.sh \ ++ ./test-guess-stdin.sh \ ++ ./test-guess-utf8.sh \ ++ ./test-pP.sh \ ++ ./test-aliases.sh \ ++ ./test-empty.sh \ ++ ./test-convert-64.sh \ ++ ./test-convert-filter.sh \ ++ ./test-errors.sh \ ++ ./test-ENCAOPT.sh \ ++ ./test-default-cs.sh \ ++ ./test-external.sh \ ++ ./test-iconv.sh \ ++ ./test-recode.sh ++ ++noinst_SCRIPTS = \ ++ dummy-converter.sh \ ++ failing-converter.sh \ ++ failing-converter2.sh \ ++ finish.sh \ ++ setup.sh ++ ++#simtable_SOURCES = simtable.c ++#simtable_LDFLAGS = -lm ++#simtable_LDADD = $(top_builddir)/lib/libenca.la ++#simtable_DEPENDENCIES = $(top_builddir)/lib/libenca.la ++#INCLUDES = -I$(top_srcdir)/lib ++EXTRA_DIST = $(TEST_SAMPLES) $(TESTS) $(TEST_RESULTS) $(noinst_SCRIPTS) ++TEST_RESULTS = \ ++ test-guess-short.expected \ ++ test-guess-utf8.expected \ ++ test-external.expected \ ++ test-pP.expected ++ ++TEST_SAMPLES = \ ++ be-s.cp1251 \ ++ be-s.ibm855 \ ++ be-s.ibm866 \ ++ be-s.iso88595 \ ++ be-s.koi8uni \ ++ be-s.maccyr \ ++ be-s.utf8 \ ++ be-utf8.ibm855 \ ++ be-utf8.iso88595 \ ++ bg-s.cp1251 \ ++ bg-s.cp1251.qp \ ++ bg-s.ecma113 \ ++ bg-s.ibm855 \ ++ bg-s.iso88595 \ ++ bg-s.maccyr \ ++ bg-s.utf8 \ ++ bg-utf8.bin \ ++ bg-utf8.cp1251 \ ++ bg-utf8.ecma113 \ ++ bg-utf8.ibm855 \ ++ bg-utf8.iso88595 \ ++ bg-utf8.maccyr \ ++ cs-s.cork \ ++ cs-s.cp1250 \ ++ cs-s.ibm852 \ ++ cs-s.ibm852.qp \ ++ cs-s.iso88592 \ ++ cs-s.keybcs2 \ ++ cs-s.koi8cs2 \ ++ cs-s.macce \ ++ cs-s.utf8 \ ++ cs-utf8.bin \ ++ cs-utf8.cork \ ++ cs-utf8.ibm852 \ ++ cs-utf8.iso88592 \ ++ et-s.baltic \ ++ et-s.cp1257 \ ++ et-s.ibm775 \ ++ et-s.iso885913 \ ++ et-s.iso88594 \ ++ et-s.iso88594.qp \ ++ et-s.macce \ ++ et-s.utf8 \ ++ et-utf8.bin \ ++ et-utf8.ibm775 \ ++ et-utf8.iso885913 \ ++ et-utf8.iso88594 \ ++ hr-s.cork \ ++ hr-s.cp1250 \ ++ hr-s.ibm852 \ ++ hr-s.iso88592 \ ++ hr-s.iso88592.qp \ ++ hr-s.macce \ ++ hr-s.utf8 \ ++ hr-utf8.cp1250 \ ++ hr-utf8.ibm852 \ ++ hu-s.cork \ ++ hu-s.cp1250 \ ++ hu-s.ibm852 \ ++ hu-s.iso88592 \ ++ hu-s.macce \ ++ hu-s.macce.qp \ ++ hu-s.utf8 \ ++ hu-utf8.cork \ ++ hu-utf8.cp1250 \ ++ hu-utf8.ibm852 \ ++ hu-utf8.macce \ ++ lt-s.baltic \ ++ lt-s.cp1257 \ ++ lt-s.ibm775 \ ++ lt-s.iso885913 \ ++ lt-s.iso88594 \ ++ lt-s.macce \ ++ lt-s.utf8 \ ++ lt-utf8.ibm775 \ ++ lt-utf8.iso88594 \ ++ lt-utf8.macce \ ++ lv-s.baltic \ ++ lv-s.cp1257 \ ++ lv-s.ibm775 \ ++ lv-s.iso885913 \ ++ lv-s.iso885913.qp \ ++ lv-s.iso88594 \ ++ lv-s.macce \ ++ lv-s.utf8 \ ++ lv-utf8.ibm775 \ ++ lv-utf8.iso88594 \ ++ lv-utf8.macce \ ++ none-s.ucs2 \ ++ none-s.ucs2le \ ++ none-s.ucs2le.qp \ ++ none-s.ucs4 \ ++ none-s.ucs4le \ ++ none-s.utf7 \ ++ none-s.utf8 \ ++ none-utf8.messy \ ++ pl-s.baltic \ ++ pl-s.baltic.qp \ ++ pl-s.cork \ ++ pl-s.cp1250 \ ++ pl-s.ibm852 \ ++ pl-s.iso885913 \ ++ pl-s.iso885916 \ ++ pl-s.iso88592 \ ++ pl-s.utf8 \ ++ pl-utf8.baltic \ ++ pl-utf8.ibm852 \ ++ pl-utf8.iso885916 \ ++ ru-s.cp1251 \ ++ ru-s.cp866 \ ++ ru-s.iso88595 \ ++ ru-s.koi8r \ ++ ru-s.maccyr \ ++ ru-s.maccyr.qp \ ++ ru-s.utf8 \ ++ ru-utf8.cp866 \ ++ ru-utf8.koi8r \ ++ ru-utf8.maccyr \ ++ sk-s.cork \ ++ sk-s.cp1250 \ ++ sk-s.cp1250.qp \ ++ sk-s.ibm852 \ ++ sk-s.iso88592 \ ++ sk-s.keybcs2 \ ++ sk-s.koi8cs2 \ ++ sk-s.macce \ ++ sk-s.utf8 \ ++ sk-utf8.cp1250 \ ++ sk-utf8.keybcs2 \ ++ sl-s.cork \ ++ sl-s.cp1250 \ ++ sl-s.ibm852 \ ++ sl-s.ibm852.qp \ ++ sl-s.iso88592 \ ++ sl-s.macce \ ++ sl-s.utf8 \ ++ sl-utf8.cork \ ++ sl-utf8.ibm852 \ ++ sl-utf8.iso88592 \ ++ sl-utf8.macce \ ++ uk-s.cp1125 \ ++ uk-s.cp1251 \ ++ uk-s.ibm855 \ ++ uk-s.iso88595 \ ++ uk-s.koi8u \ ++ uk-s.maccyr \ ++ uk-s.utf8 \ ++ uk-utf8.bin \ ++ uk-utf8.cp1251 \ ++ zh-s.big5 \ ++ zh-s.gbk \ ++ zh-s.hz \ ++ zh-s.utf8 ++ ++all: all-am ++ ++.SUFFIXES: ++.SUFFIXES: .c .lo .o .obj ++$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits test/Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --gnits test/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: # $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): # $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(am__aclocal_m4_deps): ++ ++clean-noinstPROGRAMS: ++ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ ++ echo " rm -f" $$list; \ ++ rm -f $$list || exit $$?; \ ++ test -n "$(EXEEXT)" || exit 0; \ ++ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ ++ echo " rm -f" $$list; \ ++ rm -f $$list ++simtable$(EXEEXT): $(simtable_OBJECTS) $(simtable_DEPENDENCIES) ++ @rm -f simtable$(EXEEXT) ++ $(simtable_LINK) $(simtable_OBJECTS) $(simtable_LDADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++include ./$(DEPDIR)/simtable.Po ++ ++.c.o: ++ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++# source='$<' object='$@' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(COMPILE) -c $< ++ ++.c.obj: ++ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++# source='$<' object='$@' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(COMPILE) -c `$(CYGPATH_W) '$<'` ++ ++.c.lo: ++ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++# source='$<' object='$@' libtool=yes \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(LTCOMPILE) -c -o $@ $< ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ mkid -fID $$unique ++tags: TAGS ++ ++TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ set x; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ ++check-TESTS: $(TESTS) ++ @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ++ srcdir=$(srcdir); export srcdir; \ ++ list=' $(TESTS) '; \ ++ $(am__tty_colors); \ ++ if test -n "$$list"; then \ ++ for tst in $$list; do \ ++ if test -f ./$$tst; then dir=./; \ ++ elif test -f $$tst; then dir=; \ ++ else dir="$(srcdir)/"; fi; \ ++ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ++ all=`expr $$all + 1`; \ ++ case " $(XFAIL_TESTS) " in \ ++ *[\ \ ]$$tst[\ \ ]*) \ ++ xpass=`expr $$xpass + 1`; \ ++ failed=`expr $$failed + 1`; \ ++ col=$$red; res=XPASS; \ ++ ;; \ ++ *) \ ++ col=$$grn; res=PASS; \ ++ ;; \ ++ esac; \ ++ elif test $$? -ne 77; then \ ++ all=`expr $$all + 1`; \ ++ case " $(XFAIL_TESTS) " in \ ++ *[\ \ ]$$tst[\ \ ]*) \ ++ xfail=`expr $$xfail + 1`; \ ++ col=$$lgn; res=XFAIL; \ ++ ;; \ ++ *) \ ++ failed=`expr $$failed + 1`; \ ++ col=$$red; res=FAIL; \ ++ ;; \ ++ esac; \ ++ else \ ++ skip=`expr $$skip + 1`; \ ++ col=$$blu; res=SKIP; \ ++ fi; \ ++ echo "$${col}$$res$${std}: $$tst"; \ ++ done; \ ++ if test "$$all" -eq 1; then \ ++ tests="test"; \ ++ All=""; \ ++ else \ ++ tests="tests"; \ ++ All="All "; \ ++ fi; \ ++ if test "$$failed" -eq 0; then \ ++ if test "$$xfail" -eq 0; then \ ++ banner="$$All$$all $$tests passed"; \ ++ else \ ++ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ ++ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ ++ fi; \ ++ else \ ++ if test "$$xpass" -eq 0; then \ ++ banner="$$failed of $$all $$tests failed"; \ ++ else \ ++ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ ++ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ ++ fi; \ ++ fi; \ ++ dashes="$$banner"; \ ++ skipped=""; \ ++ if test "$$skip" -ne 0; then \ ++ if test "$$skip" -eq 1; then \ ++ skipped="($$skip test was not run)"; \ ++ else \ ++ skipped="($$skip tests were not run)"; \ ++ fi; \ ++ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ ++ dashes="$$skipped"; \ ++ fi; \ ++ report=""; \ ++ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ++ report="Please report to $(PACKAGE_BUGREPORT)"; \ ++ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ ++ dashes="$$report"; \ ++ fi; \ ++ dashes=`echo "$$dashes" | sed s/./=/g`; \ ++ if test "$$failed" -eq 0; then \ ++ echo "$$grn$$dashes"; \ ++ else \ ++ echo "$$red$$dashes"; \ ++ fi; \ ++ echo "$$banner"; \ ++ test -z "$$skipped" || echo "$$skipped"; \ ++ test -z "$$report" || echo "$$report"; \ ++ echo "$$dashes$$std"; \ ++ test "$$failed" -eq 0; \ ++ else :; fi ++ ++distdir: $(DISTFILES) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d "$(distdir)/$$file"; then \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ ++ else \ ++ test -f "$(distdir)/$$file" \ ++ || cp -p $$d/$$file "$(distdir)/$$file" \ ++ || exit 1; \ ++ fi; \ ++ done ++ $(MAKE) $(AM_MAKEFLAGS) \ ++ top_distdir="$(top_distdir)" distdir="$(distdir)" \ ++ dist-hook ++check-am: all-am ++ $(MAKE) $(AM_MAKEFLAGS) check-TESTS ++check: check-am ++all-am: Makefile $(PROGRAMS) $(SCRIPTS) ++installdirs: ++install: install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ `test -z '$(STRIP)' || \ ++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++clean: clean-am ++ ++clean-am: clean-generic clean-libtool clean-local clean-noinstPROGRAMS \ ++ mostlyclean-am ++ ++distclean: distclean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: ++ ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: ++ ++.MAKE: check-am install-am install-strip ++ ++.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ ++ clean-generic clean-libtool clean-local clean-noinstPROGRAMS \ ++ ctags dist-hook distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-am install-data \ ++ install-data-am install-dvi install-dvi-am install-exec \ ++ install-exec-am install-html install-html-am install-info \ ++ install-info-am install-man install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ ++ installcheck-am installdirs maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-compile \ ++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ++ tags uninstall uninstall-am ++ ++ ++# alias test=check ++test: check ++ ++.PHONY: test ++ ++clean-local: ++ rm -f test-*.actual core.* core *.tmp *~ *-big.* test-guess-stdin.expected test-ENCAOPT.expected ++ ++dist-hook: ++ chmod 755 $(distdir)/test-*.sh ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff -Naur enca-1.13/tools/.deps/make_hash.Po enca-1.13.patch/tools/.deps/make_hash.Po +--- enca-1.13/tools/.deps/make_hash.Po 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/tools/.deps/make_hash.Po 2010-04-16 18:41:18.051442468 +0200 +@@ -0,0 +1 @@ ++# dummy +diff -Naur enca-1.13/tools/Makefile enca-1.13.patch/tools/Makefile +--- enca-1.13/tools/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ enca-1.13.patch/tools/Makefile 2010-04-16 18:41:17.776472255 +0200 +@@ -0,0 +1,557 @@ ++# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# tools/Makefile. Generated from Makefile.in by configure. ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, ++# Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++ ++ ++ ++ ++ ++pkgdatadir = $(datadir)/enca ++pkgincludedir = $(includedir)/enca ++pkglibdir = $(libdir)/enca ++pkglibexecdir = $(libexecdir)/enca ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = i686-pc-linux-gnu ++host_triplet = i686-pc-linux-gnu ++noinst_PROGRAMS = make_hash$(EXEEXT) ++subdir = tools ++DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ++ $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ ++ $(top_srcdir)/m4/libiconv.m4 $(top_srcdir)/m4/libm.m4 \ ++ $(top_srcdir)/m4/librecode.m4 $(top_srcdir)/m4/libtool.m4 \ ++ $(top_srcdir)/m4/localias.m4 $(top_srcdir)/m4/ltoptions.m4 \ ++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ ++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/tools.m4 \ ++ $(top_srcdir)/m4/typevar.m4 $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++CONFIG_CLEAN_VPATH_FILES = ++PROGRAMS = $(noinst_PROGRAMS) ++am_make_hash_OBJECTS = make_hash.$(OBJEXT) ++make_hash_OBJECTS = $(am_make_hash_OBJECTS) ++make_hash_LDADD = $(LDADD) ++SCRIPTS = $(noinst_SCRIPTS) ++DEFAULT_INCLUDES = -I. -I$(top_builddir) ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++am__mv = mv -f ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(make_hash_SOURCES) ++DIST_SOURCES = $(make_hash_SOURCES) ++HEADERS = $(noinst_HEADERS) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run aclocal-1.11 -I m4 ++AMTAR = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run tar ++AR = ar ++AUTOCONF = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoconf ++AUTOHEADER = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run autoheader ++AUTOMAKE = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run automake-1.11 ++AWK = gawk ++CC = gcc ++CCDEPMODE = depmode=gcc3 ++CFLAGS = -Wall -W -pedantic -g -O2 ++CONVERTER_LIBS = ++CPP = gcc -E ++CPPFLAGS = ++CSTOCS_PROG = ++CYGPATH_W = echo ++DEFAULT_CONVERTER_LIST = built-in,iconv ++DEFAULT_EXTERNAL_CONVERTER = piconv ++DEFS = -DHAVE_CONFIG_H ++DEPDIR = .deps ++DSYMUTIL = ++DUMPBIN = ++ECHO_C = ++ECHO_N = -n ++ECHO_T = ++EGREP = /bin/grep -E ++EXEEXT = ++FGREP = /bin/grep -F ++GREP = /bin/grep ++GTKDOC = true ++HTML_DIR = ${datarootdir}/gtk-doc/html ++INSTALL = /usr/bin/install -c ++INSTALL_DATA = ${INSTALL} -m 644 ++INSTALL_PROGRAM = ${INSTALL} ++INSTALL_SCRIPT = ${INSTALL} ++INSTALL_STRIP_PROGRAM = $(install_sh) -c -s ++LD = /usr/bin/ld ++LDFLAGS = ++LIBICONV = ++LIBM = -lm ++LIBOBJS = ++LIBS = -lm ++LIBTOOL = $(SHELL) $(top_builddir)/libtool ++LIPO = ++LN_S = ln -s ++LTLIBICONV = ++LTLIBOBJS = ++MAINT = # ++MAKEINFO = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/missing --run makeinfo ++MAP_PROG = ++MKDIR_P = /bin/mkdir -p ++MKTEMP_PROG = /bin/mktemp ++NM = /usr/bin/nm -B ++NMEDIT = ++OBJDUMP = objdump ++OBJEXT = o ++OTOOL = ++OTOOL64 = ++PACKAGE = enca ++PACKAGE_BUGREPORT = https://bugs.cihar.com/ ++PACKAGE_NAME = Enca ++PACKAGE_STRING = Enca 1.13 ++PACKAGE_TARNAME = enca ++PACKAGE_URL = ++PACKAGE_VERSION = 1.13 ++PATH_SEPARATOR = : ++PICONV_PROG = /usr/bin/piconv ++RANLIB = ranlib ++RECODE_PROG = ++RELEASE = 1 ++SED = /bin/sed ++SET_MAKE = ++SHELL = /bin/sh ++SHELL_RANDOM_FILENAME = `/bin/mktemp /tmp/enca-$$-XXXXXXXX` ++STRIP = strip ++UMAP_PROG = ++VERSION = 1.13 ++abs_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/tools ++abs_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/tools ++abs_top_builddir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++abs_top_srcdir = /home/stephan/projects/openelec/sources/enca/enca-1.13.patch ++ac_ct_CC = gcc ++ac_ct_DUMPBIN = ++am__include = include ++am__leading_dot = . ++am__quote = ++am__tar = ${AMTAR} chof - "$$tardir" ++am__untar = ${AMTAR} xf - ++bindir = ${exec_prefix}/bin ++build = i686-pc-linux-gnu ++build_alias = ++build_cpu = i686 ++build_os = linux-gnu ++build_vendor = pc ++builddir = . ++datadir = ${datarootdir} ++datarootdir = ${prefix}/share ++docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} ++dvidir = ${docdir} ++exec_prefix = ${prefix} ++host = i686-pc-linux-gnu ++host_alias = ++host_cpu = i686 ++host_os = linux-gnu ++host_vendor = pc ++htmldir = ${docdir} ++includedir = ${prefix}/include ++infodir = ${datarootdir}/info ++install_sh = ${SHELL} /home/stephan/projects/openelec/sources/enca/enca-1.13.patch/install-sh ++libdir = ${exec_prefix}/lib ++libexecdir = ${exec_prefix}/libexec ++localedir = ${datarootdir}/locale ++localstatedir = ${prefix}/var ++lt_ECHO = echo ++mandir = ${datarootdir}/man ++mkdir_p = /bin/mkdir -p ++oldincludedir = /usr/include ++pdfdir = ${docdir} ++prefix = /usr/local ++program_transform_name = s,x,x, ++psdir = ${docdir} ++sbindir = ${exec_prefix}/sbin ++sharedstatedir = ${prefix}/com ++srcdir = . ++sysconfdir = ${prefix}/etc ++target_alias = ++top_build_prefix = ../ ++top_builddir = .. ++top_srcdir = .. ++noinst_HEADERS = encodings.h ++noinst_SCRIPTS = expand_table.pl ++make_hash_SOURCES = make_hash.c ++BUILT_SOURCES = $(noinst_HEADERS) ++TABLE_SRC = \ ++ ACCEPTED_CHARS.t \ ++ BASE64.ti \ ++ BOXVERT_CP1125.t \ ++ BOXVERT_IBM852.t \ ++ BOXVERT_KEYBCS2.t \ ++ BOXVERT_KOI8R.t \ ++ BOXVERT_KOI8RU.t \ ++ BOXVERT_KOI8U.t \ ++ BOXVERT_KOI8UNI.t \ ++ HEXDIGITS.ti \ ++ TEX_ACCALPHA.t \ ++ TEX_ACCPUNCT.t \ ++ TEX_SKIP.t \ ++ encodings.dat ++ ++EXTRA_DIST = $(TABLE_SRC) $(noinst_SCRIPTS) iconvenc.null ++ ++# Normally there's no need to regenerate tables, they are copy-and-pasted ++# into the C source manually, but the rules are here. Run `make tables' ++# to create them. ++TABLES = \ ++ ACCEPTED_CHARS.h \ ++ BOXVERT_CP1125.h \ ++ BOXVERT_IBM852.h \ ++ BOXVERT_KEYBCS2.h \ ++ BOXVERT_KOI8R.h \ ++ BOXVERT_KOI8RU.h \ ++ BOXVERT_KOI8U.h \ ++ BOXVERT_KOI8UNI.h \ ++ TEX_ACCALPHA.h \ ++ TEX_ACCPUNCT.h \ ++ TEX_SKIP.h ++ ++TABLES_INCR = BASE64.h HEXDIGITS.h ++all: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) all-am ++ ++.SUFFIXES: ++.SUFFIXES: .c .lo .o .obj ++$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits tools/Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --gnits tools/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: # $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): # $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(am__aclocal_m4_deps): ++ ++clean-noinstPROGRAMS: ++ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ ++ echo " rm -f" $$list; \ ++ rm -f $$list || exit $$?; \ ++ test -n "$(EXEEXT)" || exit 0; \ ++ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ ++ echo " rm -f" $$list; \ ++ rm -f $$list ++make_hash$(EXEEXT): $(make_hash_OBJECTS) $(make_hash_DEPENDENCIES) ++ @rm -f make_hash$(EXEEXT) ++ $(LINK) $(make_hash_OBJECTS) $(make_hash_LDADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++include ./$(DEPDIR)/make_hash.Po ++ ++.c.o: ++ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++# source='$<' object='$@' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(COMPILE) -c $< ++ ++.c.obj: ++ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++# source='$<' object='$@' libtool=no \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(COMPILE) -c `$(CYGPATH_W) '$<'` ++ ++.c.lo: ++ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++# source='$<' object='$@' libtool=yes \ ++# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ ++# $(LTCOMPILE) -c -o $@ $< ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ mkid -fID $$unique ++tags: TAGS ++ ++TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ set x; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ ++distdir: $(DISTFILES) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d "$(distdir)/$$file"; then \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ ++ else \ ++ test -f "$(distdir)/$$file" \ ++ || cp -p $$d/$$file "$(distdir)/$$file" \ ++ || exit 1; \ ++ fi; \ ++ done ++check-am: all-am ++check: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) check-am ++all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(HEADERS) ++installdirs: ++install: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ `test -z '$(STRIP)' || \ ++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) ++clean: clean-am ++ ++clean-am: clean-generic clean-libtool clean-local clean-noinstPROGRAMS \ ++ mostlyclean-am ++ ++distclean: distclean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-local distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: ++ ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: ++ ++.MAKE: all check install install-am install-strip ++ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++ clean-libtool clean-local clean-noinstPROGRAMS ctags distclean \ ++ distclean-compile distclean-generic distclean-libtool \ ++ distclean-local distclean-tags distdir dvi dvi-am html html-am \ ++ info info-am install install-am install-data install-data-am \ ++ install-dvi install-dvi-am install-exec install-exec-am \ ++ install-html install-html-am install-info install-info-am \ ++ install-man install-pdf install-pdf-am install-ps \ ++ install-ps-am install-strip installcheck installcheck-am \ ++ installdirs maintainer-clean maintainer-clean-generic \ ++ mostlyclean mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-am ++ ++ ++all: encodings.h ++ ++encodings.sed: $(top_builddir)/iconvenc.h ++ sed -e 's/^#define \([A-Z0-9_]*\) \(.*\)/@\1@ \2/' -e 's/"//g' -e 's/NULL$$//' -e 's/ /\//' -e 's/^\(.*\)$$/s\/\1\//' $(top_builddir)/iconvenc.h >encodings.sed ++ ++encodings.h: encodings.sed $(srcdir)/encodings.dat make_hash ++ sed -f encodings.sed $(srcdir)/encodings.dat | ./make_hash >encodings.h ++ ++#tables: $(TABLES) $(TABLES_INCR) ++ ++#%.h: $(srcdir)/%.t $(srcdir)/expand_table.pl ++# $(srcdir)/expand_table.pl $< >$@ ++ ++#%.h: $(srcdir)/%.ti $(srcdir)/expand_table.pl ++# $(srcdir)/expand_table.pl $< >$@ ++ ++clean-local: ++ rm -f $(TABLES) $(TABLES_INCR) encodings.sed *~ core.* ++ ++distclean-local: ++ rm -f encodings.h ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: diff --git a/packages/other/enca/url b/packages/other/enca/url index 7ab1d8f301..dac8a76c82 100644 --- a/packages/other/enca/url +++ b/packages/other/enca/url @@ -1 +1 @@ -http://dl.cihar.com/enca/enca-1.12.tar.bz2 \ No newline at end of file +http://dl.cihar.com/enca/enca-1.13.tar.bz2 \ No newline at end of file From 57c0ab1ad9b082fc05cc2f1cebfc7d7758ed78e1 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:00:05 +0200 Subject: [PATCH 019/171] libdaemon: - update to libdaemon-0.14 --- packages/other/libdaemon/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/other/libdaemon/url b/packages/other/libdaemon/url index 3738152402..53d3d5ea89 100644 --- a/packages/other/libdaemon/url +++ b/packages/other/libdaemon/url @@ -1 +1 @@ -http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.13.tar.gz \ No newline at end of file +http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.14.tar.gz \ No newline at end of file From 785c019095a018f1024cd67a2be7f9d236d6f98a Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:00:24 +0200 Subject: [PATCH 020/171] dbus-python: - update to dbus-python-0.83.1 --- packages/python/system/dbus-python/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/python/system/dbus-python/url b/packages/python/system/dbus-python/url index 019d0925ef..50df5d53f6 100644 --- a/packages/python/system/dbus-python/url +++ b/packages/python/system/dbus-python/url @@ -1 +1 @@ -http://dbus.freedesktop.org/releases/dbus-python/dbus-python-0.83.0.tar.gz +http://dbus.freedesktop.org/releases/dbus-python/dbus-python-0.83.1.tar.gz \ No newline at end of file From fa56b6e1f3eb12089099ca2449218013c332a2c3 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:00:43 +0200 Subject: [PATCH 021/171] Linux-PAM: - update to Linux-PAM-1.1.1 --- .../patches/pam-disable-nis-on-uclibc.diff | 251 ------------------ ...s_that_does_not_build_with_uClibc-0.1.diff | 30 --- packages/security/Linux-PAM/url | 2 +- 3 files changed, 1 insertion(+), 282 deletions(-) delete mode 100644 packages/security/Linux-PAM/patches/pam-disable-nis-on-uclibc.diff delete mode 100644 packages/security/Linux-PAM/patches/pam-dont_build_modules_that_does_not_build_with_uClibc-0.1.diff diff --git a/packages/security/Linux-PAM/patches/pam-disable-nis-on-uclibc.diff b/packages/security/Linux-PAM/patches/pam-disable-nis-on-uclibc.diff deleted file mode 100644 index 258166cc52..0000000000 --- a/packages/security/Linux-PAM/patches/pam-disable-nis-on-uclibc.diff +++ /dev/null @@ -1,251 +0,0 @@ -Index: Linux-PAM-1.0.2/Makefile.in -=================================================================== ---- Linux-PAM-1.0.2.orig/Makefile.in 2008-08-29 01:14:12.000000000 -0700 -+++ Linux-PAM-1.0.2/Makefile.in 2009-09-04 01:06:22.571466501 -0700 -@@ -71,8 +71,7 @@ - distclean-recursive maintainer-clean-recursive - ETAGS = etags - CTAGS = ctags --DIST_SUBDIRS = libpam tests libpamc libpam_misc modules po conf doc \ -- examples xtests -+DIST_SUBDIRS = libpam libpamc libpam_misc modules po conf - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - distdir = $(PACKAGE)-$(VERSION) - top_distdir = $(distdir) -@@ -244,8 +243,8 @@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ - AUTOMAKE_OPTIONS = 1.9 gnu dist-bzip2 check-news --@STATIC_MODULES_FALSE@SUBDIRS = libpam tests libpamc libpam_misc modules po conf doc examples xtests --@STATIC_MODULES_TRUE@SUBDIRS = modules libpam libpamc libpam_misc tests po conf doc examples xtests -+@STATIC_MODULES_FALSE@SUBDIRS = libpam libpamc libpam_misc modules po conf -+@STATIC_MODULES_TRUE@SUBDIRS = modules libpam libpamc libpam_misc po conf - CLEANFILES = *~ - M4_FILES = m4/codeset.m4 m4/gettext.m4 m4/glibc21.m4 m4/glibc2.m4 \ - m4/iconv.m4 m4/intdiv0.m4 m4/intmax.m4 m4/inttypes_h.m4 \ -Index: Linux-PAM-1.0.2/modules/pam_access/pam_access.c -=================================================================== ---- Linux-PAM-1.0.2.orig/modules/pam_access/pam_access.c 2007-12-07 07:40:01.000000000 -0800 -+++ Linux-PAM-1.0.2/modules/pam_access/pam_access.c 2009-09-04 01:06:22.575455835 -0700 -@@ -41,7 +41,11 @@ - #include - #include - #include -+ -+#ifdef NIS - #include -+#endif -+ - #include - #include - #include -@@ -479,8 +483,9 @@ - char *mydomain = NULL; - int retval; - -+#ifdef NIS - yp_get_default_domain(&mydomain); -- -+#endif - - retval = innetgr (netgroup, machine, user, mydomain); - if (debug == YES) -Index: Linux-PAM-1.0.2/modules/pam_unix/Makefile.am -=================================================================== ---- Linux-PAM-1.0.2.orig/modules/pam_unix/Makefile.am 2008-02-29 07:22:03.000000000 -0800 -+++ Linux-PAM-1.0.2/modules/pam_unix/Makefile.am 2009-09-04 01:09:46.519457167 -0700 -@@ -32,7 +32,7 @@ - - securelib_LTLIBRARIES = pam_unix.la - --noinst_HEADERS = md5.h support.h yppasswd.h bigcrypt.h passverify.h -+noinst_HEADERS = md5.h support.h bigcrypt.h passverify.h - - sbin_PROGRAMS = unix_chkpwd unix_update - -@@ -40,7 +40,7 @@ - - pam_unix_la_SOURCES = bigcrypt.c pam_unix_acct.c \ - pam_unix_auth.c pam_unix_passwd.c pam_unix_sess.c support.c \ -- passverify.c yppasswd_xdr.c md5_good.c md5_broken.c -+ passverify.c md5_good.c md5_broken.c - - bigcrypt_SOURCES = bigcrypt.c bigcrypt_main.c - bigcrypt_CFLAGS = $(AM_CFLAGS) -Index: Linux-PAM-1.0.2/modules/pam_unix/Makefile.in -=================================================================== ---- Linux-PAM-1.0.2.orig/modules/pam_unix/Makefile.in 2008-08-29 01:14:10.000000000 -0700 -+++ Linux-PAM-1.0.2/modules/pam_unix/Makefile.in 2009-09-04 01:13:42.939510044 -0700 -@@ -74,7 +74,7 @@ - pam_unix_la_DEPENDENCIES = - am_pam_unix_la_OBJECTS = bigcrypt.lo pam_unix_acct.lo pam_unix_auth.lo \ - pam_unix_passwd.lo pam_unix_sess.lo support.lo passverify.lo \ -- yppasswd_xdr.lo md5_good.lo md5_broken.lo -+ md5_good.lo md5_broken.lo - pam_unix_la_OBJECTS = $(am_pam_unix_la_OBJECTS) - pam_unix_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ -@@ -310,10 +310,10 @@ - @LIBCRYPT@ @LIBSELINUX@ - - securelib_LTLIBRARIES = pam_unix.la --noinst_HEADERS = md5.h support.h yppasswd.h bigcrypt.h passverify.h -+noinst_HEADERS = md5.h support.h bigcrypt.h passverify.h - pam_unix_la_SOURCES = bigcrypt.c pam_unix_acct.c \ - pam_unix_auth.c pam_unix_passwd.c pam_unix_sess.c support.c \ -- passverify.c yppasswd_xdr.c md5_good.c md5_broken.c -+ passverify.c md5_good.c md5_broken.c - - bigcrypt_SOURCES = bigcrypt.c bigcrypt_main.c - bigcrypt_CFLAGS = $(AM_CFLAGS) -@@ -465,7 +465,6 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix_update-md5_good.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix_update-passverify.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix_update-unix_update.Po@am__quote@ --@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yppasswd_xdr.Plo@am__quote@ - - .c.o: - @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -Index: Linux-PAM-1.0.2/modules/pam_unix/pam_unix_passwd.c -=================================================================== ---- Linux-PAM-1.0.2.orig/modules/pam_unix/pam_unix_passwd.c 2008-02-29 07:22:03.000000000 -0800 -+++ Linux-PAM-1.0.2/modules/pam_unix/pam_unix_passwd.c 2009-09-04 01:06:22.579455994 -0700 -@@ -55,8 +55,11 @@ - #include - #include - #include -+ -+#ifdef NIS - #include - #include -+#endif - - #include - #include -@@ -77,7 +80,10 @@ - #include - #include - -+#ifdef NIS - #include "yppasswd.h" -+#endif -+ - #include "md5.h" - #include "support.h" - #include "passverify.h" -@@ -105,6 +111,7 @@ - - static char *getNISserver(pam_handle_t *pamh) - { -+#ifdef NIS - char *master; - char *domainname; - int port, err; -@@ -131,6 +138,9 @@ - return NULL; - } - return master; -+#else -+ return NULL; -+#endif - } - - #ifdef WITH_SELINUX -@@ -301,6 +311,7 @@ - - if (on(UNIX_NIS, ctrl) && _unix_comesfromsource(pamh, forwho, 0, 1)) { - if ((master=getNISserver(pamh)) != NULL) { -+#ifdef NIS - struct timeval timeout; - struct yppasswd yppwd; - CLIENT *clnt; -@@ -362,6 +373,7 @@ - #ifdef DEBUG - sleep(5); - #endif -+#endif - } else { - retval = PAM_TRY_AGAIN; - } -Index: Linux-PAM-1.0.2/modules/pam_unix/support.c -=================================================================== ---- Linux-PAM-1.0.2.orig/modules/pam_unix/support.c 2008-01-23 07:35:13.000000000 -0800 -+++ Linux-PAM-1.0.2/modules/pam_unix/support.c 2009-09-04 01:06:22.579455994 -0700 -@@ -19,7 +19,10 @@ - #include - #include - #include -+ -+#ifdef NIS - #include -+#endif - - #include - #include -@@ -266,6 +269,7 @@ - if (!matched && nis) { - char *userinfo = NULL, *domain = NULL; - int len = 0, i; -+#ifdef NIS - len = yp_get_default_domain(&domain); - if (len == YPERR_SUCCESS) { - len = yp_bind(domain); -@@ -280,6 +284,7 @@ - matched = 1; - } - } -+#endif - } - - if (matched && (ret != NULL)) { -Index: Linux-PAM-1.0.2/modules/pam_unix/yppasswd.h -=================================================================== ---- Linux-PAM-1.0.2.orig/modules/pam_unix/yppasswd.h 2000-06-20 15:12:08.000000000 -0700 -+++ Linux-PAM-1.0.2/modules/pam_unix/yppasswd.h 2009-09-04 01:06:22.579455994 -0700 -@@ -13,6 +13,8 @@ - #ifndef _YPPASSWD_H_ - #define _YPPASSWD_H_ - -+#ifdef NIS -+ - #define YPPASSWDPROG ((u_long)100009) - #define YPPASSWDVERS ((u_long)1) - #define YPPASSWDPROC_UPDATE ((u_long)1) -@@ -48,4 +50,6 @@ - bool_t xdr_xpasswd(XDR * xdrs, xpasswd * objp); - bool_t xdr_yppasswd(XDR * xdrs, yppasswd * objp); - -+#endif -+ - #endif /* _YPPASSWD_H_ */ -Index: Linux-PAM-1.0.2/modules/pam_unix/yppasswd_xdr.c -=================================================================== ---- Linux-PAM-1.0.2.orig/modules/pam_unix/yppasswd_xdr.c 2005-07-20 02:46:19.000000000 -0700 -+++ Linux-PAM-1.0.2/modules/pam_unix/yppasswd_xdr.c 2009-09-04 01:06:22.579455994 -0700 -@@ -10,6 +10,8 @@ - * editied manually. - */ - -+#ifdef NIS -+ - #include "config.h" - - #include -@@ -36,3 +38,5 @@ - return xdr_string(xdrs, &objp->oldpass, ~0) - && xdr_xpasswd(xdrs, &objp->newpw); - } -+ -+#endif -Index: Linux-PAM-1.0.2/po/POTFILES.in -=================================================================== ---- Linux-PAM-1.0.2.orig/po/POTFILES.in 2008-02-13 06:39:41.000000000 -0800 -+++ Linux-PAM-1.0.2/po/POTFILES.in 2009-09-04 01:06:22.579455994 -0700 -@@ -85,7 +85,6 @@ - ./modules/pam_unix/passverify.c - ./modules/pam_unix/support.c - ./modules/pam_unix/unix_chkpwd.c --./modules/pam_unix/yppasswd_xdr.c - ./modules/pam_userdb/pam_userdb.c - ./modules/pam_warn/pam_warn.c - ./modules/pam_wheel/pam_wheel.c diff --git a/packages/security/Linux-PAM/patches/pam-dont_build_modules_that_does_not_build_with_uClibc-0.1.diff b/packages/security/Linux-PAM/patches/pam-dont_build_modules_that_does_not_build_with_uClibc-0.1.diff deleted file mode 100644 index 5065154967..0000000000 --- a/packages/security/Linux-PAM/patches/pam-dont_build_modules_that_does_not_build_with_uClibc-0.1.diff +++ /dev/null @@ -1,30 +0,0 @@ -diff -Naur Linux-PAM-1.1.0/modules/Makefile.am Linux-PAM-1.1.0.patch/modules/Makefile.am ---- Linux-PAM-1.1.0/modules/Makefile.am 2008-11-28 15:29:12.000000000 +0100 -+++ Linux-PAM-1.1.0.patch/modules/Makefile.am 2009-11-08 11:14:06.473256272 +0100 -@@ -7,9 +7,9 @@ - pam_group pam_issue pam_keyinit pam_lastlog pam_limits \ - pam_listfile pam_localuser pam_loginuid pam_mail \ - pam_mkhomedir pam_motd pam_namespace pam_nologin \ -- pam_permit pam_pwhistory pam_rhosts pam_rootok pam_securetty \ -+ pam_permit pam_rhosts pam_rootok pam_securetty \ - pam_selinux pam_sepermit pam_shells pam_stress \ -- pam_succeed_if pam_tally pam_tally2 pam_time pam_timestamp \ -+ pam_succeed_if pam_tally pam_tally2 pam_time \ - pam_tty_audit pam_umask \ - pam_unix pam_userdb pam_warn pam_wheel pam_xauth - -diff -Naur Linux-PAM-1.1.0/modules/Makefile.in Linux-PAM-1.1.0.patch/modules/Makefile.in ---- Linux-PAM-1.1.0/modules/Makefile.in 2009-06-19 16:04:56.000000000 +0200 -+++ Linux-PAM-1.1.0.patch/modules/Makefile.in 2009-11-08 11:14:26.485380166 +0100 -@@ -235,9 +235,9 @@ - pam_group pam_issue pam_keyinit pam_lastlog pam_limits \ - pam_listfile pam_localuser pam_loginuid pam_mail \ - pam_mkhomedir pam_motd pam_namespace pam_nologin \ -- pam_permit pam_pwhistory pam_rhosts pam_rootok pam_securetty \ -+ pam_permit pam_rhosts pam_rootok pam_securetty \ - pam_selinux pam_sepermit pam_shells pam_stress \ -- pam_succeed_if pam_tally pam_tally2 pam_time pam_timestamp \ -+ pam_succeed_if pam_tally pam_tally2 pam_time \ - pam_tty_audit pam_umask \ - pam_unix pam_userdb pam_warn pam_wheel pam_xauth - diff --git a/packages/security/Linux-PAM/url b/packages/security/Linux-PAM/url index 58ba959bc8..38c291ae6b 100644 --- a/packages/security/Linux-PAM/url +++ b/packages/security/Linux-PAM/url @@ -1 +1 @@ -http://www.kernel.org/pub/linux/libs/pam/library/Linux-PAM-1.1.0.tar.bz2 \ No newline at end of file +http://www.kernel.org/pub/linux/libs/pam/library/Linux-PAM-1.1.1.tar.bz2 \ No newline at end of file From fbe9fb371c213a2e92925bae9e4ee4ec91f7794a Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:01:06 +0200 Subject: [PATCH 022/171] polkit: - update to polkit-0.96 --- packages/security/polkit/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/security/polkit/url b/packages/security/polkit/url index 0e3ac8b777..d9613275dc 100644 --- a/packages/security/polkit/url +++ b/packages/security/polkit/url @@ -1 +1 @@ -http://hal.freedesktop.org/releases/polkit-0.95.tar.gz \ No newline at end of file +http://hal.freedesktop.org/releases/polkit-0.96.tar.gz \ No newline at end of file From 3163f7851ec9be7e049964c38cc3551f92f7535f Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:01:31 +0200 Subject: [PATCH 023/171] LVM2: - update to LVM2.2.02.63 --- packages/sysutils/LVM2/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/LVM2/url b/packages/sysutils/LVM2/url index ba0b507e61..5d60e08e67 100644 --- a/packages/sysutils/LVM2/url +++ b/packages/sysutils/LVM2/url @@ -1 +1 @@ -ftp://sources.redhat.com/pub/lvm2/LVM2.2.02.54.tgz \ No newline at end of file +ftp://sources.redhat.com/pub/lvm2/LVM2.2.02.63.tgz From e06a16e21cfdf661af566a8ea61b8ac76d40ea31 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:01:47 +0200 Subject: [PATCH 024/171] libusb: - update to libusb-1.0.6 --- packages/sysutils/libusb/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/libusb/url b/packages/sysutils/libusb/url index 6949cc5a3d..503c47098e 100644 --- a/packages/sysutils/libusb/url +++ b/packages/sysutils/libusb/url @@ -1 +1 @@ -http://freefr.dl.sourceforge.net/sourceforge/libusb/libusb-1.0.1.tar.bz2 +http://freefr.dl.sourceforge.net/sourceforge/libusb/libusb-1.0.6.tar.bz2 From f1b0fdfd8ef6372939e4dde5e1cbe23c5567ee00 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:02:16 +0200 Subject: [PATCH 025/171] module-init-tools: - update to module-init-tools-3.12-pre2 --- packages/sysutils/module-init-tools/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/module-init-tools/url b/packages/sysutils/module-init-tools/url index 19aaaa81d4..eb01046af6 100644 --- a/packages/sysutils/module-init-tools/url +++ b/packages/sysutils/module-init-tools/url @@ -1 +1 @@ -http://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.11.1.tar.bz2 +http://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.12-pre2.tar.gz \ No newline at end of file From 3ec25c0d8979c6fc9d65e0b4f0195a173580a5f3 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:02:36 +0200 Subject: [PATCH 026/171] parted: - update to parted-2.2 --- packages/sysutils/parted/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/parted/url b/packages/sysutils/parted/url index 1373b10764..a12d3efeb6 100644 --- a/packages/sysutils/parted/url +++ b/packages/sysutils/parted/url @@ -1 +1 @@ -http://ftp.gnu.org/gnu/parted/parted-1.9.0.tar.gz \ No newline at end of file +http://ftp.gnu.org/gnu/parted/parted-2.2.tar.gz \ No newline at end of file From d33ec240beefeae8f010a087ddcaa41b446224e4 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:02:54 +0200 Subject: [PATCH 027/171] pciutils: - update to pciutils-3.1.7 --- packages/sysutils/pciutils/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/pciutils/url b/packages/sysutils/pciutils/url index 442782ed50..31f0339444 100644 --- a/packages/sysutils/pciutils/url +++ b/packages/sysutils/pciutils/url @@ -1 +1 @@ -http://ftp.de.kernel.org/pub/software/utils/pciutils/pciutils-3.1.6.tar.bz2 +http://ftp.de.kernel.org/pub/software/utils/pciutils/pciutils-3.1.7.tar.bz2 From 0273ed0f408b0c5ef9ba6143ca68d88f62546d2c Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:03:21 +0200 Subject: [PATCH 028/171] sg3_utils: - update to sg3_utils-1.29 --- packages/sysutils/sg3_utils/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/sg3_utils/url b/packages/sysutils/sg3_utils/url index 6d97ab4eac..8f7070e5b2 100644 --- a/packages/sysutils/sg3_utils/url +++ b/packages/sysutils/sg3_utils/url @@ -1 +1 @@ -http://sg.danny.cz/sg/p/sg3_utils-1.28.tar.bz2 \ No newline at end of file +http://sg.danny.cz/sg/p/sg3_utils-1.29.tar.bz2 \ No newline at end of file From dc1c1fb713f982d221387cf7faac4c6f967116fa Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:03:42 +0200 Subject: [PATCH 029/171] util-linux-ng: - update to util-linux-ng-2.17.2 --- packages/sysutils/util-linux-ng/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/util-linux-ng/url b/packages/sysutils/util-linux-ng/url index 216f29879d..528f84c55e 100644 --- a/packages/sysutils/util-linux-ng/url +++ b/packages/sysutils/util-linux-ng/url @@ -1 +1 @@ -http://www.kernel.org/pub/linux/utils/util-linux-ng/v2.16/util-linux-ng-2.16.1.tar.bz2 \ No newline at end of file +http://www.kernel.org/pub/linux/utils/util-linux-ng/v2.17/util-linux-ng-2.17.2.tar.bz2 \ No newline at end of file From 0b375b832c48294c9ee5df955ee891f89bf8e4d8 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:03:59 +0200 Subject: [PATCH 030/171] libxml2: - update to libxml2-2.7.7 --- packages/textproc/libxml2/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/textproc/libxml2/url b/packages/textproc/libxml2/url index 3ae6f7d6d4..f4ddb0d914 100644 --- a/packages/textproc/libxml2/url +++ b/packages/textproc/libxml2/url @@ -1 +1 @@ -ftp://xmlsoft.org/libxml2/libxml2-2.7.5.tar.gz \ No newline at end of file +ftp://xmlsoft.org/libxml2/libxml2-2.7.7.tar.gz \ No newline at end of file From 6ff4fa79972ebc4b55ecf9e71ba107650cf0e120 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:04:14 +0200 Subject: [PATCH 031/171] binutils: - update to binutils-2.20.51.0.8 --- packages/toolchain/devel/binutils/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/toolchain/devel/binutils/url b/packages/toolchain/devel/binutils/url index d5954ddf71..e9c0a6d2a4 100644 --- a/packages/toolchain/devel/binutils/url +++ b/packages/toolchain/devel/binutils/url @@ -1 +1 @@ -ftp://ftp.kernel.org/pub/linux/devel/binutils/binutils-2.20.51.0.7.tar.bz2 \ No newline at end of file +ftp://ftp.kernel.org/pub/linux/devel/binutils/binutils-2.20.51.0.8.tar.bz2 \ No newline at end of file From fa464fd2ef5af74791d2c0c858456d797f3df60d Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:04:36 +0200 Subject: [PATCH 032/171] ccache: - update to ccache-3.0pre0 --- packages/toolchain/devel/ccache/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/toolchain/devel/ccache/url b/packages/toolchain/devel/ccache/url index 6b47bc66d9..813727b48f 100644 --- a/packages/toolchain/devel/ccache/url +++ b/packages/toolchain/devel/ccache/url @@ -1 +1 @@ -http://samba.org/ftp/ccache/ccache-2.4.tar.gz +http://samba.org/ftp/ccache/ccache-3.0pre0.tar.bz2 \ No newline at end of file From 591eebac5e38322c3c25230fcad310d157c7cad1 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:04:49 +0200 Subject: [PATCH 033/171] cmake: - update to cmake-2.8.1 --- packages/toolchain/devel/cmake/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/toolchain/devel/cmake/url b/packages/toolchain/devel/cmake/url index 919d3041da..8c6712ea09 100644 --- a/packages/toolchain/devel/cmake/url +++ b/packages/toolchain/devel/cmake/url @@ -1 +1 @@ -http://www.cmake.org/files/v2.6/cmake-2.6.4.tar.gz +http://www.cmake.org/files/v2.8/cmake-2.8.1.tar.gz \ No newline at end of file From a4a017e0dfb3264f5f741fd7336d482411c2e59b Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:05:07 +0200 Subject: [PATCH 034/171] yasm: - update to yasm-1.0.0 --- packages/toolchain/lang/yasm/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/toolchain/lang/yasm/url b/packages/toolchain/lang/yasm/url index 9be2b58b77..98ff511eda 100644 --- a/packages/toolchain/lang/yasm/url +++ b/packages/toolchain/lang/yasm/url @@ -1 +1 @@ -http://www.tortall.net/projects/yasm/releases/yasm-0.8.0.tar.gz \ No newline at end of file +http://www.tortall.net/projects/yasm/releases/yasm-1.0.0.tar.gz \ No newline at end of file From ecd3ca6edd83fe143ef436e8adc5bc21bc098cde Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:05:47 +0200 Subject: [PATCH 035/171] gmp: - add -fexceptions to CPPFLAGS --- packages/toolchain/math/gmp/build | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/toolchain/math/gmp/build b/packages/toolchain/math/gmp/build index d15b61187b..4841578946 100755 --- a/packages/toolchain/math/gmp/build +++ b/packages/toolchain/math/gmp/build @@ -6,9 +6,10 @@ $SCRIPTS/install ccache setup_toolchain host -# workaround gcc 4.3.2 bug on x86_64 hosts +# CFLAGS: workaround gcc 4.3.2 bug on x86_64 hosts # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=524472 export CFLAGS="$CFLAGS -fno-strict-aliasing -fPIC" + export CPPFLAGS="$CPPFLAGS -fexceptions" cd $PKG_BUILD From e91f7c1716def0e745824404cb8aa59196753729 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:06:05 +0200 Subject: [PATCH 036/171] sed: - update to sed-4.2.1 --- packages/toolchain/sed/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/toolchain/sed/url b/packages/toolchain/sed/url index a1f64a4349..f6126cf7db 100644 --- a/packages/toolchain/sed/url +++ b/packages/toolchain/sed/url @@ -1 +1 @@ -http://ftp.gnu.org/gnu/sed/sed-4.1.4.tar.gz +http://ftp.gnu.org/gnu/sed/sed-4.2.1.tar.bz2 \ No newline at end of file From 27d8ff08f0f5d77ec8690b1770bbb7fc140af725 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:06:23 +0200 Subject: [PATCH 037/171] curl: - update to curl-7.20.1 --- packages/web/curl/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web/curl/url b/packages/web/curl/url index 996786b108..ae34b215cc 100644 --- a/packages/web/curl/url +++ b/packages/web/curl/url @@ -1 +1 @@ -http://curl.haxx.se/download/curl-7.19.4.tar.bz2 +http://curl.haxx.se/download/curl-7.20.1.tar.bz2 \ No newline at end of file From a18bf1b656d34af1ba59537dddbe85d585b52523 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:06:41 +0200 Subject: [PATCH 038/171] libmicrohttpd: - update to libmicrohttpd-0.4.6 --- packages/web/libmicrohttpd/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web/libmicrohttpd/url b/packages/web/libmicrohttpd/url index 918416af95..1502e63b3d 100644 --- a/packages/web/libmicrohttpd/url +++ b/packages/web/libmicrohttpd/url @@ -1 +1 @@ -ftp://sunsite.cnlab-switch.ch/mirror/gnu/libmicrohttpd/libmicrohttpd-0.4.5.tar.gz \ No newline at end of file +ftp://sunsite.cnlab-switch.ch/mirror/gnu/libmicrohttpd/libmicrohttpd-0.4.6.tar.gz \ No newline at end of file From 1011a45c2fc283d7b1d59befb2bb64dcfd1ff600 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:07:19 +0200 Subject: [PATCH 039/171] xf86-input-wacom: - update to xf86-input-wacom-0.10.5 --- packages/x11/driver/xf86-input-wacom/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x11/driver/xf86-input-wacom/url b/packages/x11/driver/xf86-input-wacom/url index f611635f35..6ae0215f91 100644 --- a/packages/x11/driver/xf86-input-wacom/url +++ b/packages/x11/driver/xf86-input-wacom/url @@ -1 +1 @@ -http://freefr.dl.sourceforge.net/project/linuxwacom/xf86-input-wacom/xf86-input-wacom-0.10.4.tar.bz2 \ No newline at end of file +http://freefr.dl.sourceforge.net/project/linuxwacom/xf86-input-wacom/xf86-input-wacom-0.10.5.tar.bz2 \ No newline at end of file From f87382e5da209448e7090eb71d278de363bc6415 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:07:39 +0200 Subject: [PATCH 040/171] libXmu: - update to libXmu-1.0.5 --- packages/x11/lib/libXmu/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x11/lib/libXmu/url b/packages/x11/lib/libXmu/url index 8965d9a8a2..c38aaaf231 100644 --- a/packages/x11/lib/libXmu/url +++ b/packages/x11/lib/libXmu/url @@ -1 +1 @@ -http://xorg.freedesktop.org/releases/individual/lib/libXmu-1.0.4.tar.bz2 +http://xorg.freedesktop.org/releases/individual/lib/libXmu-1.0.5.tar.bz2 From 537b0207bb9a559127e0f63a35637fc16932c4d8 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:07:55 +0200 Subject: [PATCH 041/171] encodings: - update to encodings-1.0.3 --- packages/x11/font/encodings/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x11/font/encodings/url b/packages/x11/font/encodings/url index c28851f40b..810c21869b 100644 --- a/packages/x11/font/encodings/url +++ b/packages/x11/font/encodings/url @@ -1 +1 @@ -http://xorg.freedesktop.org/releases/individual/font/encodings-1.0.2.tar.bz2 +http://xorg.freedesktop.org/releases/individual/font/encodings-1.0.3.tar.bz2 From 7780bee724d06cbcec0c7ef5799e2dbb0c1c7078 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:08:09 +0200 Subject: [PATCH 042/171] libxcb: - update to libxcb-1.6 --- packages/x11/lib/libxcb/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x11/lib/libxcb/url b/packages/x11/lib/libxcb/url index 703a2bee59..fcad720ea6 100644 --- a/packages/x11/lib/libxcb/url +++ b/packages/x11/lib/libxcb/url @@ -1 +1 @@ -http://xcb.freedesktop.org/dist/libxcb-1.5.tar.bz2 \ No newline at end of file +http://xcb.freedesktop.org/dist/libxcb-1.6.tar.bz2 \ No newline at end of file From bcdecf0e1a9533a050d098284aa150e033b187b2 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 00:08:25 +0200 Subject: [PATCH 043/171] fontconfig: - update to fontconfig-2.8.0 --- packages/x11/other/fontconfig/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x11/other/fontconfig/url b/packages/x11/other/fontconfig/url index ca1830006c..307a703f05 100644 --- a/packages/x11/other/fontconfig/url +++ b/packages/x11/other/fontconfig/url @@ -1 +1 @@ -http://fontconfig.org/release/fontconfig-2.7.3.tar.gz +http://fontconfig.org/release/fontconfig-2.8.0.tar.gz \ No newline at end of file From c79ded6f07c2e9e012e755ea1631d4ad76953c86 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 02:29:12 +0200 Subject: [PATCH 044/171] glib: - cleanup - install charset.alias --- packages/devel/glib/build | 1 - packages/devel/glib/install | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/devel/glib/build b/packages/devel/glib/build index 241160eea4..049d9b2bf0 100755 --- a/packages/devel/glib/build +++ b/packages/devel/glib/build @@ -3,7 +3,6 @@ . config/options $SCRIPTS/build toolchain -#$SCRIPTS/build libiconv $SCRIPTS/build zlib $SCRIPTS/build glib-host diff --git a/packages/devel/glib/install b/packages/devel/glib/install index bd21ae602e..2a4172be3f 100755 --- a/packages/devel/glib/install +++ b/packages/devel/glib/install @@ -3,8 +3,8 @@ . config/options $SCRIPTS/install zlib -#$SCRIPTS/install libiconv mkdir -p $INSTALL/usr/lib cp -P `find $PKG_BUILD/.build-target/g{lib,module,object,thread,io} -name *.so*` $INSTALL/usr/lib rm -rf $INSTALL/usr/lib/libg{lib,module,object,thread,io}*.so*T + cp $PKG_BUILD/.build-target/glib/libcharset/charset.alias $INSTALL/usr/lib \ No newline at end of file From c907fc859d509dbc635e28d87fc0d151251122fb Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 02:29:55 +0200 Subject: [PATCH 045/171] busybox: - create also /var/lib/polkit-1 and /var/lib/udisks --- packages/sysutils/busybox/init.d/06_make_directorys | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/sysutils/busybox/init.d/06_make_directorys b/packages/sysutils/busybox/init.d/06_make_directorys index 9f19dc2486..8f4690580d 100755 --- a/packages/sysutils/busybox/init.d/06_make_directorys +++ b/packages/sysutils/busybox/init.d/06_make_directorys @@ -19,3 +19,6 @@ progress "make variable directory structure" $IONICE touch /var/log/wtmp $IONICE chmod 1777 /var/log/wtmp +# others: + $IONICE mkdir -p /var/lib/polkit-1 \ + /var/lib/udisks From 21c3f01b4d37dea00bb3fffed178afb7a80a8f03 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 02:30:37 +0200 Subject: [PATCH 046/171] udev: - remove rule for probing filesystem (fixes hanging blkid) --- packages/sysutils/udev/config/60-filesystem-info.rules | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 packages/sysutils/udev/config/60-filesystem-info.rules diff --git a/packages/sysutils/udev/config/60-filesystem-info.rules b/packages/sysutils/udev/config/60-filesystem-info.rules deleted file mode 100644 index 2fbe75fb42..0000000000 --- a/packages/sysutils/udev/config/60-filesystem-info.rules +++ /dev/null @@ -1,3 +0,0 @@ -# probe filesystem metadata of disks -KERNEL!="sr*", IMPORT{program}="/sbin/blkid -o udev -p $tempnode" - From 06b4c51dfce2b4b987f321dcfee9fbb2d13a0175 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 02:34:39 +0200 Subject: [PATCH 047/171] projects/*/linux: - add audit support (for creating /proc/*/sessionid) --- projects/ION/linux/linux.i386.conf | 5 ++++- projects/ION/linux/linux.x86_64.conf | 5 ++++- projects/generic/linux/linux.i386.conf | 5 ++++- projects/intel/linux/linux.i386.conf | 5 ++++- projects/intel/linux/linux.x86_64.conf | 5 ++++- 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/projects/ION/linux/linux.i386.conf b/projects/ION/linux/linux.i386.conf index 78339d624c..2de2cd5473 100644 --- a/projects/ION/linux/linux.i386.conf +++ b/projects/ION/linux/linux.i386.conf @@ -78,7 +78,9 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y CONFIG_BSD_PROCESS_ACCT=y # CONFIG_BSD_PROCESS_ACCT_V3 is not set # CONFIG_TASKSTATS is not set -# CONFIG_AUDIT is not set +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_TREE=y # # RCU Subsystem @@ -2027,6 +2029,7 @@ CONFIG_CRC_ITU_T=y CONFIG_CRC32=y # CONFIG_CRC7 is not set CONFIG_LIBCRC32C=y +CONFIG_AUDIT_GENERIC=y CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y diff --git a/projects/ION/linux/linux.x86_64.conf b/projects/ION/linux/linux.x86_64.conf index eba7cf1f50..319efaa6aa 100644 --- a/projects/ION/linux/linux.x86_64.conf +++ b/projects/ION/linux/linux.x86_64.conf @@ -79,7 +79,9 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y CONFIG_BSD_PROCESS_ACCT=y # CONFIG_BSD_PROCESS_ACCT_V3 is not set # CONFIG_TASKSTATS is not set -# CONFIG_AUDIT is not set +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_TREE=y # # RCU Subsystem @@ -1981,6 +1983,7 @@ CONFIG_CRC_ITU_T=y CONFIG_CRC32=y # CONFIG_CRC7 is not set CONFIG_LIBCRC32C=y +CONFIG_AUDIT_GENERIC=y CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y diff --git a/projects/generic/linux/linux.i386.conf b/projects/generic/linux/linux.i386.conf index 35e38658b7..baccfd3516 100644 --- a/projects/generic/linux/linux.i386.conf +++ b/projects/generic/linux/linux.i386.conf @@ -78,7 +78,9 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y CONFIG_BSD_PROCESS_ACCT=y # CONFIG_BSD_PROCESS_ACCT_V3 is not set # CONFIG_TASKSTATS is not set -# CONFIG_AUDIT is not set +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_TREE=y # # RCU Subsystem @@ -2345,6 +2347,7 @@ CONFIG_CRC_ITU_T=y CONFIG_CRC32=y # CONFIG_CRC7 is not set CONFIG_LIBCRC32C=y +CONFIG_AUDIT_GENERIC=y CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y diff --git a/projects/intel/linux/linux.i386.conf b/projects/intel/linux/linux.i386.conf index 358ea32645..7249944643 100644 --- a/projects/intel/linux/linux.i386.conf +++ b/projects/intel/linux/linux.i386.conf @@ -78,7 +78,9 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y CONFIG_BSD_PROCESS_ACCT=y # CONFIG_BSD_PROCESS_ACCT_V3 is not set # CONFIG_TASKSTATS is not set -# CONFIG_AUDIT is not set +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_TREE=y # # RCU Subsystem @@ -2301,6 +2303,7 @@ CONFIG_CRC_ITU_T=y CONFIG_CRC32=y # CONFIG_CRC7 is not set CONFIG_LIBCRC32C=y +CONFIG_AUDIT_GENERIC=y CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y diff --git a/projects/intel/linux/linux.x86_64.conf b/projects/intel/linux/linux.x86_64.conf index 71c54359b2..8655e4fda2 100644 --- a/projects/intel/linux/linux.x86_64.conf +++ b/projects/intel/linux/linux.x86_64.conf @@ -79,7 +79,9 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y CONFIG_BSD_PROCESS_ACCT=y # CONFIG_BSD_PROCESS_ACCT_V3 is not set # CONFIG_TASKSTATS is not set -# CONFIG_AUDIT is not set +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_TREE=y # # RCU Subsystem @@ -2258,6 +2260,7 @@ CONFIG_CRC_ITU_T=y CONFIG_CRC32=y # CONFIG_CRC7 is not set CONFIG_LIBCRC32C=y +CONFIG_AUDIT_GENERIC=y CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y From cbec269922f39cd4844d6ba1ef1134d36aa50e2e Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 17 Apr 2010 08:10:24 +0200 Subject: [PATCH 048/171] Linux-PAM: - dont build doc and examples --- packages/security/Linux-PAM/build | 1 + .../Linux-PAM/patches/pam-dont_build_doc.diff | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 packages/security/Linux-PAM/patches/pam-dont_build_doc.diff diff --git a/packages/security/Linux-PAM/build b/packages/security/Linux-PAM/build index 661bdbdba9..569de1796c 100755 --- a/packages/security/Linux-PAM/build +++ b/packages/security/Linux-PAM/build @@ -20,6 +20,7 @@ cd $PKG_BUILD --disable-cracklib \ --disable-audit \ --enable-db=no \ + --disable-regenerate-docu \ make diff --git a/packages/security/Linux-PAM/patches/pam-dont_build_doc.diff b/packages/security/Linux-PAM/patches/pam-dont_build_doc.diff new file mode 100644 index 0000000000..95306019bd --- /dev/null +++ b/packages/security/Linux-PAM/patches/pam-dont_build_doc.diff @@ -0,0 +1,41 @@ +Index: Linux-PAM-1.0.2/Makefile.in +=================================================================== +--- Linux-PAM-1.0.2.orig/Makefile.in 2008-08-29 01:14:12.000000000 -0700 ++++ Linux-PAM-1.0.2/Makefile.in 2009-09-04 01:06:22.571466501 -0700 +@@ -71,8 +71,7 @@ + distclean-recursive maintainer-clean-recursive + ETAGS = etags + CTAGS = ctags +-DIST_SUBDIRS = libpam tests libpamc libpam_misc modules po conf doc \ +- examples xtests ++DIST_SUBDIRS = libpam libpamc libpam_misc modules po conf + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + distdir = $(PACKAGE)-$(VERSION) + top_distdir = $(distdir) +@@ -244,8 +243,8 @@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + AUTOMAKE_OPTIONS = 1.9 gnu dist-bzip2 check-news +-@STATIC_MODULES_FALSE@SUBDIRS = libpam tests libpamc libpam_misc modules po conf doc examples xtests +-@STATIC_MODULES_TRUE@SUBDIRS = modules libpam libpamc libpam_misc tests po conf doc examples xtests ++@STATIC_MODULES_FALSE@SUBDIRS = libpam libpamc libpam_misc modules po conf ++@STATIC_MODULES_TRUE@SUBDIRS = modules libpam libpamc libpam_misc po conf + CLEANFILES = *~ + M4_FILES = m4/codeset.m4 m4/gettext.m4 m4/glibc21.m4 m4/glibc2.m4 \ + m4/iconv.m4 m4/intdiv0.m4 m4/intmax.m4 m4/inttypes_h.m4 \ +Index: Linux-PAM-1.0.2/modules/pam_access/pam_access.c +=================================================================== +Index: Linux-PAM-1.0.2/modules/pam_unix/Makefile.am +=================================================================== +Index: Linux-PAM-1.0.2/modules/pam_unix/Makefile.in +=================================================================== +Index: Linux-PAM-1.0.2/modules/pam_unix/pam_unix_passwd.c +=================================================================== +Index: Linux-PAM-1.0.2/modules/pam_unix/support.c +=================================================================== +Index: Linux-PAM-1.0.2/modules/pam_unix/yppasswd.h +=================================================================== +Index: Linux-PAM-1.0.2/modules/pam_unix/yppasswd_xdr.c +=================================================================== +Index: Linux-PAM-1.0.2/po/POTFILES.in +=================================================================== From 8643a636e9502e65c02d92aff0768ec95d20e932 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 18 Apr 2010 10:20:39 +0200 Subject: [PATCH 049/171] mysql: - update to mysql-5.1.45 --- packages/databases/mysql/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/databases/mysql/url b/packages/databases/mysql/url index 241bd2933f..d8ce3308e7 100644 --- a/packages/databases/mysql/url +++ b/packages/databases/mysql/url @@ -1 +1 @@ -ftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.1/mysql-5.1.41.tar.gz +ftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.1/mysql-5.1.45.tar.gz From 7af79853ace0465df182734efe4e07b43e932eb6 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 18 Apr 2010 10:22:30 +0200 Subject: [PATCH 050/171] samba: - update to samba-3.5.2 --- ... => 010_samba-3.5.2-crosscompile-0.1.diff} | 36795 +++++++++------- packages/network/samba/url | 2 +- 2 files changed, 20369 insertions(+), 16428 deletions(-) rename packages/network/samba/patches/{010_samba-3.4.5-crosscompile-0.1.diff => 010_samba-3.5.2-crosscompile-0.1.diff} (94%) diff --git a/packages/network/samba/patches/010_samba-3.4.5-crosscompile-0.1.diff b/packages/network/samba/patches/010_samba-3.5.2-crosscompile-0.1.diff similarity index 94% rename from packages/network/samba/patches/010_samba-3.4.5-crosscompile-0.1.diff rename to packages/network/samba/patches/010_samba-3.5.2-crosscompile-0.1.diff index ce5b76e9f4..b834a54b1a 100644 --- a/packages/network/samba/patches/010_samba-3.4.5-crosscompile-0.1.diff +++ b/packages/network/samba/patches/010_samba-3.5.2-crosscompile-0.1.diff @@ -1,6 +1,6 @@ -diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ---- samba-3.4.5/source3/configure 2010-01-18 13:04:22.000000000 +0100 -+++ samba-3.4.5.patch/source3/configure 2010-02-18 09:20:13.176598606 +0100 +diff -Naur samba-3.5.2/source3/configure samba-3.5.2.patch/source3/configure +--- samba-3.5.2/source3/configure 2010-04-06 09:43:16.000000000 +0200 ++++ samba-3.5.2.patch/source3/configure 2010-04-18 00:12:20.015397879 +0200 @@ -1,20 +1,24 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. @@ -810,7 +810,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ac_unique_file="include/includes.h" ac_default_prefix=/usr/local/samba -@@ -945,6 +902,7 @@ +@@ -957,6 +914,7 @@ program_transform_name prefix exec_prefix @@ -818,7 +818,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION -@@ -1164,8 +1122,7 @@ +@@ -1183,8 +1141,7 @@ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && @@ -828,7 +828,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in -@@ -1191,8 +1148,7 @@ +@@ -1210,8 +1167,7 @@ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && @@ -838,7 +838,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in -@@ -1396,8 +1352,7 @@ +@@ -1415,8 +1371,7 @@ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && @@ -848,7 +848,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in -@@ -1413,8 +1368,7 @@ +@@ -1432,8 +1387,7 @@ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && @@ -858,7 +858,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in -@@ -1444,17 +1398,17 @@ +@@ -1463,17 +1417,17 @@ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; @@ -882,7 +882,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure eval $ac_envvar=\$ac_optarg export $ac_envvar ;; -@@ -1471,15 +1425,13 @@ +@@ -1490,15 +1444,13 @@ if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` @@ -900,7 +900,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi -@@ -1502,8 +1454,7 @@ +@@ -1521,8 +1473,7 @@ [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac @@ -910,7 +910,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure done # There might be people who depend on the old broken behavior: `$host' -@@ -1533,11 +1484,9 @@ +@@ -1552,11 +1503,9 @@ ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || @@ -924,7 +924,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure # Find the source files, if location was not specified. -@@ -1576,13 +1525,11 @@ +@@ -1595,13 +1544,11 @@ fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." @@ -940,7 +940,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then -@@ -1820,7 +1767,7 @@ +@@ -1848,7 +1795,7 @@ LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l @@ -949,7 +949,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure you have headers in a nonstandard directory CPP C preprocessor PKG_CONFIG path to pkg-config utility -@@ -1904,178 +1851,863 @@ +@@ -1935,178 +1882,863 @@ if $ac_init_version; then cat <<\_ACEOF Samba configure 3 @@ -1959,7 +1959,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" -@@ -2119,39 +2751,41 @@ +@@ -2150,39 +2782,41 @@ exit $exit_status ' 0 for ac_signal in 1 2 13 15; do @@ -2006,7 +2006,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. -@@ -2169,8 +2803,8 @@ +@@ -2200,8 +2834,8 @@ for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue @@ -2017,7 +2017,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" -@@ -2178,10 +2812,10 @@ +@@ -2209,10 +2843,10 @@ done if test -r "$cache_file"; then @@ -2032,7 +2032,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; -@@ -2189,7 +2823,7 @@ +@@ -2220,7 +2854,7 @@ esac fi else @@ -2041,7 +2041,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi -@@ -2204,11 +2838,11 @@ +@@ -2235,11 +2869,11 @@ eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) @@ -2055,7 +2055,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; -@@ -2218,17 +2852,17 @@ +@@ -2249,17 +2883,17 @@ ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then @@ -2077,7 +2077,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac -@@ -2240,43 +2874,20 @@ +@@ -2271,43 +2905,20 @@ esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. @@ -2128,7 +2128,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ac_ext=c ac_cpp='$CPP $CPPFLAGS' -@@ -2290,14 +2901,12 @@ +@@ -2321,14 +2932,12 @@ ac_config_headers="$ac_config_headers include/config.h" @@ -2145,7 +2145,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: \$PATH contains /usr/ucb - build errors may follow" >&2;} ;; esac -@@ -2329,24 +2938,16 @@ +@@ -2360,24 +2969,16 @@ ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do @@ -2178,7 +2178,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi # These three variables are undocumented and unsupported, -@@ -2358,57 +2959,29 @@ +@@ -2389,57 +2990,29 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. @@ -2199,7 +2199,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -$as_echo "$as_me: error: cannot find libreplace in $libreplacepaths" >&2;} - { (exit 1); exit 1; }; } -fi --LIBREPLACEOBJ="replace.o" +-LIBREPLACEOBJ="$libreplacedir/replace.o" - - # Make sure we can run config.sub. @@ -2243,7 +2243,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' -@@ -2424,28 +2997,24 @@ +@@ -2455,28 +3028,24 @@ case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac @@ -2277,7 +2277,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' -@@ -2461,28 +3030,24 @@ +@@ -2492,28 +3061,24 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac @@ -2311,7 +2311,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' -@@ -2505,6 +3070,27 @@ +@@ -2536,6 +3101,27 @@ NONENONEs,x,x, && program_prefix=${target_alias}- @@ -2329,7 +2329,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +if test x"$libreplacedir" = "x"; then + as_fn_error "cannot find libreplace in $libreplacepaths" "$LINENO" 5 +fi -+LIBREPLACEOBJ="replace.o" ++LIBREPLACEOBJ="$libreplacedir/replace.o" + + + @@ -2339,7 +2339,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure echo "LIBREPLACE_LOCATION_CHECKS: END" -@@ -2533,7 +3119,7 @@ +@@ -2564,7 +3150,7 @@ # Check whether --with-fhs was given. @@ -2348,7 +2348,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_fhs; case "$withval" in yes) lockdir="\${VARDIR}/lib/samba" -@@ -2550,9 +3136,7 @@ +@@ -2581,9 +3167,7 @@ cachedir="\${VARDIR}/lib/samba" ncalrpcdir="\${VARDIR}/ncalrpc" @@ -2359,7 +2359,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ;; esac -@@ -2563,13 +3147,13 @@ +@@ -2594,13 +3178,13 @@ # set private directory location # Check whether --with-privatedir was given. @@ -2375,7 +2375,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-privatedir called without argument - will use default" >&2;} ;; * ) -@@ -2583,13 +3167,13 @@ +@@ -2614,13 +3198,13 @@ # set root sbin directory location # Check whether --with-rootsbindir was given. @@ -2391,7 +2391,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-rootsbindir called without argument - will use default" >&2;} ;; * ) -@@ -2603,13 +3187,13 @@ +@@ -2634,13 +3218,13 @@ # set lock directory location # Check whether --with-lockdir was given. @@ -2407,7 +2407,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-lockdir called without argument - will use default" >&2;} ;; * ) -@@ -2623,13 +3207,13 @@ +@@ -2654,13 +3238,13 @@ # set state directory location # Check whether --with-statedir was given. @@ -2423,7 +2423,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-statedir called without argument - will use default" >&2;} ;; * ) -@@ -2643,13 +3227,13 @@ +@@ -2674,13 +3258,13 @@ # set cache directory location # Check whether --with-cachedir was given. @@ -2439,7 +2439,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-cachedir called without argument - will use default" >&2;} ;; * ) -@@ -2663,13 +3247,13 @@ +@@ -2694,13 +3278,13 @@ # set pid directory location # Check whether --with-piddir was given. @@ -2455,13 +2455,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-piddir called without argument - will use default" >&2;} ;; * ) -@@ -2683,13 +3267,13 @@ +@@ -2714,13 +3298,13 @@ # set ncalrpc directory location - # Check whether --with-ncalprcdir was given. --if test "${with_ncalprcdir+set}" = set; then -+if test "${with_ncalprcdir+set}" = set; then : - withval=$with_ncalprcdir; case "$withval" in + # Check whether --with-ncalrpcdir was given. +-if test "${with_ncalrpcdir+set}" = set; then ++if test "${with_ncalrpcdir+set}" = set; then : + withval=$with_ncalrpcdir; case "$withval" in yes|no) # # Just in case anybody calls it without argument @@ -2471,7 +2471,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-ncalrpcdir called without argument - will use default" >&2;} ;; * ) -@@ -2703,13 +3287,13 @@ +@@ -2734,13 +3318,13 @@ # set SWAT directory location # Check whether --with-swatdir was given. @@ -2487,7 +2487,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-swatdir called without argument - will use default" >&2;} ;; * ) -@@ -2723,13 +3307,13 @@ +@@ -2754,13 +3338,13 @@ # set configuration directory location # Check whether --with-configdir was given. @@ -2503,7 +2503,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-configdir called without argument - will use default" >&2;} ;; * ) -@@ -2743,13 +3327,13 @@ +@@ -2774,13 +3358,13 @@ # set log directory location # Check whether --with-logfilebase was given. @@ -2519,7 +2519,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-logfilebase called without argument - will use default" >&2;} ;; * ) -@@ -2764,13 +3348,13 @@ +@@ -2795,13 +3379,13 @@ # set shared modules (internal lib) directory location # Check whether --with-modulesdir was given. @@ -2535,7 +2535,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-modulesdir without argument - will use default" >&2;} ;; * ) -@@ -2784,13 +3368,13 @@ +@@ -2815,13 +3399,13 @@ # set PAM modules directory location # Check whether --with-pammodulesdir was given. @@ -2551,7 +2551,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-pammodulesdir called without argument - will use default" >&2;} ;; * ) -@@ -2804,13 +3388,13 @@ +@@ -2835,13 +3419,13 @@ # set man directory location # Check whether --with-mandir was given. @@ -2567,7 +2567,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-mandir without argument - will use default" >&2;} ;; * ) -@@ -2824,13 +3408,13 @@ +@@ -2855,13 +3439,13 @@ # set locale directory location # Check whether --with-localedir was given. @@ -2583,7 +2583,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-localedir called without argument - will use default" >&2;} ;; *) -@@ -2864,10 +3448,10 @@ +@@ -2875,13 +3459,13 @@ + # set codepage directory location + + # Check whether --with-codepagedir was given. +-if test "${with_codepagedir+set}" = set; then ++if test "${with_codepagedir+set}" = set; then : + withval=$with_codepagedir; case "$withval" in + yes|no) + # + # Just in case anybody calls it without argument + # +- { $as_echo "$as_me:$LINENO: WARNING: --with-codepagedir called without argument - will use default" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-codepagedir called without argument - will use default" >&5 + $as_echo "$as_me: WARNING: --with-codepagedir called without argument - will use default" >&2;} + ;; + * ) +@@ -2915,10 +3499,10 @@ # Check whether --with-selftest-prefix was given. @@ -2596,7 +2612,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-selftest-prefix called without argument - will use default" >&2;} ;; * ) -@@ -2884,10 +3468,10 @@ +@@ -2935,10 +3519,10 @@ # Check whether --with-selftest-shrdir was given. @@ -2609,7 +2625,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-selftest-shrdir called without argument - will use default" >&2;} ;; * ) -@@ -2906,19 +3490,15 @@ +@@ -2957,19 +3541,15 @@ # Check whether --with-smbtorture4_path was given. @@ -2632,7 +2648,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi smbtorture4_option="-t $withval" ;; -@@ -2933,19 +3513,15 @@ +@@ -2984,19 +3564,15 @@ # Check whether --with-selftest_custom_conf was given. @@ -2655,7 +2671,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi selftest_custom_conf="-c $withval" ;; -@@ -2958,7 +3534,7 @@ +@@ -3009,7 +3585,7 @@ ## so that we don't mix -O and -g debug=no # Check whether --enable-debug was given. @@ -2664,7 +2680,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure enableval=$enable_debug; if eval "test x$enable_debug = xyes"; then debug=yes fi -@@ -2968,7 +3544,7 @@ +@@ -3019,7 +3595,7 @@ developer=no # Check whether --enable-developer was given. @@ -2673,7 +2689,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure enableval=$enable_developer; if eval "test x$enable_developer = xyes"; then debug=yes developer=yes -@@ -2978,7 +3554,7 @@ +@@ -3029,7 +3605,7 @@ krb5developer=no # Check whether --enable-krb5developer was given. @@ -2682,7 +2698,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure enableval=$enable_krb5developer; if eval "test x$enable_krb5developer = xyes"; then debug=yes developer=yes -@@ -2989,7 +3565,7 @@ +@@ -3040,7 +3616,7 @@ picky_developer=no # Check whether --enable-picky-developer was given. @@ -2691,7 +2707,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure enableval=$enable_picky_developer; if eval "test x$enable_picky_developer = xyes"; then debug=yes developer=yes -@@ -3000,7 +3576,7 @@ +@@ -3051,7 +3627,7 @@ # Check whether --with-cfenc was given. @@ -2700,7 +2716,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_cfenc; # May be in source $withval/CoreFoundation/StringEncodings.subproj. # Should have been in framework $withval/CoreFoundation.framework/Headers. -@@ -3097,9 +3673,9 @@ +@@ -3148,9 +3724,9 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 @@ -2712,7 +2728,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else if test -n "$CC"; then -@@ -3110,24 +3686,24 @@ +@@ -3161,24 +3737,24 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -2742,7 +2758,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -3137,9 +3713,9 @@ +@@ -3188,9 +3764,9 @@ ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 @@ -2754,7 +2770,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then -@@ -3150,24 +3726,24 @@ +@@ -3201,24 +3777,24 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -2784,7 +2800,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -3176,7 +3752,7 @@ +@@ -3227,7 +3803,7 @@ else case $cross_compiling:$ac_tool_warned in yes:) @@ -2793,7 +2809,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac -@@ -3190,9 +3766,9 @@ +@@ -3241,9 +3817,9 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 @@ -2805,7 +2821,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else if test -n "$CC"; then -@@ -3203,24 +3779,24 @@ +@@ -3254,24 +3830,24 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -2835,7 +2851,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -3230,9 +3806,9 @@ +@@ -3281,9 +3857,9 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 @@ -2847,7 +2863,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else if test -n "$CC"; then -@@ -3244,18 +3820,18 @@ +@@ -3295,18 +3871,18 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -2869,7 +2885,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS if test $ac_prog_rejected = yes; then -@@ -3274,10 +3850,10 @@ +@@ -3325,10 +3901,10 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -2882,7 +2898,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -3289,9 +3865,9 @@ +@@ -3340,9 +3916,9 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 @@ -2894,7 +2910,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else if test -n "$CC"; then -@@ -3302,24 +3878,24 @@ +@@ -3353,24 +3929,24 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -2924,7 +2940,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -3333,9 +3909,9 @@ +@@ -3384,9 +3960,9 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -2936,7 +2952,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then -@@ -3346,24 +3922,24 @@ +@@ -3397,24 +3973,24 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -2966,7 +2982,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -3376,7 +3952,7 @@ +@@ -3427,7 +4003,7 @@ else case $cross_compiling:$ac_tool_warned in yes:) @@ -2975,7 +2991,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac -@@ -3387,57 +3963,37 @@ +@@ -3438,57 +4014,37 @@ fi @@ -3053,7 +3069,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ int -@@ -3453,8 +4009,8 @@ +@@ -3504,8 +4060,8 @@ # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. @@ -3064,7 +3080,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: -@@ -3470,17 +4026,17 @@ +@@ -3521,17 +4077,17 @@ done rm -f $ac_rmfiles @@ -3087,7 +3103,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, -@@ -3497,7 +4053,7 @@ +@@ -3548,7 +4104,7 @@ # certainly right. break;; *.* ) @@ -3096,7 +3112,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi -@@ -3516,84 +4072,42 @@ +@@ -3567,84 +4123,42 @@ else ac_file='' fi @@ -3202,7 +3218,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with -@@ -3608,32 +4122,83 @@ +@@ -3659,32 +4173,83 @@ esac done else @@ -3302,7 +3318,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ int -@@ -3645,17 +4210,17 @@ +@@ -3696,17 +4261,17 @@ } _ACEOF rm -f conftest.o conftest.obj @@ -3325,7 +3341,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in -@@ -3668,31 +4233,23 @@ +@@ -3719,31 +4284,23 @@ $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -3364,7 +3380,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ int -@@ -3706,37 +4263,16 @@ +@@ -3757,37 +4314,16 @@ return 0; } _ACEOF @@ -3405,7 +3421,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes -@@ -3745,20 +4281,16 @@ +@@ -3796,20 +4332,16 @@ fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS @@ -3429,7 +3445,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ int -@@ -3769,35 +4301,11 @@ +@@ -3820,35 +4352,11 @@ return 0; } _ACEOF @@ -3468,7 +3484,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ int -@@ -3808,36 +4316,12 @@ +@@ -3859,36 +4367,12 @@ return 0; } _ACEOF @@ -3509,7 +3525,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ int -@@ -3848,42 +4332,17 @@ +@@ -3899,42 +4383,17 @@ return 0; } _ACEOF @@ -3554,7 +3570,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS -@@ -3900,18 +4359,14 @@ +@@ -3951,18 +4410,14 @@ CFLAGS= fi fi @@ -3576,7 +3592,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -3968,32 +4423,9 @@ +@@ -4019,32 +4474,9 @@ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" @@ -3610,7 +3626,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done -@@ -4004,17 +4436,19 @@ +@@ -4055,17 +4487,19 @@ # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) @@ -3633,7 +3649,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ac_ext=c ac_cpp='$CPP $CPPFLAGS' -@@ -4025,18 +4459,14 @@ +@@ -4076,18 +4510,14 @@ CFLAGS=$savedCFLAGS if test x"$GCC" != x"yes" ; then @@ -3655,7 +3671,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -4178,32 +4608,9 @@ +@@ -4229,32 +4659,9 @@ for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99 do CC="$ac_save_CC $ac_arg" @@ -3689,7 +3705,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c99" != "xno" && break done -@@ -4214,26 +4621,28 @@ +@@ -4265,26 +4672,28 @@ # AC_CACHE_VAL case "x$ac_cv_prog_cc_c99" in x) @@ -3723,7 +3739,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "${GCC_VERSION}" >&6; } fi -@@ -4242,14 +4651,14 @@ +@@ -4293,14 +4702,14 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -3740,7 +3756,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded -@@ -4264,11 +4673,7 @@ +@@ -4315,11 +4724,7 @@ # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. @@ -3753,7 +3769,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #ifdef __STDC__ # include -@@ -4277,78 +4682,34 @@ +@@ -4328,78 +4733,34 @@ #endif Syntax error _ACEOF @@ -3837,7 +3853,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure break fi -@@ -4360,7 +4721,7 @@ +@@ -4411,7 +4772,7 @@ else ac_cv_prog_CPP=$CPP fi @@ -3846,7 +3862,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes -@@ -4371,11 +4732,7 @@ +@@ -4422,11 +4783,7 @@ # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. @@ -3859,7 +3875,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #ifdef __STDC__ # include -@@ -4384,87 +4741,40 @@ +@@ -4435,87 +4792,40 @@ #endif Syntax error _ACEOF @@ -3956,7 +3972,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi ac_ext=c -@@ -4474,9 +4784,9 @@ +@@ -4525,9 +4835,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -3968,7 +3984,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then -@@ -4487,7 +4797,7 @@ +@@ -4538,7 +4848,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -3977,7 +3993,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -@@ -4507,7 +4817,7 @@ +@@ -4558,7 +4868,7 @@ $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break @@ -3986,7 +4002,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" -@@ -4522,26 +4832,24 @@ +@@ -4573,26 +4883,24 @@ $ac_path_GREP_found && break 3 done done @@ -4018,7 +4034,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 -@@ -4555,7 +4863,7 @@ +@@ -4606,7 +4914,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -4027,7 +4043,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -@@ -4575,7 +4883,7 @@ +@@ -4626,7 +4934,7 @@ $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break @@ -4036,7 +4052,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" -@@ -4590,12 +4898,10 @@ +@@ -4641,12 +4949,10 @@ $ac_path_EGREP_found && break 3 done done @@ -4051,7 +4067,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi else ac_cv_path_EGREP=$EGREP -@@ -4603,21 +4909,17 @@ +@@ -4654,21 +4960,17 @@ fi fi @@ -4077,7 +4093,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -4632,48 +4934,23 @@ +@@ -4683,48 +4985,23 @@ return 0; } _ACEOF @@ -4131,7 +4147,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else ac_cv_header_stdc=no fi -@@ -4683,18 +4960,14 @@ +@@ -4734,18 +5011,14 @@ if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. @@ -4153,7 +4169,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else ac_cv_header_stdc=no fi -@@ -4704,14 +4977,10 @@ +@@ -4755,14 +5028,10 @@ if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. @@ -4170,7 +4186,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -4738,118 +5007,34 @@ +@@ -4789,118 +5058,34 @@ return 0; } _ACEOF @@ -4302,7 +4318,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -4860,139 +5045,8 @@ +@@ -4911,139 +5096,8 @@ @@ -4444,7 +4460,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure MINIX=yes else MINIX= -@@ -5001,34 +5055,23 @@ +@@ -5052,34 +5106,23 @@ if test "$MINIX" = yes; then @@ -4485,7 +4501,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ # define __EXTENSIONS__ 1 -@@ -5041,71 +5084,35 @@ +@@ -5092,71 +5135,35 @@ return 0; } _ACEOF @@ -4568,7 +4584,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler -@@ -5113,46 +5120,34 @@ +@@ -5164,46 +5171,34 @@ typedef int dummy; _ACEOF @@ -4637,7 +4653,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -5170,30 +5165,9 @@ +@@ -5221,30 +5216,9 @@ return 0; } _ACEOF @@ -4670,7 +4686,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -5209,49 +5183,18 @@ +@@ -5260,49 +5234,18 @@ return 0; } _ACEOF @@ -4723,7 +4739,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -5266,30 +5209,9 @@ +@@ -5317,30 +5260,9 @@ return 0; } _ACEOF @@ -4756,7 +4772,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -5304,51 +5226,20 @@ +@@ -5355,51 +5277,20 @@ return 0; } _ACEOF @@ -4812,7 +4828,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; -@@ -5374,24 +5265,7 @@ +@@ -5425,24 +5316,7 @@ return 0; } _ACEOF @@ -4838,7 +4854,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi -@@ -5403,20 +5277,10 @@ +@@ -5454,20 +5328,10 @@ ac_cv_c_bigendian=unknown fi fi @@ -4860,7 +4876,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ $ac_includes_default int -@@ -5436,81 +5300,43 @@ +@@ -5487,81 +5351,43 @@ return 0; } _ACEOF @@ -4954,7 +4970,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; -@@ -5519,41 +5345,17 @@ +@@ -5570,41 +5396,17 @@ #endif _ACEOF @@ -4998,7 +5014,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure case $ac_cv_c_inline in inline | yes) ;; *) -@@ -5573,14 +5375,10 @@ +@@ -5624,14 +5426,10 @@ saved_CFLAGS="$CFLAGS"; c99_init=no if test x"$c99_init" = x"no"; then @@ -5015,7 +5031,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -5593,45 +5391,20 @@ +@@ -5644,45 +5442,20 @@ return 0; } _ACEOF @@ -5066,7 +5082,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -5644,45 +5417,20 @@ +@@ -5695,45 +5468,20 @@ return 0; } _ACEOF @@ -5117,7 +5133,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -5695,45 +5443,20 @@ +@@ -5746,45 +5494,20 @@ return 0; } _ACEOF @@ -5168,7 +5184,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -5746,45 +5469,20 @@ +@@ -5797,45 +5520,20 @@ return 0; } _ACEOF @@ -5219,7 +5235,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -5797,34 +5495,13 @@ +@@ -5848,34 +5546,13 @@ return 0; } _ACEOF @@ -5257,7 +5273,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -@@ -5843,7 +5520,7 @@ +@@ -5894,7 +5571,7 @@ else CFLAGS="$saved_CFLAGS" saved_CFLAGS="" @@ -5266,7 +5282,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: c99 structure initializer are not supported" >&2;} fi -@@ -5862,10 +5539,10 @@ +@@ -5913,10 +5590,10 @@ # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. @@ -5279,7 +5295,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -@@ -5873,11 +5550,11 @@ +@@ -5924,11 +5601,11 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -5295,7 +5311,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. -@@ -5914,7 +5591,7 @@ +@@ -5965,7 +5642,7 @@ ;; esac @@ -5304,7 +5320,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir -@@ -5930,7 +5607,7 @@ +@@ -5981,7 +5658,7 @@ INSTALL=$ac_install_sh fi fi @@ -5313,7 +5329,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. -@@ -5942,17 +5619,13 @@ +@@ -5993,17 +5670,13 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' @@ -5334,7 +5350,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -5977,54 +5650,27 @@ +@@ -6028,54 +5701,27 @@ ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi @@ -5397,7 +5413,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi -@@ -6032,7 +5678,6 @@ +@@ -6083,7 +5729,6 @@ @@ -5405,7 +5421,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<\EOF #ifndef _XOPEN_SOURCE_EXTENDED #define _XOPEN_SOURCE_EXTENDED 1 -@@ -6041,15 +5686,15 @@ +@@ -6092,15 +5737,15 @@ # Check whether --enable-largefile was given. @@ -5424,7 +5440,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else ac_cv_sys_largefile_CC=no -@@ -6058,11 +5703,7 @@ +@@ -6109,11 +5754,7 @@ while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. @@ -5437,7 +5453,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. -@@ -6081,60 +5722,14 @@ +@@ -6132,60 +5773,14 @@ return 0; } _ACEOF @@ -5500,7 +5516,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure rm -f core conftest.err conftest.$ac_objext break done -@@ -6142,23 +5737,19 @@ +@@ -6193,23 +5788,19 @@ rm -f conftest.$ac_ext fi fi @@ -5528,7 +5544,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. -@@ -6177,38 +5768,11 @@ +@@ -6228,38 +5819,11 @@ return 0; } _ACEOF @@ -5569,7 +5585,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include -@@ -6228,38 +5792,15 @@ +@@ -6279,38 +5843,15 @@ return 0; } _ACEOF @@ -5610,7 +5626,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; -@@ -6271,17 +5812,13 @@ +@@ -6322,17 +5863,13 @@ esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then @@ -5631,7 +5647,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. -@@ -6300,38 +5837,11 @@ +@@ -6351,38 +5888,11 @@ return 0; } _ACEOF @@ -5672,7 +5688,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #define _LARGE_FILES 1 #include -@@ -6351,38 +5861,15 @@ +@@ -6402,38 +5912,15 @@ return 0; } _ACEOF @@ -5713,7 +5729,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; -@@ -6406,31 +5893,25 @@ +@@ -6457,31 +5944,25 @@ *hpux*) # mmap on HPUX is completely broken... @@ -5750,7 +5766,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure if test "${GCC}" != "yes"; then ## for funky AIX compiler using strncpy() -@@ -6442,7 +5923,6 @@ +@@ -6493,7 +5974,6 @@ @@ -5758,7 +5774,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<\EOF #ifndef _XOPEN_SOURCE #define _XOPEN_SOURCE 600 -@@ -6452,7 +5932,6 @@ +@@ -6503,7 +5983,6 @@ @@ -5766,7 +5782,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<\EOF #ifndef _OSF_SOURCE #define _OSF_SOURCE 1 -@@ -6469,9 +5948,7 @@ +@@ -6520,9 +5999,7 @@ *) CFLAGS="$CFLAGS -D_POSIX_C_SOURCE=200112L" @@ -5777,7 +5793,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ;; esac -@@ -6480,9 +5957,7 @@ +@@ -6531,9 +6008,7 @@ *) CFLAGS="$CFLAGS -D_SYSV" @@ -5788,7 +5804,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ;; esac -@@ -6491,978 +5966,385 @@ +@@ -6542,978 +6017,385 @@ @@ -7022,7 +7038,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF -@@ -7470,717 +6352,429 @@ +@@ -7521,30401 +6403,2005 @@ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. @@ -7187,7 +7203,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} --_ACEOF ++ ++cat >>confdefs.h <<_ACEOF ++#define SIZEOF_SSIZE_T $ac_cv_sizeof_ssize_t + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -7211,8 +7230,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ + ++ ++ ++ac_fn_c_check_type "$LINENO" "intptr_t" "ac_cv_type_intptr_t" "$ac_includes_default" ++if test "x$ac_cv_type_intptr_t" = x""yes; then : ++ +cat >>confdefs.h <<_ACEOF -+#define SIZEOF_SSIZE_T $ac_cv_sizeof_ssize_t ++#define HAVE_INTPTR_T 1 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF @@ -7228,14 +7252,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - return 0; -} + -+ -+ac_fn_c_check_type "$LINENO" "intptr_t" "ac_cv_type_intptr_t" "$ac_includes_default" -+if test "x$ac_cv_type_intptr_t" = x""yes; then : -+ -+else ++fi ++ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "$ac_includes_default" ++if test "x$ac_cv_type_uintptr_t" = x""yes; then : + +cat >>confdefs.h <<_ACEOF -+#define intptr_t long long ++#define HAVE_UINTPTR_T 1 _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" @@ -7256,13 +7278,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=$ac_mid; break -+ -+fi -+ -+ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "$ac_includes_default" -+if test "x$ac_cv_type_uintptr_t" = x""yes; then : -+ - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 @@ -7272,26 +7288,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - break - fi - ac_mid=`expr 2 '*' $ac_mid` -+cat >>confdefs.h <<_ACEOF -+#define uintptr_t unsigned long long -+_ACEOF + fi - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -- done +ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = x""yes; then : + - else ++cat >>confdefs.h <<_ACEOF ++#define HAVE_PTRDIFF_T 1 ++_ACEOF + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- done +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= -+cat >>confdefs.h <<_ACEOF -+#define ptrdiff_t unsigned long long -+_ACEOF -+ fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7375,16 +7387,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + libreplace_cv_immediate_structures=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_immediate_structures" >&5 -+$as_echo "$libreplace_cv_immediate_structures" >&6; } -+if test x"$libreplace_cv_immediate_structures" = x"yes"; then -+ -+$as_echo "#define HAVE_IMMEDIATE_STRUCTURES 1" >>confdefs.h - ac_lo=`expr '(' $ac_mid ')' + 1` fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_immediate_structures" >&5 ++$as_echo "$libreplace_cv_immediate_structures" >&6; } ++if test x"$libreplace_cv_immediate_structures" = x"yes"; then -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done @@ -7402,15 +7410,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ac_cv_sizeof_short=0 - fi ;; -esac -+ -+echo "LIBREPLACE_CC_CHECKS: END" -+ -+ -+ -+# Check whether --enable-external_libtalloc was given. -+if test "${enable_external_libtalloc+set}" = set; then : -+ enableval=$enable_external_libtalloc; enable_external_libtalloc=$enableval - else +-else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF @@ -7425,8 +7425,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -int -main () -{ -+ enable_external_libtalloc=auto -+fi ++$as_echo "#define HAVE_IMMEDIATE_STRUCTURES 1" >>confdefs.h - FILE *f = fopen ("conftest.val", "w"); - if (! f) @@ -7448,6 +7447,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; ++fi - ; - return 0; @@ -7476,41 +7476,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_short=`cat conftest.val` -+if test "x$enable_external_libtalloc" != xno -+then -+ -+ -+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then -+ if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : -+ $as_echo_n "(cached) " >&6 - else +-else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ case $PKG_CONFIG in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. -+ ;; -+ *) -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -( exit $ac_status ) -if test "$ac_cv_type_short" = yes; then @@ -7527,28 +7496,41 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+ ;; -+esac - fi +-fi -rm -f conftest.val -+PKG_CONFIG=$ac_cv_path_PKG_CONFIG -+if test -n "$PKG_CONFIG"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -+$as_echo "$PKG_CONFIG" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } ++echo "LIBREPLACE_CC_CHECKS: END" ++ ++ ++ ++ ++ ++ ++if test x"$teventdir" = "x"; then ++ teventdir="" ++ teventpaths="$srcdir $srcdir/../lib/tevent $srcdir/tevent $srcdir/../tevent" ++ for d in $teventpaths; do ++ if test -f "$d/tevent.c"; then ++ teventdir="$d" ++ break; ++ fi ++ done ++ if test x"$teventdir" = "x"; then ++ as_fn_error "cannot find libtevent source in $teventpaths" "$LINENO" 5 ++ fi fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 -$as_echo "$ac_cv_sizeof_short" >&6; } ++TEVENT_OBJ="" ++TEVENT_CFLAGS="" ++TEVENT_LIBS="" + -- -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SHORT $ac_cv_sizeof_short -_ACEOF -- -- + + -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. @@ -7556,16 +7538,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: checking size of long" >&5 -$as_echo_n "checking size of long... " >&6; } -if test "${ac_cv_sizeof_long+set}" = set; then -+fi -+if test -z "$ac_cv_path_PKG_CONFIG"; then -+ ac_pt_PKG_CONFIG=$PKG_CONFIG -+ # Extract the first word of "pkg-config", so it can be a program name with args. -+set dummy pkg-config; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then : - $as_echo_n "(cached) " >&6 - else +- $as_echo_n "(cached) " >&6 +-else - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF @@ -7580,25 +7554,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= 0)]; -test_array [0] = 0 -+ case $ac_pt_PKG_CONFIG in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. -+ ;; -+ *) -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS ++TEVENT_CFLAGS="-I$teventdir" - ; - return 0; @@ -7609,8 +7565,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -+ ;; - esac +-esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 @@ -7637,34 +7592,27 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)]; -test_array [0] = 0 -+fi -+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -+if test -n "$ac_pt_PKG_CONFIG"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -+$as_echo "$ac_pt_PKG_CONFIG" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi ++TEVENT_OBJ="tevent.o tevent_debug.o tevent_util.o" ++TEVENT_OBJ="$TEVENT_OBJ tevent_fd.o tevent_timed.o tevent_immediate.o tevent_signal.o" ++TEVENT_OBJ="$TEVENT_OBJ tevent_req.o tevent_wakeup.o tevent_queue.o" ++TEVENT_OBJ="$TEVENT_OBJ tevent_standard.o tevent_select.o" - ; - return 0; -} --_ACEOF ++for ac_header in sys/epoll.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "sys/epoll.h" "ac_cv_header_sys_epoll_h" "$ac_includes_default" ++if test "x$ac_cv_header_sys_epoll_h" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_SYS_EPOLL_H 1 + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -+ if test "x$ac_pt_PKG_CONFIG" = x; then -+ PKG_CONFIG="" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; - esac +-esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 @@ -7678,13 +7626,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid; break -+ PKG_CONFIG=$ac_pt_PKG_CONFIG -+ fi - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -+fi - ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then @@ -7693,29 +7637,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - fi - ac_mid=`expr 2 '*' $ac_mid + 1` fi -+if test -n "$PKG_CONFIG"; then -+ _pkg_min_version=0.9.0 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } -+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } -+ else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+ PKG_CONFIG="" -+ fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+fi ++done - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ --_ACEOF ++for ac_func in epoll_create ++do : ++ ac_fn_c_check_func "$LINENO" "epoll_create" "ac_cv_func_epoll_create" ++if test "x$ac_cv_func_epoll_create" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_EPOLL_CREATE 1 + _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ @@ -7725,9 +7663,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long))) < 0)]; -test_array [0] = 0 -+pkg_failed=no -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TALLOC" >&5 -+$as_echo_n "checking for TALLOC... " >&6; } - ; - return 0; @@ -7742,14 +7677,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 -+if test -n "$PKG_CONFIG"; then -+ if test -n "$TALLOC_CFLAGS"; then -+ pkg_cv_TALLOC_CFLAGS="$TALLOC_CFLAGS" -+ else -+ if test -n "$PKG_CONFIG" && \ -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"talloc >= 1.3.0\""; } >&5 -+ ($PKG_CONFIG --exists --print-errors "talloc >= 1.3.0") 2>&5 - ac_status=$? +- ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 @@ -7772,7 +7700,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= $ac_mid)]; -test_array [0] = 0 -- ++fi ++done + - ; - return 0; -} @@ -7786,24 +7716,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; then -+ pkg_cv_TALLOC_CFLAGS=`$PKG_CONFIG --cflags "talloc >= 1.3.0" 2>/dev/null` -+else -+ pkg_failed=yes -+fi -+ fi -+else -+ pkg_failed=untried -+fi -+if test -n "$PKG_CONFIG"; then -+ if test -n "$TALLOC_LIBS"; then -+ pkg_cv_TALLOC_LIBS="$TALLOC_LIBS" -+ else -+ if test -n "$PKG_CONFIG" && \ -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"talloc >= 1.3.0\""; } >&5 -+ ($PKG_CONFIG --exists --print-errors "talloc >= 1.3.0") 2>&5 - ac_status=$? +- ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 @@ -7813,31 +7726,31 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_lo=$ac_mid; break -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; then -+ pkg_cv_TALLOC_LIBS=`$PKG_CONFIG --libs "talloc >= 1.3.0" 2>/dev/null` - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++if test x"$ac_cv_header_sys_epoll_h" = x"yes" -a x"$ac_cv_func_epoll_create" = x"yes"; then ++ TEVENT_OBJ="$TEVENT_OBJ tevent_epoll.o" ++ ++$as_echo "#define HAVE_EPOLL 1" >>confdefs.h + - ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` -+ pkg_failed=yes fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -+ fi - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++if test x"$VERSIONSCRIPT" != "x"; then ++ EXPORTSFILE=tevent.exports + - ac_lo= ac_hi= -+ pkg_failed=untried fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7883,60 +7796,33 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid -+if test $pkg_failed = yes; then -+ -+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then -+ _pkg_short_errors_supported=yes - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ _pkg_short_errors_supported=no -+fi -+ if test $_pkg_short_errors_supported = yes; then -+ TALLOC_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "talloc >= 1.3.0"` -+ else -+ TALLOC_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "talloc >= 1.3.0"` -+ fi -+ # Put the nasty error message in config.log where it belongs -+ echo "$TALLOC_PKG_ERRORS" >&5 ++LIBTEVENT_OBJ0="" ++for obj in ${TEVENT_OBJ}; do ++ LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}" ++done + -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+ if test "x$enable_external_libtalloc" = xyes; then -+ as_fn_error "Unable to find libtalloc" "$LINENO" 5 -+ else -+ enable_external_libtalloc=no -+ fi -+ -+elif test $pkg_failed = untried; then -+ if test "x$enable_external_libtalloc" = xyes; then -+ as_fn_error "Unable to find libtalloc" "$LINENO" 5 -+ else -+ enable_external_libtalloc=no -+ fi ++LIBS="${LIBS} ${TEVENT_LIBS}" - ac_lo=`expr '(' $ac_mid ')' + 1` -+else -+ TALLOC_CFLAGS=$pkg_cv_TALLOC_CFLAGS -+ TALLOC_LIBS=$pkg_cv_TALLOC_LIBS -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } -+ enable_external_libtalloc=yes -+fi ++SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}" ++SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace" ++SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}" ++SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns" ++SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc" ++SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.." ++ ++SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt" ++ ++## cleanup the $(srcdir) in the Makefile if we are outside of the tree ++if test "x${srcdir-.}" != "x."; then ++ SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"` fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+if test "x$enable_external_libtalloc" != xyes -+then -+ tallocdir="" -+tallocpaths=". lib/talloc talloc ../talloc ../lib/talloc" -+for d in $tallocpaths; do -+ if test -f "$srcdir/$d/talloc.c"; then -+ tallocdir="$d" -+ -+ break; -+ fi - done +-done -case $ac_lo in -?*) ac_cv_sizeof_long=$ac_lo;; -'') if test "$ac_cv_type_long" = yes; then @@ -7966,10 +7852,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -int -main () -{ -+if test x"$tallocdir" = "x"; then -+ as_fn_error "cannot find talloc source in $tallocpaths" "$LINENO" 5 -+fi -+TALLOC_OBJ="talloc.o" - FILE *f = fopen ("conftest.val", "w"); - if (! f) @@ -8019,77 +7901,48 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_long=`cat conftest.val` -+TALLOC_CFLAGS="-I$srcdir/$tallocdir" -+ -+ -+TALLOC_LIBS="" -+ -+ -+# The cast to long int works around a bug in the HP C Compiler -+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+# This bug is HP SR number 8606223364. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 -+$as_echo_n "checking size of size_t... " >&6; } -+if test "${ac_cv_sizeof_size_t+set}" = set; then : -+ $as_echo_n "(cached) " >&6 - else +-else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : -( exit $ac_status ) -if test "$ac_cv_type_long" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -+else -+ if test "$ac_cv_type_size_t" = yes; then -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 - $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long) -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute sizeof (long) -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; }; } -+{ as_fn_set_status 77 -+as_fn_error "cannot compute sizeof (size_t) -+See \`config.log' for more details." "$LINENO" 5; }; } - else +- else - ac_cv_sizeof_long=0 -+ ac_cv_sizeof_size_t=0 - fi - fi +- fi +-fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.val -+ - fi +-fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 -$as_echo "$ac_cv_sizeof_long" >&6; } -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 -+$as_echo "$ac_cv_sizeof_size_t" >&6; } - cat >>confdefs.h <<_ACEOF +-cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG $ac_cv_sizeof_long -+#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t - _ACEOF +-_ACEOF -@@ -8188,29172 +6782,661 @@ - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. +-# The cast to long int works around a bug in the HP C Compiler +-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +-# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:$LINENO: checking size of long long" >&5 -$as_echo_n "checking size of long long... " >&6; } -if test "${ac_cv_sizeof_long_long+set}" = set; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 -+$as_echo_n "checking size of void *... " >&6; } -+if test "${ac_cv_sizeof_void_p+set}" = set; then : - $as_echo_n "(cached) " >&6 - else +- $as_echo_n "(cached) " >&6 +-else - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF @@ -8104,7 +7957,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long long))) >= 0)]; -test_array [0] = 0 -- + - ; - return 0; -} @@ -8141,7 +7994,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long long))) <= $ac_mid)]; -test_array [0] = 0 -+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : - ; - return 0; @@ -8166,19 +8018,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_hi=$ac_mid; break - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ if test "$ac_cv_type_void_p" = yes; then -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+{ as_fn_set_status 77 -+as_fn_error "cannot compute sizeof (void *) -+See \`config.log' for more details." "$LINENO" 5; }; } -+ else -+ ac_cv_sizeof_void_p=0 -+ fi -+fi - ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then @@ -8186,9 +8028,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` - fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 -+$as_echo "$ac_cv_sizeof_void_p" >&6; } +-fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done @@ -8235,9 +8075,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -+cat >>confdefs.h <<_ACEOF -+#define SIZEOF_VOID_P $ac_cv_sizeof_void_p - _ACEOF +-_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ @@ -8288,13 +8126,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- + - ac_lo= ac_hi= -fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do @@ -8311,7 +8149,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long long))) <= $ac_mid)]; -test_array [0] = 0 -- + - ; - return 0; -} @@ -8338,10 +8176,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- + - ac_lo=`expr '(' $ac_mid ')' + 1` -fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in @@ -8373,7 +8211,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -int -main () -{ -- + - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; @@ -8394,7 +8232,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; -- + - ; - return 0; -} @@ -8426,7 +8264,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- + -( exit $ac_status ) -if test "$ac_cv_type_long_long" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 @@ -8447,15 +8285,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 -$as_echo "$ac_cv_sizeof_long_long" >&6; } -- -- -- + + + -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long -_ACEOF -- -- -- + + + -{ $as_echo "$as_me:$LINENO: checking for uint_t" >&5 -$as_echo_n "checking for uint_t... " >&6; } -if test "${ac_cv_type_uint_t+set}" = set; then @@ -8534,18 +8372,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- + - ac_cv_type_uint_t=yes -fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- + + -fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uint_t" >&5 @@ -8553,13 +8391,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -if test "x$ac_cv_type_uint_t" = x""yes; then - : -else -- + -cat >>confdefs.h <<_ACEOF -#define uint_t unsigned int -_ACEOF -- + -fi -- + -{ $as_echo "$as_me:$LINENO: checking for int8_t" >&5 -$as_echo_n "checking for int8_t... " >&6; } -if test "${ac_cv_type_int8_t+set}" = set; then @@ -8638,18 +8476,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- + - ac_cv_type_int8_t=yes -fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- + + -fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_int8_t" >&5 @@ -8657,13 +8495,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -if test "x$ac_cv_type_int8_t" = x""yes; then - : -else -- + -cat >>confdefs.h <<_ACEOF -#define int8_t char -_ACEOF -- + -fi -- + -{ $as_echo "$as_me:$LINENO: checking for uint8_t" >&5 -$as_echo_n "checking for uint8_t... " >&6; } -if test "${ac_cv_type_uint8_t+set}" = set; then @@ -8742,18 +8580,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- + - ac_cv_type_uint8_t=yes -fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- + + -fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uint8_t" >&5 @@ -8761,13 +8599,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -if test "x$ac_cv_type_uint8_t" = x""yes; then - : -else -- + -cat >>confdefs.h <<_ACEOF -#define uint8_t unsigned char -_ACEOF -- + -fi -- + -{ $as_echo "$as_me:$LINENO: checking for int16_t" >&5 -$as_echo_n "checking for int16_t... " >&6; } -if test "${ac_cv_type_int16_t+set}" = set; then @@ -8846,32 +8684,53 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- + - ac_cv_type_int16_t=yes --fi -- ++ ++# compile with optimization and without debugging by default, but ++# allow people to set their own preference. ++# do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2" ++# if it has no value. This prevent *very* large debug binaries from occurring ++# by default. ++if test "x$debug" = "xyes" ; then ++ CFLAGS="${CFLAGS} -g" ++fi ++if test "x$CFLAGS" = x; then ++ CFLAGS="-O" + fi + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- ++# Check whether --enable-socket-wrapper was given. ++if test "${enable_socket_wrapper+set}" = set; then : ++ enableval=$enable_socket_wrapper; ++fi + + -fi -- ++DEFAULT_TEST_OPTIONS= ++HAVE_SOCKET_WRAPPER=no + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi ++if eval "test x$developer = xyes"; then ++ enable_socket_wrapper=yes + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_int16_t" >&5 -$as_echo "$ac_cv_type_int16_t" >&6; } -if test "x$ac_cv_type_int16_t" = x""yes; then - : -else -- + -cat >>confdefs.h <<_ACEOF -#define int16_t short -_ACEOF -- ++if eval "test x$enable_socket_wrapper = xyes"; then + -fi -- ++$as_echo "#define SOCKET_WRAPPER 1" >>confdefs.h + -{ $as_echo "$as_me:$LINENO: checking for uint16_t" >&5 -$as_echo_n "checking for uint16_t... " >&6; } -if test "${ac_cv_type_uint16_t+set}" = set; then @@ -8950,33 +8809,46 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++ DEFAULT_TEST_OPTIONS=--socket-wrapper ++ HAVE_SOCKET_WRAPPER=yes + - ac_cv_type_uint16_t=yes --fi -- ++ # this is only used for samba3 ++ SOCKET_WRAPPER_OBJS="../lib/socket_wrapper/socket_wrapper.o" + fi + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- + + -fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi ++ ++# Check whether --enable-nss-wrapper was given. ++if test "${enable_nss_wrapper+set}" = set; then : ++ enableval=$enable_nss_wrapper; + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uint16_t" >&5 -$as_echo "$ac_cv_type_uint16_t" >&6; } -if test "x$ac_cv_type_uint16_t" = x""yes; then - : -else -- + -cat >>confdefs.h <<_ACEOF -#define uint16_t unsigned short -_ACEOF -- --fi -- -- + ++HAVE_NSS_WRAPPER=no ++ ++if eval "test x$developer = xyes"; then ++ enable_nss_wrapper=yes + fi + ++if eval "test x$enable_nss_wrapper = xyes"; then + -if test $ac_cv_sizeof_int -eq 4 ; then -{ $as_echo "$as_me:$LINENO: checking for int32_t" >&5 -$as_echo_n "checking for int32_t... " >&6; } @@ -9056,18 +8928,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++$as_echo "#define NSS_WRAPPER 1" >>confdefs.h + - ac_cv_type_int32_t=yes --fi -- ++ HAVE_NSS_WRAPPER=yes ++ ++ # this is only used for samba3 ++ NSS_WRAPPER_OBJS="../lib/nss_wrapper/nss_wrapper.o" + fi + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- + + -fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5 @@ -9075,13 +8952,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -if test "x$ac_cv_type_int32_t" = x""yes; then - : -else -- + -cat >>confdefs.h <<_ACEOF -#define int32_t int -_ACEOF -- + -fi -- + -{ $as_echo "$as_me:$LINENO: checking for uint32_t" >&5 -$as_echo_n "checking for uint32_t... " >&6; } -if test "${ac_cv_type_uint32_t+set}" = set; then @@ -9160,18 +9037,30 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++SWAT_SBIN_TARGETS='bin/swat$(EXEEXT)' ++SWAT_INSTALL_TARGETS=installswat ++ ++# Check whether --enable-swat was given. ++if test "${enable_swat+set}" = set; then : ++ enableval=$enable_swat; ++ case "$enable_swat" in ++ no) ++ SWAT_SBIN_TARGETS='' ++ SWAT_INSTALL_TARGETS='' ++ ;; ++ esac + - ac_cv_type_uint32_t=yes --fi -- + fi + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- + + -fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5 @@ -9179,19 +9068,28 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -if test "x$ac_cv_type_uint32_t" = x""yes; then - : -else -- + -cat >>confdefs.h <<_ACEOF -#define uint32_t unsigned int -_ACEOF -- + -fi -- + -elif test $ac_cv_size_long -eq 4 ; then -{ $as_echo "$as_me:$LINENO: checking for int32_t" >&5 -$as_echo_n "checking for int32_t... " >&6; } -if test "${ac_cv_type_int32_t+set}" = set; then -- $as_echo_n "(cached) " >&6 --else ++# Probe the gcc version for extra CFLAGS. We always stash these in ++# DEVELOPER_CFLAGS, so that you can turn them on and off with a simple ++# Makefile edit, avoiding the need to re-run configure. ++if test x"$ac_cv_c_compiler_gnu" = x"yes" ; then ++ DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER" ++ # Add -Wdeclaration-after-statement if compiler supports it ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking that the C compiler understands -Wdeclaration-after-statement" >&5 ++$as_echo_n "checking that the C compiler understands -Wdeclaration-after-statement... " >&6; } ++if test "${samba_cv_HAVE_Wdeclaration_after_statement+set}" = set; then : + $as_echo_n "(cached) " >&6 + else - ac_cv_type_int32_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ @@ -9232,7 +9130,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ ++ ++ ++ old_CFLAGS="$CFLAGS"; ++ CFLAGS="$CFLAGS -Wdeclaration-after-statement"; ++ export CFLAGS; ++ old_CPPFLAGS="$CPPFLAGS"; ++ CPPFLAGS="$CPPFLAGS"; ++ export CPPFLAGS; ++ old_LDFLAGS="$LDFLAGS"; ++ LDFLAGS="$LDFLAGS"; ++ export LDFLAGS; ++ if test "$cross_compiling" = yes; then : ++ samba_cv_HAVE_Wdeclaration_after_statement=cross ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ -$ac_includes_default -int -main () @@ -9242,7 +9155,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} --_ACEOF ++ ++ int main(void) ++ { ++ return 0; ++ } + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -9262,21 +9180,38 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : --else ++if ac_fn_c_try_run "$LINENO"; then : ++ samba_cv_HAVE_Wdeclaration_after_statement=yes + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_int32_t=yes --fi -- ++ samba_cv_HAVE_Wdeclaration_after_statement=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- --fi -- ++ CFLAGS="$old_CFLAGS"; ++ old_CFLAGS=""; ++ export CFLAGS; ++ CPPFLAGS="$old_CPPFLAGS"; ++ old_CPPFLAGS=""; ++ export CPPFLAGS; ++ LDFLAGS="$old_LDFLAGS"; ++ old_LDFLAGS=""; ++ export LDFLAGS; + + + fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_HAVE_Wdeclaration_after_statement" >&5 ++$as_echo "$samba_cv_HAVE_Wdeclaration_after_statement" >&6; } + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5 @@ -9284,25 +9219,46 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -if test "x$ac_cv_type_int32_t" = x""yes; then - : -else -- ++ if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then ++ DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement" ++ fi + -cat >>confdefs.h <<_ACEOF -#define int32_t long -_ACEOF -- ++ #-Werror-implicit-function-declaration ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking that the C compiler understands -Werror-implicit-function-declaration" >&5 ++$as_echo_n "checking that the C compiler understands -Werror-implicit-function-declaration... " >&6; } ++if test "${samba_cv_HAVE_Werror_implicit_function_declaration+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else + -fi -- + -{ $as_echo "$as_me:$LINENO: checking for uint32_t" >&5 -$as_echo_n "checking for uint32_t... " >&6; } -if test "${ac_cv_type_uint32_t+set}" = set; then - $as_echo_n "(cached) " >&6 --else ++ old_CFLAGS="$CFLAGS"; ++ CFLAGS="$CFLAGS -Werror-implicit-function-declaration"; ++ export CFLAGS; ++ old_CPPFLAGS="$CPPFLAGS"; ++ CPPFLAGS="$CPPFLAGS"; ++ export CPPFLAGS; ++ old_LDFLAGS="$LDFLAGS"; ++ LDFLAGS="$LDFLAGS"; ++ export LDFLAGS; ++ if test "$cross_compiling" = yes; then : ++ samba_cv_HAVE_Werror_implicit_function_declaration=cross + else - ac_cv_type_uint32_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ -$ac_includes_default -int -main () @@ -9312,7 +9268,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} --_ACEOF ++ ++ int main(void) ++ { ++ return 0; ++ } + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -10992,15 +10953,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_intptr_t" >&5 -$as_echo "$ac_cv_type_intptr_t" >&6; } -if test "x$ac_cv_type_intptr_t" = x""yes; then -- : --else - -cat >>confdefs.h <<_ACEOF --#define intptr_t long long +-#define HAVE_INTPTR_T 1 -_ACEOF - --fi - +-fi -{ $as_echo "$as_me:$LINENO: checking for uintptr_t" >&5 -$as_echo_n "checking for uintptr_t... " >&6; } -if test "${ac_cv_type_uintptr_t+set}" = set; then @@ -11096,15 +11055,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5 -$as_echo "$ac_cv_type_uintptr_t" >&6; } -if test "x$ac_cv_type_uintptr_t" = x""yes; then -- : --else - -cat >>confdefs.h <<_ACEOF --#define uintptr_t unsigned long long +-#define HAVE_UINTPTR_T 1 -_ACEOF - --fi - +-fi -{ $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -$as_echo_n "checking for ptrdiff_t... " >&6; } -if test "${ac_cv_type_ptrdiff_t+set}" = set; then @@ -11200,13 +11157,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -$as_echo "$ac_cv_type_ptrdiff_t" >&6; } -if test "x$ac_cv_type_ptrdiff_t" = x""yes; then -- : --else - -cat >>confdefs.h <<_ACEOF --#define ptrdiff_t unsigned long long +-#define HAVE_PTRDIFF_T 1 -_ACEOF - +- -fi - - @@ -11302,979 +11258,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - --# Check whether --enable-external_libtalloc was given. --if test "${enable_external_libtalloc+set}" = set; then -- enableval=$enable_external_libtalloc; enable_external_libtalloc=$enableval --else -- enable_external_libtalloc=auto --fi -- -- --if test "x$enable_external_libtalloc" != xno --then -- -- --if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then -- if test -n "$ac_tool_prefix"; then -- # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. --set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 --{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 --$as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_path_PKG_CONFIG+set}" = set; then -- $as_echo_n "(cached) " >&6 --else -- case $PKG_CONFIG in -- [\\/]* | ?:[\\/]*) -- ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. -- ;; -- *) -- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR --for as_dir in $PATH --do -- IFS=$as_save_IFS -- test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -- ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" -- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -- break 2 -- fi --done --done --IFS=$as_save_IFS -- -- ;; --esac --fi --PKG_CONFIG=$ac_cv_path_PKG_CONFIG --if test -n "$PKG_CONFIG"; then -- { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 --$as_echo "$PKG_CONFIG" >&6; } --else -- { $as_echo "$as_me:$LINENO: result: no" >&5 --$as_echo "no" >&6; } --fi -- -- --fi --if test -z "$ac_cv_path_PKG_CONFIG"; then -- ac_pt_PKG_CONFIG=$PKG_CONFIG -- # Extract the first word of "pkg-config", so it can be a program name with args. --set dummy pkg-config; ac_word=$2 --{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 --$as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then -- $as_echo_n "(cached) " >&6 --else -- case $ac_pt_PKG_CONFIG in -- [\\/]* | ?:[\\/]*) -- ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. -- ;; -- *) -- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR --for as_dir in $PATH --do -- IFS=$as_save_IFS -- test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -- ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" -- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -- break 2 -- fi --done --done --IFS=$as_save_IFS -- -- ;; --esac --fi --ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG --if test -n "$ac_pt_PKG_CONFIG"; then -- { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 --$as_echo "$ac_pt_PKG_CONFIG" >&6; } --else -- { $as_echo "$as_me:$LINENO: result: no" >&5 --$as_echo "no" >&6; } --fi -- -- if test "x$ac_pt_PKG_CONFIG" = x; then -- PKG_CONFIG="" -- else -- case $cross_compiling:$ac_tool_warned in --yes:) --{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 --$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} --ac_tool_warned=yes ;; --esac -- PKG_CONFIG=$ac_pt_PKG_CONFIG -- fi --else -- PKG_CONFIG="$ac_cv_path_PKG_CONFIG" --fi -- --fi --if test -n "$PKG_CONFIG"; then -- _pkg_min_version=0.9.0 -- { $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 --$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } -- if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then -- { $as_echo "$as_me:$LINENO: result: yes" >&5 --$as_echo "yes" >&6; } -- else -- { $as_echo "$as_me:$LINENO: result: no" >&5 --$as_echo "no" >&6; } -- PKG_CONFIG="" -- fi -- --fi -- --pkg_failed=no --{ $as_echo "$as_me:$LINENO: checking for TALLOC" >&5 --$as_echo_n "checking for TALLOC... " >&6; } -- --if test -n "$PKG_CONFIG"; then -- if test -n "$TALLOC_CFLAGS"; then -- pkg_cv_TALLOC_CFLAGS="$TALLOC_CFLAGS" -- else -- if test -n "$PKG_CONFIG" && \ -- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"talloc >= 1.3.0\"") >&5 -- ($PKG_CONFIG --exists --print-errors "talloc >= 1.3.0") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); }; then -- pkg_cv_TALLOC_CFLAGS=`$PKG_CONFIG --cflags "talloc >= 1.3.0" 2>/dev/null` --else -- pkg_failed=yes --fi -- fi --else -- pkg_failed=untried --fi --if test -n "$PKG_CONFIG"; then -- if test -n "$TALLOC_LIBS"; then -- pkg_cv_TALLOC_LIBS="$TALLOC_LIBS" -- else -- if test -n "$PKG_CONFIG" && \ -- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"talloc >= 1.3.0\"") >&5 -- ($PKG_CONFIG --exists --print-errors "talloc >= 1.3.0") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); }; then -- pkg_cv_TALLOC_LIBS=`$PKG_CONFIG --libs "talloc >= 1.3.0" 2>/dev/null` --else -- pkg_failed=yes --fi -- fi --else -- pkg_failed=untried --fi -- -- -- --if test $pkg_failed = yes; then -- --if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then -- _pkg_short_errors_supported=yes --else -- _pkg_short_errors_supported=no --fi -- if test $_pkg_short_errors_supported = yes; then -- TALLOC_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "talloc >= 1.3.0"` -- else -- TALLOC_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "talloc >= 1.3.0"` -- fi -- # Put the nasty error message in config.log where it belongs -- echo "$TALLOC_PKG_ERRORS" >&5 -- -- { $as_echo "$as_me:$LINENO: result: no" >&5 --$as_echo "no" >&6; } -- if test "x$enable_external_libtalloc" = xyes; then -- { { $as_echo "$as_me:$LINENO: error: Unable to find libtalloc" >&5 --$as_echo "$as_me: error: Unable to find libtalloc" >&2;} -- { (exit 1); exit 1; }; } -- else -- enable_external_libtalloc=no -- fi -- --elif test $pkg_failed = untried; then -- if test "x$enable_external_libtalloc" = xyes; then -- { { $as_echo "$as_me:$LINENO: error: Unable to find libtalloc" >&5 --$as_echo "$as_me: error: Unable to find libtalloc" >&2;} -- { (exit 1); exit 1; }; } -- else -- enable_external_libtalloc=no -- fi -- --else -- TALLOC_CFLAGS=$pkg_cv_TALLOC_CFLAGS -- TALLOC_LIBS=$pkg_cv_TALLOC_LIBS -- { $as_echo "$as_me:$LINENO: result: yes" >&5 --$as_echo "yes" >&6; } -- enable_external_libtalloc=yes --fi --fi -- --if test "x$enable_external_libtalloc" != xyes --then -- tallocdir="" --tallocpaths=". lib/talloc talloc ../talloc ../lib/talloc" --for d in $tallocpaths; do -- if test -f "$srcdir/$d/talloc.c"; then -- tallocdir="$d" -- -- break; -- fi --done --if test x"$tallocdir" = "x"; then -- { { $as_echo "$as_me:$LINENO: error: cannot find talloc source in $tallocpaths" >&5 --$as_echo "$as_me: error: cannot find talloc source in $tallocpaths" >&2;} -- { (exit 1); exit 1; }; } --fi --TALLOC_OBJ="talloc.o" -- -- --TALLOC_CFLAGS="-I$srcdir/$tallocdir" -- -- --TALLOC_LIBS="" -- -- --# The cast to long int works around a bug in the HP C Compiler --# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects --# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. --# This bug is HP SR number 8606223364. --{ $as_echo "$as_me:$LINENO: checking size of size_t" >&5 --$as_echo_n "checking size of size_t... " >&6; } --if test "${ac_cv_sizeof_size_t+set}" = set; then -- $as_echo_n "(cached) " >&6 --else -- if test "$cross_compiling" = yes; then -- # Depending upon the size, compute the lo and hi bounds. --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) >= 0)]; --test_array [0] = 0 -- -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_lo=0 ac_mid=0 -- while :; do -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) <= $ac_mid)]; --test_array [0] = 0 -- -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_hi=$ac_mid; break --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_lo=`expr $ac_mid + 1` -- if test $ac_lo -le $ac_mid; then -- ac_lo= ac_hi= -- break -- fi -- ac_mid=`expr 2 '*' $ac_mid + 1` --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -- done --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) < 0)]; --test_array [0] = 0 -- -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_hi=-1 ac_mid=-1 -- while :; do -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) >= $ac_mid)]; --test_array [0] = 0 -- -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_lo=$ac_mid; break --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_hi=`expr '(' $ac_mid ')' - 1` -- if test $ac_mid -le $ac_hi; then -- ac_lo= ac_hi= -- break -- fi -- ac_mid=`expr 2 '*' $ac_mid` --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -- done --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_lo= ac_hi= --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --# Binary search between lo and hi bounds. --while test "x$ac_lo" != "x$ac_hi"; do -- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) <= $ac_mid)]; --test_array [0] = 0 -- -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_hi=$ac_mid --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_lo=`expr '(' $ac_mid ')' + 1` --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --done --case $ac_lo in --?*) ac_cv_sizeof_size_t=$ac_lo;; --'') if test "$ac_cv_type_size_t" = yes; then -- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 --$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (size_t) --See \`config.log' for more details." >&5 --$as_echo "$as_me: error: cannot compute sizeof (size_t) --See \`config.log' for more details." >&2;} -- { (exit 77); exit 77; }; }; } -- else -- ac_cv_sizeof_size_t=0 -- fi ;; --esac --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --static long int longval () { return (long int) (sizeof (size_t)); } --static unsigned long int ulongval () { return (long int) (sizeof (size_t)); } --#include --#include --int --main () --{ -- -- FILE *f = fopen ("conftest.val", "w"); -- if (! f) -- return 1; -- if (((long int) (sizeof (size_t))) < 0) -- { -- long int i = longval (); -- if (i != ((long int) (sizeof (size_t)))) -- return 1; -- fprintf (f, "%ld", i); -- } -- else -- { -- unsigned long int i = ulongval (); -- if (i != ((long int) (sizeof (size_t)))) -- return 1; -- fprintf (f, "%lu", i); -- } -- /* Do not output a trailing newline, as this causes \r\n confusion -- on some platforms. */ -- return ferror (f) || fclose (f) != 0; -- -- ; -- return 0; --} --_ACEOF --rm -f conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -- { (case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_try") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); }; }; then -- ac_cv_sizeof_size_t=`cat conftest.val` --else -- $as_echo "$as_me: program exited with status $ac_status" >&5 --$as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- --( exit $ac_status ) --if test "$ac_cv_type_size_t" = yes; then -- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 --$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (size_t) --See \`config.log' for more details." >&5 --$as_echo "$as_me: error: cannot compute sizeof (size_t) --See \`config.log' for more details." >&2;} -- { (exit 77); exit 77; }; }; } -- else -- ac_cv_sizeof_size_t=0 -- fi --fi --rm -rf conftest.dSYM --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi --rm -f conftest.val --fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_size_t" >&5 --$as_echo "$ac_cv_sizeof_size_t" >&6; } -- -- -- --cat >>confdefs.h <<_ACEOF --#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t --_ACEOF -- -- --# The cast to long int works around a bug in the HP C Compiler --# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects --# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. --# This bug is HP SR number 8606223364. --{ $as_echo "$as_me:$LINENO: checking size of void *" >&5 --$as_echo_n "checking size of void *... " >&6; } --if test "${ac_cv_sizeof_void_p+set}" = set; then -- $as_echo_n "(cached) " >&6 --else -- if test "$cross_compiling" = yes; then -- # Depending upon the size, compute the lo and hi bounds. --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static int test_array [1 - 2 * !(((long int) (sizeof (void *))) >= 0)]; --test_array [0] = 0 -- -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_lo=0 ac_mid=0 -- while :; do -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)]; --test_array [0] = 0 -- -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_hi=$ac_mid; break --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_lo=`expr $ac_mid + 1` -- if test $ac_lo -le $ac_mid; then -- ac_lo= ac_hi= -- break -- fi -- ac_mid=`expr 2 '*' $ac_mid + 1` --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -- done --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static int test_array [1 - 2 * !(((long int) (sizeof (void *))) < 0)]; --test_array [0] = 0 -- -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_hi=-1 ac_mid=-1 -- while :; do -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static int test_array [1 - 2 * !(((long int) (sizeof (void *))) >= $ac_mid)]; --test_array [0] = 0 -- -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_lo=$ac_mid; break --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_hi=`expr '(' $ac_mid ')' - 1` -- if test $ac_mid -le $ac_hi; then -- ac_lo= ac_hi= -- break -- fi -- ac_mid=`expr 2 '*' $ac_mid` --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -- done --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_lo= ac_hi= --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --# Binary search between lo and hi bounds. --while test "x$ac_lo" != "x$ac_hi"; do -- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)]; --test_array [0] = 0 -- -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_hi=$ac_mid --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_lo=`expr '(' $ac_mid ')' + 1` --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --done --case $ac_lo in --?*) ac_cv_sizeof_void_p=$ac_lo;; --'') if test "$ac_cv_type_void_p" = yes; then -- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 --$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (void *) --See \`config.log' for more details." >&5 --$as_echo "$as_me: error: cannot compute sizeof (void *) --See \`config.log' for more details." >&2;} -- { (exit 77); exit 77; }; }; } -- else -- ac_cv_sizeof_void_p=0 -- fi ;; --esac --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --static long int longval () { return (long int) (sizeof (void *)); } --static unsigned long int ulongval () { return (long int) (sizeof (void *)); } --#include --#include --int --main () --{ -- -- FILE *f = fopen ("conftest.val", "w"); -- if (! f) -- return 1; -- if (((long int) (sizeof (void *))) < 0) -- { -- long int i = longval (); -- if (i != ((long int) (sizeof (void *)))) -- return 1; -- fprintf (f, "%ld", i); -- } -- else -- { -- unsigned long int i = ulongval (); -- if (i != ((long int) (sizeof (void *)))) -- return 1; -- fprintf (f, "%lu", i); -- } -- /* Do not output a trailing newline, as this causes \r\n confusion -- on some platforms. */ -- return ferror (f) || fclose (f) != 0; -- -- ; -- return 0; --} --_ACEOF --rm -f conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -- { (case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_try") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); }; }; then -- ac_cv_sizeof_void_p=`cat conftest.val` --else -- $as_echo "$as_me: program exited with status $ac_status" >&5 --$as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- --( exit $ac_status ) --if test "$ac_cv_type_void_p" = yes; then -- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 --$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (void *) --See \`config.log' for more details." >&5 --$as_echo "$as_me: error: cannot compute sizeof (void *) --See \`config.log' for more details." >&2;} -- { (exit 77); exit 77; }; }; } -- else -- ac_cv_sizeof_void_p=0 -- fi --fi --rm -rf conftest.dSYM --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi --rm -f conftest.val --fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_void_p" >&5 --$as_echo "$ac_cv_sizeof_void_p" >&6; } -- -- -- --cat >>confdefs.h <<_ACEOF --#define SIZEOF_VOID_P $ac_cv_sizeof_void_p --_ACEOF -- -- -- --if test $ac_cv_sizeof_size_t -lt $ac_cv_sizeof_void_p; then -- { $as_echo "$as_me:$LINENO: WARNING: size_t cannot represent the amount of used memory of a process" >&5 --$as_echo "$as_me: WARNING: size_t cannot represent the amount of used memory of a process" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: please report this to " >&5 --$as_echo "$as_me: WARNING: please report this to " >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: sizeof(size_t) = $ac_cv_sizeof_size_t" >&5 --$as_echo "$as_me: WARNING: sizeof(size_t) = $ac_cv_sizeof_size_t" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: sizeof(void *) = $ac_cv_sizeof_void_p" >&5 --$as_echo "$as_me: WARNING: sizeof(void *) = $ac_cv_sizeof_void_p" >&2;} -- { { $as_echo "$as_me:$LINENO: error: sizeof(size_t) < sizeof(void *)" >&5 --$as_echo "$as_me: error: sizeof(size_t) < sizeof(void *)" >&2;} -- { (exit 1); exit 1; }; } --fi -- --fi -- - - - @@ -12583,27 +11566,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - -LIBS="${LIBS} ${TEVENT_LIBS}" - --# TODO: These should come from m4_include(lib/tdb/libtdb.m4) --# but currently this fails: things have to get merged from s4. --tdbdir="../lib/tdb" -- --TDB_CFLAGS="-I${srcdir-.}/$tdbdir/include" -- -- --LIBTDB_OBJ0="" --for o in common/tdb.o common/dump.o common/transaction.o common/error.o \ -- common/traverse.o common/freelist.o common/freelistcheck.o \ -- common/io.o common/lock.o common/open.o; --do -- LIBTDB_OBJ0="$LIBTDB_OBJ0 $tdbdir/$o" --done -- -- -SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}" -SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace" --SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}" -SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}" --SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}" -SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns" -SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc" -SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.." @@ -12671,6 +11636,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - +- +- -# compile with optimization and without debugging by default, but -# allow people to set their own preference. -# do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2" @@ -12778,7 +11745,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - old_CFLAGS="$CFLAGS"; -- CFLAGS="-Wdeclaration-after-statement"; +- CFLAGS="$CFLAGS -Wdeclaration-after-statement"; - export CFLAGS; - old_CPPFLAGS="$CPPFLAGS"; - CPPFLAGS="$CPPFLAGS"; @@ -12865,7 +11832,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - old_CFLAGS="$CFLAGS"; -- CFLAGS="-Werror-implicit-function-declaration"; +- CFLAGS="$CFLAGS -Werror-implicit-function-declaration"; - export CFLAGS; - old_CPPFLAGS="$CPPFLAGS"; - CPPFLAGS="$CPPFLAGS"; @@ -12953,27 +11920,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - fi -fi - --# Check whether --enable-dmalloc was given. --if test "${enable_dmalloc+set}" = set; then -- enableval=$enable_dmalloc; --fi -- -- --if test "x$enable_dmalloc" = xyes --then -- --cat >>confdefs.h <<\_ACEOF --#define ENABLE_DMALLOC 1 --_ACEOF -- -- --cat >>confdefs.h <<\_ACEOF --#define DMALLOC_FUNC_CHECK 1 --_ACEOF -- -- LIBS="$LIBS -ldmalloc" --fi -- -################################################# -# check for a shared memory profiling support -{ $as_echo "$as_me:$LINENO: checking whether to use profiling" >&5 @@ -13611,7 +12557,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - old_CFLAGS="$CFLAGS"; -- CFLAGS="-Werror"; +- CFLAGS="$CFLAGS -Werror"; - export CFLAGS; - old_CPPFLAGS="$CPPFLAGS"; - CPPFLAGS="$CPPFLAGS"; @@ -13694,7 +12640,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - old_CFLAGS="$CFLAGS"; -- CFLAGS="-w2"; +- CFLAGS="$CFLAGS -w2"; - export CFLAGS; - old_CPPFLAGS="$CPPFLAGS"; - CPPFLAGS="$CPPFLAGS"; @@ -13777,7 +12723,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - old_CFLAGS="$CFLAGS"; -- CFLAGS="-errwarn=%all"; +- CFLAGS="$CFLAGS -errwarn=%all"; - export CFLAGS; - old_CPPFLAGS="$CPPFLAGS"; - CPPFLAGS="$CPPFLAGS"; @@ -14269,13 +13215,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - -DYNEXP= - +-LDSHFLAGS_Z_DEFS= +- +-LDSHFLAGS_Z_NODEFS= +- - -default_static_modules="pdb_smbpasswd pdb_tdbsam pdb_wbc_sam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog auth_sam auth_unix auth_winbind auth_wbc auth_server auth_domain auth_builtin auth_netlogond vfs_default nss_info_template" - --default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr vfs_streams_depot vfs_acl_xattr vfs_acl_tdb vfs_smb_traffic_analyzer vfs_preopen" +-default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr vfs_streams_depot vfs_acl_xattr vfs_acl_tdb vfs_smb_traffic_analyzer vfs_preopen vfs_catia vfs_scannedonly" - -if test "x$developer" = xyes; then -- default_static_modules="$default_static_modules rpc_rpcecho" +- default_static_modules="$default_static_modules rpc_rpcecho pdb_ads" - default_shared_modules="$default_shared_modules charset_weird perfcount_test" -fi - @@ -14746,6 +13696,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - { $as_echo "$as_me:$LINENO: result: $GLIBC_LFS_SUPPORT" >&5 -$as_echo "$GLIBC_LFS_SUPPORT" >&6; } - ;; +- *qnx*) +- CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS" +- +-cat >>confdefs.h <<\_ACEOF +-#define _LARGEFILE64_SOURCE 1 +-_ACEOF +- +- ;; - -esac - @@ -14770,10 +13728,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - { (exit 1); exit 1; }; } -fi - --LIBREPLACEOBJ="replace.o" +-LIBREPLACEOBJ="$libreplacedir/replace.o" - - --LIBREPLACEOBJ="${LIBREPLACEOBJ} snprintf.o" +-LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/snprintf.o" - -{ $as_echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -$as_echo_n "checking return type of signal handlers... " >&6; } @@ -17564,6 +16522,157 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -done - - +-for ac_header in unix.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +- +-fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF +- +-fi +- +-done +- +- - - - @@ -17783,7 +16892,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - --for ac_func in waitpid strlcpy strlcat initgroups memmove strdup +- +-for ac_func in waitpid wait4 strlcpy strlcat initgroups memmove strdup -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -22336,10 +21446,112 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - +-for ac_func in getgrouplist +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF +- +-fi +-done +- +- -# locale - - --for ac_header in ctype.h locale.h +- +-for ac_header in ctype.h locale.h langinfo.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -23721,7 +22933,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - -if test x"${libreplace_cv_dlfcn}" = x"yes";then -- LIBREPLACEOBJ="${LIBREPLACEOBJ} dlfcn.o" +- LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/dlfcn.o" -fi - -LIBDL="$LIBS" @@ -23917,7 +23129,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#define REPLACE_GETPASS 1 -_ACEOF - -- LIBREPLACEOBJ="${LIBREPLACEOBJ} getpass.o" +- LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/getpass.o" -else - -{ $as_echo "$as_me:$LINENO: checking whether getpass should be replaced" >&5 @@ -23985,7 +23197,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#define REPLACE_GETPASS 1 -_ACEOF - -- LIBREPLACEOBJ="${LIBREPLACEOBJ} getpass.o" +- LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/getpass.o" -fi - -fi @@ -24056,7 +23268,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#define REPLACE_STRPTIME 1 -_ACEOF - -- LIBREPLACEOBJ="${LIBREPLACEOBJ} strptime.o" +- LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/strptime.o" -fi - - @@ -24382,7 +23594,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF - -else -- LIBREPLACEOBJ="${LIBREPLACEOBJ} timegm.o" +- LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/timegm.o" -fi -done - @@ -24934,7 +24146,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#define REPLACE_READDIR_GETDIRENTRIES 1 -_ACEOF - -- LIBREPLACEOBJ="${LIBREPLACEOBJ} repdir_getdirentries.o" +- LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/repdir_getdirentries.o" - libreplace_cv_READDIR_NEEDED=no -fi - @@ -25123,7 +24335,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#define REPLACE_READDIR_GETDENTS 1 -_ACEOF - -- LIBREPLACEOBJ="${LIBREPLACEOBJ} repdir_getdents.o" +- LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/repdir_getdents.o" - libreplace_cv_READDIR_NEEDED=no -fi - @@ -25426,7 +24638,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF - -else -- LIBREPLACEOBJ="${LIBREPLACEOBJ} crypt.o" +- LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/crypt.o" -fi - - @@ -25434,8 +24646,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - -- --for ac_func in syslog printf memset memcpy +-for ac_func in printf memset memcpy -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -25543,6 +24754,111 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -echo "LIBREPLACE_BROKEN_CHECKS: END" - - +-for ac_func in syslog +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF +- +-else +- { { $as_echo "$as_me:$LINENO: error: Required function not found" >&5 +-$as_echo "$as_me: error: Required function not found" >&2;} +- { (exit 1); exit 1; }; } +-fi +-done +- +- -echo "LIBREPLACE_NETWORK_CHECKS: START" - - @@ -29088,7 +28404,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF - -else -- LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} socketpair.o" +- LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} $libreplacedir/socketpair.o" -fi -done - @@ -29270,7 +28586,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#define REPLACE_INET_NTOA 1 -_ACEOF - -- LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} inet_ntoa.o" +- LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} $libreplacedir/inet_ntoa.o" -fi - - @@ -29372,7 +28688,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF - -else -- LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} inet_aton.o" +- LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} $libreplacedir/inet_aton.o" -fi -done - @@ -29476,7 +28792,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF - -else -- LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} inet_ntop.o" +- LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} $libreplacedir/inet_ntop.o" -fi -done - @@ -29580,7 +28896,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF - -else -- LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} inet_pton.o" +- LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} $libreplacedir/inet_pton.o" -fi -done - @@ -29682,7 +28998,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF - -else -- LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} getaddrinfo.o" +- LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} $libreplacedir/getaddrinfo.o" -fi - - @@ -30112,7 +29428,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF - -else -- LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} getifaddrs.o" +- LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} $libreplacedir/getifaddrs.o" -fi - - @@ -30444,10 +29760,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - -LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"` - --LIBREPLACE_OBJS="" --for obj in ${LIBREPLACEOBJ}; do -- LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}" --done +-LIBREPLACE_OBJS="${LIBREPLACEOBJ}" +- +- +-LIBREPLACE_LIBS="${LIBREPLACE_NETWORK_LIBS}" +- - - -# add -ldl to the global LIBS @@ -30770,8 +30087,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - -- --for ac_header in limits.h float.h pthread.h libintl.h +-for ac_header in limits.h float.h libintl.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -35548,18 +34864,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+if test $ac_cv_sizeof_size_t -lt $ac_cv_sizeof_void_p; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: size_t cannot represent the amount of used memory of a process" >&5 -+$as_echo "$as_me: WARNING: size_t cannot represent the amount of used memory of a process" >&2;} -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: please report this to " >&5 -+$as_echo "$as_me: WARNING: please report this to " >&2;} -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: sizeof(size_t) = $ac_cv_sizeof_size_t" >&5 -+$as_echo "$as_me: WARNING: sizeof(size_t) = $ac_cv_sizeof_size_t" >&2;} -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: sizeof(void *) = $ac_cv_sizeof_void_p" >&5 -+$as_echo "$as_me: WARNING: sizeof(void *) = $ac_cv_sizeof_void_p" >&2;} -+ as_fn_error "sizeof(size_t) < sizeof(void *)" "$LINENO" 5 - fi - +-fi +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do @@ -35605,8 +34911,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_lo=`expr '(' $ac_mid ')' + 1` - fi - +-fi +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in @@ -35638,7 +34944,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -int -main () -{ - +- - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; @@ -35659,7 +34965,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - +- - ; - return 0; -} @@ -35687,11 +34993,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_short=`cat conftest.val` --else ++if ac_fn_c_try_run "$LINENO"; then : ++ samba_cv_HAVE_Werror_implicit_function_declaration=yes + else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +- -( exit $ac_status ) -if test "$ac_cv_type_short" = yes; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 @@ -35704,44 +35012,26 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - else - ac_cv_sizeof_short=0 - fi --fi ++ samba_cv_HAVE_Werror_implicit_function_declaration=no + fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.val -+if test x"$teventdir" = "x"; then -+ teventdir="" -+ teventpaths="$srcdir $srcdir/../lib/tevent $srcdir/tevent $srcdir/../tevent" -+ for d in $teventpaths; do -+ if test -f "$d/tevent.c"; then -+ teventdir="$d" -+ break; -+ fi -+ done -+ if test x"$teventdir" = "x"; then -+ as_fn_error "cannot find libtevent source in $teventpaths" "$LINENO" 5 -+ fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 -$as_echo "$ac_cv_sizeof_short" >&6; } -+ -+TEVENT_OBJ="" -+TEVENT_CFLAGS="" -+TEVENT_LIBS="" - - - +- +- +- -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SHORT $ac_cv_sizeof_short -_ACEOF - -+TEVENT_CFLAGS="-I$teventdir" - -+TEVENT_OBJ="tevent.o tevent_debug.o tevent_util.o" -+TEVENT_OBJ="$TEVENT_OBJ tevent_fd.o tevent_timed.o tevent_immediate.o tevent_signal.o" -+TEVENT_OBJ="$TEVENT_OBJ tevent_req.o tevent_wakeup.o tevent_queue.o" -+TEVENT_OBJ="$TEVENT_OBJ tevent_standard.o tevent_select.o" - +- +- +- -{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if test "${ac_cv_c_const+set}" = set; then @@ -35749,17 +35039,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -+for ac_header in sys/epoll.h -+do : -+ ac_fn_c_check_header_mongrel "$LINENO" "sys/epoll.h" "ac_cv_header_sys_epoll_h" "$ac_includes_default" -+if test "x$ac_cv_header_sys_epoll_h" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_SYS_EPOLL_H 1 - _ACEOF +-_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - +- -int -main () -{ @@ -35787,8 +35071,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; -+fi - +- - *t++ = 0; - if (s) return 0; - } @@ -35813,18 +35096,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - } - return !cs[0] && !zero.x; -#endif -+done - ; - return 0; -} -+for ac_func in epoll_create -+do : -+ ac_fn_c_check_func "$LINENO" "epoll_create" "ac_cv_func_epoll_create" -+if test "x$ac_cv_func_epoll_create" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_EPOLL_CREATE 1 - _ACEOF +-_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -35847,28 +35123,42 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 ++ CFLAGS="$old_CFLAGS"; ++ old_CFLAGS=""; ++ export CFLAGS; ++ CPPFLAGS="$old_CPPFLAGS"; ++ old_CPPFLAGS=""; ++ export CPPFLAGS; ++ LDFLAGS="$old_LDFLAGS"; ++ old_LDFLAGS=""; ++ export LDFLAGS; - ac_cv_c_const=no - fi -+done -+ -+if test x"$ac_cv_header_sys_epoll_h" = x"yes" -a x"$ac_cv_func_epoll_create" = x"yes"; then -+ TEVENT_OBJ="$TEVENT_OBJ tevent_epoll.o" -+ -+$as_echo "#define HAVE_EPOLL 1" >>confdefs.h +-fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_HAVE_Werror_implicit_function_declaration" >&5 ++$as_echo "$samba_cv_HAVE_Werror_implicit_function_declaration" >&6; } ++ if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then ++ DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration" ++ fi -cat >>confdefs.h <<\_ACEOF -#define const /**/ -_ACEOF -+if test x"$VERSIONSCRIPT" != "x"; then -+ EXPORTSFILE=tevent.exports ++ # krb5developer is like developer, except we don't get ++ # -Wstrict-prototypes. ++ if test x"$krb5_developer" != x"$yes" ; then ++ DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes" ++ fi ++ if test x"$picky_developer" = x"yes"; then ++ DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror" ++ fi fi -{ $as_echo "$as_me:$LINENO: checking for inline" >&5 @@ -35889,7 +35179,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } -#endif - +- -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" @@ -35913,47 +35203,36 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 ++################################################# ++# check for a shared memory profiling support ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use profiling" >&5 ++$as_echo_n "checking whether to use profiling... " >&6; } -+LIBTEVENT_OBJ0="" -+for obj in ${TEVENT_OBJ}; do -+ LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}" -+done ++# Check whether --with-profiling-data was given. ++if test "${with_profiling_data+set}" = set; then : ++ withval=$with_profiling_data; case "$withval" in ++ yes) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } -fi -+LIBS="${LIBS} ${TEVENT_LIBS}" ++$as_echo "#define WITH_PROFILE 1" >>confdefs.h -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_inline" != no && break -+# TODO: These should come from m4_include(lib/tdb/libtdb.m4) -+# but currently this fails: things have to get merged from s4. -+tdbdir="../lib/tdb" -+ -+TDB_CFLAGS="-I${srcdir-.}/$tdbdir/include" -+ -+ -+LIBTDB_OBJ0="" -+for o in common/tdb.o common/dump.o common/transaction.o common/error.o \ -+ common/traverse.o common/freelist.o common/freelistcheck.o \ -+ common/io.o common/lock.o common/open.o; -+do -+ LIBTDB_OBJ0="$LIBTDB_OBJ0 $tdbdir/$o" - done +-done ++ samba_cv_WITH_PROFILE=yes ++ ;; ++ *) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ samba_cv_WITH_PROFILE=no ++ ;; ++ esac ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } -+ -+SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}" -+SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace" -+SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}" -+SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}" -+SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}" -+SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns" -+SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc" -+SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.." -+ -+SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt" -+ -+## cleanup the $(srcdir) in the Makefile if we are outside of the tree -+if test "x${srcdir-.}" != "x."; then -+ SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"` fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } @@ -35973,13 +35252,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF - ;; -esac ++merged_build_possible=yes - { $as_echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if test "${ac_cv_c_bigendian+set}" = set; then -- $as_echo_n "(cached) " >&6 --else ++for ac_prog in gawk mawk nawk awk ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if test "${ac_cv_prog_AWK+set}" = set; then : + $as_echo_n "(cached) " >&6 + else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat >conftest.$ac_ext <<_ACEOF @@ -35992,7 +35279,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - not a universal capable compiler - #endif - typedef int dummy; - +- -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" @@ -36012,6 +35299,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then ++ if test -n "$AWK"; then ++ ac_cv_prog_AWK="$AWK" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_AWK="$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS - # Check for potential -arch flags. It is not universal unless - # there are some -arch flags. Note that *ppc* also matches @@ -36019,12 +35323,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - case "${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}" in #( - *-arch*ppc*|*-arch*i386*|*-arch*x86_64*) ac_cv_c_bigendian=universal;; - esac --else ++fi ++fi ++AWK=$ac_cv_prog_AWK ++if test -n "$AWK"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 ++$as_echo "$AWK" >&6; } + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi -fi ++ test -n "$AWK" && break ++done -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then @@ -36037,6 +35352,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* end confdefs.h. */ -#include - #include ++# Check for GNU make -int -main () @@ -36117,12 +35433,49 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --else ++for ac_prog in gmake make ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if test "${ac_cv_path_MAKE+set}" = set; then : ++ $as_echo_n "(cached) " >&6 + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +- ++ case $MAKE in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_MAKE="$MAKE" # Let the user override the test with a path. ++ ;; ++ *) ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_path_MAKE="$as_dir/$ac_word$ac_exec_ext" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS - --fi ++ ;; ++esac ++fi ++MAKE=$ac_cv_path_MAKE ++if test -n "$MAKE"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKE" >&5 ++$as_echo "$MAKE" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi @@ -36135,7 +35488,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - +- -int -main () -{ @@ -36173,6 +35526,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include ++ test -n "$MAKE" && break ++done -int -main () @@ -36204,20 +35559,35 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_c_bigendian=yes --else ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we have GNU make" >&5 ++$as_echo_n "checking whether we have GNU make... " >&6; } ++if test "${samba_cv_gnu_make+set}" = set; then : ++ $as_echo_n "(cached) " >&6 + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_c_bigendian=no --fi ++if ! $ac_cv_path_MAKE --version | head -1 | grep GNU 2>/dev/null >/dev/null ++then ++ samba_cv_gnu_make=no ++else ++ samba_cv_gnu_make=yes + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --else ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_gnu_make" >&5 ++$as_echo "$samba_cv_gnu_make" >&6; } ++if test x$samba_cv_gnu_make = xyes; then ++ true + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - --fi +- +- ++ merged_build_possible=no + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi @@ -36287,6 +35657,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 ++# Check for perl -fi @@ -36340,21 +35711,100 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_bigendian=no --else ++case "$host_os" in ++ *irix*) ++ # On IRIX, we prefer Freeware or Nekoware Perl, because the ++ # system perl is so ancient. ++ # Extract the first word of "perl", so it can be a program name with args. ++set dummy perl; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if test "${ac_cv_path_PERL+set}" = set; then : ++ $as_echo_n "(cached) " >&6 + else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 ++ case $PERL in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ++ ;; ++ *) ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++as_dummy=""/usr/freeware/bin:/usr/nekoware/bin:$PATH"" ++for as_dir in $as_dummy ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS -( exit $ac_status ) -ac_cv_c_bigendian=yes --fi ++ test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="""" ++ ;; ++esac + fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi ++PERL=$ac_cv_path_PERL ++if test -n "$PERL"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 ++$as_echo "$PERL" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } + fi - fi --fi ++ ;; ++ *) ++ # Extract the first word of "perl", so it can be a program name with args. ++set dummy perl; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if test "${ac_cv_path_PERL+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ case $PERL in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ++ ;; ++ *) ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++fi ++PERL=$ac_cv_path_PERL ++if test -n "$PERL"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 ++$as_echo "$PERL" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( @@ -36379,13 +35829,33 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} - { (exit 1); exit 1; }; } ;; - esac ++ ;; ++esac ++ ++if test x"$PERL" = x""; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No version of perl was found!" >&5 ++$as_echo "$as_me: WARNING: No version of perl was found!" >&2;} ++ merged_build_possible=no ++else ++ if test x"$debug" = x"yes";then ++ PERL="$PERL -W" ++ fi ++ export PERL ++ true ++fi -{ $as_echo "$as_me:$LINENO: checking whether char is unsigned" >&5 -$as_echo_n "checking whether char is unsigned... " >&6; } -if test "${ac_cv_c_char_unsigned+set}" = set; then -- $as_echo_n "(cached) " >&6 --else ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ar; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if test "${ac_cv_prog_AR+set}" = set; then : + $as_echo_n "(cached) " >&6 + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF @@ -36398,7 +35868,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ -static int test_array [1 - 2 * !(((char) -1) < 0)]; -test_array [0] = 0 - +- - ; - return 0; -} @@ -36422,30 +35892,61 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_c_char_unsigned=no --else ++ if test -n "$AR"; then ++ ac_cv_prog_AR="$AR" # Let the user override the test. + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_AR="${ac_tool_prefix}ar" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS - ac_cv_c_char_unsigned=yes --fi - + fi +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 -$as_echo "$ac_cv_c_char_unsigned" >&6; } -if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then - cat >>confdefs.h <<\_ACEOF -#define __CHAR_UNSIGNED__ 1 -_ACEOF - --fi +- ++AR=$ac_cv_prog_AR ++if test -n "$AR"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 ++$as_echo "$AR" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } + fi -{ $as_echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -$as_echo_n "checking return type of signal handlers... " >&6; } -if test "${ac_cv_type_signal+set}" = set; then -- $as_echo_n "(cached) " >&6 --else ++fi ++if test -z "$ac_cv_prog_AR"; then ++ ac_ct_AR=$AR ++ # Extract the first word of "ar", so it can be a program name with args. ++set dummy ar; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if test "${ac_cv_prog_ac_ct_AR+set}" = set; then : + $as_echo_n "(cached) " >&6 + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF @@ -36454,7 +35955,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* end confdefs.h. */ -#include -#include - +- -int -main () -{ @@ -36482,28 +35983,70 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_signal=int --else ++ if test -n "$ac_ct_AR"; then ++ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_AR="ar" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS - ac_cv_type_signal=void --fi - + fi +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 -$as_echo "$ac_cv_type_signal" >&6; } ++ac_ct_AR=$ac_cv_prog_ac_ct_AR ++if test -n "$ac_ct_AR"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 ++$as_echo "$ac_ct_AR" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal -_ACEOF ++ if test "x$ac_ct_AR" = x; then ++ AR="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ AR=$ac_ct_AR ++ fi ++else ++ AR="$ac_cv_prog_AR" ++fi -{ $as_echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 -$as_echo_n "checking for uid_t in sys/types.h... " >&6; } -if test "${ac_cv_type_uid_t+set}" = set; then -- $as_echo_n "(cached) " >&6 --else ++LD=ld ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 ++$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } ++if test "${ac_cv_prog_gnu_ld+set}" = set; then : + $as_echo_n "(cached) " >&6 + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF @@ -36511,95 +36054,130 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - +- -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "uid_t" >/dev/null 2>&1; then - ac_cv_type_uid_t=yes --else ++ # I'd rather use --version here, but apparently some GNU ld's only accept -v. ++if $LD -v 2>&1 &5; then ++ ac_cv_prog_gnu_ld=yes + else - ac_cv_type_uid_t=no -+ -+ -+ -+ -+# compile with optimization and without debugging by default, but -+# allow people to set their own preference. -+# do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2" -+# if it has no value. This prevent *very* large debug binaries from occurring -+# by default. -+if test "x$debug" = "xyes" ; then -+ CFLAGS="${CFLAGS} -g" -+fi -+if test "x$CFLAGS" = x; then -+ CFLAGS="-O" -+fi -+ -+# Check whether --enable-socket-wrapper was given. -+if test "${enable_socket_wrapper+set}" = set; then : -+ enableval=$enable_socket_wrapper; ++ ac_cv_prog_gnu_ld=no fi -rm -f conftest* - -+ -+DEFAULT_TEST_OPTIONS= -+HAVE_SOCKET_WRAPPER=no -+ -+if eval "test x$developer = xyes"; then -+ enable_socket_wrapper=yes +- fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 -$as_echo "$ac_cv_type_uid_t" >&6; } -if test $ac_cv_type_uid_t = no; then ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gnu_ld" >&5 ++$as_echo "$ac_cv_prog_gnu_ld" >&6; } -cat >>confdefs.h <<\_ACEOF -#define uid_t int -_ACEOF -+if eval "test x$enable_socket_wrapper = xyes"; then ++ ++if test "$ac_cv_prog_gnu_ld" = "yes"; then ++ ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1` ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking GNU ld release date" >&5 ++$as_echo_n "checking GNU ld release date... " >&6; } ++ ac_cv_gnu_ld_date=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'` ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_gnu_ld_date}" >&5 ++$as_echo "${ac_cv_gnu_ld_date}" >&6; } ++ if test -n "$ac_cv_gnu_ld_date"; then ++ if test "$ac_cv_gnu_ld_date" -lt 20030217; then ++ ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes ++ fi ++ if test "$ac_cv_gnu_ld_date" -gt 20030101; then ++ ac_cv_gnu_ld_version_script=yes ++ fi ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking GNU ld release version" >&5 ++$as_echo_n "checking GNU ld release version... " >&6; } ++ ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^[^0-9]*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'` ++ ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1` ++ ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2` ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_gnu_ld_vernr}" >&5 ++$as_echo "${ac_cv_gnu_ld_vernr}" >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking GNU ld release version major" >&5 ++$as_echo_n "checking GNU ld release version major... " >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_gnu_ld_vernr_major}" >&5 ++$as_echo "${ac_cv_gnu_ld_vernr_major}" >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking GNU ld release version minor" >&5 ++$as_echo_n "checking GNU ld release version minor... " >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_gnu_ld_vernr_minor}" >&5 ++$as_echo "${ac_cv_gnu_ld_vernr_minor}" >&6; } ++ if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then ++ ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes ++ fi ++ if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_ld_vernr_major" = 2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then ++ ac_cv_gnu_ld_version_script=yes ++ fi ++ fi ++fi -+$as_echo "#define SOCKET_WRAPPER 1" >>confdefs.h -cat >>confdefs.h <<\_ACEOF -#define gid_t int -_ACEOF -+ DEFAULT_TEST_OPTIONS=--socket-wrapper -+ HAVE_SOCKET_WRAPPER=yes -+ # this is only used for samba3 -+ SOCKET_WRAPPER_OBJS="../lib/socket_wrapper/socket_wrapper.o" ++if test "x$CC" != xcc; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 ++$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 ++$as_echo_n "checking whether cc understands -c and -o together... " >&6; } fi - +- -{ $as_echo "$as_me:$LINENO: checking for mode_t" >&5 -$as_echo_n "checking for mode_t... " >&6; } -if test "${ac_cv_type_mode_t+set}" = set; then -- $as_echo_n "(cached) " >&6 --else ++set dummy $CC; ac_cc=`$as_echo "$2" | ++ sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` ++if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 + else - ac_cv_type_mode_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ -$ac_includes_default --int --main () --{ ++ + int + main () + { -if (sizeof (mode_t)) - return 0; -- ; -- return 0; --} --_ACEOF ++ + ; + return 0; + } + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac ++# Make sure it works both with $CC and with simple cc. ++# We do the test twice because some compilers refuse to overwrite an ++# existing .o file with -o, though they will create one. ++ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' ++rm -f conftest2.* ++if { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 @@ -36627,13 +36205,19 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && ++ test -f conftest2.$ac_objext && { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 @@ -36646,21 +36230,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +- - ac_cv_type_mode_t=yes -fi - +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -+# Check whether --enable-nss-wrapper was given. -+if test "${enable_nss_wrapper+set}" = set; then : -+ enableval=$enable_nss_wrapper; - fi - +- +- +-fi +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 @@ -36668,16 +36249,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -if test "x$ac_cv_type_mode_t" = x""yes; then - : -else - +- -cat >>confdefs.h <<_ACEOF -#define mode_t int -_ACEOF -+HAVE_NSS_WRAPPER=no - -+if eval "test x$developer = xyes"; then -+ enable_nss_wrapper=yes - fi - +- +-fi +- -{ $as_echo "$as_me:$LINENO: checking for off_t" >&5 -$as_echo_n "checking for off_t... " >&6; } -if test "${ac_cv_type_off_t+set}" = set; then @@ -36703,13 +36281,24 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; ++then ++ eval ac_cv_prog_cc_${ac_cc}_c_o=yes ++ if test "x$CC" != xcc; then ++ # Test first that cc exists at all. ++ if { ac_try='cc -c conftest.$ac_ext >&5' ++ { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 @@ -36737,13 +36326,31 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; }; then ++ ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' ++ rm -f conftest2.* ++ if { { case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && ++ test -f conftest2.$ac_objext && { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 @@ -36753,27 +36360,40 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : --else ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; ++ then ++ # cc works too. ++ : ++ else ++ # cc exists but doesn't like -o. ++ eval ac_cv_prog_cc_${ac_cc}_c_o=no ++ fi ++ fi ++ fi + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+if eval "test x$enable_nss_wrapper = xyes"; then -+ -+$as_echo "#define NSS_WRAPPER 1" >>confdefs.h -+ -+ HAVE_NSS_WRAPPER=yes - +- - ac_cv_type_off_t=yes -+ # this is only used for samba3 -+ NSS_WRAPPER_OBJS="../lib/nss_wrapper/nss_wrapper.o" ++ eval ac_cv_prog_cc_${ac_cc}_c_o=no fi ++rm -f core conftest* -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --else ++fi ++if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h --fi + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi @@ -36781,19 +36401,26 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -$as_echo "$ac_cv_type_off_t" >&6; } -if test "x$ac_cv_type_off_t" = x""yes; then - : --else - ++if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then ++ BROKEN_CC= + else +- -cat >>confdefs.h <<_ACEOF -#define off_t long int -_ACEOF - --fi +- ++ BROKEN_CC=# + fi -{ $as_echo "$as_me:$LINENO: checking for size_t" >&5 -$as_echo_n "checking for size_t... " >&6; } -if test "${ac_cv_type_size_t+set}" = set; then -- $as_echo_n "(cached) " >&6 --else ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that the C compiler understands -Werror" >&5 ++$as_echo_n "checking that the C compiler understands -Werror... " >&6; } ++if test "${samba_cv_HAVE_Werror+set}" = set; then : + $as_echo_n "(cached) " >&6 + else - ac_cv_type_size_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ @@ -36867,32 +36494,44 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+SWAT_SBIN_TARGETS='bin/swat$(EXEEXT)' -+SWAT_INSTALL_TARGETS=installswat -+ -+# Check whether --enable-swat was given. -+if test "${enable_swat+set}" = set; then : -+ enableval=$enable_swat; -+ case "$enable_swat" in -+ no) -+ SWAT_SBIN_TARGETS='' -+ SWAT_INSTALL_TARGETS='' -+ ;; -+ esac - ac_cv_type_size_t=yes - fi +-fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --else ++ old_CFLAGS="$CFLAGS"; ++ CFLAGS="$CFLAGS -Werror"; ++ export CFLAGS; ++ old_CPPFLAGS="$CPPFLAGS"; ++ CPPFLAGS="$CPPFLAGS"; ++ export CPPFLAGS; ++ old_LDFLAGS="$LDFLAGS"; ++ LDFLAGS="$LDFLAGS"; ++ export LDFLAGS; ++ if test "$cross_compiling" = yes; then : ++ samba_cv_HAVE_Werror=cross + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +- ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ - --fi - ++ int main(void) ++ { ++ return 0; ++ } ++_ACEOF ++if ac_fn_c_try_run "$LINENO"; then : ++ samba_cv_HAVE_Werror=yes ++else ++ samba_cv_HAVE_Werror=no + fi +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -$as_echo "$ac_cv_type_size_t" >&6; } -if test "x$ac_cv_type_size_t" = x""yes; then @@ -36902,22 +36541,26 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF ++ CFLAGS="$old_CFLAGS"; ++ old_CFLAGS=""; ++ export CFLAGS; ++ CPPFLAGS="$old_CPPFLAGS"; ++ old_CPPFLAGS=""; ++ export CPPFLAGS; ++ LDFLAGS="$old_LDFLAGS"; ++ old_LDFLAGS=""; ++ export LDFLAGS; --fi - + fi +- -{ $as_echo "$as_me:$LINENO: checking for pid_t" >&5 -$as_echo_n "checking for pid_t... " >&6; } -if test "${ac_cv_type_pid_t+set}" = set; then -+# Probe the gcc version for extra CFLAGS. We always stash these in -+# DEVELOPER_CFLAGS, so that you can turn them on and off with a simple -+# Makefile edit, avoiding the need to re-run configure. -+if test x"$ac_cv_c_compiler_gnu" = x"yes" ; then -+ DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER" -+ # Add -Wdeclaration-after-statement if compiler supports it -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking that the C compiler understands -Wdeclaration-after-statement" >&5 -+$as_echo_n "checking that the C compiler understands -Wdeclaration-after-statement... " >&6; } -+if test "${samba_cv_HAVE_Wdeclaration_after_statement+set}" = set; then : - $as_echo_n "(cached) " >&6 +- $as_echo_n "(cached) " >&6 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_HAVE_Werror" >&5 ++$as_echo "$samba_cv_HAVE_Werror" >&6; } ++if test x"$samba_cv_HAVE_Werror" = x"yes"; then ++ Werror_FLAGS="-Werror" else - ac_cv_type_pid_t=no -cat >conftest.$ac_ext <<_ACEOF @@ -36959,22 +36602,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+ -+ -+ old_CFLAGS="$CFLAGS"; -+ CFLAGS="-Wdeclaration-after-statement"; -+ export CFLAGS; -+ old_CPPFLAGS="$CPPFLAGS"; -+ CPPFLAGS="$CPPFLAGS"; -+ export CPPFLAGS; -+ old_LDFLAGS="$LDFLAGS"; -+ LDFLAGS="$LDFLAGS"; -+ export LDFLAGS; -+ if test "$cross_compiling" = yes; then : -+ samba_cv_HAVE_Wdeclaration_after_statement=cross -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ +-/* end confdefs.h. */ -$ac_includes_default -int -main () @@ -36984,12 +36612,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} -+ -+ int main(void) -+ { -+ return 0; -+ } - _ACEOF +-_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -37009,23 +36632,60 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -+if ac_fn_c_try_run "$LINENO"; then : -+ samba_cv_HAVE_Wdeclaration_after_statement=yes ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that the C compiler understands -w2" >&5 ++$as_echo_n "checking that the C compiler understands -w2... " >&6; } ++if test "${samba_cv_HAVE_w2+set}" = set; then : ++ $as_echo_n "(cached) " >&6 + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_cv_type_pid_t=yes +-fi + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ old_CFLAGS="$CFLAGS"; ++ CFLAGS="$CFLAGS -w2"; ++ export CFLAGS; ++ old_CPPFLAGS="$CPPFLAGS"; ++ CPPFLAGS="$CPPFLAGS"; ++ export CPPFLAGS; ++ old_LDFLAGS="$LDFLAGS"; ++ LDFLAGS="$LDFLAGS"; ++ export LDFLAGS; ++ if test "$cross_compiling" = yes; then : ++ samba_cv_HAVE_w2=cross else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_cv_type_pid_t=yes -+ samba_cv_HAVE_Wdeclaration_after_statement=no -+fi ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ + ++ int main(void) ++ { ++ return 0; ++ } ++_ACEOF ++if ac_fn_c_try_run "$LINENO"; then : ++ samba_cv_HAVE_w2=yes ++else ++ samba_cv_HAVE_w2=no + fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +-$as_echo "$ac_cv_type_pid_t" >&6; } +-if test "x$ac_cv_type_pid_t" = x""yes; then +- : -else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 + +-cat >>confdefs.h <<_ACEOF +-#define pid_t int +-_ACEOF + CFLAGS="$old_CFLAGS"; + old_CFLAGS=""; + export CFLAGS; @@ -37036,57 +36696,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + old_LDFLAGS=""; + export LDFLAGS; - fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_HAVE_Wdeclaration_after_statement" >&5 -+$as_echo "$samba_cv_HAVE_Wdeclaration_after_statement" >&6; } - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 --$as_echo "$ac_cv_type_pid_t" >&6; } --if test "x$ac_cv_type_pid_t" = x""yes; then -- : --else -+ if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then -+ DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement" -+ fi - --cat >>confdefs.h <<_ACEOF --#define pid_t int --_ACEOF -+ #-Werror-implicit-function-declaration -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking that the C compiler understands -Werror-implicit-function-declaration" >&5 -+$as_echo_n "checking that the C compiler understands -Werror-implicit-function-declaration... " >&6; } -+if test "${samba_cv_HAVE_Werror_implicit_function_declaration+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else - --fi - +- -{ $as_echo "$as_me:$LINENO: checking for struct stat.st_rdev" >&5 -$as_echo_n "checking for struct stat.st_rdev... " >&6; } -if test "${ac_cv_member_struct_stat_st_rdev+set}" = set; then - $as_echo_n "(cached) " >&6 -+ old_CFLAGS="$CFLAGS"; -+ CFLAGS="-Werror-implicit-function-declaration"; -+ export CFLAGS; -+ old_CPPFLAGS="$CPPFLAGS"; -+ CPPFLAGS="$CPPFLAGS"; -+ export CPPFLAGS; -+ old_LDFLAGS="$LDFLAGS"; -+ LDFLAGS="$LDFLAGS"; -+ export LDFLAGS; -+ if test "$cross_compiling" = yes; then : -+ samba_cv_HAVE_Werror_implicit_function_declaration=cross ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_HAVE_w2" >&5 ++$as_echo "$samba_cv_HAVE_w2" >&6; } ++if test x"$samba_cv_HAVE_w2" = x"yes"; then ++ Werror_FLAGS="-w2" else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ +-/* end confdefs.h. */ -$ac_includes_default -int -main () @@ -37117,7 +36743,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_member_struct_stat_st_rdev=yes --else ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that the C compiler understands -errwarn" >&5 ++$as_echo_n "checking that the C compiler understands -errwarn... " >&6; } ++if test "${samba_cv_HAVE_errwarn+set}" = set; then : ++ $as_echo_n "(cached) " >&6 + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 @@ -37126,7 +36756,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ ++ ++ old_CFLAGS="$CFLAGS"; ++ CFLAGS="$CFLAGS -errwarn=%all"; ++ export CFLAGS; ++ old_CPPFLAGS="$CPPFLAGS"; ++ CPPFLAGS="$CPPFLAGS"; ++ export CPPFLAGS; ++ old_LDFLAGS="$LDFLAGS"; ++ LDFLAGS="$LDFLAGS"; ++ export LDFLAGS; ++ if test "$cross_compiling" = yes; then : ++ samba_cv_HAVE_errwarn=cross ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ -$ac_includes_default -int -main () @@ -37137,10 +36781,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} -+ int main(void) -+ { -+ return 0; -+ } ++ ++ int main(void) ++ { ++ return 0; ++ } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" @@ -37162,11 +36807,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - } && test -s conftest.$ac_objext; then - ac_cv_member_struct_stat_st_rdev=yes +if ac_fn_c_try_run "$LINENO"; then : -+ samba_cv_HAVE_Werror_implicit_function_declaration=yes ++ samba_cv_HAVE_errwarn=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ samba_cv_HAVE_Werror_implicit_function_declaration=no ++ samba_cv_HAVE_errwarn=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext @@ -37181,32 +36826,19 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + LDFLAGS="$old_LDFLAGS"; + old_LDFLAGS=""; + export LDFLAGS; -+ - ac_cv_member_struct_stat_st_rdev=no fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_HAVE_Werror_implicit_function_declaration" >&5 -+$as_echo "$samba_cv_HAVE_Werror_implicit_function_declaration" >&6; } -+ if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then -+ DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration" -+ fi - +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ # krb5developer is like developer, except we don't get -+ # -Wstrict-prototypes. -+ if test x"$krb5_developer" != x"$yes" ; then -+ DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes" -+ fi -+ -+ if test x"$picky_developer" = x"yes"; then -+ DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror" -+ fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_HAVE_errwarn" >&5 ++$as_echo "$samba_cv_HAVE_errwarn" >&6; } ++if test x"$samba_cv_HAVE_errwarn" = x"yes"; then ++ Werror_FLAGS="-errwarn=%all" ++fi fi - +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+# Check whether --enable-dmalloc was given. -+if test "${enable_dmalloc+set}" = set; then : -+ enableval=$enable_dmalloc; fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_rdev" >&5 -$as_echo "$ac_cv_member_struct_stat_st_rdev" >&6; } @@ -37215,32 +36847,65 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_RDEV 1 -_ACEOF - -+if test "x$enable_dmalloc" = xyes -+then ++############################################ ++# check if the compiler can handle negative enum values ++# and don't truncate the values to INT_MAX ++# a runtime test is needed here + -+$as_echo "#define ENABLE_DMALLOC 1" >>confdefs.h ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that the C compiler understands negative enum values" >&5 ++$as_echo_n "checking that the C compiler understands negative enum values... " >&6; } ++if test "${samba_cv_CC_NEGATIVE_ENUM_VALUES+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ++ if test "$cross_compiling" = yes; then : ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error "cannot run test program while cross compiling ++See \`config.log' for more details." "$LINENO" 5; } ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++ #include ++ enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF }; ++ int main(void) { ++ enum negative_values v1 = NEGATIVE_VALUE; ++ unsigned v2 = NEGATIVE_VALUE; ++ ++ if (v1 != 0xFFFFFFFF) { ++ printf("%u != 0xFFFFFFFF\n", v1); ++ return 1; ++ } ++ if (v2 != 0xFFFFFFFF) { ++ printf("%u != 0xFFFFFFFF\n", v2); ++ return 1; ++ } + ++ return 0; ++ } -cat >>confdefs.h <<\_ACEOF -#define HAVE_ST_RDEV 1 --_ACEOF + _ACEOF ++if ac_fn_c_try_run "$LINENO"; then : ++ samba_cv_CC_NEGATIVE_ENUM_VALUES=yes ++else ++ samba_cv__CC_NEGATIVE_ENUM_VALUES=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi -+$as_echo "#define DMALLOC_FUNC_CHECK 1" >>confdefs.h -+ -+ LIBS="$LIBS -ldmalloc" fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_CC_NEGATIVE_ENUM_VALUES" >&5 ++$as_echo "$samba_cv_CC_NEGATIVE_ENUM_VALUES" >&6; } ++if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using --uint-enums for pidl" >&5 ++$as_echo "$as_me: WARNING: using --uint-enums for pidl" >&2;} ++ PIDL_ARGS="$PIDL_ARGS --uint-enums" ++fi -+################################################# -+# check for a shared memory profiling support -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use profiling" >&5 -+$as_echo_n "checking whether to use profiling... " >&6; } -+ -+# Check whether --with-profiling-data was given. -+if test "${with_profiling_data+set}" = set; then : -+ withval=$with_profiling_data; case "$withval" in -+ yes) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } -{ $as_echo "$as_me:$LINENO: checking for d_off in dirent" >&5 -$as_echo_n "checking for d_off in dirent... " >&6; } @@ -37253,19 +36918,30 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -+$as_echo "#define WITH_PROFILE 1" >>confdefs.h -#include -#include -#include --int --main () --{ ++saved_CFLAGS="$CFLAGS"; ++c99_init=no ++if test x"$c99_init" = x"no"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 designated initializers" >&5 ++$as_echo_n "checking for C99 designated initializers... " >&6; } ++ CFLAGS="$saved_CFLAGS"; ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include + int + main () + { -struct dirent d; d.d_off; -- ; -- return 0; --} --_ACEOF ++ struct foo {int x;char y;}; ++ struct foo bar = { .y = 'X', .x = 1 }; ++ + ; + return 0; + } + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -37285,65 +36961,61 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_dirent_d_off=yes -+ samba_cv_WITH_PROFILE=yes -+ ;; -+ *) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+ samba_cv_WITH_PROFILE=no -+ ;; -+ esac ++if ac_fn_c_try_compile "$LINENO"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; }; c99_init=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_dirent_d_off=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } - -- ac_cv_dirent_d_off=no fi - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_dirent_d_off" >&5 -$as_echo "$ac_cv_dirent_d_off" >&6; } -if test $ac_cv_dirent_d_off = yes; then - +- -cat >>confdefs.h <<\_ACEOF -#define HAVE_DIRENT_D_OFF 1 -_ACEOF -+merged_build_possible=yes - +- -fi - +- -{ $as_echo "$as_me:$LINENO: checking for ssize_t" >&5 -$as_echo_n "checking for ssize_t... " >&6; } -if test "${ac_cv_type_ssize_t+set}" = set; then -+for ac_prog in gawk mawk nawk awk -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if test "${ac_cv_prog_AWK+set}" = set; then : - $as_echo_n "(cached) " >&6 - else +- $as_echo_n "(cached) " >&6 +-else - ac_cv_type_ssize_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ ++if test x"$c99_init" = x"no"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 designated initializers with -AC99" >&5 ++$as_echo_n "checking for C99 designated initializers with -AC99... " >&6; } ++ CFLAGS="$saved_CFLAGS -AC99"; ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ -$ac_includes_default --int --main () --{ ++#include + int + main () + { -if (sizeof (ssize_t)) - return 0; -- ; -- return 0; --} --_ACEOF ++ struct foo {int x;char y;}; ++ struct foo bar = { .y = 'X', .x = 1 }; ++ + ; + return 0; + } + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -37367,17 +37039,35 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ ++if ac_fn_c_try_compile "$LINENO"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; }; c99_init=yes ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++if test x"$c99_init" = x"no"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 designated initializers with -qlanglvl=extc99" >&5 ++$as_echo_n "checking for C99 designated initializers with -qlanglvl=extc99... " >&6; } ++ CFLAGS="$saved_CFLAGS -qlanglvl=extc99"; ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ -$ac_includes_default --int --main () --{ ++#include + int + main () + { -if (sizeof ((ssize_t))) - return 0; -- ; -- return 0; --} --_ACEOF ++ struct foo {int x;char y;}; ++ struct foo bar = { .y = 'X', .x = 1 }; ++ + ; + return 0; + } + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -37397,87 +37087,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -+ if test -n "$AWK"; then -+ ac_cv_prog_AWK="$AWK" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_AWK="$ac_prog" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+AWK=$ac_cv_prog_AWK -+if test -n "$AWK"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -+$as_echo "$AWK" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ test -n "$AWK" && break -+done -+ -+# Check for GNU make -+ -+ -+ -+ -+ -+ -+for ac_prog in gmake make -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if test "${ac_cv_path_MAKE+set}" = set; then : -+ $as_echo_n "(cached) " >&6 - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ case $MAKE in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_MAKE="$MAKE" # Let the user override the test with a path. -+ ;; -+ *) -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_path_MAKE="$as_dir/$ac_word$ac_exec_ext" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS - +- - ac_cv_type_ssize_t=yes -+ ;; -+esac - fi +-fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+MAKE=$ac_cv_path_MAKE -+if test -n "$MAKE"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKE" >&5 -+$as_echo "$MAKE" >&6; } ++if ac_fn_c_try_compile "$LINENO"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; }; c99_init=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 @@ -37486,48 +37106,52 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 -$as_echo "$ac_cv_type_ssize_t" >&6; } -if test "x$ac_cv_type_ssize_t" = x""yes; then - : -else - +- -cat >>confdefs.h <<_ACEOF -#define ssize_t int -_ACEOF -+ test -n "$MAKE" && break -+done - +- -fi - +- -{ $as_echo "$as_me:$LINENO: checking for wchar_t" >&5 -$as_echo_n "checking for wchar_t... " >&6; } -if test "${ac_cv_type_wchar_t+set}" = set; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we have GNU make" >&5 -+$as_echo_n "checking whether we have GNU make... " >&6; } -+if test "${samba_cv_gnu_make+set}" = set; then : - $as_echo_n "(cached) " >&6 - else +- $as_echo_n "(cached) " >&6 +-else - ac_cv_type_wchar_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ ++if test x"$c99_init" = x"no"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 designated initializers with -qlanglvl=stdc99" >&5 ++$as_echo_n "checking for C99 designated initializers with -qlanglvl=stdc99... " >&6; } ++ CFLAGS="$saved_CFLAGS -qlanglvl=stdc99"; ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ -$ac_includes_default --int --main () --{ ++#include + int + main () + { -if (sizeof (wchar_t)) - return 0; -- ; -- return 0; --} --_ACEOF ++ struct foo {int x;char y;}; ++ struct foo bar = { .y = 'X', .x = 1 }; ++ + ; + return 0; + } + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -37551,17 +37175,35 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ ++if ac_fn_c_try_compile "$LINENO"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; }; c99_init=yes ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++if test x"$c99_init" = x"no"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 designated initializers with -c99" >&5 ++$as_echo_n "checking for C99 designated initializers with -c99... " >&6; } ++ CFLAGS="$saved_CFLAGS -c99" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ -$ac_includes_default --int --main () --{ ++#include + int + main () + { -if (sizeof ((wchar_t))) - return 0; -- ; -- return 0; --} --_ACEOF ++ struct foo {int x;char y;}; ++ struct foo bar = { .y = 'X', .x = 1 }; ++ + ; + return 0; + } + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -37581,36 +37223,35 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_cv_type_wchar_t=yes -+if ! $ac_cv_path_MAKE --version | head -1 | grep GNU 2>/dev/null >/dev/null -+then -+ samba_cv_gnu_make=no -+else -+ samba_cv_gnu_make=yes - fi - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_gnu_make" >&5 -+$as_echo "$samba_cv_gnu_make" >&6; } -+if test x$samba_cv_gnu_make = xyes; then -+ true ++if ac_fn_c_try_compile "$LINENO"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; }; c99_init=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ merged_build_possible=no -+fi - - --fi -+# Check for perl +- +- ac_cv_type_wchar_t=yes ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi ++if test "`uname`" = "HP-UX"; then ++ if test "$ac_cv_c_compiler_gnu" = no; then ++ # special override for broken HP-UX compiler - I can't find a way to test ++ # this properly (its a compiler bug) ++ CFLAGS="$CFLAGS -AC99"; ++ c99_init=yes; ++ fi + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_wchar_t" >&5 -$as_echo "$ac_cv_type_wchar_t" >&6; } -if test "x$ac_cv_type_wchar_t" = x""yes; then @@ -37620,142 +37261,114 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>confdefs.h <<_ACEOF -#define wchar_t unsigned short -_ACEOF ++if test x"$c99_init" = x"yes"; then ++ saved_CFLAGS="" --fi ++else ++ CFLAGS="$saved_CFLAGS" ++ saved_CFLAGS="" ++ as_fn_error "c99 structure initializer are not supported" "$LINENO" 5 + fi -############################################ -# for cups support we need libcups, and a handful of header files -+case "$host_os" in -+ *irix*) -+ # On IRIX, we prefer Freeware or Nekoware Perl, because the -+ # system perl is so ancient. -+ # Extract the first word of "perl", so it can be a program name with args. -+set dummy perl; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if test "${ac_cv_path_PERL+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ case $PERL in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_PERL="$PERL" # Let the user override the test with a path. -+ ;; -+ *) -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+as_dummy=""/usr/freeware/bin:/usr/nekoware/bin:$PATH"" -+for as_dir in $as_dummy -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS ++UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking uname -s" >&5 ++$as_echo_n "checking uname -s... " >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNAME_S}" >&5 ++$as_echo "${UNAME_S}" >&6; } -# Check whether --enable-cups was given. -if test "${enable_cups+set}" = set; then - enableval=$enable_cups; -+ test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="""" -+ ;; -+esac -+fi -+PERL=$ac_cv_path_PERL -+if test -n "$PERL"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 -+$as_echo "$PERL" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } - fi +-fi ++UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking uname -r" >&5 ++$as_echo_n "checking uname -r... " >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNAME_R}" >&5 ++$as_echo "${UNAME_R}" >&6; } ++UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking uname -m" >&5 ++$as_echo_n "checking uname -m... " >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNAME_M}" >&5 ++$as_echo "${UNAME_M}" >&6; } -if test x$enable_cups != xno; then - # Extract the first word of "cups-config", so it can be a program name with args. -set dummy cups-config; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -+ ;; -+ *) -+ # Extract the first word of "perl", so it can be a program name with args. -+set dummy perl; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } +-$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_CUPS_CONFIG+set}" = set; then -+if test "${ac_cv_path_PERL+set}" = set; then : - $as_echo_n "(cached) " >&6 - else +- $as_echo_n "(cached) " >&6 +-else - case $CUPS_CONFIG in -+ case $PERL in - [\\/]* | ?:[\\/]*) +- [\\/]* | ?:[\\/]*) - ac_cv_path_CUPS_CONFIG="$CUPS_CONFIG" # Let the user override the test with a path. -+ ac_cv_path_PERL="$PERL" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -@@ -37361,2076 +7444,1344 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. +- ;; +- *) +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then +- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_CUPS_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done +- break 2 +- fi -done -+ done - IFS=$as_save_IFS +-done +-IFS=$as_save_IFS ++UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking uname -p" >&5 ++$as_echo_n "checking uname -p... " >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNAME_P}" >&5 ++$as_echo "${UNAME_P}" >&6; } - ;; +- ;; ++UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking uname -i" >&5 ++$as_echo_n "checking uname -i... " >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNAME_I}" >&5 ++$as_echo "${UNAME_I}" >&6; } ++ ++ case "$host_os" in ++ *irix6*) ++ #TODO add to libreplace ++ if test x"$ac_cv_c_compiler_gnu" != x"yes" ; then ++ CFLAGS="$CFLAGS -diag_error 1035" ++ CFLAGS="$CFLAGS -woff 1209,1174,3201" ++ fi ++ ;; esac - fi +-fi -CUPS_CONFIG=$ac_cv_path_CUPS_CONFIG -if test -n "$CUPS_CONFIG"; then - { $as_echo "$as_me:$LINENO: result: $CUPS_CONFIG" >&5 -$as_echo "$CUPS_CONFIG" >&6; } -+PERL=$ac_cv_path_PERL -+if test -n "$PERL"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 -+$as_echo "$PERL" >&6; } - else +-else - { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - fi +-$as_echo "no" >&6; } +-fi ++DYNEXP= -+ ;; -+esac ++LDSHFLAGS_Z_DEFS= - if test "x$CUPS_CONFIG" != x; then -- ++LDSHFLAGS_Z_NODEFS= + - ac_save_CFLAGS=$CFLAGS - ac_save_LDFLAGS=$LDFLAGS - ac_save_PRINT_LIBS=$PRINT_LIBS - CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`" - LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`" -- PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`" -+if test x"$PERL" = x""; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No version of perl was found!" >&5 -+$as_echo "$as_me: WARNING: No version of perl was found!" >&2;} -+ merged_build_possible=no -+else -+ if test x"$debug" = x"yes";then -+ PERL="$PERL -W" -+ fi -+ export PERL -+ true -+fi +- PRINT_LIBS="$PRINT_LIBS -lcups" ++default_static_modules="pdb_smbpasswd pdb_tdbsam pdb_wbc_sam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog auth_sam auth_unix auth_winbind auth_wbc auth_server auth_domain auth_builtin auth_netlogond vfs_default nss_info_template" -for ac_header in cups/cups.h cups/language.h -do @@ -37764,19 +37377,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -+set dummy ${ac_tool_prefix}ar; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if test "${ac_cv_prog_AR+set}" = set; then : - $as_echo_n "(cached) " >&6 +- $as_echo_n "(cached) " >&6 -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - else +-else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } @@ -37808,33 +37415,35 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -+ if test -n "$AR"; then -+ ac_cv_prog_AR="$AR" # Let the user override the test. - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_AR="${ac_tool_prefix}ar" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS ++default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr vfs_streams_depot vfs_acl_xattr vfs_acl_tdb vfs_smb_traffic_analyzer vfs_preopen vfs_catia vfs_scannedonly" - ac_header_compiler=no ++if test "x$developer" = xyes; then ++ default_static_modules="$default_static_modules rpc_rpcecho pdb_ads" ++ default_shared_modules="$default_shared_modules charset_weird perfcount_test" fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } -- ++# ++# Config CPPFLAG settings for strange OS's that must be set ++# before other tests. Do NOT invoke AC_CHECK_HEADERS within this ++# case statement; its first reference must be unconditional. ++# ++case "$host_os" in ++ *hpux*) ++# ++# Defines needed for HPUX support. ++# HPUX has bigcrypt but (sometimes?) doesn't use it for ++# password hashing - hence the USE_BOTH_CRYPT_CALLS define. ++# ++ case `uname -r` in ++ *9*|*10*|*11) + -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } @@ -37864,23 +37473,27 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - }; then - ac_header_preproc=yes -+fi -+AR=$ac_cv_prog_AR -+if test -n "$AR"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -+$as_echo "$AR" >&6; } - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++$as_echo "#define USE_BOTH_CRYPT_CALLS 1" >>confdefs.h + - ac_header_preproc=no -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } - fi +-fi ++ ;; ++ esac ++ ;; -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } ++# ++# CRAY Unicos has broken const handling ++ *unicos*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabling const" >&5 ++$as_echo "disabling const" >&6; } ++ CPPFLAGS="$CPPFLAGS -Dconst=" ++ ;; -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -37915,97 +37528,266 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+fi -+if test -z "$ac_cv_prog_AR"; then -+ ac_ct_AR=$AR -+ # Extract the first word of "ar", so it can be a program name with args. -+set dummy ar; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then : - $as_echo_n "(cached) " >&6 - else +- $as_echo_n "(cached) " >&6 +-else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -+ if test -n "$ac_ct_AR"; then -+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_AR="ar" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS ++# ++# AIX4.x doesn't even admit to having large ++# files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set. ++# ++ *aix4*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: enabling large file support" >&5 ++$as_echo "enabling large file support" >&6; } ++ CPPFLAGS="$CPPFLAGS -D_LARGE_FILES" - fi +-fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF -- -+fi -+ac_ct_AR=$ac_cv_prog_ac_ct_AR -+if test -n "$ac_ct_AR"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -+$as_echo "$ac_ct_AR" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } - fi ++$as_echo "#define _LARGE_FILES 1" >>confdefs.h + +-fi ++ ;; ++# ++# Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit ++# to the existance of large files.. ++# Note that -D_LARGEFILE64_SOURCE is different from the Sun ++# recommendations on large file support, however it makes the ++# compile work using gcc 2.7 and 2.8, whereas using the Sun ++# recommendation makes the compile fail on gcc2.7. JRA. ++# ++# Solaris uses SYSV printing. Make sure to set that here. --jerry ++# ++ *solaris*) -done -+ if test "x$ac_ct_AR" = x; then -+ AR="" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ AR=$ac_ct_AR -+ fi -+else -+ AR="$ac_cv_prog_AR" -+fi ++$as_echo "#define SYSV 1" >>confdefs.h - if test x"$ac_cv_header_cups_cups_h" = xyes -a \ - x"$ac_cv_header_cups_language_h" = xyes; then ++ case `uname -r` in ++ 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no large file support" >&5 ++$as_echo "no large file support" >&6; } ++ ;; ++ 5.*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: enabling large file support" >&5 ++$as_echo "enabling large file support" >&6; } ++ if test "$ac_cv_c_compiler_gnu" = yes; then ++ ${CC-cc} -v >conftest.c 2>&1 ++ ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c` ++ rm -fr conftest.c ++ case "$ac_cv_gcc_compiler_version_number" in ++ *"gcc version 2.6"*|*"gcc version 2.7"*) ++ CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT" ++ LDFLAGS="$LDFLAGS -lthread" -cat >>confdefs.h <<\_ACEOF -#define HAVE_CUPS 1 -_ACEOF -+LD=ld -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -+if test "${ac_cv_prog_gnu_ld+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ # I'd rather use --version here, but apparently some GNU ld's only accept -v. -+if $LD -v 2>&1 &5; then -+ ac_cv_prog_gnu_ld=yes -+else -+ ac_cv_prog_gnu_ld=no -+fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gnu_ld" >&5 -+$as_echo "$ac_cv_prog_gnu_ld" >&6; } ++$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h - samba_cv_HAVE_CUPS=yes ++ ;; ++ *) ++ CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64" ++ LDFLAGS="$LDFLAGS -lthread" + ++$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h + + +-ac_check_lib_ext_save_LIBS=$LIBS +-LIBS="-lcups $PRINT_LIBS $LIBS" ++$as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h + ++ ;; ++ esac ++ else ++ CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64" ++ LDFLAGS="$LDFLAGS -lthread" + ++$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h + + +- { $as_echo "$as_me:$LINENO: checking for httpConnectEncrypt in -lcups" >&5 +-$as_echo_n "checking for httpConnectEncrypt in -lcups... " >&6; } +-if test "${ac_cv_lib_ext_cups_httpConnectEncrypt+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ ++$as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char httpConnectEncrypt (); +-int +-main () +-{ +-return httpConnectEncrypt (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_lib_ext_cups_httpConnectEncrypt=yes; +- ac_cv_lib_ext_cups=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ fi ++ ;; ++ esac ++ ;; ++# ++# IRIX uses SYSV printing. Make sure to set that here ++# ++ *irix*) + +- ac_cv_lib_ext_cups_httpConnectEncrypt=no; +- ac_cv_lib_ext_cups=no +-fi ++$as_echo "#define SYSV 1" >>confdefs.h ++ ++ ;; ++ *freebsd*|*dragonfly*) ++ ++$as_echo "#define FREEBSD 1" >>confdefs.h ++ ++ ;; ++# ++# VOS may need to have POSIX support and System V compatibility enabled. ++# ++ *vos*) ++ case "$CPPFLAGS" in ++ *-D_POSIX_C_SOURCE*) ++ ;; ++ *) ++ CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L" ++ ++$as_echo "#define _POSIX_C_SOURCE 200112L" >>confdefs.h ++ ++ ;; ++ esac ++ case "$CPPFLAGS" in ++ *-D_SYSV*|*-D_SVID_SOURCE*) ++ ;; ++ *) ++ CPPFLAGS="$CPPFLAGS -D_SYSV" + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++$as_echo "#define _SYSV 1" >>confdefs.h ++ ++ esac ++ ;; ++# ++# Tests needed for SINIX large file support. ++# ++ *sysv4*) ++ if test $host = mips-sni-sysv4 ; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LFS support" >&5 ++$as_echo_n "checking for LFS support... " >&6; } ++ old_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS" ++ if test "$cross_compiling" = yes; then : ++ SINIX_LFS_SUPPORT=cross ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ + +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ext_cups_httpConnectEncrypt" >&5 +-$as_echo "$ac_cv_lib_ext_cups_httpConnectEncrypt" >&6; } +- if test $ac_cv_lib_ext_cups_httpConnectEncrypt = yes; then +- cat >>confdefs.h <<_ACEOF +-#define HAVE_HTTPCONNECTENCRYPT 1 ++#include ++main () { ++#if _LFS64_LARGEFILE == 1 ++exit(0); ++#else ++exit(1); ++#endif ++} + _ACEOF +- ++if ac_fn_c_try_run "$LINENO"; then : ++ SINIX_LFS_SUPPORT=yes ++else ++ SINIX_LFS_SUPPORT=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + +-LIBS=$ac_check_lib_ext_save_LIBS +- +-if test $ac_cv_lib_ext_cups = yes; then +- cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBCUPS 1 +-_ACEOF +- +- case "$PRINT_LIBS" in +- *-lcups*) +- ;; +- *) +- PRINT_LIBS="-lcups $PRINT_LIBS" +- ;; +- esac ++ CPPFLAGS="$old_CPPFLAGS" ++ if test x$SINIX_LFS_SUPPORT = xyes ; then ++ CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS" + ++$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h + +-fi ++ CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS" ++ LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS" ++ LIBS="`getconf LFS64_LIBS` $LIBS" ++ fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SINIX_LFS_SUPPORT" >&5 ++$as_echo "$SINIX_LFS_SUPPORT" >&6; } ++ fi ++ ;; + - else - { $as_echo "$as_me:$LINENO: WARNING: cups-config around but cups-devel not installed" >&5 -$as_echo "$as_me: WARNING: cups-config around but cups-devel not installed" >&2;} @@ -38013,85 +37795,57 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - LDFLAGS=$ac_save_LDFLAGS - PRINT_LIBS=$ac_save_PRINT_LIBS - fi ++# Systems with LFS support. ++# ++ gnu* | k*bsd*-gnu | kopensolaris*-gnu) ++ CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS" - elif test x"$enable_cups" = x"yes"; then - { { $as_echo "$as_me:$LINENO: error: Cups support required but cups-config not located. Make sure cups-devel related files are installed." >&5 -$as_echo "$as_me: error: Cups support required but cups-config not located. Make sure cups-devel related files are installed." >&2;} - { (exit 1); exit 1; }; } -+if test "$ac_cv_prog_gnu_ld" = "yes"; then -+ ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1` -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking GNU ld release date" >&5 -+$as_echo_n "checking GNU ld release date... " >&6; } -+ ac_cv_gnu_ld_date=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'` -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_gnu_ld_date}" >&5 -+$as_echo "${ac_cv_gnu_ld_date}" >&6; } -+ if test -n "$ac_cv_gnu_ld_date"; then -+ if test "$ac_cv_gnu_ld_date" -lt 20030217; then -+ ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes -+ fi -+ if test "$ac_cv_gnu_ld_date" -gt 20030101; then -+ ac_cv_gnu_ld_version_script=yes -+ fi -+ else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking GNU ld release version" >&5 -+$as_echo_n "checking GNU ld release version... " >&6; } -+ ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^[^0-9]*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'` -+ ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1` -+ ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2` -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_gnu_ld_vernr}" >&5 -+$as_echo "${ac_cv_gnu_ld_vernr}" >&6; } -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking GNU ld release version major" >&5 -+$as_echo_n "checking GNU ld release version major... " >&6; } -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_gnu_ld_vernr_major}" >&5 -+$as_echo "${ac_cv_gnu_ld_vernr_major}" >&6; } -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking GNU ld release version minor" >&5 -+$as_echo_n "checking GNU ld release version minor... " >&6; } -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_gnu_ld_vernr_minor}" >&5 -+$as_echo "${ac_cv_gnu_ld_vernr_minor}" >&6; } -+ if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then -+ ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes -+ fi -+ if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_ld_vernr_major" = 2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then -+ ac_cv_gnu_ld_version_script=yes -+ fi - fi - fi +- fi +-fi ++$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h -# Check whether --enable-iprint was given. -if test "${enable_iprint+set}" = set; then - enableval=$enable_iprint; -fi -- -- + ++$as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h + -if test x$enable_iprint != xno; then - if test x"$samba_cv_HAVE_CUPS" = xyes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_IPRINT 1 -_ACEOF ++$as_echo "#define _GNU_SOURCE 1" >>confdefs.h - elif test x"$enable_iprint" = x"yes"; then - { { $as_echo "$as_me:$LINENO: error: iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled." >&5 -$as_echo "$as_me: error: iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled." >&2;} - { (exit 1); exit 1; }; } - fi -+if test "x$CC" != xcc; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 -+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 -+$as_echo_n "checking whether cc understands -c and -o together... " >&6; } - fi -- +-fi ++ ;; + -############################################ -# check if the compiler will optimize out function calls -{ $as_echo "$as_me:$LINENO: checking if the compiler will optimize out function calls" >&5 -$as_echo_n "checking if the compiler will optimize out function calls... " >&6; } -if test "${samba_cv_optimize_out_funcation_calls+set}" = set; then -+set dummy $CC; ac_cc=`$as_echo "$2" | -+ sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -+if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 +- $as_echo_n "(cached) " >&6 ++# Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support. ++# ++ *linux*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LFS support" >&5 ++$as_echo_n "checking for LFS support... " >&6; } ++ old_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS" ++ if test "$cross_compiling" = yes; then : ++ LINUX_LFS_SUPPORT=cross else - - cat >conftest.$ac_ext <<_ACEOF @@ -38103,50 +37857,63 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ -#include - int - main () - { +-int +-main () +-{ ++#include ++#include ++#include ++#include ++main() { ++#if _LFS64_LARGEFILE == 1 ++ struct utsname uts; ++ char *release; ++ int major, minor; - if (0) { - this_function_does_not_exist(); - } else { - return 1; - } -- -- - ; - return 0; ++ /* Ensure this is glibc 2.2 or higher */ ++#if defined(__GLIBC__) && defined(__GLIBC_MINOR__) ++ int libc_major = __GLIBC__; ++ int libc_minor = __GLIBC_MINOR__; + ++ if (libc_major < 2) ++ exit(1); ++ if (libc_minor < 2) ++ exit(1); ++#endif + +- ; +- return 0; ++ /* Ensure this is kernel 2.4 or higher */ ++ ++ uname(&uts); ++ release = strdup(uts.release); ++ major = atoi(strsep(&release, ".")); ++ minor = atoi(strsep(&release, ".")); ++ ++ if (major > 2 || (major == 2 && minor > 3)) ++ exit(0); ++ exit(1); ++#else ++ exit(1); ++#endif } ++ _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in -+# Make sure it works both with $CC and with simple cc. -+# We do the test twice because some compilers refuse to overwrite an -+# existing .o file with -o, though they will create one. -+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' -+rm -f conftest2.* -+if { { case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } && -+ test -f conftest2.$ac_objext && { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; - esac +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_try") 2>&5 - ac_status=$? +- ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 @@ -38159,81 +37926,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - samba_cv_optimize_out_funcation_calls=yes -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; -+then -+ eval ac_cv_prog_cc_${ac_cc}_c_o=yes -+ if test "x$CC" != xcc; then -+ # Test first that cc exists at all. -+ if { ac_try='cc -c conftest.$ac_ext >&5' -+ { { case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; }; then -+ ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' -+ rm -f conftest2.* -+ if { { case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } && -+ test -f conftest2.$ac_objext && { { case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; -+ then -+ # cc works too. -+ : -+ else -+ # cc exists but doesn't like -o. -+ eval ac_cv_prog_cc_${ac_cc}_c_o=no -+ fi -+ fi -+ fi ++if ac_fn_c_try_run "$LINENO"; then : ++ LINUX_LFS_SUPPORT=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ eval ac_cv_prog_cc_${ac_cc}_c_o=no -+fi -+rm -f core conftest* -+ -+fi -+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+ -+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h - +- - samba_cv_optimize_out_funcation_calls=no ++ LINUX_LFS_SUPPORT=no fi - +- -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then -+ BROKEN_CC= -+else -+ BROKEN_CC=# ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $samba_cv_optimize_out_funcation_calls" >&5 -$as_echo "$samba_cv_optimize_out_funcation_calls" >&6; } @@ -38242,91 +37949,28 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>confdefs.h <<\_ACEOF -#define HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS 1 -_ACEOF ++ CPPFLAGS="$old_CPPFLAGS" ++ if test x$LINUX_LFS_SUPPORT = xyes ; then ++ CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS" -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that the C compiler understands -Werror" >&5 -+$as_echo_n "checking that the C compiler understands -Werror... " >&6; } -+if test "${samba_cv_HAVE_Werror+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ -+ -+ old_CFLAGS="$CFLAGS"; -+ CFLAGS="-Werror"; -+ export CFLAGS; -+ old_CPPFLAGS="$CPPFLAGS"; -+ CPPFLAGS="$CPPFLAGS"; -+ export CPPFLAGS; -+ old_LDFLAGS="$LDFLAGS"; -+ LDFLAGS="$LDFLAGS"; -+ export LDFLAGS; -+ if test "$cross_compiling" = yes; then : -+ samba_cv_HAVE_Werror=cross -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+ int main(void) -+ { -+ return 0; -+ } -+_ACEOF -+if ac_fn_c_try_run "$LINENO"; then : -+ samba_cv_HAVE_Werror=yes -+else -+ samba_cv_HAVE_Werror=no -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext - fi +-fi ++$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h -############################################# -# check for fd passing struct via msg_control -{ $as_echo "$as_me:$LINENO: checking for fd passing via msg_control" >&5 -$as_echo_n "checking for fd passing via msg_control... " >&6; } -if test "${samba_cv_msghdr_msg_control+set}" = set; then -+ CFLAGS="$old_CFLAGS"; -+ old_CFLAGS=""; -+ export CFLAGS; -+ CPPFLAGS="$old_CPPFLAGS"; -+ old_CPPFLAGS=""; -+ export CPPFLAGS; -+ LDFLAGS="$old_LDFLAGS"; -+ old_LDFLAGS=""; -+ export LDFLAGS; -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_HAVE_Werror" >&5 -+$as_echo "$samba_cv_HAVE_Werror" >&6; } -+if test x"$samba_cv_HAVE_Werror" = x"yes"; then -+ Werror_FLAGS="-Werror" -+else -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that the C compiler understands -w2" >&5 -+$as_echo_n "checking that the C compiler understands -w2... " >&6; } -+if test "${samba_cv_HAVE_w2+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- +- $as_echo_n "(cached) " >&6 +-else + - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+ -+ -+ old_CFLAGS="$CFLAGS"; -+ CFLAGS="-w2"; -+ export CFLAGS; -+ old_CPPFLAGS="$CPPFLAGS"; -+ CPPFLAGS="$CPPFLAGS"; -+ export CPPFLAGS; -+ old_LDFLAGS="$LDFLAGS"; -+ LDFLAGS="$LDFLAGS"; -+ export LDFLAGS; -+ if test "$cross_compiling" = yes; then : -+ samba_cv_HAVE_w2=cross -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ +-/* end confdefs.h. */ ++$as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h -#include -#include @@ -38336,7 +37980,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -int -main () -{ -- + - struct msghdr msg; - union { - struct cmsghdr cm; @@ -38344,15 +37988,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - } control_un; - msg.msg_control = control_un.control; - msg.msg_controllen = sizeof(control_un.control); -- ++$as_echo "#define _GNU_SOURCE 1" >>confdefs.h + - ; - return 0; -} -+ int main(void) -+ { -+ return 0; -+ } - _ACEOF +-_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -38372,62 +38013,61 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - samba_cv_msghdr_msg_control=yes -+if ac_fn_c_try_run "$LINENO"; then : -+ samba_cv_HAVE_w2=yes - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++ fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINUX_LFS_SUPPORT" >&5 ++$as_echo "$LINUX_LFS_SUPPORT" >&6; } ++ ;; + - samba_cv_msghdr_msg_control=no -+ samba_cv_HAVE_w2=no - fi -- +-fi ++# ++# MacOS X is the *only* system that uses compose character in utf8. This ++# is so horribly broken.... ++# ++ *darwin*) + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext - fi +-fi -{ $as_echo "$as_me:$LINENO: result: $samba_cv_msghdr_msg_control" >&5 -$as_echo "$samba_cv_msghdr_msg_control" >&6; } -if test x"$samba_cv_msghdr_msg_control" = x"yes"; then ++$as_echo "#define BROKEN_UNICODE_COMPOSE_CHARACTERS 1" >>confdefs.h -cat >>confdefs.h <<\_ACEOF -#define HAVE_MSGHDR_MSG_CONTROL 1 -_ACEOF -+ CFLAGS="$old_CFLAGS"; -+ old_CFLAGS=""; -+ export CFLAGS; -+ CPPFLAGS="$old_CPPFLAGS"; -+ old_CPPFLAGS=""; -+ export CPPFLAGS; -+ LDFLAGS="$old_LDFLAGS"; -+ old_LDFLAGS=""; -+ export LDFLAGS; - fi -- +-fi ++# Add a system specific charset module. ++ default_shared_modules="$default_shared_modules charset_macosxfs" + -############################################# -# check for fd passing struct via msg_acctrights -{ $as_echo "$as_me:$LINENO: checking for fd passing via msg_acctrights" >&5 -$as_echo_n "checking for fd passing via msg_acctrights... " >&6; } -if test "${samba_cv_msghdr_msg_acctrights+set}" = set; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_HAVE_w2" >&5 -+$as_echo "$samba_cv_HAVE_w2" >&6; } -+if test x"$samba_cv_HAVE_w2" = x"yes"; then -+ Werror_FLAGS="-w2" -+else -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that the C compiler understands -errwarn" >&5 -+$as_echo_n "checking that the C compiler understands -errwarn... " >&6; } -+if test "${samba_cv_HAVE_errwarn+set}" = set; then : - $as_echo_n "(cached) " >&6 +- $as_echo_n "(cached) " >&6 ++ ;; ++ *hurd*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LFS support" >&5 ++$as_echo_n "checking for LFS support... " >&6; } ++ old_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS" ++ if test "$cross_compiling" = yes; then : ++ GLIBC_LFS_SUPPORT=cross else - +- - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ -- ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + -#include -#include -#include @@ -38436,33 +38076,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -int -main () -{ - +- - struct msghdr msg; - int fd; - msg.msg_acctrights = (caddr_t) &fd; - msg.msg_acctrightslen = sizeof(fd); -+ old_CFLAGS="$CFLAGS"; -+ CFLAGS="-errwarn=%all"; -+ export CFLAGS; -+ old_CPPFLAGS="$CPPFLAGS"; -+ CPPFLAGS="$CPPFLAGS"; -+ export CPPFLAGS; -+ old_LDFLAGS="$LDFLAGS"; -+ LDFLAGS="$LDFLAGS"; -+ export LDFLAGS; -+ if test "$cross_compiling" = yes; then : -+ samba_cv_HAVE_errwarn=cross -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ - +- - ; - return 0; --} -+ int main(void) -+ { -+ return 0; -+ } ++#include ++main () { ++#if _LFS64_LARGEFILE == 1 ++exit(0); ++#else ++exit(1); ++#endif + } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" @@ -38484,13 +38113,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - } && test -s conftest.$ac_objext; then - samba_cv_msghdr_msg_acctrights=yes +if ac_fn_c_try_run "$LINENO"; then : -+ samba_cv_HAVE_errwarn=yes ++ GLIBC_LFS_SUPPORT=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - samba_cv_msghdr_msg_acctrights=no -+ samba_cv_HAVE_errwarn=no ++ GLIBC_LFS_SUPPORT=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -38500,33 +38129,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: result: $samba_cv_msghdr_msg_acctrights" >&5 -$as_echo "$samba_cv_msghdr_msg_acctrights" >&6; } -if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then - +- -cat >>confdefs.h <<\_ACEOF -#define HAVE_MSGHDR_MSG_ACCTRIGHTS 1 -_ACEOF -+ CFLAGS="$old_CFLAGS"; -+ old_CFLAGS=""; -+ export CFLAGS; -+ CPPFLAGS="$old_CPPFLAGS"; -+ old_CPPFLAGS=""; -+ export CPPFLAGS; -+ LDFLAGS="$old_LDFLAGS"; -+ old_LDFLAGS=""; -+ export LDFLAGS; - fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_HAVE_errwarn" >&5 -+$as_echo "$samba_cv_HAVE_errwarn" >&6; } -+if test x"$samba_cv_HAVE_errwarn" = x"yes"; then -+ Werror_FLAGS="-errwarn=%all" -+fi -+fi -+fi +-fi ++ CPPFLAGS="$old_CPPFLAGS" ++ if test x$GLIBC_LFS_SUPPORT = xyes ; then ++ CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS" -+############################################ -+# check if the compiler can handle negative enum values -+# and don't truncate the values to INT_MAX -+# a runtime test is needed here ++$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h -for ac_func in dirfd -do @@ -38534,11 +38147,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that the C compiler understands negative enum values" >&5 -+$as_echo_n "checking that the C compiler understands negative enum values... " >&6; } -+if test "${samba_cv_CC_NEGATIVE_ENUM_VALUES+set}" = set; then : - $as_echo_n "(cached) " >&6 - else +- $as_echo_n "(cached) " >&6 +-else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF @@ -38553,35 +38163,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -+ if test "$cross_compiling" = yes; then : -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error "cannot run test program while cross compiling -+See \`config.log' for more details." "$LINENO" 5; } -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ ++$as_echo "#define _GNU_SOURCE 1" >>confdefs.h -#ifdef __STDC__ -# include -#else -# include -#endif -+ #include -+ enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF }; -+ int main(void) { -+ enum negative_values v1 = NEGATIVE_VALUE; -+ unsigned v2 = NEGATIVE_VALUE; ++ fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLIBC_LFS_SUPPORT" >&5 ++$as_echo "$GLIBC_LFS_SUPPORT" >&6; } ++ ;; ++ *qnx*) ++ CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS" -#undef $ac_func -+ if (v1 != 0xFFFFFFFF) { -+ printf("%u != 0xFFFFFFFF\n", v1); -+ return 1; -+ } -+ if (v2 != 0xFFFFFFFF) { -+ printf("%u != 0xFFFFFFFF\n", v2); -+ return 1; -+ } ++$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -38596,8 +38193,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -+ return 0; -+ } ++ ;; -int -main () @@ -38606,13 +38202,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} - _ACEOF +-_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; --esac + esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 @@ -38629,22 +38225,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -+if ac_fn_c_try_run "$LINENO"; then : -+ samba_cv_CC_NEGATIVE_ENUM_VALUES=yes - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- + - eval "$as_ac_var=no" -+ samba_cv__CC_NEGATIVE_ENUM_VALUES=no - fi +-fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext - fi +-fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -38655,19 +38246,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - - fi +- +-fi -done - -if test x"$ac_cv_func_dirfd" = x"yes"; then - default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort" -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_CC_NEGATIVE_ENUM_VALUES" >&5 -+$as_echo "$samba_cv_CC_NEGATIVE_ENUM_VALUES" >&6; } -+if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using --uint-enums for pidl" >&5 -+$as_echo "$as_me: WARNING: using --uint-enums for pidl" >&2;} -+ PIDL_ARGS="$PIDL_ARGS --uint-enums" - fi +-fi ++SAVE_CPPFLAGS="${CPPFLAGS}" ++CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}" -{ $as_echo "$as_me:$LINENO: checking for struct sigevent type" >&5 -$as_echo_n "checking for struct sigevent type... " >&6; } @@ -38681,6 +38268,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ ++echo "LIBREPLACE_BROKEN_CHECKS: START" -#include -#if STDC_HEADERS @@ -38688,26 +38276,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#include -#endif -#include -+saved_CFLAGS="$CFLAGS"; -+c99_init=no -+if test x"$c99_init" = x"no"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 designated initializers" >&5 -+$as_echo_n "checking for C99 designated initializers... " >&6; } -+ CFLAGS="$saved_CFLAGS"; -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include - int - main () - { +-int +-main () +-{ -struct sigevent s; -+ struct foo {int x;char y;}; -+ struct foo bar = { .y = 'X', .x = 1 }; -+ - ; - return 0; - } - _ACEOF +- ; +- return 0; +-} +-_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -38727,28 +38303,34 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - samba_cv_struct_sigevent=yes -+if ac_fn_c_try_compile "$LINENO"; then : -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; }; c99_init=yes - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++libreplacedir="" ++libreplacepaths="$srcdir $srcdir/lib/replace $srcdir/libreplace $srcdir/../libreplace $srcdir/../replace $srcdir/../lib/replace $srcdir/../../../lib/replace" ++for d in $libreplacepaths; do ++ if test -f "$d/replace.c"; then ++ libreplacedir="$d" + - samba_cv_struct_sigevent=no -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } - fi -- - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ break; ++ fi ++done ++if test x"$libreplacedir" = "x"; then ++ as_fn_error "cannot find libreplace in $libreplacepaths" "$LINENO" 5 fi + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi -{ $as_echo "$as_me:$LINENO: result: $samba_cv_struct_sigevent" >&5 -$as_echo "$samba_cv_struct_sigevent" >&6; } -if test x"$samba_cv_struct_sigevent" = x"yes"; then -- ++LIBREPLACEOBJ="$libreplacedir/replace.o" + -cat >>confdefs.h <<\_ACEOF -#define HAVE_STRUCT_SIGEVENT 1 -_ACEOF -- + - { $as_echo "$as_me:$LINENO: checking for struct sigevent.sigev_value.sival_ptr" >&5 -$as_echo_n "checking for struct sigevent.sigev_value.sival_ptr... " >&6; } -if test "${ac_cv_member_struct_sigevent_sigev_value_sival_ptr+set}" = set; then @@ -38759,28 +38341,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+if test x"$c99_init" = x"no"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 designated initializers with -AC99" >&5 -+$as_echo_n "checking for C99 designated initializers with -AC99... " >&6; } -+ CFLAGS="$saved_CFLAGS -AC99"; -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ +-/* end confdefs.h. */ -#include -- -+#include - int - main () - { ++LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/snprintf.o" + +-int +-main () +-{ -static struct sigevent ac_aggr; -if (ac_aggr.sigev_value.sival_ptr) -return 0; -+ struct foo {int x;char y;}; -+ struct foo bar = { .y = 'X', .x = 1 }; -+ - ; - return 0; - } - _ACEOF +- ; +- return 0; +-} +-_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -38800,9 +38374,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_member_struct_sigevent_sigev_value_sival_ptr=yes -+if ac_fn_c_try_compile "$LINENO"; then : -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; }; c99_init=yes ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 ++$as_echo_n "checking return type of signal handlers... " >&6; } ++if test "${ac_cv_type_signal+set}" = set; then : ++ $as_echo_n "(cached) " >&6 else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 @@ -38812,29 +38387,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+if test x"$c99_init" = x"no"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 designated initializers with -qlanglvl=extc99" >&5 -+$as_echo_n "checking for C99 designated initializers with -qlanglvl=extc99... " >&6; } -+ CFLAGS="$saved_CFLAGS -qlanglvl=extc99"; -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ --#include -- -+#include ++#include + #include + int main () { -static struct sigevent ac_aggr; -if (sizeof ac_aggr.sigev_value.sival_ptr) -return 0; -+ struct foo {int x;char y;}; -+ struct foo bar = { .y = 'X', .x = 1 }; -+ ++return *(signal (0, 0)) (0) == 1; ; return 0; } @@ -38859,8 +38423,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - } && test -s conftest.$ac_objext; then - ac_cv_member_struct_sigevent_sigev_value_sival_ptr=yes +if ac_fn_c_try_compile "$LINENO"; then : -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; }; c99_init=yes ++ ac_cv_type_signal=int else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 @@ -38869,8 +38432,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } ++ ac_cv_type_signal=void fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -38878,45 +38440,42 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_sigevent_sigev_value_sival_ptr" >&5 -$as_echo "$ac_cv_member_struct_sigevent_sigev_value_sival_ptr" >&6; } -if test "x$ac_cv_member_struct_sigevent_sigev_value_sival_ptr" = x""yes; then -- --cat >>confdefs.h <<_ACEOF ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 ++$as_echo "$ac_cv_type_signal" >&6; } + + cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_SIGEVENT_SIGEV_VALUE_SIVAL_PTR 1 --_ACEOF -- -- ++#define RETSIGTYPE $ac_cv_type_signal + _ACEOF + + -fi -{ $as_echo "$as_me:$LINENO: checking for struct sigevent.sigev_value.sigval_ptr" >&5 -$as_echo_n "checking for struct sigevent.sigev_value.sigval_ptr... " >&6; } -if test "${ac_cv_member_struct_sigevent_sigev_value_sigval_ptr+set}" = set; then -- $as_echo_n "(cached) " >&6 --else ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 ++$as_echo_n "checking for uid_t in sys/types.h... " >&6; } ++if test "${ac_cv_type_uid_t+set}" = set; then : + $as_echo_n "(cached) " >&6 + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+if test x"$c99_init" = x"no"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 designated initializers with -qlanglvl=stdc99" >&5 -+$as_echo_n "checking for C99 designated initializers with -qlanglvl=stdc99... " >&6; } -+ CFLAGS="$saved_CFLAGS -qlanglvl=stdc99"; -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ +-/* end confdefs.h. */ -#include - -+#include - int - main () - { +-int +-main () +-{ -static struct sigevent ac_aggr; -if (ac_aggr.sigev_value.sigval_ptr) -return 0; -+ struct foo {int x;char y;}; -+ struct foo bar = { .y = 'X', .x = 1 }; -+ - ; - return 0; - } - _ACEOF +- ; +- return 0; +-} +-_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -38936,10 +38495,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_member_struct_sigevent_sigev_value_sigval_ptr=yes -+if ac_fn_c_try_compile "$LINENO"; then : -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; }; c99_init=yes - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - @@ -38948,32 +38504,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+if test x"$c99_init" = x"no"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 designated initializers with -c99" >&5 -+$as_echo_n "checking for C99 designated initializers with -c99... " >&6; } -+ CFLAGS="$saved_CFLAGS -c99" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -- -+#include - int - main () - { ++#include + +-int +-main () +-{ -static struct sigevent ac_aggr; -if (sizeof ac_aggr.sigev_value.sigval_ptr) -return 0; -+ struct foo {int x;char y;}; -+ struct foo bar = { .y = 'X', .x = 1 }; -+ - ; - return 0; - } +- ; +- return 0; +-} _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" @@ -38994,59 +38538,48 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_member_struct_sigevent_sigev_value_sigval_ptr=yes -+if ac_fn_c_try_compile "$LINENO"; then : -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; }; c99_init=yes ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "uid_t" >/dev/null 2>&1; then : ++ ac_cv_type_uid_t=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_member_struct_sigevent_sigev_value_sigval_ptr=no -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } - fi -- - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_cv_type_uid_t=no fi ++rm -f conftest* -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+if test "`uname`" = "HP-UX"; then -+ if test "$ac_cv_c_compiler_gnu" = no; then -+ # special override for broken HP-UX compiler - I can't find a way to test -+ # this properly (its a compiler bug) -+ CFLAGS="$CFLAGS -AC99"; -+ c99_init=yes; -+ fi fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 ++$as_echo "$ac_cv_type_uid_t" >&6; } ++if test $ac_cv_type_uid_t = no; then + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_sigevent_sigev_value_sigval_ptr" >&5 -$as_echo "$ac_cv_member_struct_sigevent_sigev_value_sigval_ptr" >&6; } -if test "x$ac_cv_member_struct_sigevent_sigev_value_sigval_ptr" = x""yes; then -- ++$as_echo "#define uid_t int" >>confdefs.h + -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_SIGEVENT_SIGEV_VALUE_SIGVAL_PTR 1 -_ACEOF -+if test x"$c99_init" = x"yes"; then -+ saved_CFLAGS="" ++$as_echo "#define gid_t int" >>confdefs.h -+else -+ CFLAGS="$saved_CFLAGS" -+ saved_CFLAGS="" -+ as_fn_error "c99 structure initializer are not supported" "$LINENO" 5 fi -fi ++ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" ++if test "x$ac_cv_type_mode_t" = x""yes; then : -{ $as_echo "$as_me:$LINENO: checking for struct timespec type" >&5 -$as_echo_n "checking for struct timespec type... " >&6; } -if test "${samba_cv_struct_timespec+set}" = set; then - $as_echo_n "(cached) " >&6 --else -+UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown" -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking uname -s" >&5 -+$as_echo_n "checking uname -s... " >&6; } -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNAME_S}" >&5 -+$as_echo "${UNAME_S}" >&6; } + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ @@ -39054,12 +38587,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -+UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown" -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking uname -r" >&5 -+$as_echo_n "checking uname -r... " >&6; } -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNAME_R}" >&5 -+$as_echo "${UNAME_R}" >&6; } - +- -#include -#if STDC_HEADERS -#include @@ -39075,12 +38603,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -# include -# endif -#endif -+UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown" -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking uname -m" >&5 -+$as_echo_n "checking uname -m... " >&6; } -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNAME_M}" >&5 -+$as_echo "${UNAME_M}" >&6; } - +- -int -main () -{ @@ -39094,27 +38617,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -+UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown" -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking uname -p" >&5 -+$as_echo_n "checking uname -p... " >&6; } -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNAME_P}" >&5 -+$as_echo "${UNAME_P}" >&6; } -+ -+UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown" -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking uname -i" >&5 -+$as_echo_n "checking uname -i... " >&6; } -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNAME_I}" >&5 -+$as_echo "${UNAME_I}" >&6; } -+ -+ case "$host_os" in -+ *irix6*) -+ #TODO add to libreplace -+ if test x"$ac_cv_c_compiler_gnu" != x"yes" ; then -+ CFLAGS="$CFLAGS -diag_error 1035" -+ CFLAGS="$CFLAGS -woff 1209,1174,3201" -+ fi -+ ;; - esac +-esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 @@ -39131,100 +38634,30 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 ++cat >>confdefs.h <<_ACEOF ++#define mode_t int ++_ACEOF - samba_cv_struct_timespec=no --fi -+DYNEXP= + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+default_static_modules="pdb_smbpasswd pdb_tdbsam pdb_wbc_sam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog auth_sam auth_unix auth_winbind auth_wbc auth_server auth_domain auth_builtin auth_netlogond vfs_default nss_info_template" -+ -+default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr vfs_streams_depot vfs_acl_xattr vfs_acl_tdb vfs_smb_traffic_analyzer vfs_preopen" -+ -+if test "x$developer" = xyes; then -+ default_static_modules="$default_static_modules rpc_rpcecho" -+ default_shared_modules="$default_shared_modules charset_weird perfcount_test" - fi +-fi -{ $as_echo "$as_me:$LINENO: result: $samba_cv_struct_timespec" >&5 -$as_echo "$samba_cv_struct_timespec" >&6; } -if test x"$samba_cv_struct_timespec" = x"yes"; then ++ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" ++if test "x$ac_cv_type_off_t" = x""yes; then : ++ ++else -cat >>confdefs.h <<\_ACEOF -#define HAVE_STRUCT_TIMESPEC 1 --_ACEOF -+# -+# Config CPPFLAG settings for strange OS's that must be set -+# before other tests. Do NOT invoke AC_CHECK_HEADERS within this -+# case statement; its first reference must be unconditional. -+# -+case "$host_os" in -+ *hpux*) -+# -+# Defines needed for HPUX support. -+# HPUX has bigcrypt but (sometimes?) doesn't use it for -+# password hashing - hence the USE_BOTH_CRYPT_CALLS define. -+# -+ case `uname -r` in -+ *9*|*10*|*11) -+ -+$as_echo "#define USE_BOTH_CRYPT_CALLS 1" >>confdefs.h -+ -+ ;; -+ esac -+ ;; -+ -+# -+# CRAY Unicos has broken const handling -+ *unicos*) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabling const" >&5 -+$as_echo "disabling const" >&6; } -+ CPPFLAGS="$CPPFLAGS -Dconst=" -+ ;; -+ -+# -+# AIX4.x doesn't even admit to having large -+# files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set. -+# -+ *aix4*) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: enabling large file support" >&5 -+$as_echo "enabling large file support" >&6; } -+ CPPFLAGS="$CPPFLAGS -D_LARGE_FILES" -+ -+$as_echo "#define _LARGE_FILES 1" >>confdefs.h -+ -+ ;; -+# -+# Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit -+# to the existance of large files.. -+# Note that -D_LARGEFILE64_SOURCE is different from the Sun -+# recommendations on large file support, however it makes the -+# compile work using gcc 2.7 and 2.8, whereas using the Sun -+# recommendation makes the compile fail on gcc2.7. JRA. -+# -+# Solaris uses SYSV printing. Make sure to set that here. --jerry -+# -+ *solaris*) -+ -+$as_echo "#define SYSV 1" >>confdefs.h ++cat >>confdefs.h <<_ACEOF ++#define off_t long int + _ACEOF --fi -+ case `uname -r` in -+ 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no large file support" >&5 -+$as_echo "no large file support" >&6; } -+ ;; -+ 5.*) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: enabling large file support" >&5 -+$as_echo "enabling large file support" >&6; } -+ if test "$ac_cv_c_compiler_gnu" = yes; then -+ ${CC-cc} -v >conftest.c 2>&1 -+ ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c` -+ rm -fr conftest.c -+ case "$ac_cv_gcc_compiler_version_number" in -+ *"gcc version 2.6"*|*"gcc version 2.7"*) -+ CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT" -+ LDFLAGS="$LDFLAGS -lthread" + fi -# and glibc has setresuid under linux but the function does -# nothing until kernel 2.1.44! very dumb. @@ -39233,11 +38666,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -if test "${samba_cv_have_setresuid+set}" = set; then - $as_echo_n "(cached) " >&6 -else -+$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h ++ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" ++if test "x$ac_cv_type_size_t" = x""yes; then : - if test "$cross_compiling" = yes; then - samba_cv_have_setresuid=cross --else + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF @@ -39246,7 +38680,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* end confdefs.h. */ -#include -main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);} --_ACEOF ++ ++cat >>confdefs.h <<_ACEOF ++#define size_t unsigned int + _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -39274,59 +38711,56 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ ;; -+ *) -+ CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64" -+ LDFLAGS="$LDFLAGS -lthread" -( exit $ac_status ) -samba_cv_have_setresuid=no -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi -+$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h + fi ++ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" ++if test "x$ac_cv_type_pid_t" = x""yes; then : ++ ++else ++ ++cat >>confdefs.h <<_ACEOF ++#define pid_t int ++_ACEOF --fi + fi -{ $as_echo "$as_me:$LINENO: result: $samba_cv_have_setresuid" >&5 -$as_echo "$samba_cv_have_setresuid" >&6; } -if test x"$samba_cv_have_setresuid" = x"yes"; then -+$as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h -cat >>confdefs.h <<\_ACEOF -#define HAVE_SETRESUID 1 --_ACEOF -+ ;; -+ esac -+ else -+ CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64" -+ LDFLAGS="$LDFLAGS -lthread" ++ac_fn_c_check_member "$LINENO" "struct stat" "st_rdev" "ac_cv_member_struct_stat_st_rdev" "$ac_includes_default" ++if test "x$ac_cv_member_struct_stat_st_rdev" = x""yes; then : ++ ++cat >>confdefs.h <<_ACEOF ++#define HAVE_STRUCT_STAT_ST_RDEV 1 + _ACEOF --fi -+$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h ++ ++$as_echo "#define HAVE_ST_RDEV 1" >>confdefs.h ++ + fi -# Do the same check for setresguid... -+ -+$as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h -+ -+ fi -+ ;; -+ esac -+ ;; - # +-# -{ $as_echo "$as_me:$LINENO: checking for real setresgid" >&5 -$as_echo_n "checking for real setresgid... " >&6; } -if test "${samba_cv_have_setresgid+set}" = set; then - $as_echo_n "(cached) " >&6 -else -+# IRIX uses SYSV printing. Make sure to set that here -+# -+ *irix*) - if test "$cross_compiling" = yes; then - samba_cv_have_setresgid=cross --else ++ac_fn_c_check_type "$LINENO" "ino_t" "ac_cv_type_ino_t" "$ac_includes_default" ++if test "x$ac_cv_type_ino_t" = x""yes; then : ++ + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF @@ -39336,7 +38770,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#include -#include -main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);} --_ACEOF ++ ++cat >>confdefs.h <<_ACEOF ++#define ino_t unsigned + _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -39364,70 +38801,52 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+$as_echo "#define SYSV 1" >>confdefs.h -( exit $ac_status ) -samba_cv_have_setresgid=no -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi -+ ;; -+ *freebsd*|*dragonfly*) + fi -+$as_echo "#define FREEBSD 1" >>confdefs.h ++ac_fn_c_check_type "$LINENO" "loff_t" "ac_cv_type_loff_t" "$ac_includes_default" ++if test "x$ac_cv_type_loff_t" = x""yes; then : ++ ++else ++ ++cat >>confdefs.h <<_ACEOF ++#define loff_t off_t ++_ACEOF --fi + fi -{ $as_echo "$as_me:$LINENO: result: $samba_cv_have_setresgid" >&5 -$as_echo "$samba_cv_have_setresgid" >&6; } -if test x"$samba_cv_have_setresgid" = x"yes"; then -+ ;; -+# -+# VOS may need to have POSIX support and System V compatibility enabled. -+# -+ *vos*) -+ case "$CPPFLAGS" in -+ *-D_POSIX_C_SOURCE*) -+ ;; -+ *) -+ CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L" -cat >>confdefs.h <<\_ACEOF -#define HAVE_SETRESGID 1 --_ACEOF -+$as_echo "#define _POSIX_C_SOURCE 200112L" >>confdefs.h ++ac_fn_c_check_type "$LINENO" "offset_t" "ac_cv_type_offset_t" "$ac_includes_default" ++if test "x$ac_cv_type_offset_t" = x""yes; then : ++ ++else ++ ++cat >>confdefs.h <<_ACEOF ++#define offset_t loff_t + _ACEOF --fi -+ ;; -+ esac -+ case "$CPPFLAGS" in -+ *-D_SYSV*|*-D_SVID_SOURCE*) -+ ;; -+ *) -+ CPPFLAGS="$CPPFLAGS -D_SYSV" + fi -{ $as_echo "$as_me:$LINENO: checking for working memcmp" >&5 --$as_echo_n "checking for working memcmp... " >&6; } --if test "${ac_cv_func_memcmp_working+set}" = set; then -- $as_echo_n "(cached) " >&6 --else -- if test "$cross_compiling" = yes; then -- ac_cv_func_memcmp_working=no -+$as_echo "#define _SYSV 1" >>confdefs.h + -+ esac -+ ;; -+# -+# Tests needed for SINIX large file support. -+# -+ *sysv4*) -+ if test $host = mips-sni-sysv4 ; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LFS support" >&5 -+$as_echo_n "checking for LFS support... " >&6; } -+ old_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS" -+ if test "$cross_compiling" = yes; then : -+ SINIX_LFS_SUPPORT=cross ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 + $as_echo_n "checking for working memcmp... " >&6; } +-if test "${ac_cv_func_memcmp_working+set}" = set; then ++if test "${ac_cv_func_memcmp_working+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- if test "$cross_compiling" = yes; then ++ if test "$cross_compiling" = yes; then : + ac_cv_func_memcmp_working=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ @@ -39436,44 +38855,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ --$ac_includes_default --int --main () --{ -- -- /* Some versions of memcmp are not 8-bit clean. */ -- char c0 = '\100', c1 = '\200', c2 = '\201'; -- if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) -- return 1; -- -- /* The Next x86 OpenStep bug shows up only when comparing 16 bytes -- or more and with at least one buffer not starting on a 4-byte boundary. -- William Lewis provided this test program. */ -- { -- char foo[21]; -- char bar[21]; -- int i; -- for (i = 0; i < 4; i++) -- { -- char *a = foo + i; -- char *b = bar + i; -- strcpy (a, "--------01111111"); -- strcpy (b, "--------10000000"); -- if (memcmp (a, b, 16) >= 0) -- return 1; -- } -- return 0; -- } - -- ; -- return 0; -+#include -+main () { -+#if _LFS64_LARGEFILE == 1 -+exit(0); -+#else -+exit(1); -+#endif + $ac_includes_default + int +@@ -37950,44 +8436,17 @@ + return 0; } _ACEOF -rm -f conftest$ac_exeext @@ -39498,9 +38883,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then -- ac_cv_func_memcmp_working=yes +if ac_fn_c_try_run "$LINENO"; then : -+ SINIX_LFS_SUPPORT=yes + ac_cv_func_memcmp_working=yes else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 @@ -39508,7 +38892,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - -( exit $ac_status ) -ac_cv_func_memcmp_working=no -+ SINIX_LFS_SUPPORT=no ++ ac_cv_func_memcmp_working=no fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext @@ -39516,56 +38900,35 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -+ CPPFLAGS="$old_CPPFLAGS" -+ if test x$SINIX_LFS_SUPPORT = xyes ; then -+ CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS" - --fi +- + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 --$as_echo "$ac_cv_func_memcmp_working" >&6; } --test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in -- *" memcmp.$ac_objext "* ) ;; -- *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" -- ;; --esac -+$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 + $as_echo "$ac_cv_func_memcmp_working" >&6; } + test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in + *" memcmp.$ac_objext "* ) ;; +@@ -37997,166 +8456,26 @@ -+ CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS" -+ LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS" -+ LIBS="`getconf LFS64_LIBS` $LIBS" -+ fi -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SINIX_LFS_SUPPORT" >&5 -+$as_echo "$SINIX_LFS_SUPPORT" >&6; } -+ fi -+ ;; -+# Systems with LFS support. -+# -+ gnu* | k*bsd*-gnu | kopensolaris*-gnu) -+ CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS" -############################################### -# Readline included by default unless explicitly asked not to -test "${with_readline+set}" != "set" && with_readline=yes -+$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h - +- -# test for where we get readline() from -{ $as_echo "$as_me:$LINENO: checking whether to use readline" >&5 -$as_echo_n "checking whether to use readline... " >&6; } - +- -# Check whether --with-readline was given. -if test "${with_readline+set}" = set; then - withval=$with_readline; case "$with_readline" in - yes) - { $as_echo "$as_me:$LINENO: result: yes" >&5 -$as_echo "yes" >&6; } -+$as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h - - -+$as_echo "#define _GNU_SOURCE 1" >>confdefs.h - -+ ;; - +- +- +- +- -for ac_header in readline.h history.h readline/readline.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -39579,208 +38942,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -+# Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support. -+# -+ *linux*) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LFS support" >&5 -+$as_echo_n "checking for LFS support... " >&6; } -+ old_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS" -+ if test "$cross_compiling" = yes; then : -+ LINUX_LFS_SUPPORT=cross - else -- # Is the header compilable? --{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 --$as_echo_n "checking $ac_header usability... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ --$ac_includes_default --#include <$ac_header> --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_header_compiler=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_header_compiler=no --fi -+#include -+#include -+#include -+#include -+main() { -+#if _LFS64_LARGEFILE == 1 -+ struct utsname uts; -+ char *release; -+ int major, minor; - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --$as_echo "$ac_header_compiler" >&6; } -+ /* Ensure this is glibc 2.2 or higher */ -+#if defined(__GLIBC__) && defined(__GLIBC_MINOR__) -+ int libc_major = __GLIBC__; -+ int libc_minor = __GLIBC_MINOR__; - --# Is the header present? --{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 --$as_echo_n "checking $ac_header presence... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <$ac_header> --_ACEOF --if { (ac_try="$ac_cpp conftest.$ac_ext" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } >/dev/null && { -- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -- test ! -s conftest.err -- }; then -- ac_header_preproc=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+ if (libc_major < 2) -+ exit(1); -+ if (libc_minor < 2) -+ exit(1); -+#endif - -- ac_header_preproc=no --fi -+ /* Ensure this is kernel 2.4 or higher */ - --rm -f conftest.err conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --$as_echo "$ac_header_preproc" >&6; } -+ uname(&uts); -+ release = strdup(uts.release); -+ major = atoi(strsep(&release, ".")); -+ minor = atoi(strsep(&release, ".")); - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -- yes:no: ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 --$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -- ac_header_preproc=yes -- ;; -- no:yes:* ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 --$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 --$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 --$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 --$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 --$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -- ( cat <<\_ASBOX --## ---------------------------------------- ## --## Report this to samba-technical@samba.org ## --## ---------------------------------------- ## --_ASBOX -- ) | sed "s/^/$as_me: WARNING: /" >&2 -- ;; --esac --{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 -+ if (major > 2 || (major == 2 && minor > 3)) -+ exit(0); -+ exit(1); -+#else -+ exit(1); -+#endif -+} -+ -+_ACEOF -+if ac_fn_c_try_run "$LINENO"; then : -+ LINUX_LFS_SUPPORT=yes - else -- eval "$as_ac_Header=\$ac_header_preproc" -+ LINUX_LFS_SUPPORT=no - fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } -- -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext - fi --as_val=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -- cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 --_ACEOF - --fi -+ CPPFLAGS="$old_CPPFLAGS" -+ if test x$LINUX_LFS_SUPPORT = xyes ; then -+ CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS" - --done -+$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h - - --for ac_header in readline/history.h --do --as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 @@ -39816,625 +38977,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+$as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h - -- ac_header_compiler=no --fi - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --$as_echo "$ac_header_compiler" >&6; } -+$as_echo "#define _GNU_SOURCE 1" >>confdefs.h - --# Is the header present? --{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 --$as_echo_n "checking $ac_header presence... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <$ac_header> --_ACEOF --if { (ac_try="$ac_cpp conftest.$ac_ext" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } >/dev/null && { -- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -- test ! -s conftest.err -- }; then -- ac_header_preproc=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+ fi -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINUX_LFS_SUPPORT" >&5 -+$as_echo "$LINUX_LFS_SUPPORT" >&6; } -+ ;; - -- ac_header_preproc=no --fi -+# -+# MacOS X is the *only* system that uses compose character in utf8. This -+# is so horribly broken.... -+# -+ *darwin*) - --rm -f conftest.err conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --$as_echo "$ac_header_preproc" >&6; } -+$as_echo "#define BROKEN_UNICODE_COMPOSE_CHARACTERS 1" >>confdefs.h - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -- yes:no: ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 --$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -- ac_header_preproc=yes -- ;; -- no:yes:* ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 --$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 --$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 --$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 --$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 --$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -- ( cat <<\_ASBOX --## ---------------------------------------- ## --## Report this to samba-technical@samba.org ## --## ---------------------------------------- ## --_ASBOX -- ) | sed "s/^/$as_me: WARNING: /" >&2 -- ;; --esac --{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 -+ -+# Add a system specific charset module. -+ default_shared_modules="$default_shared_modules charset_macosxfs" -+ -+ ;; -+ *hurd*) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LFS support" >&5 -+$as_echo_n "checking for LFS support... " >&6; } -+ old_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS" -+ if test "$cross_compiling" = yes; then : -+ GLIBC_LFS_SUPPORT=cross - else -- eval "$as_ac_Header=\$ac_header_preproc" --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ - --fi --as_val=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -- cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+#include -+main () { -+#if _LFS64_LARGEFILE == 1 -+exit(0); -+#else -+exit(1); -+#endif -+} - _ACEOF - -+if ac_fn_c_try_run "$LINENO"; then : -+ GLIBC_LFS_SUPPORT=yes -+else -+ GLIBC_LFS_SUPPORT=no -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - --done -+ CPPFLAGS="$old_CPPFLAGS" -+ if test x$GLIBC_LFS_SUPPORT = xyes ; then -+ CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS" - -+$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h - - -+$as_echo "#define _GNU_SOURCE 1" >>confdefs.h -+ -+ fi -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLIBC_LFS_SUPPORT" >&5 -+$as_echo "$GLIBC_LFS_SUPPORT" >&6; } -+ ;; - --for ac_header in readline.h readline/readline.h --do --as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --else -- # Is the header compilable? --{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 --$as_echo_n "checking $ac_header usability... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --#include <$ac_header> --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; - esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_header_compiler=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi -+SAVE_CPPFLAGS="${CPPFLAGS}" -+CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}" - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --$as_echo "$ac_header_compiler" >&6; } - --# Is the header present? --{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 --$as_echo_n "checking $ac_header presence... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <$ac_header> --_ACEOF --if { (ac_try="$ac_cpp conftest.$ac_ext" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } >/dev/null && { -- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -- test ! -s conftest.err -- }; then -- ac_header_preproc=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+echo "LIBREPLACE_BROKEN_CHECKS: START" - -- ac_header_preproc=no -+libreplacedir="" -+libreplacepaths="$srcdir $srcdir/lib/replace $srcdir/libreplace $srcdir/../libreplace $srcdir/../replace $srcdir/../lib/replace $srcdir/../../../lib/replace" -+for d in $libreplacepaths; do -+ if test -f "$d/replace.c"; then -+ libreplacedir="$d" -+ -+ break; -+ fi -+done -+if test x"$libreplacedir" = "x"; then -+ as_fn_error "cannot find libreplace in $libreplacepaths" "$LINENO" 5 - fi - --rm -f conftest.err conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --$as_echo "$ac_header_preproc" >&6; } -+LIBREPLACEOBJ="replace.o" - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -- yes:no: ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 --$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -- ac_header_preproc=yes -- ;; -- no:yes:* ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 --$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 --$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 --$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 --$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 --$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -- ( cat <<\_ASBOX --## ---------------------------------------- ## --## Report this to samba-technical@samba.org ## --## ---------------------------------------- ## --_ASBOX -- ) | sed "s/^/$as_me: WARNING: /" >&2 -- ;; --esac --{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- eval "$as_ac_Header=\$ac_header_preproc" --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } - --fi --as_val=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -- cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 --_ACEOF -+LIBREPLACEOBJ="${LIBREPLACEOBJ} snprintf.o" - -- for termlib in ncurses curses termcap terminfo termlib tinfo; do -- as_ac_Lib=`$as_echo "ac_cv_lib_${termlib}''_tgetent" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for tgetent in -l${termlib}" >&5 --$as_echo_n "checking for tgetent in -l${termlib}... " >&6; } --if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-l${termlib} $LIBS" --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 -+$as_echo_n "checking return type of signal handlers... " >&6; } -+if test "${ac_cv_type_signal+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ -+#include -+#include - --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char tgetent (); - int - main () - { --return tgetent (); -+return *(signal (0, 0)) (0) == 1; - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_Lib=yes" -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_type_signal=int - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 - -- eval "$as_ac_Lib=no" -+ ac_cv_type_signal=void - fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } - --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS --fi --ac_res=`eval 'as_val=${'$as_ac_Lib'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_Lib'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -- TERMLIBS="-l${termlib}"; break -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 -+$as_echo "$ac_cv_type_signal" >&6; } - -- done -- { $as_echo "$as_me:$LINENO: checking for rl_callback_handler_install in -lreadline" >&5 --$as_echo_n "checking for rl_callback_handler_install in -lreadline... " >&6; } --if test "${ac_cv_lib_readline_rl_callback_handler_install+set}" = set; then -+cat >>confdefs.h <<_ACEOF -+#define RETSIGTYPE $ac_cv_type_signal -+_ACEOF -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 -+$as_echo_n "checking for uid_t in sys/types.h... " >&6; } -+if test "${ac_cv_type_uid_t+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lreadline $TERMLIBS $LIBS" --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ -+#include - --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char rl_callback_handler_install (); --int --main () --{ --return rl_callback_handler_install (); -- ; -- return 0; --} - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- ac_cv_lib_readline_rl_callback_handler_install=yes -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "uid_t" >/dev/null 2>&1; then : -+ ac_cv_type_uid_t=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+ ac_cv_type_uid_t=no -+fi -+rm -f conftest* - -- ac_cv_lib_readline_rl_callback_handler_install=no - fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 -+$as_echo "$ac_cv_type_uid_t" >&6; } -+if test $ac_cv_type_uid_t = no; then -+ -+$as_echo "#define uid_t int" >>confdefs.h -+ -+ -+$as_echo "#define gid_t int" >>confdefs.h - --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_readline_rl_callback_handler_install" >&5 --$as_echo "$ac_cv_lib_readline_rl_callback_handler_install" >&6; } --if test "x$ac_cv_lib_readline_rl_callback_handler_install" = x""yes; then -- TERMLIBS="-lreadline $TERMLIBS" - --cat >>confdefs.h <<\_ACEOF --#define HAVE_LIBREADLINE 1 --_ACEOF -+ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" -+if test "x$ac_cv_type_mode_t" = x""yes; then : - -- break - else -- TERMLIBS= --fi -+ -+cat >>confdefs.h <<_ACEOF -+#define mode_t int -+_ACEOF - - fi - --done -+ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" -+if test "x$ac_cv_type_off_t" = x""yes; then : - -- ;; -- no) -- { $as_echo "$as_me:$LINENO: result: no" >&5 --$as_echo "no" >&6; } -- ;; -- *) -- { $as_echo "$as_me:$LINENO: result: yes" >&5 --$as_echo "yes" >&6; } -+else - -- # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at -- # alternate readline path -- _ldflags=${LDFLAGS} -- _cppflags=${CPPFLAGS} -+cat >>confdefs.h <<_ACEOF -+#define off_t long int -+_ACEOF - -- # Add additional search path -- LDFLAGS="-L$with_readline/lib $LDFLAGS" -- CPPFLAGS="-I$with_readline/include $CPPFLAGS" -+fi - -+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -+if test "x$ac_cv_type_size_t" = x""yes; then : - -+else - -+cat >>confdefs.h <<_ACEOF -+#define size_t unsigned int -+_ACEOF - --for ac_header in readline.h history.h readline/readline.h --do --as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 - fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } -+ -+ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" -+if test "x$ac_cv_type_pid_t" = x""yes; then : -+ - else -- # Is the header compilable? --{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 --$as_echo_n "checking $ac_header usability... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --#include <$ac_header> -+ -+cat >>confdefs.h <<_ACEOF -+#define pid_t int - _ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_header_compiler=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_header_compiler=no - fi - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --$as_echo "$ac_header_compiler" >&6; } -+ac_fn_c_check_member "$LINENO" "struct stat" "st_rdev" "ac_cv_member_struct_stat_st_rdev" "$ac_includes_default" -+if test "x$ac_cv_member_struct_stat_st_rdev" = x""yes; then : - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } @@ -40445,240 +38995,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -+cat >>confdefs.h <<_ACEOF -+#define HAVE_STRUCT_STAT_ST_RDEV 1 - _ACEOF --if { (ac_try="$ac_cpp conftest.$ac_ext" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } >/dev/null && { -- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -- test ! -s conftest.err -- }; then -- ac_header_preproc=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_header_preproc=no -+ -+$as_echo "#define HAVE_ST_RDEV 1" >>confdefs.h -+ - fi - --rm -f conftest.err conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --$as_echo "$ac_header_preproc" >&6; } - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -- yes:no: ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 --$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -- ac_header_preproc=yes -- ;; -- no:yes:* ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 --$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 --$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 --$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 --$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 --$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -- ( cat <<\_ASBOX --## ---------------------------------------- ## --## Report this to samba-technical@samba.org ## --## ---------------------------------------- ## --_ASBOX -- ) | sed "s/^/$as_me: WARNING: /" >&2 -- ;; --esac --{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 -+ac_fn_c_check_type "$LINENO" "ino_t" "ac_cv_type_ino_t" "$ac_includes_default" -+if test "x$ac_cv_type_ino_t" = x""yes; then : -+ - else -- eval "$as_ac_Header=\$ac_header_preproc" --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } - --fi --as_val=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -- cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+cat >>confdefs.h <<_ACEOF -+#define ino_t unsigned - _ACEOF - - fi - --done -+ac_fn_c_check_type "$LINENO" "loff_t" "ac_cv_type_loff_t" "$ac_includes_default" -+if test "x$ac_cv_type_loff_t" = x""yes; then : - -+else -+ -+cat >>confdefs.h <<_ACEOF -+#define loff_t off_t -+_ACEOF - --for ac_header in readline/history.h --do --as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 - fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } -+ -+ac_fn_c_check_type "$LINENO" "offset_t" "ac_cv_type_offset_t" "$ac_includes_default" -+if test "x$ac_cv_type_offset_t" = x""yes; then : -+ - else -- # Is the header compilable? --{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 --$as_echo_n "checking $ac_header usability... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ -+ -+cat >>confdefs.h <<_ACEOF -+#define offset_t loff_t - _ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ -+fi -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 -+$as_echo_n "checking for working memcmp... " >&6; } -+if test "${ac_cv_func_memcmp_working+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test "$cross_compiling" = yes; then : -+ ac_cv_func_memcmp_working=no -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - $ac_includes_default --#include <$ac_header> -+int -+main () -+{ -+ -+ /* Some versions of memcmp are not 8-bit clean. */ -+ char c0 = '\100', c1 = '\200', c2 = '\201'; -+ if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) -+ return 1; -+ -+ /* The Next x86 OpenStep bug shows up only when comparing 16 bytes -+ or more and with at least one buffer not starting on a 4-byte boundary. -+ William Lewis provided this test program. */ -+ { -+ char foo[21]; -+ char bar[21]; -+ int i; -+ for (i = 0; i < 4; i++) -+ { -+ char *a = foo + i; -+ char *b = bar + i; -+ strcpy (a, "--------01111111"); -+ strcpy (b, "--------10000000"); -+ if (memcmp (a, b, 16) >= 0) -+ return 1; -+ } -+ return 0; -+ } -+ -+ ; -+ return 0; -+} - _ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_header_compiler=yes -+if ac_fn_c_try_run "$LINENO"; then : -+ ac_cv_func_memcmp_working=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+ ac_cv_func_memcmp_working=no -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext -+fi - -- ac_header_compiler=no - fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 -+$as_echo "$ac_cv_func_memcmp_working" >&6; } -+test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in -+ *" memcmp.$ac_objext "* ) ;; -+ *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" -+ ;; -+esac - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --$as_echo "$ac_header_compiler" >&6; } - --# Is the header present? --{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 --$as_echo_n "checking $ac_header presence... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <$ac_header> -+ +for ac_func in pipe strftime srandom random srand rand usleep setbuffer lstat getpgrp utime utimes +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -40717,7 +39033,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - +- -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) @@ -40759,24 +39075,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -+for ac_header in stdbool.h stdint.h sys/select.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF - fi +-fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+ -+done -+ -+for ac_header in setjmp.h utime.h ++for ac_header in stdbool.h stdint.h sys/select.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -40785,19 +39089,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -39440,732 +8791,430 @@ +@@ -38165,149 +8484,12 @@ + done - -+ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" -+if test "x$ac_cv_header_stdint_h" = x""yes; then : -+ ac_config_commands="$ac_config_commands rm-stdint.h" -+ -+else -+ ac_config_commands="$ac_config_commands mk-stdint.h" - - --for ac_header in readline.h readline/readline.h +- +-for ac_header in readline/history.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -40805,19 +39102,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 - fi +-fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -+ -+ -+ -+ac_fn_c_check_header_mongrel "$LINENO" "stdbool.h" "ac_cv_header_stdbool_h" "$ac_includes_default" -+if test "x$ac_cv_header_stdbool_h" = x""yes; then : -+ ac_config_commands="$ac_config_commands rm-stdbool.h" -+ - else +-else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } @@ -40827,16 +39117,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -+ ac_config_commands="$ac_config_commands mk-stdbool.h" -+ -+ -+fi -+ -+ -+ -+ -+ac_fn_c_check_type "$LINENO" "bool" "ac_cv_type_bool" " - $ac_includes_default +-$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext @@ -40861,21 +39142,174 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+#ifdef HAVE_STDBOOL_H -+#include -+#endif -+ -+" -+if test "x$ac_cv_type_bool" = x""yes; then : -+ -+$as_echo "#define HAVE_BOOL 1" >>confdefs.h - +- - ac_header_compiler=no - fi - +-fi +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +- +-fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++for ac_header in setjmp.h utime.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +@@ -38317,474 +8499,97 @@ + done + + ++ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" ++if test "x$ac_cv_header_stdint_h" = x""yes; then : ++ ac_config_commands="$ac_config_commands rm-stdint.h" + +- +-for ac_header in readline.h readline/readline.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } ++ ac_config_commands="$ac_config_commands mk-stdint.h" -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 @@ -40909,16 +39343,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" " -+$ac_includes_default -+#ifdef HAVE_STDBOOL_H -+#include -+#endif -+ -+" -+if test "x$ac_cv_type__Bool" = x""yes; then : -+ -+$as_echo "#define HAVE__Bool 1" >>confdefs.h - ac_header_preproc=no fi @@ -40926,6 +39350,753 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } + +-fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF + +- for termlib in ncurses curses termcap terminfo termlib tinfo; do +- as_ac_Lib=`$as_echo "ac_cv_lib_${termlib}''_tgetent" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for tgetent in -l${termlib}" >&5 +-$as_echo_n "checking for tgetent in -l${termlib}... " >&6; } +-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-l${termlib} $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ ++ac_fn_c_check_header_mongrel "$LINENO" "stdbool.h" "ac_cv_header_stdbool_h" "$ac_includes_default" ++if test "x$ac_cv_header_stdbool_h" = x""yes; then : ++ ac_config_commands="$ac_config_commands rm-stdbool.h" + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char tgetent (); +-int +-main () +-{ +-return tgetent (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_Lib=yes" + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ ac_config_commands="$ac_config_commands mk-stdbool.h" + +- eval "$as_ac_Lib=no" +-fi + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-ac_res=`eval 'as_val=${'$as_ac_Lib'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_Lib'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- TERMLIBS="-l${termlib}"; break + fi + +- done +- { $as_echo "$as_me:$LINENO: checking for rl_callback_handler_install in -lreadline" >&5 +-$as_echo_n "checking for rl_callback_handler_install in -lreadline... " >&6; } +-if test "${ac_cv_lib_readline_rl_callback_handler_install+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lreadline $TERMLIBS $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char rl_callback_handler_install (); +-int +-main () +-{ +-return rl_callback_handler_install (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_lib_readline_rl_callback_handler_install=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_cv_lib_readline_rl_callback_handler_install=no +-fi + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_readline_rl_callback_handler_install" >&5 +-$as_echo "$ac_cv_lib_readline_rl_callback_handler_install" >&6; } +-if test "x$ac_cv_lib_readline_rl_callback_handler_install" = x""yes; then +- TERMLIBS="-lreadline $TERMLIBS" ++ac_fn_c_check_type "$LINENO" "bool" "ac_cv_type_bool" " ++$ac_includes_default ++#ifdef HAVE_STDBOOL_H ++#include ++#endif + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBREADLINE 1 +-_ACEOF ++" ++if test "x$ac_cv_type_bool" = x""yes; then : + +- break +-else +- TERMLIBS= +-fi ++$as_echo "#define HAVE_BOOL 1" >>confdefs.h + + fi + +-done +- +- ;; +- no) +- { $as_echo "$as_me:$LINENO: result: no" >&5 +-$as_echo "no" >&6; } +- ;; +- *) +- { $as_echo "$as_me:$LINENO: result: yes" >&5 +-$as_echo "yes" >&6; } + +- # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at +- # alternate readline path +- _ldflags=${LDFLAGS} +- _cppflags=${CPPFLAGS} ++ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" " ++$ac_includes_default ++#ifdef HAVE_STDBOOL_H ++#include ++#endif + +- # Add additional search path +- LDFLAGS="-L$with_readline/lib $LDFLAGS" +- CPPFLAGS="-I$with_readline/include $CPPFLAGS" ++" ++if test "x$ac_cv_type__Bool" = x""yes; then : + ++$as_echo "#define HAVE__Bool 1" >>confdefs.h + ++fi + + +-for ac_header in readline.h history.h readline/readline.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 ++$as_echo_n "checking for working mmap... " >&6; } ++if test "${libreplace_cv_HAVE_MMAP+set}" = set; then : + $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } + +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++if test "$cross_compiling" = yes; then : ++ libreplace_cv_HAVE_MMAP=cross ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-#include <$ac_header> ++#include "$libreplacedir/test/shared_mmap.c" + _ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 ++if ac_fn_c_try_run "$LINENO"; then : ++ libreplace_cv_HAVE_MMAP=yes + else +- eval "$as_ac_Header=\$ac_header_preproc" ++ libreplace_cv_HAVE_MMAP=no + fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_HAVE_MMAP" >&5 ++$as_echo "$libreplace_cv_HAVE_MMAP" >&6; } ++if test x"$libreplace_cv_HAVE_MMAP" = x"yes"; then ++ ++$as_echo "#define HAVE_MMAP 1" >>confdefs.h + + fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ ++ ++for ac_header in sys/syslog.h syslog.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +@@ -38793,149 +8598,40 @@ + + done + +- +-for ac_header in readline/history.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> ++for ac_header in sys/time.h time.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_header_compiler=no + fi + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } ++done + +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> ++for ac_header in stdarg.h vararg.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_header_preproc=no + fi + +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } ++done + +-fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++for ac_header in sys/mount.h mntent.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +@@ -38944,946 +8640,569 @@ + + done + ++for ac_header in stropts.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "stropts.h" "ac_cv_header_stropts_h" "$ac_includes_default" ++if test "x$ac_cv_header_stropts_h" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_STROPTS_H 1 ++_ACEOF + ++fi + ++done + +-for ac_header in readline.h readline/readline.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> ++for ac_header in unix.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "unix.h" "ac_cv_header_unix_h" "$ac_includes_default" ++if test "x$ac_cv_header_unix_h" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_UNIX_H 1 + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_header_compiler=no + fi + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } ++done + +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ ++ ++for ac_func in seteuid setresuid setegid setresgid chroot bzero strerror ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 + _ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> ++ ++fi ++done ++ ++for ac_func in vsyslog setlinebuf mktime ftruncate chsize rename ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 + _ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_header_preproc=no + fi ++done + +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } ++for ac_func in waitpid wait4 strlcpy strlcat initgroups memmove strdup ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -40960,54 +40131,41 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 -+$as_echo_n "checking for working mmap... " >&6; } -+if test "${libreplace_cv_HAVE_MMAP+set}" = set; then : - $as_echo_n "(cached) " >&6 - else +- $as_echo_n "(cached) " >&6 +-else - eval "$as_ac_Header=\$ac_header_preproc" -+ -+if test "$cross_compiling" = yes; then : -+ libreplace_cv_HAVE_MMAP=cross -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include "$libreplacedir/test/shared_mmap.c" -+_ACEOF -+if ac_fn_c_try_run "$LINENO"; then : -+ libreplace_cv_HAVE_MMAP=yes -+else -+ libreplace_cv_HAVE_MMAP=no fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext -+fi ++done + -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_HAVE_MMAP" >&5 -+$as_echo "$libreplace_cv_HAVE_MMAP" >&6; } -+if test x"$libreplace_cv_HAVE_MMAP" = x"yes"; then -+ -+$as_echo "#define HAVE_MMAP 1" >>confdefs.h ++for ac_func in pread pwrite strndup strcasestr strtok_r mkdtemp dup2 ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then ++done + -+ -+for ac_header in sys/syslog.h syslog.h ++for ac_func in isatty chown lchown link readlink symlink realpath +do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF - #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF - for termlib in ncurses curses termcap terminfo termlib; do @@ -41015,8 +40173,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: checking for tgetent in -l${termlib}" >&5 -$as_echo_n "checking for tgetent in -l${termlib}... " >&6; } -if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else ++fi ++done ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setresuid declaration" >&5 ++$as_echo_n "checking for setresuid declaration... " >&6; } ++if test "${ac_cv_have_setresuid_decl+set}" = set; then : + $as_echo_n "(cached) " >&6 + else - ac_check_lib_save_LIBS=$LIBS -LIBS="-l${termlib} $LIBS" -cat >conftest.$ac_ext <<_ACEOF @@ -41025,7 +40190,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -+fi -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -41034,23 +40198,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -extern "C" -#endif -char tgetent (); --int --main () --{ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include + int + main () + { -return tgetent (); -- ; -- return 0; --} -+done -+ -+for ac_header in sys/time.h time.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++int i = (int)setresuid + ; + return 0; + } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" @@ -41074,18 +40232,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_Lib=yes" --else ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_have_setresuid_decl=yes + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +- - eval "$as_ac_Lib=no" - fi - +-fi +- -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS --fi ++ ac_cv_have_setresuid_decl=no + fi -ac_res=`eval 'as_val=${'$as_ac_Lib'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -41094,41 +40255,31 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - TERMLIBS="-l${termlib}"; break -+done -+ -+for ac_header in stdarg.h vararg.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_setresuid_decl" >&5 ++$as_echo "$ac_cv_have_setresuid_decl" >&6; } ++ if test x"$ac_cv_have_setresuid_decl" = x"yes"; then - done - { $as_echo "$as_me:$LINENO: checking for rl_callback_handler_install in -lreadline" >&5 -$as_echo_n "checking for rl_callback_handler_install in -lreadline... " >&6; } -if test "${ac_cv_lib_readline_rl_callback_handler_install+set}" = set; then -- $as_echo_n "(cached) " >&6 --else ++$as_echo "#define HAVE_SETRESUID_DECL 1" >>confdefs.h ++ ++ fi ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setresgid declaration" >&5 ++$as_echo_n "checking for setresgid declaration... " >&6; } ++if test "${ac_cv_have_setresgid_decl+set}" = set; then : + $as_echo_n "(cached) " >&6 + else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lreadline $TERMLIBS $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -+done -+ -+for ac_header in sys/mount.h mntent.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF +-_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ @@ -41140,23 +40291,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -extern "C" -#endif -char rl_callback_handler_install (); --int --main () --{ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include + int + main () + { -return rl_callback_handler_install (); -- ; -- return 0; --} -+fi -+ -+done -+ -+for ac_header in stropts.h -+do : -+ ac_fn_c_check_header_mongrel "$LINENO" "stropts.h" "ac_cv_header_stropts_h" "$ac_includes_default" -+if test "x$ac_cv_header_stropts_h" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_STROPTS_H 1 ++int i = (int)setresgid + ; + return 0; + } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" @@ -41183,28 +40328,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +- - ac_cv_lib_readline_rl_callback_handler_install=no - fi - +-fi +- -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -+done -+ -+ -+for ac_func in seteuid setresuid setegid setresgid chroot bzero strerror -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+eval as_val=\$$as_ac_var -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF -+ - fi +-fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_readline_rl_callback_handler_install" >&5 -$as_echo "$ac_cv_lib_readline_rl_callback_handler_install" >&6; } -if test "x$ac_cv_lib_readline_rl_callback_handler_install" = x""yes; then @@ -41212,40 +40344,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - TERMCPPFLAGS="-I$with_readline/include" - CPPFLAGS="-I$with_readline/include $CPPFLAGS" - TERMLIBS="-lreadline $TERMLIBS" -+done - +- -cat >>confdefs.h <<\_ACEOF -#define HAVE_LIBREADLINE 1 -+for ac_func in vsyslog setlinebuf mktime ftruncate chsize rename -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+eval as_val=\$$as_ac_var -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 - _ACEOF - +-_ACEOF +- - break --else ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_have_setresgid_decl=yes + else - TERMLIBS= CPPFLAGS=$_cppflags - fi -+done - -fi -+for ac_func in waitpid strlcpy strlcat initgroups memmove strdup -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+eval as_val=\$$as_ac_var -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF - -+fi - done - +- ++ ac_cv_have_setresgid_decl=no + fi +- +-done +- - - LDFLAGS=$_ldflags - ;; @@ -41253,31 +40368,16 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -+for ac_func in pread pwrite strndup strcasestr strtok_r mkdtemp dup2 -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+eval as_val=\$$as_ac_var -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF - +- ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -+done ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_setresgid_decl" >&5 ++$as_echo "$ac_cv_have_setresgid_decl" >&6; } ++ if test x"$ac_cv_have_setresgid_decl" = x"yes"; then -+for ac_func in isatty chown lchown link readlink symlink realpath -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+eval as_val=\$$as_ac_var -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF ++$as_echo "#define HAVE_SETRESGID_DECL 1" >>confdefs.h -+fi -+done ++ fi -# The readline API changed slightly from readline3 to readline4, so @@ -41286,9 +40386,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: checking for rl_completion_matches in -lreadline" >&5 -$as_echo_n "checking for rl_completion_matches in -lreadline... " >&6; } -if test "${ac_cv_lib_readline_rl_completion_matches+set}" = set; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setresuid declaration" >&5 -+$as_echo_n "checking for setresuid declaration... " >&6; } -+if test "${ac_cv_have_setresuid_decl+set}" = set; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for errno declaration" >&5 ++$as_echo_n "checking for errno declaration... " >&6; } ++if test "${ac_cv_have_errno_decl+set}" = set; then : $as_echo_n "(cached) " >&6 else - ac_check_lib_save_LIBS=$LIBS @@ -41309,12 +40409,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -char rl_completion_matches (); + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -+#include ++#include int main () { -return rl_completion_matches (); -+int i = (int)setresuid ++int i = (int)errno ; return 0; } @@ -41342,13 +40442,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - }; then - ac_cv_lib_readline_rl_completion_matches=yes +if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_have_setresuid_decl=yes ++ ac_cv_have_errno_decl=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_readline_rl_completion_matches=no -+ ac_cv_have_setresuid_decl=no ++ ac_cv_have_errno_decl=no fi - -rm -rf conftest.dSYM @@ -41360,14 +40460,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_readline_rl_completion_matches" >&5 -$as_echo "$ac_cv_lib_readline_rl_completion_matches" >&6; } -if test "x$ac_cv_lib_readline_rl_completion_matches" = x""yes; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_setresuid_decl" >&5 -+$as_echo "$ac_cv_have_setresuid_decl" >&6; } -+ if test x"$ac_cv_have_setresuid_decl" = x"yes"; then ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_errno_decl" >&5 ++$as_echo "$ac_cv_have_errno_decl" >&6; } ++ if test x"$ac_cv_have_errno_decl" = x"yes"; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_NEW_LIBREADLINE 1 -_ACEOF -+$as_echo "#define HAVE_SETRESUID_DECL 1" >>confdefs.h ++$as_echo "#define HAVE_ERRNO_DECL 1" >>confdefs.h -fi + fi @@ -41377,9 +40477,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: checking whether rl_event_hook is declared" >&5 -$as_echo_n "checking whether rl_event_hook is declared... " >&6; } -if test "${ac_cv_have_decl_rl_event_hook+set}" = set; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setresgid declaration" >&5 -+$as_echo_n "checking for setresgid declaration... " >&6; } -+if test "${ac_cv_have_setresgid_decl+set}" = set; then : ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for secure mkstemp" >&5 ++$as_echo_n "checking for secure mkstemp... " >&6; } ++if test "${libreplace_cv_HAVE_SECURE_MKSTEMP+set}" = set; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF @@ -41389,20 +40489,34 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include - int - main () - { +- +-int +-main () +-{ -#ifndef rl_event_hook - (void) rl_event_hook; -#endif -- -+int i = (int)setresgid - ; - return 0; + +- ; +- return 0; ++if test "$cross_compiling" = yes; then : ++ libreplace_cv_HAVE_SECURE_MKSTEMP=cross ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++main() { ++ struct stat st; ++ char tpl[20]="/tmp/test.XXXXXX"; ++ int fd = mkstemp(tpl); ++ if (fd == -1) exit(1); ++ unlink(tpl); ++ if (fstat(fd, &st) != 0) exit(1); ++ if ((st.st_mode & 0777) != 0600) exit(1); ++ exit(0); } _ACEOF -rm -f conftest.$ac_objext @@ -41424,48 +40538,59 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_have_decl_rl_event_hook=yes -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_have_setresgid_decl=yes ++if ac_fn_c_try_run "$LINENO"; then : ++ libreplace_cv_HAVE_SECURE_MKSTEMP=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl_rl_event_hook=no -+ ac_cv_have_setresgid_decl=no ++ libreplace_cv_HAVE_SECURE_MKSTEMP=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext fi -- - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_rl_event_hook" >&5 -$as_echo "$ac_cv_have_decl_rl_event_hook" >&6; } -if test "x$ac_cv_have_decl_rl_event_hook" = x""yes; then -- ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_HAVE_SECURE_MKSTEMP" >&5 ++$as_echo "$libreplace_cv_HAVE_SECURE_MKSTEMP" >&6; } ++if test x"$libreplace_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then + -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_RL_EVENT_HOOK 1 -_ACEOF -- -- ++$as_echo "#define HAVE_SECURE_MKSTEMP 1" >>confdefs.h + ++fi + -else -- cat >>confdefs.h <<_ACEOF ++for ac_header in stdio.h strings.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_RL_EVENT_HOOK 0 --_ACEOF -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_setresgid_decl" >&5 -+$as_echo "$ac_cv_have_setresgid_decl" >&6; } -+ if test x"$ac_cv_have_setresgid_decl" = x"yes"; then ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF -+$as_echo "#define HAVE_SETRESGID_DECL 1" >>confdefs.h - --fi -+ fi +- + fi ++done -{ $as_echo "$as_me:$LINENO: checking for history_list in -lreadline" >&5 -$as_echo_n "checking for history_list in -lreadline... " >&6; } -if test "${ac_cv_lib_readline_history_list+set}" = set; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for errno declaration" >&5 -+$as_echo_n "checking for errno declaration... " >&6; } -+if test "${ac_cv_have_errno_decl+set}" = set; then : - $as_echo_n "(cached) " >&6 +- $as_echo_n "(cached) " >&6 ++ac_fn_c_check_decl "$LINENO" "snprintf" "ac_cv_have_decl_snprintf" "$ac_includes_default" ++if test "x$ac_cv_have_decl_snprintf" = x""yes; then : ++ ac_have_decl=1 else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lreadline $TERMLIBS $LIBS" @@ -41475,6 +40600,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ ++ ac_have_decl=0 ++fi -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -41483,17 +40610,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -extern "C" -#endif -char history_list (); -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include - int - main () - { +-int +-main () +-{ -return history_list (); -+int i = (int)errno - ; - return 0; - } +- ; +- return 0; +-} ++cat >>confdefs.h <<_ACEOF ++#define HAVE_DECL_SNPRINTF $ac_have_decl _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" @@ -41517,36 +40642,61 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - ac_cv_lib_readline_history_list=yes -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_have_errno_decl=yes ++ac_fn_c_check_decl "$LINENO" "vsnprintf" "ac_cv_have_decl_vsnprintf" "$ac_includes_default" ++if test "x$ac_cv_have_decl_vsnprintf" = x""yes; then : ++ ac_have_decl=1 else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++ ac_have_decl=0 ++fi + - ac_cv_lib_readline_history_list=no -+ ac_cv_have_errno_decl=no ++cat >>confdefs.h <<_ACEOF ++#define HAVE_DECL_VSNPRINTF $ac_have_decl ++_ACEOF ++ac_fn_c_check_decl "$LINENO" "asprintf" "ac_cv_have_decl_asprintf" "$ac_includes_default" ++if test "x$ac_cv_have_decl_asprintf" = x""yes; then : ++ ac_have_decl=1 ++else ++ ac_have_decl=0 fi -- + -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++cat >>confdefs.h <<_ACEOF ++#define HAVE_DECL_ASPRINTF $ac_have_decl ++_ACEOF ++ac_fn_c_check_decl "$LINENO" "vasprintf" "ac_cv_have_decl_vasprintf" "$ac_includes_default" ++if test "x$ac_cv_have_decl_vasprintf" = x""yes; then : ++ ac_have_decl=1 ++else ++ ac_have_decl=0 fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_readline_history_list" >&5 -$as_echo "$ac_cv_lib_readline_history_list" >&6; } -if test "x$ac_cv_lib_readline_history_list" = x""yes; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_errno_decl" >&5 -+$as_echo "$ac_cv_have_errno_decl" >&6; } -+ if test x"$ac_cv_have_errno_decl" = x"yes"; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_HISTORY_LIST 1 --_ACEOF -+$as_echo "#define HAVE_ERRNO_DECL 1" >>confdefs.h ++cat >>confdefs.h <<_ACEOF ++#define HAVE_DECL_VASPRINTF $ac_have_decl ++_ACEOF ++ ++for ac_func in snprintf vsnprintf asprintf vasprintf ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 + _ACEOF --fi -+ fi + fi ++done -############################################### @@ -41554,9 +40704,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: checking for library containing yp_get_default_domain" >&5 -$as_echo_n "checking for library containing yp_get_default_domain... " >&6; } -if test "${ac_cv_search_yp_get_default_domain+set}" = set; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for secure mkstemp" >&5 -+$as_echo_n "checking for secure mkstemp... " >&6; } -+if test "${libreplace_cv_HAVE_SECURE_MKSTEMP+set}" = set; then : ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 vsnprintf" >&5 ++$as_echo_n "checking for C99 vsnprintf... " >&6; } ++if test "${libreplace_cv_HAVE_C99_VSNPRINTF+set}" = set; then : $as_echo_n "(cached) " >&6 else - ac_func_search_save_LIBS=$LIBS @@ -41580,26 +40730,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -return yp_get_default_domain (); - ; - return 0; -+if test "$cross_compiling" = yes; then : -+ libreplace_cv_HAVE_SECURE_MKSTEMP=cross -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+#include -+#include -+#include -+main() { -+ struct stat st; -+ char tpl[20]="/tmp/test.XXXXXX"; -+ int fd = mkstemp(tpl); -+ if (fd == -1) exit(1); -+ unlink(tpl); -+ if (fstat(fd, &st) != 0) exit(1); -+ if ((st.st_mode & 0777) != 0600) exit(1); -+ exit(0); - } - _ACEOF +-} +-_ACEOF -for ac_lib in '' nsl; do - if test -z "$ac_lib"; then - ac_res="none required" @@ -41629,230 +40761,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - ac_cv_search_yp_get_default_domain=$ac_res --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- --fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext -- if test "${ac_cv_search_yp_get_default_domain+set}" = set; then -- break --fi --done --if test "${ac_cv_search_yp_get_default_domain+set}" = set; then -- : -+if ac_fn_c_try_run "$LINENO"; then : -+ libreplace_cv_HAVE_SECURE_MKSTEMP=yes - else -- ac_cv_search_yp_get_default_domain=no -+ libreplace_cv_HAVE_SECURE_MKSTEMP=no - fi --rm conftest.$ac_ext --LIBS=$ac_func_search_save_LIBS -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_yp_get_default_domain" >&5 --$as_echo "$ac_cv_search_yp_get_default_domain" >&6; } --ac_res=$ac_cv_search_yp_get_default_domain --if test "$ac_res" != no; then -- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - - fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_HAVE_SECURE_MKSTEMP" >&5 -+$as_echo "$libreplace_cv_HAVE_SECURE_MKSTEMP" >&6; } -+if test x"$libreplace_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then - -+$as_echo "#define HAVE_SECURE_MKSTEMP 1" >>confdefs.h - --for ac_func in yp_get_default_domain --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func -+fi - --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -+for ac_header in stdio.h strings.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF - --#ifdef __STDC__ --# include --#else --# include --#endif -+fi - --#undef $ac_func -+done - --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -+ac_fn_c_check_decl "$LINENO" "snprintf" "ac_cv_have_decl_snprintf" "$ac_includes_default" -+if test "x$ac_cv_have_decl_snprintf" = x""yes; then : -+ ac_have_decl=1 -+else -+ ac_have_decl=0 -+fi - --int --main () --{ --return $ac_func (); -- ; -- return 0; --} -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL_SNPRINTF $ac_have_decl - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" -+ac_fn_c_check_decl "$LINENO" "vsnprintf" "ac_cv_have_decl_vsnprintf" "$ac_includes_default" -+if test "x$ac_cv_have_decl_vsnprintf" = x""yes; then : -+ ac_have_decl=1 - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+ ac_have_decl=0 -+fi - -- eval "$as_ac_var=no" -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL_VSNPRINTF $ac_have_decl -+_ACEOF -+ac_fn_c_check_decl "$LINENO" "asprintf" "ac_cv_have_decl_asprintf" "$ac_includes_default" -+if test "x$ac_cv_have_decl_asprintf" = x""yes; then : -+ ac_have_decl=1 -+else -+ ac_have_decl=0 - fi - --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL_ASPRINTF $ac_have_decl -+_ACEOF -+ac_fn_c_check_decl "$LINENO" "vasprintf" "ac_cv_have_decl_vasprintf" "$ac_includes_default" -+if test "x$ac_cv_have_decl_vasprintf" = x""yes; then : -+ ac_have_decl=1 -+else -+ ac_have_decl=0 - fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL_VASPRINTF $ac_have_decl -+_ACEOF -+ -+for ac_func in snprintf vsnprintf asprintf vasprintf -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+eval as_val=\$$as_ac_var -+ if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF - #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 - _ACEOF -@@ -40174,414 +9223,266 @@ - done - - --# Check if we have execl, if not we need to compile smbrun. -- --for ac_func in execl --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 vsnprintf" >&5 -+$as_echo_n "checking for C99 vsnprintf... " >&6; } -+if test "${libreplace_cv_HAVE_C99_VSNPRINTF+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ +if test "$cross_compiling" = yes; then : + libreplace_cv_HAVE_C99_VSNPRINTF=cross -+else + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func ++/* end confdefs.h. */ --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ +#include +#include +#include @@ -41864,121 +40780,66 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + long long l = 1234567890; + l *= 100; --#ifdef __STDC__ --# include --#else --# include --#endif +-fi + va_start(ap, format); + len = vsnprintf(buf, 0, format, ap); + va_end(ap); + if (len != 5) exit(1); --#undef $ac_func +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext +- if test "${ac_cv_search_yp_get_default_domain+set}" = set; then +- break +-fi +-done +-if test "${ac_cv_search_yp_get_default_domain+set}" = set; then +- : + va_start(ap, format); + len = vsnprintf(0, 0, format, ap); + va_end(ap); + if (len != 5) exit(2); - --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif ++ + if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(3); - --int --main () --{ --return $ac_func (); -- ; -- return 0; ++ + if (snprintf(buf, 20, "%lld", l) != 12 || strcmp(buf, "123456789000") != 0) exit(4); + if (snprintf(buf, 20, "%zu", 123456789) != 9 || strcmp(buf, "123456789") != 0) exit(5); + if (snprintf(buf, 20, "%2\$d %1\$d", 3, 4) != 3 || strcmp(buf, "4 3") != 0) exit(6); + if (snprintf(buf, 20, "%s", 0) < 3) exit(7); + + exit(0); - } ++} +main() { foo("hello"); } + - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" ++_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + libreplace_cv_HAVE_C99_VSNPRINTF=yes else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_var=no" +- ac_cv_search_yp_get_default_domain=no + libreplace_cv_HAVE_C99_VSNPRINTF=no fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -- cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 --_ACEOF -- +-rm conftest.$ac_ext +-LIBS=$ac_func_search_save_LIBS +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi --done - --if test x"$ac_cv_func_execl" = x"no"; then -- EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)" - fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_yp_get_default_domain" >&5 +-$as_echo "$ac_cv_search_yp_get_default_domain" >&6; } +-ac_res=$ac_cv_search_yp_get_default_domain +-if test "$ac_res" != no; then +- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" ++ ++fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_HAVE_C99_VSNPRINTF" >&5 +$as_echo "$libreplace_cv_HAVE_C99_VSNPRINTF" >&6; } +if test x"$libreplace_cv_HAVE_C99_VSNPRINTF" = x"yes"; then - ++ +$as_echo "#define HAVE_C99_VSNPRINTF 1" >>confdefs.h -+fi + fi -- -- -- --for ac_func in getcwd fchown chmod fchmod mknod mknod64 +-for ac_func in yp_get_default_domain -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -42105,9 +40966,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi +-fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -42118,18 +40977,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +- ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-done +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_HAVE___VA_COPY" >&5 +$as_echo "$libreplace_cv_HAVE___VA_COPY" >&6; } +if test x"$libreplace_cv_HAVE___VA_COPY" = x"yes"; then --fi --done +$as_echo "#define HAVE___VA_COPY 1" >>confdefs.h +-# Check if we have execl, if not we need to compile smbrun. +fi +fi --for ac_func in strtol +-for ac_func in execl -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -42247,18 +41110,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - eval "$as_ac_var=no" + libreplace_cv_HAVE_func_MACRO=no - fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_HAVE_func_MACRO" >&5 +$as_echo "$libreplace_cv_HAVE_func_MACRO" >&6; } + if test x"$libreplace_cv_HAVE_func_MACRO" = x"yes"; then ++ ++$as_echo "#define HAVE_func_MACRO 1" >>confdefs.h -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+$as_echo "#define HAVE_func_MACRO 1" >>confdefs.h -+ + fi fi -ac_res=`eval 'as_val=${'$as_ac_var'} @@ -42281,21 +41144,34 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -+ - done +-done + +-if test x"$ac_cv_func_execl" = x"no"; then +- EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)" +-fi ++done +ac_fn_c_check_type "$LINENO" "comparison_fn_t" "ac_cv_type_comparison_fn_t" "$ac_includes_default" +if test "x$ac_cv_type_comparison_fn_t" = x""yes; then : --for ac_func in strchr chflags ++$as_echo "#define HAVE_COMPARISON_FN_T 1" >>confdefs.h + ++fi + + + +-for ac_func in getcwd fchown chmod fchmod mknod mknod64 -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setenv declaration" >&5 ++$as_echo_n "checking for setenv declaration... " >&6; } ++if test "${ac_cv_have_setenv_decl+set}" = set; then : + $as_echo_n "(cached) " >&6 + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF @@ -42305,22 +41181,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -+$as_echo "#define HAVE_COMPARISON_FN_T 1" >>confdefs.h - +- -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -+fi - +- -#ifdef __STDC__ -# include -#else -# include -#endif - +- -#undef $ac_func - +- -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ @@ -42334,11 +41208,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setenv declaration" >&5 -+$as_echo_n "checking for setenv declaration... " >&6; } -+if test "${ac_cv_have_setenv_decl+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ @@ -42413,14 +41282,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -@@ -40590,102 +9491,56 @@ +@@ -39892,99 +9211,56 @@ done -- -- -- --for ac_func in getrlimit fsync fdatasync setpgid +-for ac_func in strtol -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -42510,9 +41376,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - eval "$as_ac_var=no" + ac_cv_have_environ_decl=no -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_environ_decl" >&5 +$as_echo "$ac_cv_have_environ_decl" >&6; } + if test x"$ac_cv_have_environ_decl" = x"yes"; then @@ -42552,23 +41418,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -@@ -40694,255 +9549,183 @@ +@@ -39993,354 +9269,183 @@ done +# this test disabled as we don't actually need __VA_ARGS__ yet +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ - ++ +#define eprintf(...) fprintf(stderr, __VA_ARGS__) +eprintf("bla", "bar"); -+_ACEOF -+if ac_fn_c_try_cpp "$LINENO"; then : - -+$as_echo "#define HAVE__VA_ARGS__MACRO 1" >>confdefs.h - --for ac_func in setsid glob strpbrk crypt16 getauthuid +-for ac_func in strchr chflags -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -42578,35 +41439,30 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ --_ACEOF + _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -+fi -+rm -f conftest.err conftest.$ac_ext ++if ac_fn_c_try_cpp "$LINENO"; then : -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ ++$as_echo "#define HAVE__VA_ARGS__MACRO 1" >>confdefs.h -#ifdef __STDC__ -# include -#else -# include -#endif -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t type" >&5 -+$as_echo_n "checking for sig_atomic_t type... " >&6; } -+if test "${libreplace_cv_sig_atomic_t+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else ++fi ++rm -f conftest.err conftest.$ac_ext -#undef $ac_func -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -42620,12 +41476,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me +-#endif ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t type" >&5 ++$as_echo_n "checking for sig_atomic_t type... " >&6; } ++if test "${libreplace_cv_sig_atomic_t+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ + +#include +#if STDC_HEADERS +#include +#include - #endif -- ++#endif +#include int main () @@ -42665,8 +41530,130 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext + libreplace_cv_sig_atomic_t=no fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF +- ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-done +- ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_sig_atomic_t" >&5 ++$as_echo "$libreplace_cv_sig_atomic_t" >&6; } ++if test x"$libreplace_cv_sig_atomic_t" = x"yes"; then + ++$as_echo "#define HAVE_SIG_ATOMIC_T_TYPE 1" >>confdefs.h + ++fi + + +-for ac_func in getrlimit fsync fdatasync setpgid +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for O_DIRECT flag to open(2)" >&5 ++$as_echo_n "checking for O_DIRECT flag to open(2)... " >&6; } ++if test "${libreplace_cv_HAVE_OPEN_O_DIRECT+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif + +-#undef $ac_func ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me ++#include ++#ifdef HAVE_FCNTL_H ++#include + #endif +- + int + main () + { +-return $ac_func (); ++int fd = open("/dev/null", O_DIRECT); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" ++if ac_fn_c_try_compile "$LINENO"; then : ++ libreplace_cv_HAVE_OPEN_O_DIRECT=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" ++ libreplace_cv_HAVE_OPEN_O_DIRECT=no + fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ @@ -42683,79 +41670,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_sig_atomic_t" >&5 -+$as_echo "$libreplace_cv_sig_atomic_t" >&6; } -+if test x"$libreplace_cv_sig_atomic_t" = x"yes"; then - --fi --done -+$as_echo "#define HAVE_SIG_ATOMIC_T_TYPE 1" >>confdefs.h - -+fi - - -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for O_DIRECT flag to open(2)" >&5 -+$as_echo_n "checking for O_DIRECT flag to open(2)... " >&6; } -+if test "${libreplace_cv_HAVE_OPEN_O_DIRECT+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else - -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ - -+#include -+#ifdef HAVE_FCNTL_H -+#include -+#endif -+int -+main () -+{ -+int fd = open("/dev/null", O_DIRECT); -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ libreplace_cv_HAVE_OPEN_O_DIRECT=yes -+else -+ libreplace_cv_HAVE_OPEN_O_DIRECT=no -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_HAVE_OPEN_O_DIRECT" >&5 +$as_echo "$libreplace_cv_HAVE_OPEN_O_DIRECT" >&6; } +if test x"$libreplace_cv_HAVE_OPEN_O_DIRECT" = x"yes"; then - ++ +$as_echo "#define HAVE_OPEN_O_DIRECT 1" >>confdefs.h -+fi + fi +-done --for ac_func in sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that the C compiler understands volatile" >&5 +$as_echo_n "checking that the C compiler understands volatile... " >&6; } +if test "${libreplace_cv_volatile+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func ++ $as_echo_n "(cached) " >&6 ++else --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include @@ -42778,16 +41708,49 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +$as_echo "$libreplace_cv_volatile" >&6; } +if test x"$libreplace_cv_volatile" = x"yes"; then ++$as_echo "#define HAVE_VOLATILE 1" >>confdefs.h + ++fi + +-for ac_func in setsid glob strpbrk crypt16 getauthuid +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++# filesys ++ac_header_dirent=no ++for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do ++ as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 ++$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- -#ifdef __STDC__ -# include -#else -# include -#endif -+$as_echo "#define HAVE_VOLATILE 1" >>confdefs.h - +- -#undef $ac_func -+fi - +- -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ @@ -42801,17 +41764,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -+# filesys -+ac_header_dirent=no -+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do -+ as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 -+$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ +#include +#include <$ac_hdr> @@ -42884,33 +41836,26 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - - - - - - --for ac_func in initgroups select poll rdchk getgrnam getgrent pathconf +- +- +-for ac_func in sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+done -+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. -+if test $ac_header_dirent = dirent.h; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -+$as_echo_n "checking for library containing opendir... " >&6; } -+if test "${ac_cv_search_opendir+set}" = set; then : - $as_echo_n "(cached) " >&6 - else +- $as_echo_n "(cached) " >&6 +-else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+ ac_func_search_save_LIBS=$LIBS -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ +-/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func @@ -42919,7 +41864,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -- + -#ifdef __STDC__ -# include -#else @@ -42927,10 +41872,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#endif - -#undef $ac_func ++done ++# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. ++if test $ac_header_dirent = dirent.h; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 ++$as_echo_n "checking for library containing opendir... " >&6; } ++if test "${ac_cv_search_opendir+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_func_search_save_LIBS=$LIBS ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -40950,106 +9733,56 @@ +@@ -40348,106 +9453,56 @@ #ifdef __cplusplus extern "C" #endif @@ -43032,7 +41988,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - --for ac_func in setpriv setgidx setuidx setgroups sysconf stat64 fstat64 +-for ac_func in initgroups select poll rdchk getgrnam getgrent pathconf -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -43071,7 +42027,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -41057,168 +9790,148 @@ +@@ -40455,169 +9510,148 @@ #ifdef __cplusplus extern "C" #endif @@ -43186,7 +42142,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF - ++ +fi +done @@ -43203,7 +42159,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi --for ac_func in lstat64 fopen64 atexit grantpt lseek64 ftruncate64 ++done + + +-for ac_func in setpriv setgidx setuidx setgroups sysconf stat64 fstat64 -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -43213,15 +42172,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ --_ACEOF ++# time ++for ac_header in sys/time.h utime.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -+done - +- -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since @@ -43232,19 +42199,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#else -# include -#endif -+# time -+for ac_header in sys/time.h utime.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF ++fi -#undef $ac_func -+fi ++done -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -43259,8 +42217,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -+done -+ +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 +$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } +if test "${ac_cv_header_time+set}" = set; then : @@ -43312,9 +42268,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - eval "$as_ac_var=no" + ac_cv_header_time=no -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 +$as_echo "$ac_cv_header_time" >&6; } +if test $ac_cv_header_time = yes; then @@ -43342,7 +42298,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -@@ -41227,210 +9940,170 @@ +@@ -40626,212 +9660,170 @@ done @@ -43351,7 +42307,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - --for ac_func in fseek64 fseeko64 ftell64 ftello64 setluid getpwanam +- +- +-for ac_func in lstat64 fopen64 atexit grantpt lseek64 ftruncate64 posix_fallocate posix_fallocate64 -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -43509,7 +42467,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + int i; --for ac_func in opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64 +-for ac_func in fseek64 fseeko64 ftell64 ftello64 setluid getpwanam -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -43670,19 +42628,54 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -@@ -41439,200 +10112,139 @@ +@@ -40840,205 +9832,139 @@ done --for ac_func in getpwent_r ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpwent_r declaration" >&5 ++$as_echo_n "checking for getpwent_r declaration... " >&6; } ++if test "${ac_cv_have_getpwent_r_decl+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ + ++ #include ++ #include + ++int ++main () ++{ ++int i = (int)getpwent_r ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_have_getpwent_r_decl=yes ++else ++ ac_cv_have_getpwent_r_decl=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_getpwent_r_decl" >&5 ++$as_echo "$ac_cv_have_getpwent_r_decl" >&6; } ++ if test x"$ac_cv_have_getpwent_r_decl" = x"yes"; then + ++$as_echo "#define HAVE_GETPWENT_R_DECL 1" >>confdefs.h + ++ fi + +-for ac_func in opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64 -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpwent_r declaration" >&5 -+$as_echo_n "checking for getpwent_r declaration... " >&6; } -+if test "${ac_cv_have_getpwent_r_decl+set}" = set; then : ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for prototype struct passwd *getpwent_r(struct passwd *src, char *buf, int buflen)" >&5 ++$as_echo_n "checking for prototype struct passwd *getpwent_r(struct passwd *src, char *buf, int buflen)... " >&6; } ++if test "${ac_cv_c_prototype_struct_passwd_pgetpwent_r_struct_passwd_psrc__char_pbuf__int_buflen_+set}" = set; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF @@ -43690,25 +42683,29 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -- + -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -- ++ $ac_includes_default + -#ifdef __STDC__ -# include -#else -# include -#endif ++ #include ++ #include -#undef $ac_func -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ ++ struct passwd *getpwent_r(struct passwd *src, char *buf, int buflen) ++ { -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -43723,17 +42720,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -+ #include -+ #include ++ #ifndef HAVE_GETPWENT_R_DECL ++ #error missing getpwent_r prototype ++ #endif ++ return NULL; ++ ++ } - int - main () - { +-int +-main () +-{ -return $ac_func (); -+int i = (int)getpwent_r - ; - return 0; - } +- ; +- return 0; +-} _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" @@ -43758,19 +42758,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - }; then - eval "$as_ac_var=yes" +if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_have_getpwent_r_decl=yes ++ ++ ac_cv_c_prototype_struct_passwd_pgetpwent_r_struct_passwd_psrc__char_pbuf__int_buflen_=yes ++ else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- + - eval "$as_ac_var=no" -+ ac_cv_have_getpwent_r_decl=no - fi -- +-fi ++ ac_cv_c_prototype_struct_passwd_pgetpwent_r_struct_passwd_psrc__char_pbuf__int_buflen_=no + -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` @@ -43781,62 +42782,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_getpwent_r_decl" >&5 -+$as_echo "$ac_cv_have_getpwent_r_decl" >&6; } -+ if test x"$ac_cv_have_getpwent_r_decl" = x"yes"; then -+ -+$as_echo "#define HAVE_GETPWENT_R_DECL 1" >>confdefs.h -+ -+ fi -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for prototype struct passwd *getpwent_r(struct passwd *src, char *buf, int buflen)" >&5 -+$as_echo_n "checking for prototype struct passwd *getpwent_r(struct passwd *src, char *buf, int buflen)... " >&6; } -+if test "${ac_cv_c_prototype_struct_passwd_pgetpwent_r_struct_passwd_psrc__char_pbuf__int_buflen_+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+ $ac_includes_default -+ -+ #include -+ #include -+ -+ struct passwd *getpwent_r(struct passwd *src, char *buf, int buflen) -+ { -+ -+ #ifndef HAVE_GETPWENT_R_DECL -+ #error missing getpwent_r prototype -+ #endif -+ return NULL; -+ -+ } -+ - _ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ -+ ac_cv_c_prototype_struct_passwd_pgetpwent_r_struct_passwd_psrc__char_pbuf__int_buflen_=yes -+ -+else -+ -+ ac_cv_c_prototype_struct_passwd_pgetpwent_r_struct_passwd_psrc__char_pbuf__int_buflen_=no +-_ACEOF ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -done -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -+fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_prototype_struct_passwd_pgetpwent_r_struct_passwd_psrc__char_pbuf__int_buflen_" >&5 +$as_echo "$ac_cv_c_prototype_struct_passwd_pgetpwent_r_struct_passwd_psrc__char_pbuf__int_buflen_" >&6; } +if test $ac_cv_c_prototype_struct_passwd_pgetpwent_r_struct_passwd_psrc__char_pbuf__int_buflen_ = yes; then : --for ac_func in getdents64 + +-for ac_func in getpwent_r -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ +$as_echo "#define SOLARIS_GETPWENT_R 1" >>confdefs.h + + @@ -43970,14 +42931,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -@@ -41641,244 +10253,210 @@ +@@ -41047,345 +9973,221 @@ done -- -- -- --for ac_func in setenv strcasecmp fcvt fcvtl +-for ac_func in getdents64 -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -44127,7 +43085,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -done +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_prototype_struct_group_pgetgrent_r_struct_group_psrc__char_pbuf__int_buflen_" >&5 +$as_echo "$ac_cv_c_prototype_struct_group_pgetgrent_r_struct_group_psrc__char_pbuf__int_buflen_" >&6; } @@ -44137,7 +43095,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +$as_echo "#define SOLARIS_GETGRENT_R 1" >>confdefs.h --for ac_func in syslog vsyslog timegm +-for ac_func in setenv strcasecmp fcvt fcvtl -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -44240,36 +43198,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - eval "$as_ac_var=no" + ac_cv_c_prototype_struct_group_pgetgrent_r_struct_group_psrc__char_pbuf__size_t_buflen_=no -+ -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_prototype_struct_group_pgetgrent_r_struct_group_psrc__char_pbuf__size_t_buflen_" >&5 -+$as_echo "$ac_cv_c_prototype_struct_group_pgetgrent_r_struct_group_psrc__char_pbuf__size_t_buflen_" >&6; } -+if test $ac_cv_c_prototype_struct_group_pgetgrent_r_struct_group_psrc__char_pbuf__size_t_buflen_ = yes; then : -+ -+ -+$as_echo "#define SOLARIS_GETGRENT_R 1" >>confdefs.h -+ + fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+ -+# locale -+for ac_header in ctype.h locale.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` @@ -44278,27 +43213,31 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+ -+done ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_prototype_struct_group_pgetgrent_r_struct_group_psrc__char_pbuf__size_t_buflen_" >&5 ++$as_echo "$ac_cv_c_prototype_struct_group_pgetgrent_r_struct_group_psrc__char_pbuf__size_t_buflen_" >&6; } ++if test $ac_cv_c_prototype_struct_group_pgetgrent_r_struct_group_psrc__char_pbuf__size_t_buflen_ = yes; then : + + -+# glob -+for ac_header in fnmatch.h ++$as_echo "#define SOLARIS_GETGRENT_R 1" >>confdefs.h ++ ++ ++fi ++ ++for ac_func in getgrouplist +do : -+ ac_fn_c_check_header_mongrel "$LINENO" "fnmatch.h" "ac_cv_header_fnmatch_h" "$ac_includes_default" -+if test "x$ac_cv_header_fnmatch_h" = x""yes; then : ++ ac_fn_c_check_func "$LINENO" "getgrouplist" "ac_cv_func_getgrouplist" ++if test "x$ac_cv_func_getgrouplist" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_FNMATCH_H 1 ++#define HAVE_GETGROUPLIST 1 _ACEOF fi -+ done -+# shmem -+for ac_header in sys/ipc.h sys/mman.h sys/shm.h ++# locale ++for ac_header in ctype.h locale.h langinfo.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -44308,7 +43247,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF --for ac_func in setlocale nl_langinfo ++fi + +-for ac_func in syslog vsyslog timegm -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -44318,8 +43259,110 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func ++done + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++# glob ++for ac_header in fnmatch.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "fnmatch.h" "ac_cv_header_fnmatch_h" "$ac_includes_default" ++if test "x$ac_cv_header_fnmatch_h" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_FNMATCH_H 1 ++_ACEOF + +-#undef $ac_func +fi + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif ++done + +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} + ++# shmem ++for ac_header in sys/ipc.h sys/mman.h sys/shm.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- eval "$as_ac_var=no" + fi + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +done + + @@ -44330,32 +43373,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -+fi -+ -+done + fi + + done --#ifdef __STDC__ --# include --#else --# include --#endif --#undef $ac_func + +-for ac_func in setlocale nl_langinfo +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +save_LIBS="$LIBS" +LIBS="" + @@ -44363,15 +43397,36 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +$as_echo_n "checking for library containing dlopen... " >&6; } +if test "${ac_cv_search_dlopen+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ + /* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -41886,100 +10464,85 @@ +@@ -41393,100 +10195,85 @@ #ifdef __cplusplus extern "C" #endif @@ -44528,7 +43583,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -41987,1000 +10550,611 @@ +@@ -41494,966 +10281,612 @@ #ifdef __cplusplus extern "C" #endif @@ -44643,7 +43698,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + libreplace_cv_shl=yes +fi +done -+ + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for prototype void *dlopen(const char* filename, unsigned int flags)" >&5 +$as_echo_n "checking for prototype void *dlopen(const char* filename, unsigned int flags)... " >&6; } @@ -44653,10 +43708,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -+ $ac_includes_default - -ac_check_lib_ext_save_LIBS=$LIBS -LIBS="-lrt $LIBS $LIBS" ++ $ac_includes_default + + #include + void *dlopen(const char* filename, unsigned int flags) @@ -44664,8 +43719,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + return 0; -+ } - - { $as_echo "$as_me:$LINENO: checking for nanosleep in -lrt" >&5 -$as_echo_n "checking for nanosleep in -lrt... " >&6; } -if test "${ac_cv_lib_ext_rt_nanosleep+set}" = set; then @@ -44673,13 +43726,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ - _ACEOF +-_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -+if ac_fn_c_try_compile "$LINENO"; then : -+ -+ ac_cv_c_prototype_void_pdlopen_const_charp_filename__unsigned_int_flags_=yes ++ } -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -44695,7 +43746,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} --_ACEOF + _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -44719,6 +43770,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - }; then - ac_cv_lib_ext_rt_nanosleep=yes; - ac_cv_lib_ext_rt=yes ++if ac_fn_c_try_compile "$LINENO"; then : ++ ++ ac_cv_c_prototype_void_pdlopen_const_charp_filename__unsigned_int_flags_=yes ++ else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 @@ -44758,7 +43813,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#define HAVE_LIBRT 1 -_ACEOF +if test x"${libreplace_cv_dlfcn}" = x"yes";then -+ LIBREPLACEOBJ="${LIBREPLACEOBJ} dlfcn.o" ++ LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/dlfcn.o" +fi - case "$LIBS" in @@ -44785,20 +43840,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +if test x"$libreplace_cv_HAVE_GETPASS" = x"yes" -a x"$libreplace_cv_HAVE_GETPASSPHRASE" = x"yes"; then -+$as_echo "#define REPLACE_GETPASS_BY_GETPASSPHRASE 1" >>confdefs.h - - -+$as_echo "#define REPLACE_GETPASS 1" >>confdefs.h - --for ac_func in mlock munlock mlockall munlockall +-for ac_func in utimensat -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -+ LIBREPLACEOBJ="${LIBREPLACEOBJ} getpass.o" - else +-else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF @@ -44808,7 +43857,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -- ++$as_echo "#define REPLACE_GETPASS_BY_GETPASSPHRASE 1" >>confdefs.h + -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since @@ -44819,17 +43869,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#else -# include -#endif -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpass should be replaced" >&5 -+$as_echo_n "checking whether getpass should be replaced... " >&6; } -+if test "${libreplace_cv_REPLACE_GETPASS+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else ++$as_echo "#define REPLACE_GETPASS 1" >>confdefs.h -#undef $ac_func -+SAVE_CPPFLAGS="$CPPFLAGS" -+CPPFLAGS="$CPPFLAGS -I$libreplacedir/" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ ++ LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/getpass.o" ++else -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -44844,6 +43888,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpass should be replaced" >&5 ++$as_echo_n "checking whether getpass should be replaced... " >&6; } ++if test "${libreplace_cv_REPLACE_GETPASS+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ++SAVE_CPPFLAGS="$CPPFLAGS" ++CPPFLAGS="$CPPFLAGS -I$libreplacedir/" ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ +#include "confdefs.h" +#define NO_CONFIG_H +#include "$libreplacedir/getpass.c" @@ -44886,12 +43941,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" --fi -- ++ libreplace_cv_REPLACE_GETPASS=no + fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++CPPFLAGS="$SAVE_CPPFLAGS" + -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+ libreplace_cv_REPLACE_GETPASS=no fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` @@ -44903,60 +43960,93 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+CPPFLAGS="$SAVE_CPPFLAGS" - - fi --done +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_REPLACE_GETPASS" >&5 +$as_echo "$libreplace_cv_REPLACE_GETPASS" >&6; } +if test x"$libreplace_cv_REPLACE_GETPASS" = x"yes"; then +$as_echo "#define REPLACE_GETPASS 1" >>confdefs.h - -+ LIBREPLACEOBJ="${LIBREPLACEOBJ} getpass.o" -+fi ++ ++ LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/getpass.o" + fi +-done +fi --for ac_func in memalign posix_memalign hstrerror ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strptime is available and works" >&5 ++$as_echo_n "checking whether strptime is available and works... " >&6; } ++if test "${libreplace_cv_STRPTIME_OK+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else + ++ if test "$cross_compiling" = yes; then : ++ libreplace_cv_STRPTIME_OK="assuming not" ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ + ++ #define LIBREPLACE_CONFIGURE_TEST_STRPTIME ++ #include "$libreplacedir/test/strptime.c" + +-for ac_func in mlock munlock mlockall munlockall -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strptime is available and works" >&5 -+$as_echo_n "checking whether strptime is available and works... " >&6; } -+if test "${libreplace_cv_STRPTIME_OK+set}" = set; then : - $as_echo_n "(cached) " >&6 +- $as_echo_n "(cached) " >&6 ++_ACEOF ++if ac_fn_c_try_run "$LINENO"; then : ++ libreplace_cv_STRPTIME_OK=yes else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ --_ACEOF ++ libreplace_cv_STRPTIME_OK=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi ++ ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_STRPTIME_OK" >&5 ++$as_echo "$libreplace_cv_STRPTIME_OK" >&6; } ++if test x"$libreplace_cv_STRPTIME_OK" != x"yes"; then ++ ++$as_echo "#define REPLACE_STRPTIME 1" >>confdefs.h ++ ++ LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/strptime.o" ++fi ++ ++for ac_header in direct.h windows.h winsock2.h ws2tcpip.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -- + -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -- ++fi + -#ifdef __STDC__ -# include -#else -# include -#endif ++done -#undef $ac_func -+ if test "$cross_compiling" = yes; then : -+ libreplace_cv_STRPTIME_OK="assuming not" -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -44971,16 +44061,31 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -+ #define LIBREPLACE_CONFIGURE_TEST_STRPTIME -+ #include "$libreplacedir/test/strptime.c" ++####################################### ++# Check for mkdir mode ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mkdir supports mode" >&5 ++$as_echo_n "checking whether mkdir supports mode... " >&6; } ++if test "${libreplace_cv_mkdir_has_mode+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ --int --main () --{ ++ #include ++ #ifdef HAVE_DIRECT_H ++ #include ++ #endif + int + main () + { -return $ac_func (); -- ; -- return 0; --} ++ ++ mkdir("foo",0777); ++ return 0; ++ + ; + return 0; + } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" @@ -45004,30 +44109,28 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -+if ac_fn_c_try_run "$LINENO"; then : -+ libreplace_cv_STRPTIME_OK=yes ++if ac_fn_c_try_compile "$LINENO"; then : ++ libreplace_cv_mkdir_has_mode="yes" else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ libreplace_cv_STRPTIME_OK=no -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext -+fi -+ - +- - eval "$as_ac_var=no" ++ libreplace_cv_mkdir_has_mode="no" ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_STRPTIME_OK" >&5 -+$as_echo "$libreplace_cv_STRPTIME_OK" >&6; } -+if test x"$libreplace_cv_STRPTIME_OK" != x"yes"; then ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_mkdir_has_mode" >&5 ++$as_echo "$libreplace_cv_mkdir_has_mode" >&6; } + -+$as_echo "#define REPLACE_STRPTIME 1" >>confdefs.h ++if test "$libreplace_cv_mkdir_has_mode" = "yes" ++then ++ ++$as_echo "#define HAVE_MKDIR_MODE 1" >>confdefs.h -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+ LIBREPLACEOBJ="${LIBREPLACEOBJ} strptime.o" fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` @@ -45037,212 +44140,24 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then + -+for ac_header in direct.h windows.h winsock2.h ws2tcpip.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF - - fi -+ - done - - --for ac_header in sys/mman.h --do --as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+####################################### -+# Check for mkdir mode -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mkdir supports mode" >&5 -+$as_echo_n "checking whether mkdir supports mode... " >&6; } -+if test "${libreplace_cv_mkdir_has_mode+set}" = set; then : - $as_echo_n "(cached) " >&6 --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } - else -- # Is the header compilable? --{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 --$as_echo_n "checking $ac_header usability... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ --$ac_includes_default --#include <$ac_header> --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_header_compiler=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_header_compiler=no --fi -+ #include -+ #ifdef HAVE_DIRECT_H -+ #include -+ #endif -+int -+main () -+{ - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --$as_echo "$ac_header_compiler" >&6; } -+ mkdir("foo",0777); -+ return 0; - --# Is the header present? --{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 --$as_echo_n "checking $ac_header presence... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <$ac_header> -+ ; -+ return 0; -+} - _ACEOF --if { (ac_try="$ac_cpp conftest.$ac_ext" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } >/dev/null && { -- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -- test ! -s conftest.err -- }; then -- ac_header_preproc=yes -+if ac_fn_c_try_compile "$LINENO"; then : -+ libreplace_cv_mkdir_has_mode="yes" - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_header_preproc=no -+ libreplace_cv_mkdir_has_mode="no" - fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_mkdir_has_mode" >&5 -+$as_echo "$libreplace_cv_mkdir_has_mode" >&6; } - --rm -f conftest.err conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --$as_echo "$ac_header_preproc" >&6; } -+if test "$libreplace_cv_mkdir_has_mode" = "yes" -+then - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -- yes:no: ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 --$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -- ac_header_preproc=yes -- ;; -- no:yes:* ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 --$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 --$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 --$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 --$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 --$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -- ( cat <<\_ASBOX --## ---------------------------------------- ## --## Report this to samba-technical@samba.org ## --## ---------------------------------------- ## --_ASBOX -- ) | sed "s/^/$as_me: WARNING: /" >&2 -- ;; --esac --{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- eval "$as_ac_Header=\$ac_header_preproc" --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } -+$as_echo "#define HAVE_MKDIR_MODE 1" >>confdefs.h - - fi --as_val=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+ +for ac_func in timegm +do : + ac_fn_c_check_func "$LINENO" "timegm" "ac_cv_func_timegm" +if test "x$ac_cv_func_timegm" = x""yes; then : cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define HAVE_TIMEGM 1 _ACEOF +else -+ LIBREPLACEOBJ="${LIBREPLACEOBJ} timegm.o" ++ LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/timegm.o" fi -- done --# setbuffer, shmget, shm_open are needed for smbtorture -- --for ac_func in shmget shm_open +- +- +-for ac_func in memalign posix_memalign hstrerror -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -45408,80 +44323,45 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure done - -- --for ac_func in gettext dgettext +-for ac_header in sys/mman.h -do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for prototype long telldir(const DIR *dir)" >&5 +$as_echo_n "checking for prototype long telldir(const DIR *dir)... " >&6; } +if test "${ac_cv_c_prototype_long_telldir_const_DIR_pdir_+set}" = set; then : $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } else -- cat >conftest.$ac_ext <<_ACEOF +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func - --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -+ $ac_includes_default - --#ifdef __STDC__ --# include --#else --# include --#endif -+ #include - --#undef $ac_func -+ long telldir(const DIR *dir) -+ { - --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -+ return 0; -+ -+ } - --int --main () --{ --return $ac_func (); -- ; -- return 0; --} - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 +- (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 @@ -45490,57 +44370,143 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" -+if ac_fn_c_try_compile "$LINENO"; then : -+ -+ ac_cv_c_prototype_long_telldir_const_DIR_pdir_=yes -+ - else +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- eval "$as_ac_var=no" -+ ac_cv_c_prototype_long_telldir_const_DIR_pdir_=no -+ - fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- ac_header_compiler=no +-fi ++ $ac_includes_default --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext - fi --ac_res=`eval 'as_val=${'$as_ac_var'} +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } ++ #include + +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ long telldir(const DIR *dir) ++ { + +- ac_header_preproc=no +-fi ++ return 0; + +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } ++ } ++ ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ++ ac_cv_c_prototype_long_telldir_const_DIR_pdir_=yes + +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 + else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} ++ ++ ac_cv_c_prototype_long_telldir_const_DIR_pdir_=no + + fi +-as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_prototype_long_telldir_const_DIR_pdir_" >&5 +$as_echo "$ac_cv_c_prototype_long_telldir_const_DIR_pdir_" >&6; } +if test $ac_cv_c_prototype_long_telldir_const_DIR_pdir_ = yes; then : -+ -+ -+$as_echo "#define TELLDIR_TAKES_CONST_DIR 1" >>confdefs.h -+ - fi -done +-# setbuffer, shmget, shm_open are needed for smbtorture ++$as_echo "#define TELLDIR_TAKES_CONST_DIR 1" >>confdefs.h --for ac_func in strupr + +-for ac_func in shmget shm_open -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++fi ++ ++ +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for prototype int seekdir(DIR *dir, long ofs)" >&5 +$as_echo_n "checking for prototype int seekdir(DIR *dir, long ofs)... " >&6; } +if test "${ac_cv_c_prototype_int_seekdir_DIR_pdir__long_ofs_+set}" = set; then : @@ -45656,33 +44622,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +if test $ac_cv_c_prototype_int_seekdir_DIR_pdir__long_ofs_ = yes; then : --# Find a method of generating a stack trace +$as_echo "#define SEEKDIR_RETURNS_INT 1" >>confdefs.h - -+fi - --for ac_header in execinfo.h libexc.h libunwind.h +-for ac_func in gettext dgettext -do --as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ ++fi ++ +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for replacing readdir using getdirentries()" >&5 +$as_echo_n "checking for replacing readdir using getdirentries()... " >&6; } +if test "${libreplace_cv_READDIR_GETDIRENTRIES+set}" = set; then : $as_echo_n "(cached) " >&6 --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } else -- # Is the header compilable? --{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 --$as_echo_n "checking $ac_header usability... " >&6; } --cat >conftest.$ac_ext <<_ACEOF +- cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext @@ -45696,272 +44652,65 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ --$ac_includes_default --#include <$ac_header> -+ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +#define _LIBREPLACE_REPLACE_H +#include "$libreplacedir/repdir_getdirentries.c" +#define test_readdir_os2_delete main +#include "$libreplacedir/test/os2_delete.c" - _ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_header_compiler=yes ++_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + libreplace_cv_READDIR_GETDIRENTRIES=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 ++else + libreplace_cv_READDIR_GETDIRENTRIES=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi -- ac_header_compiler=no -+ +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif + +-#undef $ac_func +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_READDIR_GETDIRENTRIES" >&5 +$as_echo "$libreplace_cv_READDIR_GETDIRENTRIES" >&6; } - fi ++fi +if test x"$libreplace_cv_READDIR_GETDIRENTRIES" = x"yes"; then --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --$as_echo "$ac_header_compiler" >&6; } +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +$as_echo "#define REPLACE_READDIR 1" >>confdefs.h --# Is the header present? --{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 --$as_echo_n "checking $ac_header presence... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ -+ -+$as_echo "#define REPLACE_READDIR_GETDIRENTRIES 1" >>confdefs.h -+ -+ LIBREPLACEOBJ="${LIBREPLACEOBJ} repdir_getdirentries.o" -+ libreplace_cv_READDIR_NEEDED=no -+fi -+ -+# -+# try to replace with getdents() if needed -+# -+if test x"$libreplace_cv_READDIR_NEEDED" = x"yes"; then -+for ac_func in getdents -+do : -+ ac_fn_c_check_func "$LINENO" "getdents" "ac_cv_func_getdents" -+if test "x$ac_cv_func_getdents" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_GETDENTS 1 - _ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ -+fi -+done -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for replacing readdir using getdents()" >&5 -+$as_echo_n "checking for replacing readdir using getdents()... " >&6; } -+if test "${libreplace_cv_READDIR_GETDENTS+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ -+ if test "$cross_compiling" = yes; then : -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error "cannot run test program while cross compiling -+See \`config.log' for more details." "$LINENO" 5; } -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ --#include <$ac_header> -+ -+#define _LIBREPLACE_REPLACE_H -+#error _donot_use_getdents_replacement_anymore -+#include "$libreplacedir/repdir_getdents.c" -+#define test_readdir_os2_delete main -+#include "$libreplacedir/test/os2_delete.c" - _ACEOF --if { (ac_try="$ac_cpp conftest.$ac_ext" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } >/dev/null && { -- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -- test ! -s conftest.err -- }; then -- ac_header_preproc=yes -+if ac_fn_c_try_run "$LINENO"; then : -+ libreplace_cv_READDIR_GETDENTS=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+ libreplace_cv_READDIR_GETDENTS=no -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext -+fi - -- ac_header_preproc=no -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_READDIR_GETDENTS" >&5 -+$as_echo "$libreplace_cv_READDIR_GETDENTS" >&6; } - fi -+if test x"$libreplace_cv_READDIR_GETDENTS" = x"yes"; then - --rm -f conftest.err conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --$as_echo "$ac_header_preproc" >&6; } -+$as_echo "#define REPLACE_READDIR 1" >>confdefs.h - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -- yes:no: ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 --$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -- ac_header_preproc=yes -- ;; -- no:yes:* ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 --$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 --$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 --$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 --$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 --$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -- ( cat <<\_ASBOX --## ---------------------------------------- ## --## Report this to samba-technical@samba.org ## --## ---------------------------------------- ## --_ASBOX -- ) | sed "s/^/$as_me: WARNING: /" >&2 -- ;; --esac --{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- eval "$as_ac_Header=\$ac_header_preproc" -+ -+$as_echo "#define REPLACE_READDIR_GETDENTS 1" >>confdefs.h -+ -+ LIBREPLACEOBJ="${LIBREPLACEOBJ} repdir_getdents.o" -+ libreplace_cv_READDIR_NEEDED=no - fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } - -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking a usable readdir()" >&5 -+$as_echo_n "checking a usable readdir()... " >&6; } -+if test x"$libreplace_cv_READDIR_NEEDED" = x"yes"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: the provided readdir() is broken" >&5 -+$as_echo "$as_me: WARNING: the provided readdir() is broken" >&2;} -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } - fi --as_val=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+ -+############################################### -+# test for where we get crypt() from -+for ac_header in crypt.h -+do : -+ ac_fn_c_check_header_mongrel "$LINENO" "crypt.h" "ac_cv_header_crypt_h" "$ac_includes_default" -+if test "x$ac_cv_header_crypt_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+#define HAVE_CRYPT_H 1 - _ACEOF - - fi - - done - --# libexecinfo provides backtrace_symbols on FreeBSD --{ $as_echo "$as_me:$LINENO: checking for library containing backtrace_symbols" >&5 --$as_echo_n "checking for library containing backtrace_symbols... " >&6; } --if test "${ac_cv_search_backtrace_symbols+set}" = set; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 -+$as_echo_n "checking for library containing crypt... " >&6; } -+if test "${ac_cv_search_ext_crypt+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- ac_func_search_save_LIBS=$LIBS --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} -_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ -+ac_func_search_ext_save_LIBS=$LIBS -+ac_cv_search_ext_crypt=no -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -42989,105 +11163,25 @@ - #ifdef __cplusplus - extern "C" - #endif --char backtrace_symbols (); -+char crypt (); - int - main () - { --return backtrace_symbols (); -+return crypt (); - ; - return 0; - } - _ACEOF --for ac_lib in '' execinfo; do -- if test -z "$ac_lib"; then -- ac_res="none required" -- else -- ac_res=-l$ac_lib -- LIBS="-l$ac_lib $ac_func_search_save_LIBS" -- fi -- rm -f conftest.$ac_objext conftest$ac_exeext +-rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; @@ -45982,63 +44731,222 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- ac_cv_search_backtrace_symbols=$ac_res +- eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- + +- eval "$as_ac_var=no" -fi -- ++$as_echo "#define REPLACE_READDIR_GETDIRENTRIES 1" >>confdefs.h + -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext -- if test "${ac_cv_search_backtrace_symbols+set}" = set; then -- break --fi --done --if test "${ac_cv_search_backtrace_symbols+set}" = set; then -- : --else -- ac_cv_search_backtrace_symbols=no --fi --rm conftest.$ac_ext --LIBS=$ac_func_search_save_LIBS --fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_backtrace_symbols" >&5 --$as_echo "$ac_cv_search_backtrace_symbols" >&6; } --ac_res=$ac_cv_search_backtrace_symbols --if test "$ac_res" != no; then -- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -- -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_search_ext_crypt="none required" +- conftest$ac_exeext conftest.$ac_ext ++ LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/repdir_getdirentries.o" ++ libreplace_cv_READDIR_NEEDED=no fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ ++# ++# try to replace with getdents() if needed ++# ++if test x"$libreplace_cv_READDIR_NEEDED" = x"yes"; then ++for ac_func in getdents ++do : ++ ac_fn_c_check_func "$LINENO" "getdents" "ac_cv_func_getdents" ++if test "x$ac_cv_func_getdents" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define HAVE_GETDENTS 1 + _ACEOF + + fi + done + - - --for ac_func in backtrace_symbols +-for ac_func in bindtextdomain textdomain -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for replacing readdir using getdents()" >&5 ++$as_echo_n "checking for replacing readdir using getdents()... " >&6; } ++if test "${libreplace_cv_READDIR_GETDENTS+set}" = set; then : + $as_echo_n "(cached) " >&6 + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+if test "$ac_cv_search_ext_crypt" = no; then -+ for ac_lib in crypt; do -+ LIBS="-l$ac_lib $CRYPT_LIBS $ac_func_search_save_ext_LIBS" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++ ++ if test "$cross_compiling" = yes; then : ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error "cannot run test program while cross compiling ++See \`config.log' for more details." "$LINENO" 5; } ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++#define _LIBREPLACE_REPLACE_H ++#error _donot_use_getdents_replacement_anymore ++#include "$libreplacedir/repdir_getdents.c" ++#define test_readdir_os2_delete main ++#include "$libreplacedir/test/os2_delete.c" ++_ACEOF ++if ac_fn_c_try_run "$LINENO"; then : ++ libreplace_cv_READDIR_GETDENTS=yes ++else ++ libreplace_cv_READDIR_GETDENTS=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif + +-#undef $ac_func ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_READDIR_GETDENTS" >&5 ++$as_echo "$libreplace_cv_READDIR_GETDENTS" >&6; } ++fi ++if test x"$libreplace_cv_READDIR_GETDENTS" = x"yes"; then ++ ++$as_echo "#define REPLACE_READDIR 1" >>confdefs.h + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif + +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++$as_echo "#define REPLACE_READDIR_GETDENTS 1" >>confdefs.h + +- eval "$as_ac_var=no" ++ LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/repdir_getdents.o" ++ libreplace_cv_READDIR_NEEDED=no + fi + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking a usable readdir()" >&5 ++$as_echo_n "checking a usable readdir()... " >&6; } ++if test x"$libreplace_cv_READDIR_NEEDED" = x"yes"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: the provided readdir() is broken" >&5 ++$as_echo "$as_me: WARNING: the provided readdir() is broken" >&2;} ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } + fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ ++############################################### ++# test for where we get crypt() from ++for ac_header in crypt.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "crypt.h" "ac_cv_header_crypt_h" "$ac_includes_default" ++if test "x$ac_cv_header_crypt_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define HAVE_CRYPT_H 1 + _ACEOF + + fi +-done + ++done + +-for ac_func in strupr +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 ++$as_echo_n "checking for library containing crypt... " >&6; } ++if test "${ac_cv_search_ext_crypt+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. @@ -46050,12 +44958,16 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#else -# include -#endif -- + -#undef $ac_func ++ac_func_search_ext_save_LIBS=$LIBS ++ac_cv_search_ext_crypt=no ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -43095,1082 +11189,653 @@ +@@ -42461,216 +10894,170 @@ #ifdef __cplusplus extern "C" #endif @@ -46102,8 +45014,33 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_search_ext_crypt="none required" ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++if test "$ac_cv_search_ext_crypt" = no; then ++ for ac_lib in crypt; do ++ LIBS="-l$ac_lib $CRYPT_LIBS $ac_func_search_save_ext_LIBS" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ + - eval "$as_ac_var=no" ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char crypt (); ++int ++main () ++{ ++return crypt (); ++ ; ++ return 0; ++} ++_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_ext_crypt="-l$ac_lib" +break @@ -46125,7 +45062,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +else -+ LIBREPLACEOBJ="${LIBREPLACEOBJ} crypt.o" ++ LIBREPLACEOBJ="${LIBREPLACEOBJ} $libreplacedir/crypt.o" fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` @@ -46136,7 +45073,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - if test "x$as_val" = x""yes; then + + -+for ac_func in syslog printf memset memcpy ++for ac_func in printf memset memcpy +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -46152,16 +45089,46 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure done --{ $as_echo "$as_me:$LINENO: checking for trace_back_stack in -lexc" >&5 --$as_echo_n "checking for trace_back_stack in -lexc... " >&6; } --if test "${ac_cv_lib_exc_trace_back_stack+set}" = set; then +-# Find a method of generating a stack trace +- ++echo "LIBREPLACE_BROKEN_CHECKS: END" + ++for ac_func in syslog ++do : ++ ac_fn_c_check_func "$LINENO" "syslog" "ac_cv_func_syslog" ++if test "x$ac_cv_func_syslog" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_SYSLOG 1 ++_ACEOF + +-for ac_header in execinfo.h libexc.h libunwind.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 --else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lexc $LIBS" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } + else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -+echo "LIBREPLACE_BROKEN_CHECKS: END" +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> ++ as_fn_error "Required function not found" "$LINENO" 5 ++fi ++done + + +echo "LIBREPLACE_NETWORK_CHECKS: START" @@ -46181,28 +45148,47 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_header_compiler=no + fi + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } ++done + +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char trace_back_stack (); --int --main () --{ --return trace_back_stack (); -- ; -- return 0; --} -+fi -+ -+done -+ +-#include <$ac_header> +for ac_header in netinet/in_systm.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "netinet/in_systm.h" "ac_cv_header_netinet_in_systm_h" "$ac_includes_default" @@ -46210,7 +45196,188 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat >>confdefs.h <<_ACEOF +#define HAVE_NETINET_IN_SYSTM_H 1 _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_header_preproc=no + fi + +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } ++done ++ ++for ac_header in netinet/ip.h ++do : ++ ac_fn_c_check_header_compile "$LINENO" "netinet/ip.h" "ac_cv_header_netinet_ip_h" " ++ #include ++ #ifdef HAVE_NETINET_IN_H ++ #include ++ #endif ++ #ifdef HAVE_NETINET_IN_SYSTM_H ++ #include ++ #endif ++ ++" ++if test "x$ac_cv_header_netinet_ip_h" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_NETINET_IP_H 1 ++_ACEOF + +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" + fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } ++ ++done ++ ++for ac_header in netinet/tcp.h netinet/in_ip.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF + + fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ ++done ++ ++for ac_header in sys/sockio.h sys/un.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +@@ -42679,857 +11066,519 @@ + + done + +-# libexecinfo provides backtrace_symbols on FreeBSD +-{ $as_echo "$as_me:$LINENO: checking for library containing backtrace_symbols" >&5 +-$as_echo_n "checking for library containing backtrace_symbols... " >&6; } +-if test "${ac_cv_search_backtrace_symbols+set}" = set; then ++for ac_header in sys/uio.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "sys/uio.h" "ac_cv_header_sys_uio_h" "$ac_includes_default" ++if test "x$ac_cv_header_sys_uio_h" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_SYS_UIO_H 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for usable net/if.h" >&5 ++$as_echo_n "checking for usable net/if.h... " >&6; } ++if test "${libreplace_cv_USABLE_NET_IF_H+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- ac_func_search_save_LIBS=$LIBS +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char backtrace_symbols (); +-int +-main () +-{ +-return backtrace_symbols (); +- ; +- return 0; +-} ++ $ac_includes_default ++ #if HAVE_SYS_SOCKET_H ++ # include ++ #endif ++ #include ++ int main(void) {return 0;} + _ACEOF +-for ac_lib in '' execinfo; do +- if test -z "$ac_lib"; then +- ac_res="none required" +- else +- ac_res=-l$ac_lib +- LIBS="-l$ac_lib $ac_func_search_save_LIBS" +- fi +- rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; @@ -46231,97 +45398,58 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- ac_cv_lib_exc_trace_back_stack=yes --else +- ac_cv_search_backtrace_symbols=$ac_res ++if ac_fn_c_try_compile "$LINENO"; then : ++ libreplace_cv_USABLE_NET_IF_H=yes + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +- ++ libreplace_cv_USABLE_NET_IF_H=no -- ac_cv_lib_exc_trace_back_stack=no fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS -+done -+ -+for ac_header in netinet/ip.h -+do : -+ ac_fn_c_check_header_compile "$LINENO" "netinet/ip.h" "ac_cv_header_netinet_ip_h" " -+ #include -+ #ifdef HAVE_NETINET_IN_H -+ #include -+ #endif -+ #ifdef HAVE_NETINET_IN_SYSTM_H -+ #include -+ #endif -+ -+" -+if test "x$ac_cv_header_netinet_ip_h" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_NETINET_IP_H 1 -+_ACEOF -+ +- conftest$ac_exeext +- if test "${ac_cv_search_backtrace_symbols+set}" = set; then +- break +-fi +-done +-if test "${ac_cv_search_backtrace_symbols+set}" = set; then +- : +-else +- ac_cv_search_backtrace_symbols=no +-fi +-rm conftest.$ac_ext +-LIBS=$ac_func_search_save_LIBS fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_exc_trace_back_stack" >&5 --$as_echo "$ac_cv_lib_exc_trace_back_stack" >&6; } --if test "x$ac_cv_lib_exc_trace_back_stack" = x""yes; then +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_backtrace_symbols" >&5 +-$as_echo "$ac_cv_search_backtrace_symbols" >&6; } +-ac_res=$ac_cv_search_backtrace_symbols +-if test "$ac_res" != no; then +- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_USABLE_NET_IF_H" >&5 ++$as_echo "$libreplace_cv_USABLE_NET_IF_H" >&6; } ++if test x"$libreplace_cv_USABLE_NET_IF_H" = x"yes";then + -+done -+ -+for ac_header in netinet/tcp.h netinet/in_ip.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define HAVE_LIBEXC 1 -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF - -- LIBS="-lexc $LIBS" -+fi -+ -+done -+ -+for ac_header in sys/sockio.h sys/un.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF ++$as_echo "#define HAVE_NET_IF_H 1" >>confdefs.h fi -+done --# check for sysctlbyname for BSD systems -+for ac_header in sys/uio.h -+do : -+ ac_fn_c_check_header_mongrel "$LINENO" "sys/uio.h" "ac_cv_header_sys_uio_h" "$ac_includes_default" -+if test "x$ac_cv_header_sys_uio_h" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_SYS_UIO_H 1 -+_ACEOF - --for ac_func in sysctlbyname +-for ac_func in backtrace_symbols -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+fi + -+done -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for usable net/if.h" >&5 -+$as_echo_n "checking for usable net/if.h... " >&6; } -+if test "${libreplace_cv_USABLE_NET_IF_H+set}" = set; then : ++cv=`echo "socklen_t" | sed 'y%./+- %__p__%'` ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5 ++$as_echo_n "checking for socklen_t... " >&6; } ++if { as_var=ac_cv_type_$cv; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF @@ -46329,48 +45457,25 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+ -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - +- -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -+ $ac_includes_default -+ #if HAVE_SYS_SOCKET_H -+ # include -+ #endif -+ #include -+ int main(void) {return 0;} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ libreplace_cv_USABLE_NET_IF_H=yes -+else -+ libreplace_cv_USABLE_NET_IF_H=no -+ -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_USABLE_NET_IF_H" >&5 -+$as_echo "$libreplace_cv_USABLE_NET_IF_H" >&6; } -+if test x"$libreplace_cv_USABLE_NET_IF_H" = x"yes";then -+ -+$as_echo "#define HAVE_NET_IF_H 1" >>confdefs.h - +- -#ifdef __STDC__ -# include -#else -# include -#endif -+fi - +- -#undef $ac_func - +- -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ @@ -46385,15 +45490,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -choke me -#endif -+cv=`echo "socklen_t" | sed 'y%./+- %__p__%'` -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5 -+$as_echo_n "checking for socklen_t... " >&6; } -+if { as_var=ac_cv_type_$cv; eval "test \"\${$as_var+set}\" = set"; }; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ +$ac_includes_default +#include int @@ -46475,6 +45571,245 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -done +-{ $as_echo "$as_me:$LINENO: checking for trace_back_stack in -lexc" >&5 +-$as_echo_n "checking for trace_back_stack in -lexc... " >&6; } +-if test "${ac_cv_lib_exc_trace_back_stack+set}" = set; then ++ ++cv=`echo "sa_family_t" | sed 'y%./+- %__p__%'` ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sa_family_t" >&5 ++$as_echo_n "checking for sa_family_t... " >&6; } ++if { as_var=ac_cv_type_$cv; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lexc $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char trace_back_stack (); ++$ac_includes_default ++#include + int + main () + { +-return trace_back_stack (); ++sa_family_t foo; + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_lib_exc_trace_back_stack=yes ++if ac_fn_c_try_compile "$LINENO"; then : ++ eval "ac_cv_type_$cv=yes" + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_exc_trace_back_stack=no ++ eval "ac_cv_type_$cv=no" + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_exc_trace_back_stack" >&5 +-$as_echo "$ac_cv_lib_exc_trace_back_stack" >&6; } +-if test "x$ac_cv_lib_exc_trace_back_stack" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBEXC 1 ++ac_foo=`eval echo \\$ac_cv_type_$cv` ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_foo" >&5 ++$as_echo "$ac_foo" >&6; } ++if test "$ac_foo" = yes; then ++ ac_tr_hdr=HAVE_`echo sa_family_t | sed 'y%abcdefghijklmnopqrstuvwxyz./- %ABCDEFGHIJKLMNOPQRSTUVWXYZ____%'` ++if false; then ++ ac_fn_c_check_type "$LINENO" "sa_family_t" "ac_cv_type_sa_family_t" "$ac_includes_default" ++if test "x$ac_cv_type_sa_family_t" = x""yes; then : ++ ++cat >>confdefs.h <<_ACEOF ++#define HAVE_SA_FAMILY_T 1 + _ACEOF + +- LIBS="-lexc $LIBS" + + fi + ++fi + +-# check for sysctlbyname for BSD systems +- +-for ac_func in sysctlbyname +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ ++cat >>confdefs.h <<_ACEOF ++#define $ac_tr_hdr 1 + _ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++fi + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif + +-#undef $ac_func + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif ++cv=`echo "struct addrinfo" | sed 'y%./+- %__p__%'` ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct addrinfo" >&5 ++$as_echo_n "checking for struct addrinfo... " >&6; } ++if { as_var=ac_cv_type_$cv; eval "test \"\${$as_var+set}\" = set"; }; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ + ++$ac_includes_default ++#include + int + main () + { +-return $ac_func (); ++struct addrinfo foo; + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" ++if ac_fn_c_try_compile "$LINENO"; then : ++ eval "ac_cv_type_$cv=yes" + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ eval "ac_cv_type_$cv=no" ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ac_foo=`eval echo \\$ac_cv_type_$cv` ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_foo" >&5 ++$as_echo "$ac_foo" >&6; } ++if test "$ac_foo" = yes; then ++ ac_tr_hdr=HAVE_`echo struct addrinfo | sed 'y%abcdefghijklmnopqrstuvwxyz./- %ABCDEFGHIJKLMNOPQRSTUVWXYZ____%'` ++if false; then ++ ac_fn_c_check_type "$LINENO" "struct addrinfo" "ac_cv_type_struct_addrinfo" "$ac_includes_default" ++if test "x$ac_cv_type_struct_addrinfo" = x""yes; then : ++ ++cat >>confdefs.h <<_ACEOF ++#define HAVE_STRUCT_ADDRINFO 1 ++_ACEOF ++ + +- eval "$as_ac_var=no" + fi + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext + fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++ ++cat >>confdefs.h <<_ACEOF ++#define $ac_tr_hdr 1 + _ACEOF + + fi +-done + + -############################# -# check if building with gpfs @@ -46485,9 +45820,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+cv=`echo "sa_family_t" | sed 'y%./+- %__p__%'` -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sa_family_t" >&5 -+$as_echo_n "checking for sa_family_t... " >&6; } ++cv=`echo "struct sockaddr" | sed 'y%./+- %__p__%'` ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr" >&5 ++$as_echo_n "checking for struct sockaddr... " >&6; } +if { as_var=ac_cv_type_$cv; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 -fi @@ -46513,7 +45848,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +int +main () +{ -+sa_family_t foo; ++struct sockaddr foo; + ; + return 0; +} @@ -46555,23 +45890,31 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_foo" >&5 +$as_echo "$ac_foo" >&6; } +if test "$ac_foo" = yes; then -+ ac_tr_hdr=HAVE_`echo sa_family_t | sed 'y%abcdefghijklmnopqrstuvwxyz./- %ABCDEFGHIJKLMNOPQRSTUVWXYZ____%'` ++ ac_tr_hdr=HAVE_`echo struct sockaddr | sed 'y%abcdefghijklmnopqrstuvwxyz./- %ABCDEFGHIJKLMNOPQRSTUVWXYZ____%'` +if false; then -+ ac_fn_c_check_type "$LINENO" "sa_family_t" "ac_cv_type_sa_family_t" "$ac_includes_default" -+if test "x$ac_cv_type_sa_family_t" = x""yes; then : ++ ac_fn_c_check_type "$LINENO" "struct sockaddr" "ac_cv_type_struct_sockaddr" "$ac_includes_default" ++if test "x$ac_cv_type_struct_sockaddr" = x""yes; then : -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ --_ACEOF ++cat >>confdefs.h <<_ACEOF ++#define HAVE_STRUCT_SOCKADDR 1 + _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> ++ ++ ++fi ++ ++fi ++ +cat >>confdefs.h <<_ACEOF -+#define HAVE_SA_FAMILY_T 1 ++#define $ac_tr_hdr 1 _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in @@ -46596,8 +45939,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_preproc=no --fi -- + fi + -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } @@ -46635,38 +45978,77 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else ++ ++cv=`echo "struct sockaddr_storage" | sed 'y%./+- %__p__%'` ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr_storage" >&5 ++$as_echo_n "checking for struct sockaddr_storage... " >&6; } ++if { as_var=ac_cv_type_$cv; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 + else - eval "$as_ac_Header=\$ac_header_preproc" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++$ac_includes_default ++ ++#include ++#include ++#include ++ ++int ++main () ++{ ++struct sockaddr_storage foo; ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ eval "ac_cv_type_$cv=yes" ++else ++ eval "ac_cv_type_$cv=no" fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - +- ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++ac_foo=`eval echo \\$ac_cv_type_$cv` ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_foo" >&5 ++$as_echo "$ac_foo" >&6; } ++if test "$ac_foo" = yes; then ++ ac_tr_hdr=HAVE_`echo struct sockaddr_storage | sed 'y%abcdefghijklmnopqrstuvwxyz./- %ABCDEFGHIJKLMNOPQRSTUVWXYZ____%'` ++if false; then ++ ac_fn_c_check_type "$LINENO" "struct sockaddr_storage" "ac_cv_type_struct_sockaddr_storage" "$ac_includes_default" ++if test "x$ac_cv_type_struct_sockaddr_storage" = x""yes; then : + +cat >>confdefs.h <<_ACEOF ++#define HAVE_STRUCT_SOCKADDR_STORAGE 1 + _ACEOF + +-fi + +-done ++fi + +-if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then ++fi + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_GPFS 1 ++cat >>confdefs.h <<_ACEOF +#define $ac_tr_hdr 1 _ACEOF - fi - --done -- --if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then -- --cat >>confdefs.h <<\_ACEOF --#define HAVE_GPFS 1 --_ACEOF - - default_shared_modules="$default_shared_modules vfs_gpfs" --fi + fi -############################################# -# check if building on Isilon OneFS @@ -46678,9 +46060,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+cv=`echo "struct addrinfo" | sed 'y%./+- %__p__%'` -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct addrinfo" >&5 -+$as_echo_n "checking for struct addrinfo... " >&6; } ++ ++ ++cv=`echo "struct sockaddr_in6" | sed 'y%./+- %__p__%'` ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr_in6" >&5 ++$as_echo_n "checking for struct sockaddr_in6... " >&6; } +if { as_var=ac_cv_type_$cv; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else @@ -46689,12 +46073,16 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#include + +$ac_includes_default -+#include ++ ++#include ++#include ++#include ++ int main () { -get_isilon_copyright() -+struct addrinfo foo; ++struct sockaddr_in6 foo; ; return 0; } @@ -46726,31 +46114,38 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- samba_cv_HAVE_ONEFS=no + eval "ac_cv_type_$cv=no" - fi ++fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_foo=`eval echo \\$ac_cv_type_$cv` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_foo" >&5 +$as_echo "$ac_foo" >&6; } +if test "$ac_foo" = yes; then -+ ac_tr_hdr=HAVE_`echo struct addrinfo | sed 'y%abcdefghijklmnopqrstuvwxyz./- %ABCDEFGHIJKLMNOPQRSTUVWXYZ____%'` ++ ac_tr_hdr=HAVE_`echo struct sockaddr_in6 | sed 'y%abcdefghijklmnopqrstuvwxyz./- %ABCDEFGHIJKLMNOPQRSTUVWXYZ____%'` +if false; then -+ ac_fn_c_check_type "$LINENO" "struct addrinfo" "ac_cv_type_struct_addrinfo" "$ac_includes_default" -+if test "x$ac_cv_type_struct_addrinfo" = x""yes; then : ++ ac_fn_c_check_type "$LINENO" "struct sockaddr_in6" "ac_cv_type_struct_sockaddr_in6" "$ac_includes_default" ++if test "x$ac_cv_type_struct_sockaddr_in6" = x""yes; then : ++ ++cat >>confdefs.h <<_ACEOF ++#define HAVE_STRUCT_SOCKADDR_IN6 1 ++_ACEOF ++ + +- samba_cv_HAVE_ONEFS=no + fi -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -echo $samba_cv_HAVE_ONEFS -if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then -- ++fi + -cat >>confdefs.h <<\_ACEOF -#define HAVE_ONEFS 1 +cat >>confdefs.h <<_ACEOF -+#define HAVE_STRUCT_ADDRINFO 1 ++#define $ac_tr_hdr 1 _ACEOF - default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs" @@ -46758,11 +46153,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util" - # Need to also add general libs for oplocks support - save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat" -+ fi -LIBS="$save_LIBS" -+fi -# Note that all the libunwind symbols in the API are defined to internal -# platform-specific version, so we must include libunwind.h before checking @@ -46770,9 +46163,16 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: checking for libunwind" >&5 -$as_echo_n "checking for libunwind... " >&6; } -save_LIBS=$LIBS -+cat >>confdefs.h <<_ACEOF -+#define $ac_tr_hdr 1 -+_ACEOF ++if test x"$ac_cv_type_struct_sockaddr_storage" = x"yes"; then ++ac_fn_c_check_member "$LINENO" "struct sockaddr_storage" "ss_family" "ac_cv_member_struct_sockaddr_storage_ss_family" " ++#include ++#include ++#include ++ ++" ++if test "x$ac_cv_member_struct_sockaddr_storage_ss_family" = x""yes; then : ++ ++$as_echo "#define HAVE_SS_FAMILY 1" >>confdefs.h -UNWIND_ARCH="unknown" -if test x"$UNAME_I" != x"unknown"; then @@ -46805,422 +46205,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ - --#ifdef HAVE_LIBUNWIND_H --#include --#endif -+cv=`echo "struct sockaddr" | sed 'y%./+- %__p__%'` -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr" >&5 -+$as_echo_n "checking for struct sockaddr... " >&6; } -+if { as_var=ac_cv_type_$cv; eval "test \"\${$as_var+set}\" = set"; }; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ - -+$ac_includes_default -+#include - int - main () - { -- -- unw_context_t ctx; unw_cursor_t cur; -- char buf[256]; unw_word_t off; -- unw_getcontext(&ctx); unw_init_local(&cur, &ctx); -- unw_get_proc_name(&cur, buf, sizeof(buf), &off); -- -+struct sockaddr foo; - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_compile "$LINENO"; then : -+ eval "ac_cv_type_$cv=yes" -+else -+ eval "ac_cv_type_$cv=no" -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+ac_foo=`eval echo \\$ac_cv_type_$cv` -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_foo" >&5 -+$as_echo "$ac_foo" >&6; } -+if test "$ac_foo" = yes; then -+ ac_tr_hdr=HAVE_`echo struct sockaddr | sed 'y%abcdefghijklmnopqrstuvwxyz./- %ABCDEFGHIJKLMNOPQRSTUVWXYZ____%'` -+if false; then -+ ac_fn_c_check_type "$LINENO" "struct sockaddr" "ac_cv_type_struct_sockaddr" "$ac_includes_default" -+if test "x$ac_cv_type_struct_sockaddr" = x""yes; then : - -- { $as_echo "$as_me:$LINENO: result: yes" >&5 --$as_echo "yes" >&6; } -+cat >>confdefs.h <<_ACEOF -+#define HAVE_STRUCT_SOCKADDR 1 -+_ACEOF -+ -+ -+fi -+ -+fi - --cat >>confdefs.h <<\_ACEOF --#define HAVE_LIBUNWIND 1 -+cat >>confdefs.h <<_ACEOF -+#define $ac_tr_hdr 1 - _ACEOF - -+fi - -- # If we have libunwind, test whether we also have libunwind-ptrace -- # which would let us unwind arbitrary processes. -- save_LIBS=$LIBS - --for ac_header in libunwind-ptrace.h --do --as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ -+cv=`echo "struct sockaddr_storage" | sed 'y%./+- %__p__%'` -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr_storage" >&5 -+$as_echo_n "checking for struct sockaddr_storage... " >&6; } -+if { as_var=ac_cv_type_$cv; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } - else -- # Is the header compilable? --{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 --$as_echo_n "checking $ac_header usability... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ -+ - $ac_includes_default --#include <$ac_header> -+ -+#include -+#include -+#include -+ -+int -+main () -+{ -+struct sockaddr_storage foo; -+ ; -+ return 0; -+} - _ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_header_compiler=yes -+if ac_fn_c_try_compile "$LINENO"; then : -+ eval "ac_cv_type_$cv=yes" - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_header_compiler=no -+ eval "ac_cv_type_$cv=no" - fi -- - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --$as_echo "$ac_header_compiler" >&6; } -+fi -+ac_foo=`eval echo \\$ac_cv_type_$cv` -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_foo" >&5 -+$as_echo "$ac_foo" >&6; } -+if test "$ac_foo" = yes; then -+ ac_tr_hdr=HAVE_`echo struct sockaddr_storage | sed 'y%abcdefghijklmnopqrstuvwxyz./- %ABCDEFGHIJKLMNOPQRSTUVWXYZ____%'` -+if false; then -+ ac_fn_c_check_type "$LINENO" "struct sockaddr_storage" "ac_cv_type_struct_sockaddr_storage" "$ac_includes_default" -+if test "x$ac_cv_type_struct_sockaddr_storage" = x""yes; then : - --# Is the header present? --{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 --$as_echo_n "checking $ac_header presence... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <$ac_header> -+cat >>confdefs.h <<_ACEOF -+#define HAVE_STRUCT_SOCKADDR_STORAGE 1 - _ACEOF --if { (ac_try="$ac_cpp conftest.$ac_ext" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } >/dev/null && { -- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -- test ! -s conftest.err -- }; then -- ac_header_preproc=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_header_preproc=no --fi -- --rm -f conftest.err conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --$as_echo "$ac_header_preproc" >&6; } - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -- yes:no: ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 --$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -- ac_header_preproc=yes -- ;; -- no:yes:* ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 --$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 --$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 --$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 --$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 --$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -- ( cat <<\_ASBOX --## ---------------------------------------- ## --## Report this to samba-technical@samba.org ## --## ---------------------------------------- ## --_ASBOX -- ) | sed "s/^/$as_me: WARNING: /" >&2 -- ;; --esac --{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- eval "$as_ac_Header=\$ac_header_preproc" - fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } - - fi --as_val=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -- cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+ -+cat >>confdefs.h <<_ACEOF -+#define $ac_tr_hdr 1 - _ACEOF - - fi - --done - -- { $as_echo "$as_me:$LINENO: checking for _UPT_create in -lunwind-ptrace" >&5 --$as_echo_n "checking for _UPT_create in -lunwind-ptrace... " >&6; } --if test "${ac_cv_lib_unwind_ptrace__UPT_create+set}" = set; then -+ -+cv=`echo "struct sockaddr_in6" | sed 'y%./+- %__p__%'` -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr_in6" >&5 -+$as_echo_n "checking for struct sockaddr_in6... " >&6; } -+if { as_var=ac_cv_type_$cv; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 - else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lunwind-ptrace $LIBS" --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char _UPT_create (); -+$ac_includes_default -+ -+#include -+#include -+#include -+ - int - main () - { --return _UPT_create (); -+struct sockaddr_in6 foo; - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- ac_cv_lib_unwind_ptrace__UPT_create=yes -+if ac_fn_c_try_compile "$LINENO"; then : -+ eval "ac_cv_type_$cv=yes" - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_lib_unwind_ptrace__UPT_create=no -+ eval "ac_cv_type_$cv=no" - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_unwind_ptrace__UPT_create" >&5 --$as_echo "$ac_cv_lib_unwind_ptrace__UPT_create" >&6; } --if test "x$ac_cv_lib_unwind_ptrace__UPT_create" = x""yes; then -- -- LIBUNWIND_PTRACE="-lunwind-ptrace"; -+ac_foo=`eval echo \\$ac_cv_type_$cv` -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_foo" >&5 -+$as_echo "$ac_foo" >&6; } -+if test "$ac_foo" = yes; then -+ ac_tr_hdr=HAVE_`echo struct sockaddr_in6 | sed 'y%abcdefghijklmnopqrstuvwxyz./- %ABCDEFGHIJKLMNOPQRSTUVWXYZ____%'` -+if false; then -+ ac_fn_c_check_type "$LINENO" "struct sockaddr_in6" "ac_cv_type_struct_sockaddr_in6" "$ac_includes_default" -+if test "x$ac_cv_type_struct_sockaddr_in6" = x""yes; then : - --cat >>confdefs.h <<\_ACEOF --#define HAVE_LIBUNWIND_PTRACE 1 -+cat >>confdefs.h <<_ACEOF -+#define HAVE_STRUCT_SOCKADDR_IN6 1 - _ACEOF - - --else -- LIBUNWIND_PTRACE="" - fi - -+fi - -- LIBS=$save_LIBS -+cat >>confdefs.h <<_ACEOF -+#define $ac_tr_hdr 1 -+_ACEOF - --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+fi - - -- { $as_echo "$as_me:$LINENO: result: no" >&5 --$as_echo "no" >&6; } -- LIBS=$save_LIBS -+if test x"$ac_cv_type_struct_sockaddr_storage" = x"yes"; then -+ac_fn_c_check_member "$LINENO" "struct sockaddr_storage" "ss_family" "ac_cv_member_struct_sockaddr_storage_ss_family" " -+#include -+#include -+#include -+ -+" -+if test "x$ac_cv_member_struct_sockaddr_storage_ss_family" = x""yes; then : -+ -+$as_echo "#define HAVE_SS_FAMILY 1" >>confdefs.h - - fi - --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext - --# To use libunwind-ptrace, we also need to make some ptrace system calls. --if test x"$LIBUNWIND_PTRACE" != x"" ; then +if test x"$ac_cv_member_struct_sockaddr_storage_ss_family" != x"yes"; then +ac_fn_c_check_member "$LINENO" "struct sockaddr_storage" "__ss_family" "ac_cv_member_struct_sockaddr_storage___ss_family" " +#include @@ -47231,8 +46215,83 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +if test "x$ac_cv_member_struct_sockaddr_storage___ss_family" = x""yes; then : + +$as_echo "#define HAVE___SS_FAMILY 1" >>confdefs.h ++ ++fi ++ ++fi ++fi ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin_len in sock" >&5 ++$as_echo_n "checking for sin_len in sock... " >&6; } ++if test "${libreplace_cv_HAVE_SOCK_SIN_LEN+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ --for ac_header in sys/ptrace.h +-#ifdef HAVE_LIBUNWIND_H +-#include +-#endif ++#include ++#include ++#include + + int + main () + { + +- unw_context_t ctx; unw_cursor_t cur; +- char buf[256]; unw_word_t off; +- unw_getcontext(&ctx); unw_init_local(&cur, &ctx); +- unw_get_proc_name(&cur, buf, sizeof(buf), &off); ++struct sockaddr_in sock; sock.sin_len = sizeof(sock); + + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_compile "$LINENO"; then : + +- { $as_echo "$as_me:$LINENO: result: yes" >&5 +-$as_echo "yes" >&6; } ++ libreplace_cv_HAVE_SOCK_SIN_LEN=yes + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBUNWIND 1 +-_ACEOF ++else + ++ libreplace_cv_HAVE_SOCK_SIN_LEN=no + +- # If we have libunwind, test whether we also have libunwind-ptrace +- # which would let us unwind arbitrary processes. +- save_LIBS=$LIBS ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +-for ac_header in libunwind-ptrace.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -47280,17 +46339,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_HAVE_SOCK_SIN_LEN" >&5 ++$as_echo "$libreplace_cv_HAVE_SOCK_SIN_LEN" >&6; } ++if test x"$libreplace_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then ++ ++$as_echo "#define HAVE_SOCK_SIN_LEN 1" >>confdefs.h - ac_header_compiler=no -+fi fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin_len in sock" >&5 -+$as_echo_n "checking for sin_len in sock... " >&6; } -+if test "${libreplace_cv_HAVE_SOCK_SIN_LEN+set}" = set; then : ++############################################ ++# check for unix domain sockets ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unix domain sockets" >&5 ++$as_echo_n "checking for unix domain sockets... " >&6; } ++if test "${libreplace_cv_HAVE_UNIXSOCKET+set}" = set; then : + $as_echo_n "(cached) " >&6 +else @@ -47305,7 +46370,24 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include <$ac_header> --_ACEOF ++ ++#include ++#include ++#include ++#include ++#include ++ ++int ++main () ++{ ++ ++struct sockaddr_un sunaddr; ++sunaddr.sun_family = AF_UNIX; ++ ++ ; ++ return 0; ++} + _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; @@ -47324,32 +46406,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - }; then - ac_header_preproc=yes --else ++if ac_fn_c_try_compile "$LINENO"; then : ++ ++ libreplace_cv_HAVE_UNIXSOCKET=yes ++ + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_preproc=no -fi -+#include -+#include -+#include ++ libreplace_cv_HAVE_UNIXSOCKET=no -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } -+int -+main () -+{ -+ -+struct sockaddr_in sock; sock.sin_len = sizeof(sock); -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ -+ libreplace_cv_HAVE_SOCK_SIN_LEN=yes ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -47385,41 +46458,372 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 - else +-else - eval "$as_ac_Header=\$ac_header_preproc" -+ -+ libreplace_cv_HAVE_SOCK_SIN_LEN=no -+ fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_HAVE_UNIXSOCKET" >&5 ++$as_echo "$libreplace_cv_HAVE_UNIXSOCKET" >&6; } ++if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"yes"; then ++ ++$as_echo "#define HAVE_UNIXSOCKET 1" >>confdefs.h fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then ++ ++for ac_func in connect ++do : ++ ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" ++if test "x$ac_cv_func_connect" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++#define HAVE_CONNECT 1 + _ACEOF + + fi +- + done + +- { $as_echo "$as_me:$LINENO: checking for _UPT_create in -lunwind-ptrace" >&5 +-$as_echo_n "checking for _UPT_create in -lunwind-ptrace... " >&6; } +-if test "${ac_cv_lib_unwind_ptrace__UPT_create+set}" = set; then ++if test x"$ac_cv_func_connect" = x"no"; then ++ ++ ++ac_check_lib_ext_save_LIBS=$LIBS ++LIBS="-lnsl_s $LIBREPLACE_NETWORK_LIBS $LIBS" ++ ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lnsl_s" >&5 ++$as_echo_n "checking for connect in -lnsl_s... " >&6; } ++if test "${ac_cv_lib_ext_nsl_s_connect+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lunwind-ptrace $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -43538,349 +11587,197 @@ + #ifdef __cplusplus + extern "C" + #endif +-char _UPT_create (); ++char connect (); + int + main () + { +-return _UPT_create (); ++return connect (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_lib_unwind_ptrace__UPT_create=yes ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_ext_nsl_s_connect=yes; ++ ac_cv_lib_ext_nsl_s=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_unwind_ptrace__UPT_create=no ++ ac_cv_lib_ext_nsl_s_connect=no; ++ ac_cv_lib_ext_nsl_s=no + fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_unwind_ptrace__UPT_create" >&5 +-$as_echo "$ac_cv_lib_unwind_ptrace__UPT_create" >&6; } +-if test "x$ac_cv_lib_unwind_ptrace__UPT_create" = x""yes; then +- +- LIBUNWIND_PTRACE="-lunwind-ptrace"; +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBUNWIND_PTRACE 1 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_nsl_s_connect" >&5 ++$as_echo "$ac_cv_lib_ext_nsl_s_connect" >&6; } ++ if test $ac_cv_lib_ext_nsl_s_connect = yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_CONNECT 1 + _ACEOF + +- +-else +- LIBUNWIND_PTRACE="" + fi ++LIBS=$ac_check_lib_ext_save_LIBS + ++if test $ac_cv_lib_ext_nsl_s = yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_LIBNSL_S 1 ++_ACEOF + +- LIBS=$save_LIBS ++ case "$LIBREPLACE_NETWORK_LIBS" in ++ *-lnsl_s*) ++ ;; ++ *) ++ LIBREPLACE_NETWORK_LIBS="-lnsl_s $LIBREPLACE_NETWORK_LIBS" ++ ;; ++ esac + +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + ++fi + +- { $as_echo "$as_me:$LINENO: result: no" >&5 +-$as_echo "no" >&6; } +- LIBS=$save_LIBS + +-fi ++ac_check_lib_ext_save_LIBS=$LIBS ++LIBS="-lnsl $LIBREPLACE_NETWORK_LIBS $LIBS" + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext + +-# To use libunwind-ptrace, we also need to make some ptrace system calls. +-if test x"$LIBUNWIND_PTRACE" != x"" ; then + +-for ac_header in sys/ptrace.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lnsl" >&5 ++$as_echo_n "checking for connect in -lnsl... " >&6; } ++if test "${ac_cv_lib_ext_nsl_connect+set}" = set; then : + $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } + else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char connect (); ++int ++main () ++{ ++return connect (); ++ ; ++ return 0; ++} + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_ext_nsl_connect=yes; ++ ac_cv_lib_ext_nsl=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ ac_cv_lib_ext_nsl_connect=no; ++ ac_cv_lib_ext_nsl=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + +- ac_header_compiler=no + fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_nsl_connect" >&5 ++$as_echo "$ac_cv_lib_ext_nsl_connect" >&6; } ++ if test $ac_cv_lib_ext_nsl_connect = yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_CONNECT 1 ++_ACEOF + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } ++fi ++LIBS=$ac_check_lib_ext_save_LIBS + +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> ++if test $ac_cv_lib_ext_nsl = yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_LIBNSL 1 + _ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_header_preproc=no +-fi ++ case "$LIBREPLACE_NETWORK_LIBS" in ++ *-lnsl*) ++ ;; ++ *) ++ LIBREPLACE_NETWORK_LIBS="-lnsl $LIBREPLACE_NETWORK_LIBS" ++ ;; ++ esac + +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } + +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" + fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } + +-fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_HAVE_SOCK_SIN_LEN" >&5 -+$as_echo "$libreplace_cv_HAVE_SOCK_SIN_LEN" >&6; } -+if test x"$libreplace_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then -+ -+$as_echo "#define HAVE_SOCK_SIN_LEN 1" >>confdefs.h - fi +-fi ++ac_check_lib_ext_save_LIBS=$LIBS ++LIBS="-lsocket $LIBREPLACE_NETWORK_LIBS $LIBS" -done -+############################################ -+# check for unix domain sockets -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unix domain sockets" >&5 -+$as_echo_n "checking for unix domain sockets... " >&6; } -+if test "${libreplace_cv_HAVE_UNIXSOCKET+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else - { $as_echo "$as_me:$LINENO: checking for the Linux ptrace(2) interface" >&5 -$as_echo_n "checking for the Linux ptrace(2) interface... " >&6; } @@ -47428,31 +46832,38 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 ++$as_echo_n "checking for connect in -lsocket... " >&6; } ++if test "${ac_cv_lib_ext_socket_connect+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#if HAVE_SYS_TYPES_H - #include +-#include -#endif -#if HAVE_SYS_PTRACE_H -#include --#endif -+#include -+#include -+#include -+#include - ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" + #endif +- ++char connect (); int main () { - +- - pid_t me = (pid_t)-1; - ptrace(PTRACE_ATTACH, me, 0, 0); - ptrace(PTRACE_DETACH, me, 0, 0); - return 0; -+struct sockaddr_un sunaddr; -+sunaddr.sun_family = AF_UNIX; - +- ++return connect (); ; return 0; } @@ -47485,427 +46896,29 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>confdefs.h <<\_ACEOF -#define HAVE_LINUX_PTRACE 1 -_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : - -+ libreplace_cv_HAVE_UNIXSOCKET=yes - - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 - - -- { $as_echo "$as_me:$LINENO: result: no" >&5 --$as_echo "no" >&6; } -- LIBUNWIND_PTRACE="" -+ libreplace_cv_HAVE_UNIXSOCKET=no - - fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext - fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_HAVE_UNIXSOCKET" >&5 -+$as_echo "$libreplace_cv_HAVE_UNIXSOCKET" >&6; } -+if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"yes"; then - -+$as_echo "#define HAVE_UNIXSOCKET 1" >>confdefs.h - -+fi - -+for ac_func in connect -+do : -+ ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" -+if test "x$ac_cv_func_connect" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_CONNECT 1 -+_ACEOF - -+fi -+done - -+if test x"$ac_cv_func_connect" = x"no"; then - - -+ac_check_lib_ext_save_LIBS=$LIBS -+LIBS="-lnsl_s $LIBREPLACE_NETWORK_LIBS $LIBS" - - - --for ac_func in _dup _dup2 _opendir _readdir _seekdir _telldir _closedir --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lnsl_s" >&5 -+$as_echo_n "checking for connect in -lnsl_s... " >&6; } -+if test "${ac_cv_lib_ext_nsl_s_connect+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func - --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -- --#ifdef __STDC__ --# include --#else --# include --#endif -- --#undef $ac_func - - /* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC -@@ -44178,106 +11843,65 @@ - #ifdef __cplusplus - extern "C" - #endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -- -+char connect (); - int - main () - { --return $ac_func (); -+return connect (); - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_ext_nsl_s_connect=yes; -+ ac_cv_lib_ext_nsl_s=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_var=no" -+ ac_cv_lib_ext_nsl_s_connect=no; -+ ac_cv_lib_ext_nsl_s=no - fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext - fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_nsl_s_connect" >&5 -+$as_echo "$ac_cv_lib_ext_nsl_s_connect" >&6; } -+ if test $ac_cv_lib_ext_nsl_s_connect = yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_CONNECT 1 - _ACEOF - - fi --done -+LIBS=$ac_check_lib_ext_save_LIBS -+ -+if test $ac_cv_lib_ext_nsl_s = yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_LIBNSL_S 1 -+_ACEOF - -+ case "$LIBREPLACE_NETWORK_LIBS" in -+ *-lnsl_s*) -+ ;; -+ *) -+ LIBREPLACE_NETWORK_LIBS="-lnsl_s $LIBREPLACE_NETWORK_LIBS" -+ ;; -+ esac - - -+fi - - -+ac_check_lib_ext_save_LIBS=$LIBS -+LIBS="-lnsl $LIBREPLACE_NETWORK_LIBS $LIBS" - - - --for ac_func in __dup __dup2 __opendir __readdir __seekdir __telldir __closedir --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lnsl" >&5 -+$as_echo_n "checking for connect in -lnsl... " >&6; } -+if test "${ac_cv_lib_ext_nsl_connect+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func -- --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -- --#ifdef __STDC__ --# include --#else --# include --#endif -- --#undef $ac_func - - /* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC -@@ -44285,101 +11909,65 @@ - #ifdef __cplusplus - extern "C" - #endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -- -+char connect (); - int - main () - { --return $ac_func (); -+return connect (); - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_ext_nsl_connect=yes; -+ ac_cv_lib_ext_nsl=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+ ac_cv_lib_ext_nsl_connect=no; -+ ac_cv_lib_ext_nsl=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - -- eval "$as_ac_var=no" - fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_nsl_connect" >&5 -+$as_echo "$ac_cv_lib_ext_nsl_connect" >&6; } -+ if test $ac_cv_lib_ext_nsl_connect = yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_CONNECT 1 -+_ACEOF - --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext - fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+LIBS=$ac_check_lib_ext_save_LIBS -+ -+if test $ac_cv_lib_ext_nsl = yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_LIBNSL 1 - _ACEOF - -+ case "$LIBREPLACE_NETWORK_LIBS" in -+ *-lnsl*) -+ ;; -+ *) -+ LIBREPLACE_NETWORK_LIBS="-lnsl $LIBREPLACE_NETWORK_LIBS" -+ ;; -+ esac -+ -+ - fi --done -+ -+ -+ac_check_lib_ext_save_LIBS=$LIBS -+LIBS="-lsocket $LIBREPLACE_NETWORK_LIBS $LIBS" - - - --for ac_func in __getcwd _getcwd --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 -+$as_echo_n "checking for connect in -lsocket... " >&6; } -+if test "${ac_cv_lib_ext_socket_connect+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func -- --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -- --#ifdef __STDC__ --# include --#else --# include --#endif -- --#undef $ac_func - - /* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC -@@ -44387,102 +11975,65 @@ - #ifdef __cplusplus - extern "C" - #endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -- -+char connect (); - int - main () - { --return $ac_func (); -+return connect (); - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ext_socket_connect=yes; + ac_cv_lib_ext_socket=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +- +- +- { $as_echo "$as_me:$LINENO: result: no" >&5 +-$as_echo "no" >&6; } +- LIBUNWIND_PTRACE="" +- + ac_cv_lib_ext_socket_connect=no; + ac_cv_lib_ext_socket=no -+fi + fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext -- eval "$as_ac_var=no" +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_socket_connect" >&5 +$as_echo "$ac_cv_lib_ext_socket_connect" >&6; } @@ -47914,24 +46927,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define HAVE_CONNECT 1 +_ACEOF --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext - fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then ++fi +LIBS=$ac_check_lib_ext_save_LIBS -+ + +if test $ac_cv_lib_ext_socket = yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++ cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSOCKET 1 - _ACEOF ++_ACEOF + case "$LIBREPLACE_NETWORK_LIBS" in + *-lsocket*) @@ -47940,35 +46942,32 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + LIBREPLACE_NETWORK_LIBS="-lsocket $LIBREPLACE_NETWORK_LIBS" + ;; + esac -+ -+ - fi --done ++fi ++ ++ +ac_check_lib_ext_save_LIBS=$LIBS +LIBS="-linet $LIBREPLACE_NETWORK_LIBS $LIBS" --for ac_func in __xstat __fxstat __lxstat + +- +- +-for ac_func in _dup _dup2 _opendir _readdir _seekdir _telldir _closedir -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -linet" >&5 -+$as_echo_n "checking for connect in -linet... " >&6; } -+if test "${ac_cv_lib_ext_inet_connect+set}" = set; then : - $as_echo_n "(cached) " >&6 - else +- $as_echo_n "(cached) " >&6 +-else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ +-/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func @@ -47985,10 +46984,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#endif - -#undef $ac_func ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -linet" >&5 ++$as_echo_n "checking for connect in -linet... " >&6; } ++if test "${ac_cv_lib_ext_inet_connect+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -44490,105 +12041,88 @@ +@@ -43888,106 +11785,88 @@ #ifdef __cplusplus extern "C" #endif @@ -48038,14 +47044,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_var=no" + ac_cv_lib_ext_inet_connect=no; + ac_cv_lib_ext_inet=no - fi ++fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +- eval "$as_ac_var=no" + fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_inet_connect" >&5 ++$as_echo "$ac_cv_lib_ext_inet_connect" >&6; } ++ if test $ac_cv_lib_ext_inet_connect = yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_CONNECT 1 ++_ACEOF + -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext @@ -48057,22 +47070,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_inet_connect" >&5 -+$as_echo "$ac_cv_lib_ext_inet_connect" >&6; } -+ if test $ac_cv_lib_ext_inet_connect = yes; then : ++LIBS=$ac_check_lib_ext_save_LIBS ++ ++if test $ac_cv_lib_ext_inet = yes; then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_CONNECT 1 - _ACEOF - - fi --done -+LIBS=$ac_check_lib_ext_save_LIBS - -+if test $ac_cv_lib_ext_inet = yes; then : -+ cat >>confdefs.h <<_ACEOF +#define HAVE_LIBINET 1 -+_ACEOF + _ACEOF + case "$LIBREPLACE_NETWORK_LIBS" in + *-linet*) @@ -48081,9 +47085,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + LIBREPLACE_NETWORK_LIBS="-linet $LIBREPLACE_NETWORK_LIBS" + ;; + esac - - -+fi ++ ++ + fi +-done + if test x"$ac_cv_lib_ext_nsl_s_connect" = x"yes" || + test x"$ac_cv_lib_ext_nsl_connect" = x"yes" || + test x"$ac_cv_lib_ext_socket_connect" = x"yes" || @@ -48091,66 +47096,67 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + then +$as_echo "#define HAVE_CONNECT 1" >>confdefs.h - ++ + fi +fi - --for ac_func in _stat _lstat _fstat __stat __lstat __fstat --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ ++ +for ac_func in gethostbyname +do : + ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETHOSTBYNAME 1 - _ACEOF ++_ACEOF + ++fi ++done + ++if test x"$ac_cv_func_gethostbyname" = x"no"; then + + ++ac_check_lib_ext_save_LIBS=$LIBS ++LIBS="-lnsl_s $LIBREPLACE_NETWORK_LIBS $LIBS" + + + +-for ac_func in __dup __dup2 __opendir __readdir __seekdir __telldir __closedir +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl_s" >&5 ++$as_echo_n "checking for gethostbyname in -lnsl_s... " >&6; } ++if test "${ac_cv_lib_ext_nsl_s_gethostbyname+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - +- -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -+fi -+done - +- -#ifdef __STDC__ -# include -#else -# include -#endif -+if test x"$ac_cv_func_gethostbyname" = x"no"; then - +- -#undef $ac_func -+ -+ac_check_lib_ext_save_LIBS=$LIBS -+LIBS="-lnsl_s $LIBREPLACE_NETWORK_LIBS $LIBS" -+ -+ -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl_s" >&5 -+$as_echo_n "checking for gethostbyname in -lnsl_s... " >&6; } -+if test "${ac_cv_lib_ext_nsl_s_gethostbyname+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -44596,107 +12130,131 @@ +@@ -43995,101 +11874,65 @@ #ifdef __cplusplus extern "C" #endif @@ -48200,14 +47206,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_var=no" + ac_cv_lib_ext_nsl_s_gethostbyname=no; + ac_cv_lib_ext_nsl_s=no - fi ++fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +- eval "$as_ac_var=no" + fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_nsl_s_gethostbyname" >&5 ++$as_echo "$ac_cv_lib_ext_nsl_s_gethostbyname" >&6; } ++ if test $ac_cv_lib_ext_nsl_s_gethostbyname = yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_GETHOSTBYNAME 1 ++_ACEOF + -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext @@ -48219,22 +47232,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_nsl_s_gethostbyname" >&5 -+$as_echo "$ac_cv_lib_ext_nsl_s_gethostbyname" >&6; } -+ if test $ac_cv_lib_ext_nsl_s_gethostbyname = yes; then : ++LIBS=$ac_check_lib_ext_save_LIBS ++ ++if test $ac_cv_lib_ext_nsl_s = yes; then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_GETHOSTBYNAME 1 - _ACEOF - - fi --done -+LIBS=$ac_check_lib_ext_save_LIBS - -+if test $ac_cv_lib_ext_nsl_s = yes; then : -+ cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNSL_S 1 -+_ACEOF + _ACEOF + case "$LIBREPLACE_NETWORK_LIBS" in + *-lnsl_s*) @@ -48243,22 +47247,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + LIBREPLACE_NETWORK_LIBS="-lnsl_s $LIBREPLACE_NETWORK_LIBS" + ;; + esac - - -+fi ++ ++ + fi +-done +ac_check_lib_ext_save_LIBS=$LIBS +LIBS="-lnsl $LIBREPLACE_NETWORK_LIBS $LIBS" - - --for ac_func in _acl __acl _facl __facl _open __open _chdir __chdir +-for ac_func in __getcwd _getcwd -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +$as_echo_n "checking for gethostbyname in -lnsl... " >&6; } +if test "${ac_cv_lib_ext_nsl_gethostbyname+set}" = set; then : @@ -48279,52 +47284,101 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - +- -#ifdef __STDC__ -# include -#else -# include -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" +-#endif +- +-#undef $ac_func + + /* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC +@@ -44097,102 +11940,65 @@ + #ifdef __cplusplus + extern "C" #endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +char gethostbyname (); -+int -+main () -+{ + int + main () + { +-return $ac_func (); +return gethostbyname (); -+ ; -+ return 0; -+} -+_ACEOF + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ext_nsl_gethostbyname=yes; + ac_cv_lib_ext_nsl=yes -+else + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_ext_nsl_gethostbyname=no; + ac_cv_lib_ext_nsl=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext -+ -+fi + +- eval "$as_ac_var=no" + fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_nsl_gethostbyname" >&5 +$as_echo "$ac_cv_lib_ext_nsl_gethostbyname" >&6; } + if test $ac_cv_lib_ext_nsl_gethostbyname = yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETHOSTBYNAME 1 +_ACEOF -+ -+fi + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext + fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +LIBS=$ac_check_lib_ext_save_LIBS + +if test $ac_cv_lib_ext_nsl = yes; then : -+ cat >>confdefs.h <<_ACEOF + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define HAVE_LIBNSL 1 -+_ACEOF -+ + _ACEOF + + case "$LIBREPLACE_NETWORK_LIBS" in + *-lnsl*) + ;; @@ -48334,26 +47388,53 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + esac + + -+fi -+ -+ + fi +-done + + +ac_check_lib_ext_save_LIBS=$LIBS +LIBS="-lsocket $LIBREPLACE_NETWORK_LIBS $LIBS" + --#undef $ac_func -+ + +-for ac_func in __xstat __fxstat __lxstat +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lsocket" >&5 +$as_echo_n "checking for gethostbyname in -lsocket... " >&6; } +if test "${ac_cv_lib_ext_socket_gethostbyname+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ + /* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -44704,105 +12262,87 @@ +@@ -44200,105 +12006,87 @@ #ifdef __cplusplus extern "C" #endif @@ -48403,51 +47484,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" + ac_cv_lib_ext_socket_gethostbyname=no; + ac_cv_lib_ext_socket=no -+fi + fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_socket_gethostbyname" >&5 -+$as_echo "$ac_cv_lib_ext_socket_gethostbyname" >&6; } -+ if test $ac_cv_lib_ext_socket_gethostbyname = yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_GETHOSTBYNAME 1 -+_ACEOF -+ -+fi -+LIBS=$ac_check_lib_ext_save_LIBS -+ -+if test $ac_cv_lib_ext_socket = yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_LIBSOCKET 1 -+_ACEOF -+ -+ case "$LIBREPLACE_NETWORK_LIBS" in -+ *-lsocket*) -+ ;; -+ *) -+ LIBREPLACE_NETWORK_LIBS="-lsocket $LIBREPLACE_NETWORK_LIBS" -+ ;; -+ esac -+ -+ -+fi -+ if test x"$ac_cv_lib_ext_nsl_s_gethostbyname" = x"yes" || -+ test x"$ac_cv_lib_ext_nsl_gethostbyname" = x"yes" || -+ test x"$ac_cv_lib_ext_socket_gethostbyname" = x"yes" -+ then - -- eval "$as_ac_var=no" --fi -+$as_echo "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+ fi fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` @@ -48456,66 +47503,99 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+ -+for ac_func in if_nametoindex -+do : -+ ac_fn_c_check_func "$LINENO" "if_nametoindex" "ac_cv_func_if_nametoindex" -+if test "x$ac_cv_func_if_nametoindex" = x""yes; then : ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_socket_gethostbyname" >&5 ++$as_echo "$ac_cv_lib_ext_socket_gethostbyname" >&6; } ++ if test $ac_cv_lib_ext_socket_gethostbyname = yes; then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_IF_NAMETOINDEX 1 ++#define HAVE_GETHOSTBYNAME 1 _ACEOF fi - done +-done ++LIBS=$ac_check_lib_ext_save_LIBS -+if test x"$ac_cv_func_if_nametoindex" = x"no"; then ++if test $ac_cv_lib_ext_socket = yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_LIBSOCKET 1 ++_ACEOF + ++ case "$LIBREPLACE_NETWORK_LIBS" in ++ *-lsocket*) ++ ;; ++ *) ++ LIBREPLACE_NETWORK_LIBS="-lsocket $LIBREPLACE_NETWORK_LIBS" ++ ;; ++ esac -+ac_check_lib_ext_save_LIBS=$LIBS -+LIBS="-lipv6 $LIBREPLACE_NETWORK_LIBS $LIBS" ++fi ++ if test x"$ac_cv_lib_ext_nsl_s_gethostbyname" = x"yes" || ++ test x"$ac_cv_lib_ext_nsl_gethostbyname" = x"yes" || ++ test x"$ac_cv_lib_ext_socket_gethostbyname" = x"yes" ++ then ++$as_echo "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h ++ fi ++fi -- --for ac_func in _close __close _fchdir __fchdir _fcntl __fcntl +-for ac_func in _stat _lstat _fstat __stat __lstat __fstat -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for if_nametoindex in -lipv6" >&5 -+$as_echo_n "checking for if_nametoindex in -lipv6... " >&6; } -+if test "${ac_cv_lib_ext_ipv6_if_nametoindex+set}" = set; then : - $as_echo_n "(cached) " >&6 - else +- $as_echo_n "(cached) " >&6 +-else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ --_ACEOF ++for ac_func in if_nametoindex ++do : ++ ac_fn_c_check_func "$LINENO" "if_nametoindex" "ac_cv_func_if_nametoindex" ++if test "x$ac_cv_func_if_nametoindex" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_IF_NAMETOINDEX 1 + _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ +-/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -- + -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -- ++fi ++done ++ ++if test x"$ac_cv_func_if_nametoindex" = x"no"; then ++ ++ ++ac_check_lib_ext_save_LIBS=$LIBS ++LIBS="-lipv6 $LIBREPLACE_NETWORK_LIBS $LIBS" + -#ifdef __STDC__ -# include -#else -# include -#endif -- + -#undef $ac_func ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for if_nametoindex in -lipv6" >&5 ++$as_echo_n "checking for if_nametoindex in -lipv6... " >&6; } ++if test "${ac_cv_lib_ext_ipv6_if_nametoindex+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -44810,2967 +12350,2216 @@ +@@ -44306,2754 +12094,2283 @@ #ifdef __cplusplus extern "C" #endif @@ -48565,21 +47645,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" + ac_cv_lib_ext_ipv6_if_nametoindex=no; + ac_cv_lib_ext_ipv6=no -+fi + fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext -- eval "$as_ac_var=no" - fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_ipv6_if_nametoindex" >&5 -+$as_echo "$ac_cv_lib_ext_ipv6_if_nametoindex" >&6; } -+ if test $ac_cv_lib_ext_ipv6_if_nametoindex = yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_IF_NAMETOINDEX 1 -+_ACEOF - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext @@ -48591,14 +47664,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+LIBS=$ac_check_lib_ext_save_LIBS -+ -+if test $ac_cv_lib_ext_ipv6 = yes; then : ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_ipv6_if_nametoindex" >&5 ++$as_echo "$ac_cv_lib_ext_ipv6_if_nametoindex" >&6; } ++ if test $ac_cv_lib_ext_ipv6_if_nametoindex = yes; then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_LIBIPV6 1 ++#define HAVE_IF_NAMETOINDEX 1 _ACEOF + fi +-done ++LIBS=$ac_check_lib_ext_save_LIBS + ++if test $ac_cv_lib_ext_ipv6 = yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_LIBIPV6 1 ++_ACEOF + + case "$LIBREPLACE_NETWORK_LIBS" in + *-lipv6*) + ;; @@ -48606,10 +47688,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + LIBREPLACE_NETWORK_LIBS="-lipv6 $LIBREPLACE_NETWORK_LIBS" + ;; + esac -+ -+ - fi --done + + ++fi + if test x"$ac_cv_lib_ext_ipv6_if_nametoindex" = x"yes" + then @@ -48632,22 +47713,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define HAVE_SOCKETPAIR 1 +_ACEOF -+else -+ LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} socketpair.o" -+fi -+done - - --for ac_func in getdents __getdents _lseek __lseek _read __read +-for ac_func in _acl __acl _facl __facl _open __open _chdir __chdir -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken inet_ntoa" >&5 -+$as_echo_n "checking for broken inet_ntoa... " >&6; } -+if test "${libreplace_cv_REPLACE_INET_NTOA+set}" = set; then : - $as_echo_n "(cached) " >&6 +- $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ @@ -48658,44 +47730,33 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func ++ LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} $libreplacedir/socketpair.o" ++fi ++done -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken inet_ntoa" >&5 ++$as_echo_n "checking for broken inet_ntoa... " >&6; } ++if test "${libreplace_cv_REPLACE_INET_NTOA+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else + +-#undef $ac_func +if test "$cross_compiling" = yes; then : + libreplace_cv_REPLACE_INET_NTOA=cross +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ --#ifdef __STDC__ --# include --#else --# include -+#include -+#include -+#include -+#include -+#ifdef HAVE_ARPA_INET_H -+#include - #endif -+main() { struct in_addr ip; ip.s_addr = 0x12345678; -+if (strcmp(inet_ntoa(ip),"18.52.86.120") && -+ strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } -+exit(1);} -+_ACEOF -+if ac_fn_c_try_run "$LINENO"; then : -+ libreplace_cv_REPLACE_INET_NTOA=yes -+else -+ libreplace_cv_REPLACE_INET_NTOA=no -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext -+fi - --#undef $ac_func -- -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ @@ -48708,11 +47769,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me --#endif -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_REPLACE_INET_NTOA" >&5 -+$as_echo "$libreplace_cv_REPLACE_INET_NTOA" >&6; } - ++#include ++#include ++#include ++#include ++#ifdef HAVE_ARPA_INET_H ++#include + #endif +- -int -main () -{ @@ -48720,12 +47784,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} -+for ac_func in inet_ntoa -+do : -+ ac_fn_c_check_func "$LINENO" "inet_ntoa" "ac_cv_func_inet_ntoa" -+if test "x$ac_cv_func_inet_ntoa" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_INET_NTOA 1 ++main() { struct in_addr ip; ip.s_addr = 0x12345678; ++if (strcmp(inet_ntoa(ip),"18.52.86.120") && ++ strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } ++exit(1);} _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" @@ -48749,24 +47811,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" --else ++if ac_fn_c_try_run "$LINENO"; then : ++ libreplace_cv_REPLACE_INET_NTOA=yes + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +- - eval "$as_ac_var=no" -+else -+ libreplace_cv_REPLACE_INET_NTOA=yes ++ libreplace_cv_REPLACE_INET_NTOA=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext fi -+done -+ -+if test x"$libreplace_cv_REPLACE_INET_NTOA" = x"yes"; then -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+$as_echo "#define REPLACE_INET_NTOA 1" >>confdefs.h -+ -+ LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} inet_ntoa.o" fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` @@ -48775,20 +47835,42 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_REPLACE_INET_NTOA" >&5 ++$as_echo "$libreplace_cv_REPLACE_INET_NTOA" >&6; } + ++for ac_func in inet_ntoa ++do : ++ ac_fn_c_check_func "$LINENO" "inet_ntoa" "ac_cv_func_inet_ntoa" ++if test "x$ac_cv_func_inet_ntoa" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define HAVE_INET_NTOA 1 + _ACEOF + ++else ++ libreplace_cv_REPLACE_INET_NTOA=yes + fi + done + ++if test x"$libreplace_cv_REPLACE_INET_NTOA" = x"yes"; then ++ ++$as_echo "#define REPLACE_INET_NTOA 1" >>confdefs.h + ++ LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} $libreplacedir/inet_ntoa.o" ++fi + +for ac_func in inet_aton +do : + ac_fn_c_check_func "$LINENO" "inet_aton" "ac_cv_func_inet_aton" +if test "x$ac_cv_func_inet_aton" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++ cat >>confdefs.h <<_ACEOF +#define HAVE_INET_ATON 1 - _ACEOF ++_ACEOF +else -+ LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} inet_aton.o" - fi - done ++ LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} $libreplacedir/inet_aton.o" ++fi ++done +for ac_func in inet_ntop @@ -48799,21 +47881,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define HAVE_INET_NTOP 1 +_ACEOF -+else -+ LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} inet_ntop.o" -+fi -+done - - -+for ac_func in inet_pton -+do : -+ ac_fn_c_check_func "$LINENO" "inet_pton" "ac_cv_func_inet_pton" -+if test "x$ac_cv_func_inet_pton" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_INET_PTON 1 -+_ACEOF - --for ac_func in getdirentries _write __write _fork __fork +-for ac_func in _close __close _fchdir __fchdir _fcntl __fcntl -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -48823,37 +47891,47 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ --_ACEOF ++ LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} $libreplacedir/inet_ntop.o" ++fi ++done ++ ++ ++for ac_func in inet_pton ++do : ++ ac_fn_c_check_func "$LINENO" "inet_pton" "ac_cv_func_inet_pton" ++if test "x$ac_cv_func_inet_pton" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_INET_PTON 1 + _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -+ LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} inet_pton.o" -+fi -+done -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ ++else ++ LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} $libreplacedir/inet_pton.o" ++fi ++done -#ifdef __STDC__ -# include -#else -# include -#endif + +-#undef $ac_func +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5 +$as_echo_n "checking for getaddrinfo... " >&6; } +if test "${libreplace_cv_HAVE_GETADDRINFO+set}" = set; then : + $as_echo_n "(cached) " >&6 +else --#undef $ac_func -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ @@ -48866,12 +47944,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me +-#endif ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ + +#include +#if STDC_HEADERS +#include +#include - #endif -- ++#endif +#include +#include int @@ -48948,7 +48029,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +$as_echo "#define HAVE_GAI_STRERROR 1" >>confdefs.h + +else -+ LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} getaddrinfo.o" ++ LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} $libreplacedir/getaddrinfo.o" fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` @@ -48986,7 +48067,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi --for ac_func in _stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64 +-for ac_func in getdents __getdents _lseek __lseek _read __read -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -49087,12 +48168,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" --fi ++ libreplace_cv_HAVE_GETIFADDRS=no + fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+ libreplace_cv_HAVE_GETIFADDRS=no ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` @@ -49104,16 +48187,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF -- -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi --done -- +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_HAVE_GETIFADDRS" >&5 +$as_echo "$libreplace_cv_HAVE_GETIFADDRS" >&6; } +if test x"$libreplace_cv_HAVE_GETIFADDRS" = x"yes"; then +-fi +-done +$as_echo "#define HAVE_GETIFADDRS 1" >>confdefs.h @@ -49124,7 +48203,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi --for ac_func in __sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64 +-for ac_func in getdirentries _write __write _fork __fork -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -49191,7 +48270,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#undef $ac_func +else -+ LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} getifaddrs.o" ++ LIBREPLACE_NETWORK_OBJS="${LIBREPLACE_NETWORK_OBJS} $libreplacedir/getifaddrs.o" +fi -/* Override any GCC internal prototype to avoid an error. @@ -49343,7 +48422,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi +fi --for ac_func in pread _pread __pread pread64 _pread64 __pread64 +-for ac_func in _stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64 -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -49360,7 +48439,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ ++ ++if test "$cross_compiling" = yes; then : ++ libreplace_cv_HAVE_IFACE_IFREQ=cross ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func @@ -49369,17 +48453,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -+if test "$cross_compiling" = yes; then : -+ libreplace_cv_HAVE_IFACE_IFREQ=cross -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ - --#ifdef __STDC__ --# include --#else --# include --#endif +#define HAVE_IFACE_IFREQ 1 +#define NO_CONFIG_H 1 +#define AUTOCONF_TEST 1 @@ -49400,7 +48473,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi --#undef $ac_func +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libreplace_cv_HAVE_IFACE_IFREQ" >&5 +$as_echo "$libreplace_cv_HAVE_IFACE_IFREQ" >&6; } @@ -49408,6 +48485,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + iface=yes; +$as_echo "#define HAVE_IFACE_IFREQ 1" >>confdefs.h +-#undef $ac_func ++fi ++fi + -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ @@ -49421,9 +48502,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -+fi -+fi -+ +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ipv6 support" >&5 +$as_echo_n "checking for ipv6 support... " >&6; } +if test "${libreplace_cv_HAVE_IPV6+set}" = set; then : @@ -49528,7 +48606,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +echo "LIBREPLACE_NETWORK_CHECKS: END" --for ac_func in pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64 ++CPPFLAGS="${SAVE_CPPFLAGS}" + +-for ac_func in __sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64 -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -49545,25 +48625,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -+CPPFLAGS="${SAVE_CPPFLAGS}" ++LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"` -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -+LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"` ++LIBREPLACE_OBJS="${LIBREPLACEOBJ}" -#ifdef __STDC__ -# include -#else -# include -#endif -+LIBREPLACE_OBJS="" -+for obj in ${LIBREPLACEOBJ}; do -+ LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}" -+done -#undef $ac_func ++LIBREPLACE_LIBS="${LIBREPLACE_NETWORK_LIBS}" -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -49578,9 +48655,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -+# add -ldl to the global LIBS -+LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}" -+AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}" -int -main () @@ -49589,16 +48663,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} -+ -+for ac_header in aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF +-_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -49626,7 +48691,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" - fi +-fi ++# add -ldl to the global LIBS ++LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}" ++AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}" -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ @@ -49639,9 +48707,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+done + -+for ac_header in unistd.h grp.h sys/id.h memory.h alloca.h ++for ac_header in aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -49653,11 +48720,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi --done ++ + done -+done - -+for ac_header in limits.h float.h pthread.h libintl.h ++for ac_header in unistd.h grp.h sys/id.h memory.h alloca.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -49671,7 +48737,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +done --for ac_func in open64 _open64 __open64 creat64 ++for ac_header in limits.h float.h libintl.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF + ++fi + ++done + +-for ac_func in pread _pread __pread pread64 _pread64 __pread64 -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -49696,30 +48776,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - +- -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -+fi - +- -#ifdef __STDC__ -# include -#else -# include -#endif -+done -#undef $ac_func -+for ac_header in sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h sys/sysctl.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF ++fi -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -49734,7 +48804,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -+fi ++done -int -main () @@ -49743,9 +48813,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} -+done -+ -+for ac_header in sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h ++for ac_header in sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h sys/sysctl.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -49796,7 +48864,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - if test "x$as_val" = x""yes; then +done + -+for ac_header in sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h ++for ac_header in sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -49808,11 +48876,38 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi --done ++ + done + ++for ac_header in sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF + ++fi +done --for ac_func in prctl ++for ac_header in sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF + ++fi + ++done + +-for ac_func in pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64 -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -49822,14 +48917,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -+for ac_header in sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h ++for ac_header in sys/sysmacros.h +do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : ++ ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" ++if test "x$ac_cv_header_sys_sysmacros_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++#define HAVE_SYS_SYSMACROS_H 1 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF @@ -49837,28 +48930,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - +- -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -+fi - +- -#ifdef __STDC__ -# include -#else -# include -#endif -+done -#undef $ac_func -+for ac_header in sys/sysmacros.h -+do : -+ ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" -+if test "x$ac_cv_header_sys_sysmacros_h" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_SYS_SYSMACROS_H 1 -+_ACEOF ++fi -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -49873,7 +48958,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -+fi ++done -int -main () @@ -49882,8 +48967,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} -+done -+ +for ac_header in sys/syslog.h syslog.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -49951,14 +49034,323 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +done --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ +for ac_header in xfs/libxfs.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "xfs/libxfs.h" "ac_cv_header_xfs_libxfs_h" "$ac_includes_default" +if test "x$ac_cv_header_xfs_libxfs_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_XFS_LIBXFS_H 1 ++_ACEOF + ++fi + ++done + +-for ac_func in open64 _open64 __open64 creat64 +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ ++for ac_header in netgroup.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "netgroup.h" "ac_cv_header_netgroup_h" "$ac_includes_default" ++if test "x$ac_cv_header_netgroup_h" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_NETGROUP_H 1 + _ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++fi + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++done + +-#undef $ac_func + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me ++for ac_header in rpcsvc/yp_prot.h ++do : ++ ac_fn_c_check_header_compile "$LINENO" "rpcsvc/yp_prot.h" "ac_cv_header_rpcsvc_yp_prot_h" " ++#if HAVE_RPC_RPC_H ++#include + #endif + +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} ++" ++if test "x$ac_cv_header_rpcsvc_yp_prot_h" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_RPCSVC_YP_PROT_H 1 + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- eval "$as_ac_var=no" + fi + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++done ++ ++ ++## These fail to compile on IRIX so just check for their presence ++for ac_header in sys/mode.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "sys/mode.h" "ac_cv_header_sys_mode_h" "$ac_includes_default" ++if test "x$ac_cv_header_sys_mode_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define HAVE_SYS_MODE_H 1 + _ACEOF + + fi ++ + done + + +-for ac_func in prctl +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 ++# Look for Darwin headers ++old_CPPFLAGS="$CPPFLAGS" ++CPPFLAGS="-Iinclude $CPPFLAGS" ++for ac_header in CoreFoundation/CFStringEncodingConverter.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "CoreFoundation/CFStringEncodingConverter.h" "ac_cv_header_CoreFoundation_CFStringEncodingConverter_h" "$ac_includes_default" ++if test "x$ac_cv_header_CoreFoundation_CFStringEncodingConverter_h" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_COREFOUNDATION_CFSTRINGENCODINGCONVERTER_H 1 ++_ACEOF ++ + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ ++ for ac_header in CFStringEncodingConverter.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "CFStringEncodingConverter.h" "ac_cv_header_CFStringEncodingConverter_h" "$ac_includes_default" ++if test "x$ac_cv_header_CFStringEncodingConverter_h" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_CFSTRINGENCODINGCONVERTER_H 1 + _ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++fi + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++done + +-#undef $ac_func ++fi ++ ++done ++ ++CPPFLAGS="$old_CPPFLAGS" ++ ++# In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a ++# subdirectory of headers. ++for ac_header in valgrind.h valgrind/valgrind.h valgrind/memcheck.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif + ++# ++# HPUX has a bug in that including shadow.h causes a re-definition of MAXINT. ++# This causes configure to fail to detect it. Check for shadow separately on HPUX. ++# ++case "$host_os" in ++ *hpux*) ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include + int + main () + { +-return $ac_func (); ++struct spwd testme + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_header_shadow_h=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" ++ ac_cv_header_shadow_h=no + fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ if test x"$ac_cv_header_shadow_h" = x"yes"; then + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++$as_echo "#define HAVE_SHADOW_H 1" >>confdefs.h ++ ++ fi ++ ;; ++esac ++for ac_header in shadow.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "shadow.h" "ac_cv_header_shadow_h" "$ac_includes_default" ++if test "x$ac_cv_header_shadow_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define HAVE_SHADOW_H 1 + _ACEOF + + fi +-done + ++done + +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ ++for ac_header in nss.h nss_common.h nsswitch.h ns_api.h sys/security.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF @@ -49999,12 +49391,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>confdefs.h <<\_ACEOF -#define HAVE_PRCTL 1 -+for ac_header in netgroup.h ++for ac_header in syscall.h sys/syscall.h +do : -+ ac_fn_c_check_header_mongrel "$LINENO" "netgroup.h" "ac_cv_header_netgroup_h" "$ac_includes_default" -+if test "x$ac_cv_header_netgroup_h" = x""yes; then : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF -+#define HAVE_NETGROUP_H 1 ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -else @@ -50013,16 +49407,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi +done ++ ++ ++for ac_header in sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF --fi + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+for ac_header in rpcsvc/yp_prot.h -+do : -+ ac_fn_c_check_header_compile "$LINENO" "rpcsvc/yp_prot.h" "ac_cv_header_rpcsvc_yp_prot_h" " -+#if HAVE_RPC_RPC_H -+#include -+#endif ++done -# -# @@ -50030,21 +49430,24 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -case "$host_os" in - *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu) - # glibc <= 2.3.2 has a broken getgrouplist -- if test "$cross_compiling" = yes; then -- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 --$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --{ { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling --See \`config.log' for more details." >&5 --$as_echo "$as_me: error: cannot run test program while cross compiling --See \`config.log' for more details." >&2;} -- { (exit 1); exit 1; }; }; } +- { $as_echo "$as_me:$LINENO: checking for good getgrouplist" >&5 +-$as_echo_n "checking for good getgrouplist... " >&6; } +-if test "${samba_cv_linux_getgrouplist_ok+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- if test "$cross_compiling" = yes; then +- samba_cv_linux_getgrouplist_ok=cross -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -+" -+if test "x$ac_cv_header_rpcsvc_yp_prot_h" = x""yes; then : ++for ac_header in sys/ea.h sys/proplist.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF -+#define HAVE_RPCSVC_YP_PROT_H 1 ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF @@ -50069,13 +49472,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - exit(0); -} -+## These fail to compile on IRIX so just check for their presence -+for ac_header in sys/mode.h ++for ac_header in sys/cdefs.h glob.h +do : -+ ac_fn_c_check_header_mongrel "$LINENO" "sys/mode.h" "ac_cv_header_sys_mode_h" "$ac_includes_default" -+if test "x$ac_cv_header_sys_mode_h" = x""yes; then : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF -+#define HAVE_SYS_MODE_H 1 ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" @@ -50099,14 +49503,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then -- linux_getgrouplist_ok=yes +- samba_cv_linux_getgrouplist_ok=yes -else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -( exit $ac_status ) --linux_getgrouplist_ok=no +-samba_cv_linux_getgrouplist_ok=no -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext @@ -50114,53 +49518,73 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +done -- if test x"$linux_getgrouplist_ok" = x"yes"; then +-fi +-{ $as_echo "$as_me:$LINENO: result: $samba_cv_linux_getgrouplist_ok" >&5 +-$as_echo "$samba_cv_linux_getgrouplist_ok" >&6; } +- if test x"$samba_cv_linux_getgrouplist_ok" = x"yes"; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_GETGROUPLIST 1 -+# Look for Darwin headers -+old_CPPFLAGS="$CPPFLAGS" -+CPPFLAGS="-Iinclude $CPPFLAGS" -+for ac_header in CoreFoundation/CFStringEncodingConverter.h ++# For experimental utmp support (lastlog on some BSD-like systems) ++for ac_header in utmp.h utmpx.h lastlog.h +do : -+ ac_fn_c_check_header_mongrel "$LINENO" "CoreFoundation/CFStringEncodingConverter.h" "ac_cv_header_CoreFoundation_CFStringEncodingConverter_h" "$ac_includes_default" -+if test "x$ac_cv_header_CoreFoundation_CFStringEncodingConverter_h" = x""yes; then : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF -+#define HAVE_COREFOUNDATION_CFSTRINGENCODINGCONVERTER_H 1 ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF - fi - ;; - *) -- ++fi + -for ac_func in getgrouplist -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 ++done ++ ++ ++# The cast to long int works around a bug in the HP C Compiler ++# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects ++# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. ++# This bug is HP SR number 8606223364. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 ++$as_echo_n "checking size of int... " >&6; } ++if test "${ac_cv_sizeof_int+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -+ for ac_header in CFStringEncodingConverter.h -+do : -+ ac_fn_c_check_header_mongrel "$LINENO" "CFStringEncodingConverter.h" "ac_cv_header_CFStringEncodingConverter_h" "$ac_includes_default" -+if test "x$ac_cv_header_CFStringEncodingConverter_h" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_CFSTRINGENCODINGCONVERTER_H 1 - _ACEOF +-_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -- ++ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : + -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ ++else ++ if test "$ac_cv_type_int" = yes; then ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++{ as_fn_set_status 77 ++as_fn_error "cannot compute sizeof (int) ++See \`config.log' for more details." "$LINENO" 5; }; } ++ else ++ ac_cv_sizeof_int=0 ++ fi ++fi -#ifdef __STDC__ -# include @@ -50168,9 +49592,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -# include -#endif +fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 ++$as_echo "$ac_cv_sizeof_int" >&6; } -#undef $ac_func -+done -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -50185,7 +49610,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -+fi -int -main () @@ -50194,7 +49618,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} --_ACEOF ++cat >>confdefs.h <<_ACEOF ++#define SIZEOF_INT $ac_cv_sizeof_int + _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -50220,16 +49646,35 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+done - eval "$as_ac_var=no" -fi -+CPPFLAGS="$old_CPPFLAGS" -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext --fi ++# The cast to long int works around a bug in the HP C Compiler ++# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects ++# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. ++# This bug is HP SR number 8606223364. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 ++$as_echo_n "checking size of long... " >&6; } ++if test "${ac_cv_sizeof_long+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : ++ ++else ++ if test "$ac_cv_type_long" = yes; then ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++{ as_fn_set_status 77 ++as_fn_error "cannot compute sizeof (long) ++See \`config.log' for more details." "$LINENO" 5; }; } ++ else ++ ac_cv_sizeof_long=0 ++ fi + fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -50237,60 +49682,47 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+# In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a -+# subdirectory of headers. -+for ac_header in valgrind.h valgrind/valgrind.h valgrind/memcheck.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF +- cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF +-_ACEOF fi -+ - done +-done ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 ++$as_echo "$ac_cv_sizeof_long" >&6; } - ;; -esac - # +-# -# stat64 family may need on some systems, notably ReliantUNIX -+# HPUX has a bug in that including shadow.h causes a re-definition of MAXINT. -+# This causes configure to fail to detect it. Check for shadow separately on HPUX. - # -- +-# + -if test x$ac_cv_func_stat64 = xno ; then - { $as_echo "$as_me:$LINENO: checking for stat64 in " >&5 -$as_echo_n "checking for stat64 in ... " >&6; } - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ --_ACEOF ++cat >>confdefs.h <<_ACEOF ++#define SIZEOF_LONG $ac_cv_sizeof_long + _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+case "$host_os" in -+ *hpux*) -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ -- +-/* end confdefs.h. */ + -#if defined(HAVE_UNISTD_H) -#include -#endif -#include -- -+#include - int - main () - { + +-int +-main () +-{ -struct stat64 st64; exit(stat64(".",&st64)); -+struct spwd testme - ; - return 0; - } - _ACEOF +- ; +- return 0; +-} +-_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -50313,29 +49745,30 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_stat64=yes -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_header_shadow_h=yes ++# The cast to long int works around a bug in the HP C Compiler ++# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects ++# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. ++# This bug is HP SR number 8606223364. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 ++$as_echo_n "checking size of long long... " >&6; } ++if test "${ac_cv_sizeof_long_long+set}" = set; then : ++ $as_echo_n "(cached) " >&6 else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ ac_cv_header_shadow_h=no -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ if test x"$ac_cv_header_shadow_h" = x"yes"; then -+ -+$as_echo "#define HAVE_SHADOW_H 1" >>confdefs.h - -+ fi -+ ;; -+esac -+for ac_header in shadow.h -+do : -+ ac_fn_c_check_header_mongrel "$LINENO" "shadow.h" "ac_cv_header_shadow_h" "$ac_includes_default" -+if test "x$ac_cv_header_shadow_h" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_SHADOW_H 1 -+_ACEOF +- ++ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : ++else ++ if test "$ac_cv_type_long_long" = yes; then ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++{ as_fn_set_status 77 ++as_fn_error "cannot compute sizeof (long long) ++See \`config.log' for more details." "$LINENO" 5; }; } ++ else ++ ac_cv_sizeof_long_long=0 ++ fi fi -rm -rf conftest.dSYM @@ -50344,38 +49777,24 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - { $as_echo "$as_me:$LINENO: result: $ac_cv_func_stat64" >&5 -$as_echo "$ac_cv_func_stat64" >&6; } - if test x$ac_cv_func_stat64 = xyes ; then -+done ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 ++$as_echo "$ac_cv_sizeof_long_long" >&6; } -cat >>confdefs.h <<\_ACEOF -#define HAVE_STAT64 1 -+for ac_header in nss.h nss_common.h nsswitch.h ns_api.h sys/security.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF +-_ACEOF - fi - fi +-fi -if test x$ac_cv_func_lstat64 = xno ; then - { $as_echo "$as_me:$LINENO: checking for lstat64 in " >&5 -$as_echo_n "checking for lstat64 in ... " >&6; } - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -+done -+ -+for ac_header in syscall.h sys/syscall.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++cat >>confdefs.h <<_ACEOF ++#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF @@ -50385,7 +49804,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#include -#endif -#include -+fi -int -main () @@ -50417,407 +49835,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_lstat64=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+done - - -+for ac_header in sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ - fi - --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -- { $as_echo "$as_me:$LINENO: result: $ac_cv_func_lstat64" >&5 --$as_echo "$ac_cv_func_lstat64" >&6; } -- if test x$ac_cv_func_lstat64 = xyes ; then -- cat >>confdefs.h <<\_ACEOF --#define HAVE_LSTAT64 Whether lstat64() is available -+done -+ -+for ac_header in sys/ea.h sys/proplist.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF - -- fi - fi - --if test x$ac_cv_func_fstat64 = xno ; then -- { $as_echo "$as_me:$LINENO: checking for fstat64 in " >&5 --$as_echo_n "checking for fstat64 in ... " >&6; } -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ -+done - --#if defined(HAVE_UNISTD_H) --#include --#endif --#include - --int --main () --{ --struct stat64 st64; exit(fstat64(0,&st64)); -- ; -- return 0; --} -+for ac_header in sys/cdefs.h glob.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- ac_cv_func_fstat64=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- - - fi - --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -- { $as_echo "$as_me:$LINENO: result: $ac_cv_func_fstat64" >&5 --$as_echo "$ac_cv_func_fstat64" >&6; } -- if test x$ac_cv_func_fstat64 = xyes ; then -+done - --cat >>confdefs.h <<\_ACEOF --#define HAVE_FSTAT64 1 -+ -+# For experimental utmp support (lastlog on some BSD-like systems) -+for ac_header in utmp.h utmpx.h lastlog.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF - -- fi - fi - --################################################# --# Check whether struct stat has timestamps with sub-second resolution. --# -+done - --samba_cv_stat_hires=no --{ $as_echo "$as_me:$LINENO: checking for struct stat.st_mtim.tv_nsec" >&5 --$as_echo_n "checking for struct stat.st_mtim.tv_nsec... " >&6; } --if test "${ac_cv_member_struct_stat_st_mtim_tv_nsec+set}" = set; then -+ -+# The cast to long int works around a bug in the HP C Compiler -+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+# This bug is HP SR number 8606223364. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 -+$as_echo_n "checking size of int... " >&6; } -+if test "${ac_cv_sizeof_int+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static struct stat ac_aggr; --if (ac_aggr.st_mtim.tv_nsec) --return 0; -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_mtim_tv_nsec=yes -+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : -+ - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+ if test "$ac_cv_type_int" = yes; then -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+{ as_fn_set_status 77 -+as_fn_error "cannot compute sizeof (int) -+See \`config.log' for more details." "$LINENO" 5; }; } -+ else -+ ac_cv_sizeof_int=0 -+ fi -+fi - -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static struct stat ac_aggr; --if (sizeof ac_aggr.st_mtim.tv_nsec) --return 0; -- ; -- return 0; --} -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 -+$as_echo "$ac_cv_sizeof_int" >&6; } -+ -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define SIZEOF_INT $ac_cv_sizeof_int - _ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_mtim_tv_nsec=yes -+ -+ -+# The cast to long int works around a bug in the HP C Compiler -+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+# This bug is HP SR number 8606223364. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 -+$as_echo_n "checking size of long... " >&6; } -+if test "${ac_cv_sizeof_long+set}" = set; then : -+ $as_echo_n "(cached) " >&6 - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : - -- ac_cv_member_struct_stat_st_mtim_tv_nsec=no -+else -+ if test "$ac_cv_type_long" = yes; then -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+{ as_fn_set_status 77 -+as_fn_error "cannot compute sizeof (long) -+See \`config.log' for more details." "$LINENO" 5; }; } -+ else -+ ac_cv_sizeof_long=0 -+ fi - fi - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 -+$as_echo "$ac_cv_sizeof_long" >&6; } -+ - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_mtim_tv_nsec" >&5 --$as_echo "$ac_cv_member_struct_stat_st_mtim_tv_nsec" >&6; } --if test "x$ac_cv_member_struct_stat_st_mtim_tv_nsec" = x""yes; then - - cat >>confdefs.h <<_ACEOF --#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 -+#define SIZEOF_LONG $ac_cv_sizeof_long - _ACEOF - --# Linux, Solaris -- samba_cv_stat_hires=yes --fi - --{ $as_echo "$as_me:$LINENO: checking for struct stat.st_mtimensec" >&5 --$as_echo_n "checking for struct stat.st_mtimensec... " >&6; } --if test "${ac_cv_member_struct_stat_st_mtimensec+set}" = set; then -+# The cast to long int works around a bug in the HP C Compiler -+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+# This bug is HP SR number 8606223364. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 -+$as_echo_n "checking size of long long... " >&6; } -+if test "${ac_cv_sizeof_long_long+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static struct stat ac_aggr; --if (ac_aggr.st_mtimensec) --return 0; -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_mtimensec=yes -+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : -+ - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+ if test "$ac_cv_type_long_long" = yes; then -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+{ as_fn_set_status 77 -+as_fn_error "cannot compute sizeof (long long) -+See \`config.log' for more details." "$LINENO" 5; }; } -+ else -+ ac_cv_sizeof_long_long=0 -+ fi -+fi - -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static struct stat ac_aggr; --if (sizeof ac_aggr.st_mtimensec) --return 0; -- ; -- return 0; --} -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 -+$as_echo "$ac_cv_sizeof_long_long" >&6; } -+ -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long - _ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_mtimensec=yes -+ -+ +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. @@ -50831,7 +49848,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -sed 's/^/| /' conftest.$ac_ext >&5 + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : -- ac_cv_member_struct_stat_st_mtimensec=no +else + if test "$ac_cv_type_short" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 @@ -50842,92 +49858,55 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + else + ac_cv_sizeof_short=0 + fi - fi ++fi --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 +$as_echo "$ac_cv_sizeof_short" >&6; } -+ --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +- { $as_echo "$as_me:$LINENO: result: $ac_cv_func_lstat64" >&5 +-$as_echo "$ac_cv_func_lstat64" >&6; } +- if test x$ac_cv_func_lstat64 = xyes ; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_LSTAT64 Whether lstat64() is available +-_ACEOF + +- fi -fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_mtimensec" >&5 --$as_echo "$ac_cv_member_struct_stat_st_mtimensec" >&6; } --if test "x$ac_cv_member_struct_stat_st_mtimensec" = x""yes; then - cat >>confdefs.h <<_ACEOF --#define HAVE_STRUCT_STAT_ST_MTIMENSEC 1 +-if test x$ac_cv_func_fstat64 = xno ; then +- { $as_echo "$as_me:$LINENO: checking for fstat64 in " >&5 +-$as_echo_n "checking for fstat64 in ... " >&6; } +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ ++cat >>confdefs.h <<_ACEOF +#define SIZEOF_SHORT $ac_cv_sizeof_short _ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ --# BSD, if defined _POSIX_SOURCE -- samba_cv_stat_hires=yes --fi - --{ $as_echo "$as_me:$LINENO: checking for struct stat.st_mtimespec.tv_nsec" >&5 --$as_echo_n "checking for struct stat.st_mtimespec.tv_nsec... " >&6; } --if test "${ac_cv_member_struct_stat_st_mtimespec_tv_nsec+set}" = set; then +-#if defined(HAVE_UNISTD_H) +-#include +-#endif +-#include ++ + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if test "${ac_cv_c_const+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF ++ $as_echo_n "(cached) " >&6 ++else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static struct stat ac_aggr; --if (ac_aggr.st_mtimespec.tv_nsec) --return 0; -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_mtimespec_tv_nsec=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 ++/* end confdefs.h. */ -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default int main () { --static struct stat ac_aggr; --if (sizeof ac_aggr.st_mtimespec.tv_nsec) --return 0; +-struct stat64 st64; exit(fstat64(0,&st64)); +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ @@ -50982,15 +49961,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure return 0; } _ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 +- (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 @@ -50999,34 +49978,34 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_mtimespec_tv_nsec=yes +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_func_fstat64=yes +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_member_struct_stat_st_mtimespec_tv_nsec=no + ac_cv_c_const=no - fi -- - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then -+ + +$as_echo "#define const /**/" >>confdefs.h --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_mtimespec_tv_nsec" >&5 --$as_echo "$ac_cv_member_struct_stat_st_mtimespec_tv_nsec" >&6; } --if test "x$ac_cv_member_struct_stat_st_mtimespec_tv_nsec" = x""yes; then --cat >>confdefs.h <<_ACEOF --#define HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC 1 +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +- { $as_echo "$as_me:$LINENO: result: $ac_cv_func_fstat64" >&5 +-$as_echo "$ac_cv_func_fstat64" >&6; } +- if test x$ac_cv_func_fstat64 = xyes ; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if test "${ac_cv_c_inline+set}" = set; then : @@ -51041,7 +50020,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif -+ + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_FSTAT64 1 _ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw @@ -51050,12 +50031,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + test "$ac_cv_c_inline" != no && break +done --# BSD, if not defined _POSIX_SOURCE -- samba_cv_stat_hires=yes +- fi fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } -+ + +-################################################# +-# Check whether struct stat has timestamps with sub-second resolution. +-# +case $ac_cv_c_inline in + inline | yes) ;; + *) @@ -51071,9 +50054,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + ;; +esac --{ $as_echo "$as_me:$LINENO: checking for struct stat.st_mtime_n" >&5 --$as_echo_n "checking for struct stat.st_mtime_n... " >&6; } --if test "${ac_cv_member_struct_stat_st_mtime_n+set}" = set; then +-samba_cv_stat_hires=no +-{ $as_echo "$as_me:$LINENO: checking for struct stat.st_mtim.tv_nsec" >&5 +-$as_echo_n "checking for struct stat.st_mtim.tv_nsec... " >&6; } +-if test "${ac_cv_member_struct_stat_st_mtim_tv_nsec+set}" = set; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; } +if test "${ac_cv_c_bigendian+set}" = set; then : @@ -51130,7 +50114,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure main () { -static struct stat ac_aggr; --if (ac_aggr.st_mtime_n) +-if (ac_aggr.st_mtim.tv_nsec) -return 0; +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ @@ -51160,7 +50144,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_mtime_n=yes +- ac_cv_member_struct_stat_st_mtim_tv_nsec=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 @@ -51182,7 +50166,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure main () { -static struct stat ac_aggr; --if (sizeof ac_aggr.st_mtime_n) +-if (sizeof ac_aggr.st_mtim.tv_nsec) -return 0; +#if BYTE_ORDER != BIG_ENDIAN + not big endian @@ -51210,14 +50194,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_mtime_n=yes +- ac_cv_member_struct_stat_st_mtim_tv_nsec=yes +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_cv_member_struct_stat_st_mtime_n=no +- ac_cv_member_struct_stat_st_mtim_tv_nsec=no + ac_cv_c_bigendian=no fi - @@ -51226,21 +50210,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_mtime_n" >&5 --$as_echo "$ac_cv_member_struct_stat_st_mtime_n" >&6; } --if test "x$ac_cv_member_struct_stat_st_mtime_n" = x""yes; then +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_mtim_tv_nsec" >&5 +-$as_echo "$ac_cv_member_struct_stat_st_mtim_tv_nsec" >&6; } +-if test "x$ac_cv_member_struct_stat_st_mtim_tv_nsec" = x""yes; then - -cat >>confdefs.h <<_ACEOF --#define HAVE_STRUCT_STAT_ST_MTIME_N 1 +-#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 -_ACEOF - --# AIX +-# Linux, Solaris - samba_cv_stat_hires=yes -fi - --{ $as_echo "$as_me:$LINENO: checking for struct stat.st_umtime" >&5 --$as_echo_n "checking for struct stat.st_umtime... " >&6; } --if test "${ac_cv_member_struct_stat_st_umtime+set}" = set; then +-{ $as_echo "$as_me:$LINENO: checking for struct stat.st_mtimensec" >&5 +-$as_echo_n "checking for struct stat.st_mtimensec... " >&6; } +-if test "${ac_cv_member_struct_stat_st_mtimensec+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF @@ -51260,7 +50244,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure main () { -static struct stat ac_aggr; --if (ac_aggr.st_umtime) +-if (ac_aggr.st_mtimensec) -return 0; +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros @@ -51288,7 +50272,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_umtime=yes +- ac_cv_member_struct_stat_st_mtimensec=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 @@ -51309,7 +50293,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure main () { -static struct stat ac_aggr; --if (sizeof ac_aggr.st_umtime) +-if (sizeof ac_aggr.st_mtimensec) -return 0; +#ifndef _BIG_ENDIAN + not big endian @@ -51337,14 +50321,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_umtime=yes +- ac_cv_member_struct_stat_st_mtimensec=yes +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_cv_member_struct_stat_st_umtime=no +- ac_cv_member_struct_stat_st_mtimensec=no + ac_cv_c_bigendian=no fi - @@ -51353,27 +50337,36 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_umtime" >&5 --$as_echo "$ac_cv_member_struct_stat_st_umtime" >&6; } --if test "x$ac_cv_member_struct_stat_st_umtime" = x""yes; then +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_mtimensec" >&5 +-$as_echo "$ac_cv_member_struct_stat_st_mtimensec" >&6; } +-if test "x$ac_cv_member_struct_stat_st_mtimensec" = x""yes; then - -cat >>confdefs.h <<_ACEOF --#define HAVE_STRUCT_STAT_ST_UMTIME 1 +-#define HAVE_STRUCT_STAT_ST_MTIMENSEC 1 -_ACEOF - --# Tru64 +-# BSD, if defined _POSIX_SOURCE - samba_cv_stat_hires=yes -fi - -- --if test x"$samba_cv_stat_hires" = x"yes" ; then +-{ $as_echo "$as_me:$LINENO: checking for struct stat.st_mtimespec.tv_nsec" >&5 +-$as_echo_n "checking for struct stat.st_mtimespec.tv_nsec... " >&6; } +-if test "${ac_cv_member_struct_stat_st_mtimespec_tv_nsec+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ + /* end confdefs.h. */ +-$ac_includes_default +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = @@ -51389,18 +50382,37 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; - --cat >>confdefs.h <<\_ACEOF --#define HAVE_STAT_HIRES_TIMESTAMPS 1 -+int -+main () -+{ ++ + int + main () + { +-static struct stat ac_aggr; +-if (ac_aggr.st_mtimespec.tv_nsec) +-return 0; +return use_ascii (foo) == use_ebcdic (foo); -+ ; -+ return 0; -+} + ; + return 0; + } _ACEOF -- +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_cv_member_struct_stat_st_mtimespec_tv_nsec=yes +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes @@ -51413,16 +50425,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + ac_cv_c_bigendian=unknown + fi + fi - fi -- --# recent FreeBSD, NetBSD have creation timestamps called birthtime: --{ $as_echo "$as_me:$LINENO: checking for struct stat.st_birthtimespec.tv_nsec" >&5 --$as_echo_n "checking for struct stat.st_birthtimespec.tv_nsec... " >&6; } --if test "${ac_cv_member_struct_stat_st_birthtimespec_tv_nsec+set}" = set; then -- $as_echo_n "(cached) " >&6 ++fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else -- cat >conftest.$ac_ext <<_ACEOF +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext @@ -51434,7 +50443,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure main () { -static struct stat ac_aggr; --if (ac_aggr.st_birthtimespec.tv_nsec) +-if (sizeof ac_aggr.st_mtimespec.tv_nsec) -return 0; + + /* Are we little or big endian? From Harbison&Steele. */ @@ -51468,25 +50477,28 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_birthtimespec_tv_nsec=yes +- ac_cv_member_struct_stat_st_mtimespec_tv_nsec=yes +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_member_struct_stat_st_mtimespec_tv_nsec=no + ac_cv_c_bigendian=yes -+fi + fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext -+fi + fi -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi -+fi + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_mtimespec_tv_nsec" >&5 +-$as_echo "$ac_cv_member_struct_stat_st_mtimespec_tv_nsec" >&6; } +-if test "x$ac_cv_member_struct_stat_st_mtimespec_tv_nsec" = x""yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( @@ -51496,20 +50508,34 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + no) + ;; #( + universal) -+ + +-cat >>confdefs.h <<_ACEOF +-#define HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC 1 +-_ACEOF +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h -+ + +-# BSD, if not defined _POSIX_SOURCE +- samba_cv_stat_hires=yes +-fi + ;; #( + *) + as_fn_error "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac -+ + +-{ $as_echo "$as_me:$LINENO: checking for struct stat.st_mtime_n" >&5 +-$as_echo_n "checking for struct stat.st_mtime_n... " >&6; } +-if test "${ac_cv_member_struct_stat_st_mtime_n+set}" = set; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5 +$as_echo_n "checking whether char is unsigned... " >&6; } +if test "${ac_cv_c_char_unsigned+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default @@ -51517,7 +50543,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure main () { -static struct stat ac_aggr; --if (sizeof ac_aggr.st_birthtimespec.tv_nsec) +-if (ac_aggr.st_mtime_n) -return 0; +static int test_array [1 - 2 * !(((char) -1) < 0)]; +test_array [0] = 0 @@ -51544,50 +50570,34 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_birthtimespec_tv_nsec=yes +- ac_cv_member_struct_stat_st_mtime_n=yes +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_char_unsigned=no else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_member_struct_stat_st_birthtimespec_tv_nsec=no + ac_cv_c_char_unsigned=yes - fi -- - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5 +$as_echo "$ac_cv_c_char_unsigned" >&6; } +if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then + $as_echo "#define __CHAR_UNSIGNED__ 1" >>confdefs.h --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" >&5 --$as_echo "$ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" >&6; } --if test "x$ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" = x""yes; then -- --cat >>confdefs.h <<_ACEOF --#define HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC 1 --_ACEOF -- - --fi - --{ $as_echo "$as_me:$LINENO: checking for struct stat.st_birthtime" >&5 --$as_echo_n "checking for struct stat.st_birthtime... " >&6; } --if test "${ac_cv_member_struct_stat_st_birthtime+set}" = set; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 -+$as_echo_n "checking return type of signal handlers... " >&6; } -+if test "${ac_cv_type_signal+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF +- cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF ++fi ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 ++$as_echo_n "checking return type of signal handlers... " >&6; } ++if test "${ac_cv_type_signal+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default @@ -51598,7 +50608,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure main () { -static struct stat ac_aggr; --if (ac_aggr.st_birthtime) +-if (sizeof ac_aggr.st_mtime_n) -return 0; +return *(signal (0, 0)) (0) == 1; ; @@ -51623,7 +50633,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_birthtime=yes +- ac_cv_member_struct_stat_st_mtime_n=yes +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_signal=int else @@ -51635,14 +50645,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 +$as_echo "$ac_cv_type_signal" >&6; } - -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ ++ +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal - _ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF ++_ACEOF + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 @@ -51651,47 +50657,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ --$ac_includes_default --int --main () --{ --static struct stat ac_aggr; --if (sizeof ac_aggr.st_birthtime) --return 0; -- ; -- return 0; --} ++/* end confdefs.h. */ +#include -+ - _ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_birthtime=yes + +- ac_cv_member_struct_stat_st_mtime_n=no ++_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "uid_t" >/dev/null 2>&1; then : + ac_cv_type_uid_t=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_member_struct_stat_st_birthtime=no ++else + ac_cv_type_uid_t=no fi +rm -f conftest* @@ -51709,9 +50683,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_birthtime" >&5 --$as_echo "$ac_cv_member_struct_stat_st_birthtime" >&6; } --if test "x$ac_cv_member_struct_stat_st_birthtime" = x""yes; then +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_mtime_n" >&5 +-$as_echo "$ac_cv_member_struct_stat_st_mtime_n" >&6; } +-if test "x$ac_cv_member_struct_stat_st_mtime_n" = x""yes; then + +ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" +if test "x$ac_cv_type_mode_t" = x""yes; then : @@ -51719,23 +50693,28 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +else cat >>confdefs.h <<_ACEOF --#define HAVE_STRUCT_STAT_ST_BIRTHTIME 1 +-#define HAVE_STRUCT_STAT_ST_MTIME_N 1 +#define mode_t int _ACEOF --{ $as_echo "$as_me:$LINENO: checking for struct stat.st_birthtimensec" >&5 --$as_echo_n "checking for struct stat.st_birthtimensec... " >&6; } --if test "${ac_cv_member_struct_stat_st_birthtimensec+set}" = set; then +-# AIX +- samba_cv_stat_hires=yes + fi + +-{ $as_echo "$as_me:$LINENO: checking for struct stat.st_umtime" >&5 +-$as_echo_n "checking for struct stat.st_umtime... " >&6; } +-if test "${ac_cv_member_struct_stat_st_umtime+set}" = set; then - $as_echo_n "(cached) " >&6 -+fi -+ +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = x""yes; then : + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ --_ACEOF ++ ++cat >>confdefs.h <<_ACEOF ++#define off_t long int + _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ @@ -51744,14 +50723,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -main () -{ -static struct stat ac_aggr; --if (ac_aggr.st_birthtimensec) +-if (ac_aggr.st_umtime) -return 0; - ; - return 0; -} + ++fi ++ ++ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" ++if test "x$ac_cv_type_size_t" = x""yes; then : ++ ++else ++ +cat >>confdefs.h <<_ACEOF -+#define off_t long int ++#define size_t unsigned int _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" @@ -51771,12 +50757,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then -- ac_cv_member_struct_stat_st_birthtimensec=yes +- ac_cv_member_struct_stat_st_umtime=yes + +fi + -+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -+if test "x$ac_cv_type_size_t" = x""yes; then : ++ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" ++if test "x$ac_cv_type_pid_t" = x""yes; then : + else - $as_echo "$as_me: failed program was:" >&5 @@ -51784,6 +50770,553 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ ++cat >>confdefs.h <<_ACEOF ++#define pid_t int ++_ACEOF ++ ++fi ++ ++ac_fn_c_check_member "$LINENO" "struct stat" "st_rdev" "ac_cv_member_struct_stat_st_rdev" "$ac_includes_default" ++if test "x$ac_cv_member_struct_stat_st_rdev" = x""yes; then : ++ ++cat >>confdefs.h <<_ACEOF ++#define HAVE_STRUCT_STAT_ST_RDEV 1 + _ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ ++ ++$as_echo "#define HAVE_ST_RDEV 1" >>confdefs.h ++ ++fi ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for d_off in dirent" >&5 ++$as_echo_n "checking for d_off in dirent... " >&6; } ++if test "${ac_cv_dirent_d_off+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-$ac_includes_default ++ ++#include ++#include ++#include + int + main () + { +-static struct stat ac_aggr; +-if (sizeof ac_aggr.st_umtime) +-return 0; ++struct dirent d; d.d_off; + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_cv_member_struct_stat_st_umtime=yes ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_dirent_d_off=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_member_struct_stat_st_umtime=no ++ ac_cv_dirent_d_off=no + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dirent_d_off" >&5 ++$as_echo "$ac_cv_dirent_d_off" >&6; } ++if test $ac_cv_dirent_d_off = yes; then ++ ++$as_echo "#define HAVE_DIRENT_D_OFF 1" >>confdefs.h + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_umtime" >&5 +-$as_echo "$ac_cv_member_struct_stat_st_umtime" >&6; } +-if test "x$ac_cv_member_struct_stat_st_umtime" = x""yes; then ++ ++ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" ++if test "x$ac_cv_type_ssize_t" = x""yes; then : ++ ++else + + cat >>confdefs.h <<_ACEOF +-#define HAVE_STRUCT_STAT_ST_UMTIME 1 ++#define ssize_t int + _ACEOF + +-# Tru64 +- samba_cv_stat_hires=yes + fi + ++ac_fn_c_check_type "$LINENO" "wchar_t" "ac_cv_type_wchar_t" "$ac_includes_default" ++if test "x$ac_cv_type_wchar_t" = x""yes; then : + +-if test x"$samba_cv_stat_hires" = x"yes" ; then ++else ++ ++cat >>confdefs.h <<_ACEOF ++#define wchar_t unsigned short ++_ACEOF ++ ++fi ++ ++ ++############################################ ++# for cups support we need libcups, and a handful of header files ++ ++# Check whether --enable-cups was given. ++if test "${enable_cups+set}" = set; then : ++ enableval=$enable_cups; ++fi ++ ++ ++if test x$enable_cups != xno; then ++ # Extract the first word of "cups-config", so it can be a program name with args. ++set dummy cups-config; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if test "${ac_cv_path_CUPS_CONFIG+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ case $CUPS_CONFIG in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_CUPS_CONFIG="$CUPS_CONFIG" # Let the user override the test with a path. ++ ;; ++ *) ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_path_CUPS_CONFIG="$as_dir/$ac_word$ac_exec_ext" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++fi ++CUPS_CONFIG=$ac_cv_path_CUPS_CONFIG ++if test -n "$CUPS_CONFIG"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUPS_CONFIG" >&5 ++$as_echo "$CUPS_CONFIG" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ ++ if test "x$CUPS_CONFIG" != x; then + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_STAT_HIRES_TIMESTAMPS 1 ++ ac_save_CFLAGS=$CFLAGS ++ ac_save_LDFLAGS=$LDFLAGS ++ ac_save_PRINT_LIBS=$PRINT_LIBS ++ CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`" ++ LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`" ++ PRINT_LIBS="$PRINT_LIBS -lcups" ++ for ac_header in cups/cups.h cups/language.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF + +-fi ++fi ++ ++done ++ ++ if test x"$ac_cv_header_cups_cups_h" = xyes -a \ ++ x"$ac_cv_header_cups_language_h" = xyes; then ++ ++$as_echo "#define HAVE_CUPS 1" >>confdefs.h ++ ++ samba_cv_HAVE_CUPS=yes ++ ++ ++ac_check_lib_ext_save_LIBS=$LIBS ++LIBS="-lcups $PRINT_LIBS $LIBS" ++ ++ + +-# recent FreeBSD, NetBSD have creation timestamps called birthtime: +-{ $as_echo "$as_me:$LINENO: checking for struct stat.st_birthtimespec.tv_nsec" >&5 +-$as_echo_n "checking for struct stat.st_birthtimespec.tv_nsec... " >&6; } +-if test "${ac_cv_member_struct_stat_st_birthtimespec_tv_nsec+set}" = set; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for httpConnectEncrypt in -lcups" >&5 ++$as_echo_n "checking for httpConnectEncrypt in -lcups... " >&6; } ++if test "${ac_cv_lib_ext_cups_httpConnectEncrypt+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-$ac_includes_default ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char httpConnectEncrypt (); + int + main () + { +-static struct stat ac_aggr; +-if (ac_aggr.st_birthtimespec.tv_nsec) +-return 0; ++return httpConnectEncrypt (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_cv_member_struct_stat_st_birthtimespec_tv_nsec=yes ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_ext_cups_httpConnectEncrypt=yes; ++ ac_cv_lib_ext_cups=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ ac_cv_lib_ext_cups_httpConnectEncrypt=no; ++ ac_cv_lib_ext_cups=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_cups_httpConnectEncrypt" >&5 ++$as_echo "$ac_cv_lib_ext_cups_httpConnectEncrypt" >&6; } ++ if test $ac_cv_lib_ext_cups_httpConnectEncrypt = yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_HTTPCONNECTENCRYPT 1 + _ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-int +-main () +-{ +-static struct stat ac_aggr; +-if (sizeof ac_aggr.st_birthtimespec.tv_nsec) +-return 0; +- ; +- return 0; +-} ++ ++fi ++LIBS=$ac_check_lib_ext_save_LIBS ++ ++if test $ac_cv_lib_ext_cups = yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_LIBCUPS 1 + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_cv_member_struct_stat_st_birthtimespec_tv_nsec=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_cv_member_struct_stat_st_birthtimespec_tv_nsec=no ++ case "$PRINT_LIBS" in ++ *-lcups*) ++ ;; ++ *) ++ PRINT_LIBS="-lcups $PRINT_LIBS" ++ ;; ++ esac ++ ++ + fi ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cups-config around but cups-devel not installed" >&5 ++$as_echo "$as_me: WARNING: cups-config around but cups-devel not installed" >&2;} ++ CFLAGS=$ac_save_CFLAGS ++ LDFLAGS=$ac_save_LDFLAGS ++ PRINT_LIBS=$ac_save_PRINT_LIBS ++ fi + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ elif test x"$enable_cups" = x"yes"; then ++ as_fn_error "Cups support required but cups-config not located. Make sure cups-devel related files are installed." "$LINENO" 5 ++ fi + fi + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++# Check whether --enable-iprint was given. ++if test "${enable_iprint+set}" = set; then : ++ enableval=$enable_iprint; + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" >&5 +-$as_echo "$ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" >&6; } +-if test "x$ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" = x""yes; then + +-cat >>confdefs.h <<_ACEOF +-#define HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC 1 +-_ACEOF + ++if test x$enable_iprint != xno; then ++ if test x"$samba_cv_HAVE_CUPS" = xyes; then ++ ++$as_echo "#define HAVE_IPRINT 1" >>confdefs.h + ++ elif test x"$enable_iprint" = x"yes"; then ++ as_fn_error "iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled." "$LINENO" 5 ++ fi + fi + +-{ $as_echo "$as_me:$LINENO: checking for struct stat.st_birthtime" >&5 +-$as_echo_n "checking for struct stat.st_birthtime... " >&6; } +-if test "${ac_cv_member_struct_stat_st_birthtime+set}" = set; then ++############################################ ++# check if the compiler will optimize out function calls ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler will optimize out function calls" >&5 ++$as_echo_n "checking if the compiler will optimize out function calls... " >&6; } ++if test "${samba_cv_optimize_out_funcation_calls+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-$ac_includes_default ++ ++#include + int + main () + { +-static struct stat ac_aggr; +-if (ac_aggr.st_birthtime) +-return 0; ++ ++ if (0) { ++ this_function_does_not_exist(); ++ } else { ++ return 1; ++ } ++ ++ + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_cv_member_struct_stat_st_birthtime=yes ++if ac_fn_c_try_link "$LINENO"; then : ++ samba_cv_optimize_out_funcation_calls=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ samba_cv_optimize_out_funcation_calls=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_optimize_out_funcation_calls" >&5 ++$as_echo "$samba_cv_optimize_out_funcation_calls" >&6; } ++if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then + +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++$as_echo "#define HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS 1" >>confdefs.h ++ ++fi ++ ++############################################# ++# check for fd passing struct via msg_control ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fd passing via msg_control" >&5 ++$as_echo_n "checking for fd passing via msg_control... " >&6; } ++if test "${samba_cv_msghdr_msg_control+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-$ac_includes_default ++ ++#include ++#include ++#include ++#include ++#include + int + main () + { +-static struct stat ac_aggr; +-if (sizeof ac_aggr.st_birthtime) +-return 0; ++ ++ struct msghdr msg; ++ union { ++ struct cmsghdr cm; ++ char control[CMSG_SPACE(sizeof(int))]; ++ } control_un; ++ msg.msg_control = control_un.control; ++ msg.msg_controllen = sizeof(control_un.control); ++ + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_cv_member_struct_stat_st_birthtime=yes ++if ac_fn_c_try_compile "$LINENO"; then : ++ samba_cv_msghdr_msg_control=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_member_struct_stat_st_birthtime=no ++ samba_cv_msghdr_msg_control=no + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_msghdr_msg_control" >&5 ++$as_echo "$samba_cv_msghdr_msg_control" >&6; } ++if test x"$samba_cv_msghdr_msg_control" = x"yes"; then + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_birthtime" >&5 +-$as_echo "$ac_cv_member_struct_stat_st_birthtime" >&6; } +-if test "x$ac_cv_member_struct_stat_st_birthtime" = x""yes; then ++$as_echo "#define HAVE_MSGHDR_MSG_CONTROL 1" >>confdefs.h + +-cat >>confdefs.h <<_ACEOF +-#define HAVE_STRUCT_STAT_ST_BIRTHTIME 1 +-_ACEOF ++fi + +-{ $as_echo "$as_me:$LINENO: checking for struct stat.st_birthtimensec" >&5 +-$as_echo_n "checking for struct stat.st_birthtimensec... " >&6; } +-if test "${ac_cv_member_struct_stat_st_birthtimensec+set}" = set; then ++############################################# ++# check for fd passing struct via msg_acctrights ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fd passing via msg_acctrights" >&5 ++$as_echo_n "checking for fd passing via msg_acctrights... " >&6; } ++if test "${samba_cv_msghdr_msg_acctrights+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF @@ -51793,14 +51326,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -main () -{ -static struct stat ac_aggr; --if (sizeof ac_aggr.st_birthtimensec) +-if (ac_aggr.st_birthtimensec) -return 0; - ; - return 0; -} -+cat >>confdefs.h <<_ACEOF -+#define size_t unsigned int - _ACEOF +-_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -51824,63 +51355,123 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-$ac_includes_default ++ ++#include ++#include ++#include ++#include ++#include + int + main () + { +-static struct stat ac_aggr; +-if (sizeof ac_aggr.st_birthtimensec) +-return 0; ++ ++ struct msghdr msg; ++ int fd; ++ msg.msg_acctrights = (caddr_t) &fd; ++ msg.msg_acctrightslen = sizeof(fd); ++ + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_cv_member_struct_stat_st_birthtimensec=yes ++if ac_fn_c_try_compile "$LINENO"; then : ++ samba_cv_msghdr_msg_acctrights=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- - ac_cv_member_struct_stat_st_birthtimensec=no ++ samba_cv_msghdr_msg_acctrights=no fi - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi -+ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" -+if test "x$ac_cv_type_pid_t" = x""yes; then : +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_msghdr_msg_acctrights" >&5 ++$as_echo "$samba_cv_msghdr_msg_acctrights" >&6; } ++if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then + -+else -+ -+cat >>confdefs.h <<_ACEOF -+#define pid_t int -+_ACEOF ++$as_echo "#define HAVE_MSGHDR_MSG_ACCTRIGHTS 1" >>confdefs.h -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_birthtimensec" >&5 -$as_echo "$ac_cv_member_struct_stat_st_birthtimensec" >&6; } -if test "x$ac_cv_member_struct_stat_st_birthtimensec" = x""yes; then -+ -+ac_fn_c_check_member "$LINENO" "struct stat" "st_rdev" "ac_cv_member_struct_stat_st_rdev" "$ac_includes_default" -+if test "x$ac_cv_member_struct_stat_st_rdev" = x""yes; then : - cat >>confdefs.h <<_ACEOF +-cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC 1 -+#define HAVE_STRUCT_STAT_ST_RDEV 1 ++for ac_func in dirfd ++do : ++ ac_fn_c_check_func "$LINENO" "dirfd" "ac_cv_func_dirfd" ++if test "x$ac_cv_func_dirfd" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_DIRFD 1 _ACEOF +- + fi ++done --fi -+$as_echo "#define HAVE_ST_RDEV 1" >>confdefs.h - ++if test x"$ac_cv_func_dirfd" = x"yes"; then ++ default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort" fi - +- - -{ $as_echo "$as_me:$LINENO: checking whether there is DOS flags support in the stat struct" >&5 -$as_echo_n "checking whether there is DOS flags support in the stat struct... " >&6; } -if test "${samba_cv_stat_dos_flags+set}" = set; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for d_off in dirent" >&5 -+$as_echo_n "checking for d_off in dirent... " >&6; } -+if test "${ac_cv_dirent_d_off+set}" = set; then : ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sigevent type" >&5 ++$as_echo_n "checking for struct sigevent type... " >&6; } ++if test "${samba_cv_struct_sigevent+set}" = set; then : $as_echo_n "(cached) " >&6 else -- + - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include + -+#include +#include -+#include ++#if STDC_HEADERS ++#include ++#include ++#endif ++#include int main () { @@ -51892,7 +51483,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - int i = UF_DOS_NOINDEX; - int f = UF_DOS_FLAGS; - -+struct dirent d; d.d_off; ++struct sigevent s; ; return 0; } @@ -51917,753 +51508,72 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - } && test -s conftest.$ac_objext; then - samba_cv_stat_dos_flags=yes +if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_dirent_d_off=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+ ac_cv_dirent_d_off=no -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dirent_d_off" >&5 -+$as_echo "$ac_cv_dirent_d_off" >&6; } -+if test $ac_cv_dirent_d_off = yes; then -+ -+$as_echo "#define HAVE_DIRENT_D_OFF 1" >>confdefs.h - -- samba_cv_stat_dos_flags=no - fi - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" -+if test "x$ac_cv_type_ssize_t" = x""yes; then : -+ -+else -+ -+cat >>confdefs.h <<_ACEOF -+#define ssize_t int -+_ACEOF - - fi --{ $as_echo "$as_me:$LINENO: result: $samba_cv_stat_dos_flags" >&5 --$as_echo "$samba_cv_stat_dos_flags" >&6; } - --if test x"$samba_cv_stat_dos_flags" = x"yes" ; then -+ac_fn_c_check_type "$LINENO" "wchar_t" "ac_cv_type_wchar_t" "$ac_includes_default" -+if test "x$ac_cv_type_wchar_t" = x""yes; then : - --cat >>confdefs.h <<\_ACEOF --#define HAVE_STAT_DOS_FLAGS 1 -+else -+ -+cat >>confdefs.h <<_ACEOF -+#define wchar_t unsigned short - _ACEOF - - fi - --##################################### --# needed for SRV lookups - --{ $as_echo "$as_me:$LINENO: checking for dn_expand in -lresolv" >&5 --$as_echo_n "checking for dn_expand in -lresolv... " >&6; } --if test "${ac_cv_lib_resolv_dn_expand+set}" = set; then -+############################################ -+# for cups support we need libcups, and a handful of header files -+ -+# Check whether --enable-cups was given. -+if test "${enable_cups+set}" = set; then : -+ enableval=$enable_cups; -+fi -+ -+ -+if test x$enable_cups != xno; then -+ # Extract the first word of "cups-config", so it can be a program name with args. -+set dummy cups-config; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if test "${ac_cv_path_CUPS_CONFIG+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lresolv $LIBS" --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ -+ case $CUPS_CONFIG in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_CUPS_CONFIG="$CUPS_CONFIG" # Let the user override the test with a path. -+ ;; -+ *) -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_path_CUPS_CONFIG="$as_dir/$ac_word$ac_exec_ext" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS - --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char dn_expand (); --int --main () --{ --return dn_expand (); -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; -+ ;; - esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- ac_cv_lib_resolv_dn_expand=yes -+fi -+CUPS_CONFIG=$ac_cv_path_CUPS_CONFIG -+if test -n "$CUPS_CONFIG"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUPS_CONFIG" >&5 -+$as_echo "$CUPS_CONFIG" >&6; } - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_lib_resolv_dn_expand=no -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } - fi - --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS --fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_dn_expand" >&5 --$as_echo "$ac_cv_lib_resolv_dn_expand" >&6; } --if test "x$ac_cv_lib_resolv_dn_expand" = x""yes; then -+ -+ -+ if test "x$CUPS_CONFIG" != x; then -+ -+ ac_save_CFLAGS=$CFLAGS -+ ac_save_LDFLAGS=$LDFLAGS -+ ac_save_PRINT_LIBS=$PRINT_LIBS -+ CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`" -+ LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`" -+ PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`" -+ for ac_header in cups/cups.h cups/language.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define HAVE_LIBRESOLV 1 -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF - -- LIBS="-lresolv $LIBS" -+fi -+ -+done -+ -+ if test x"$ac_cv_header_cups_cups_h" = xyes -a \ -+ x"$ac_cv_header_cups_language_h" = xyes; then -+ -+$as_echo "#define HAVE_CUPS 1" >>confdefs.h -+ -+ samba_cv_HAVE_CUPS=yes -+ else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cups-config around but cups-devel not installed" >&5 -+$as_echo "$as_me: WARNING: cups-config around but cups-devel not installed" >&2;} -+ CFLAGS=$ac_save_CFLAGS -+ LDFLAGS=$ac_save_LDFLAGS -+ PRINT_LIBS=$ac_save_PRINT_LIBS -+ fi - -+ elif test x"$enable_cups" = x"yes"; then -+ as_fn_error "Cups support required but cups-config not located. Make sure cups-devel related files are installed." "$LINENO" 5 -+ fi - fi - -+# Check whether --enable-iprint was given. -+if test "${enable_iprint+set}" = set; then : -+ enableval=$enable_iprint; -+fi - --{ $as_echo "$as_me:$LINENO: checking for _dn_expand in -lresolv" >&5 --$as_echo_n "checking for _dn_expand in -lresolv... " >&6; } --if test "${ac_cv_lib_resolv__dn_expand+set}" = set; then -+ -+if test x$enable_iprint != xno; then -+ if test x"$samba_cv_HAVE_CUPS" = xyes; then -+ -+$as_echo "#define HAVE_IPRINT 1" >>confdefs.h -+ -+ elif test x"$enable_iprint" = x"yes"; then -+ as_fn_error "iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled." "$LINENO" 5 -+ fi -+fi -+ -+############################################ -+# check if the compiler will optimize out function calls -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler will optimize out function calls" >&5 -+$as_echo_n "checking if the compiler will optimize out function calls... " >&6; } -+if test "${samba_cv_optimize_out_funcation_calls+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lresolv $LIBS" --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char _dn_expand (); -+#include - int - main () - { --return _dn_expand (); -+ -+ if (0) { -+ this_function_does_not_exist(); -+ } else { -+ return 1; -+ } -+ -+ - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- ac_cv_lib_resolv__dn_expand=yes -+if ac_fn_c_try_link "$LINENO"; then : -+ samba_cv_optimize_out_funcation_calls=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_lib_resolv__dn_expand=no -+ samba_cv_optimize_out_funcation_calls=no - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_resolv__dn_expand" >&5 --$as_echo "$ac_cv_lib_resolv__dn_expand" >&6; } --if test "x$ac_cv_lib_resolv__dn_expand" = x""yes; then -- cat >>confdefs.h <<_ACEOF --#define HAVE_LIBRESOLV 1 --_ACEOF -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_optimize_out_funcation_calls" >&5 -+$as_echo "$samba_cv_optimize_out_funcation_calls" >&6; } -+if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then - -- LIBS="-lresolv $LIBS" -+$as_echo "#define HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS 1" >>confdefs.h - - fi - -- --{ $as_echo "$as_me:$LINENO: checking for __dn_expand in -lresolv" >&5 --$as_echo_n "checking for __dn_expand in -lresolv... " >&6; } --if test "${ac_cv_lib_resolv___dn_expand+set}" = set; then -+############################################# -+# check for fd passing struct via msg_control -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fd passing via msg_control" >&5 -+$as_echo_n "checking for fd passing via msg_control... " >&6; } -+if test "${samba_cv_msghdr_msg_control+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lresolv $LIBS" --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char __dn_expand (); -+#include -+#include -+#include -+#include -+#include - int - main () - { --return __dn_expand (); -+ -+ struct msghdr msg; -+ union { -+ struct cmsghdr cm; -+ char control[CMSG_SPACE(sizeof(int))]; -+ } control_un; -+ msg.msg_control = control_un.control; -+ msg.msg_controllen = sizeof(control_un.control); -+ - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- ac_cv_lib_resolv___dn_expand=yes -+if ac_fn_c_try_compile "$LINENO"; then : -+ samba_cv_msghdr_msg_control=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_lib_resolv___dn_expand=no -+ samba_cv_msghdr_msg_control=no - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_resolv___dn_expand" >&5 --$as_echo "$ac_cv_lib_resolv___dn_expand" >&6; } --if test "x$ac_cv_lib_resolv___dn_expand" = x""yes; then -- cat >>confdefs.h <<_ACEOF --#define HAVE_LIBRESOLV 1 --_ACEOF -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_msghdr_msg_control" >&5 -+$as_echo "$samba_cv_msghdr_msg_control" >&6; } -+if test x"$samba_cv_msghdr_msg_control" = x"yes"; then - -- LIBS="-lresolv $LIBS" -+$as_echo "#define HAVE_MSGHDR_MSG_CONTROL 1" >>confdefs.h - - fi - -- --# --# Check for the functions putprpwnam, set_auth_parameters, --# getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity --# Needed for OSF1 and HPUX. --# -- -- -- --for ac_func in putprpwnam --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+############################################# -+# check for fd passing struct via msg_acctrights -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fd passing via msg_acctrights" >&5 -+$as_echo_n "checking for fd passing via msg_acctrights... " >&6; } -+if test "${samba_cv_msghdr_msg_acctrights+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func -- --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -- --#ifdef __STDC__ --# include --#else --# include --#endif -- --#undef $ac_func - --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ - -+#include -+#include -+#include -+#include -+#include - int - main () - { --return $ac_func (); -+ -+ struct msghdr msg; -+ int fd; -+ msg.msg_acctrights = (caddr_t) &fd; -+ msg.msg_acctrightslen = sizeof(fd); -+ - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" -+if ac_fn_c_try_compile "$LINENO"; then : -+ samba_cv_msghdr_msg_acctrights=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_var=no" -+ samba_cv_msghdr_msg_acctrights=no - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -- cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 --_ACEOF -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_msghdr_msg_acctrights" >&5 -+$as_echo "$samba_cv_msghdr_msg_acctrights" >&6; } -+if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then - -- # putprpwnam was found in libc or existing $LIBS -+$as_echo "#define HAVE_MSGHDR_MSG_ACCTRIGHTS 1" >>confdefs.h - -+fi - --cat >>confdefs.h <<\_ACEOF --#define HAVE_PUTPRPWNAM 1 -+for ac_func in dirfd -+do : -+ ac_fn_c_check_func "$LINENO" "dirfd" "ac_cv_func_dirfd" -+if test "x$ac_cv_func_dirfd" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_DIRFD 1 - _ACEOF - -+fi -+done - -+if test x"$ac_cv_func_dirfd" = x"yes"; then -+ default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort" -+fi - --else -- -- # putprpwnam was not found, try adding libsecurity -- case " $LIBS " in -- *\ -lsecurity\ *) -- -- # putprpwnam was not found and we already had libsecurity -- # nothing to do here by default -- true -- -- ;; -- *) -- # putprpwnam was not found, try adding libsecurity -- { $as_echo "$as_me:$LINENO: checking for putprpwnam in -lsecurity" >&5 --$as_echo_n "checking for putprpwnam in -lsecurity... " >&6; } --if test "${ac_cv_lib_security_putprpwnam+set}" = set; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sigevent type" >&5 -+$as_echo_n "checking for struct sigevent type... " >&6; } -+if test "${samba_cv_struct_sigevent+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lsecurity $LIBS" --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" -+#include -+#if STDC_HEADERS -+#include -+#include - #endif --char putprpwnam (); -+#include - int - main () - { --return putprpwnam (); -+struct sigevent s; - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- ac_cv_lib_security_putprpwnam=yes -+if ac_fn_c_try_compile "$LINENO"; then : + samba_cv_struct_sigevent=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_cv_lib_security_putprpwnam=no +- samba_cv_stat_dos_flags=no + samba_cv_struct_sigevent=no fi - --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_security_putprpwnam" >&5 --$as_echo "$ac_cv_lib_security_putprpwnam" >&6; } --if test "x$ac_cv_lib_security_putprpwnam" = x""yes; then +-{ $as_echo "$as_me:$LINENO: result: $samba_cv_stat_dos_flags" >&5 +-$as_echo "$samba_cv_stat_dos_flags" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_struct_sigevent" >&5 +$as_echo "$samba_cv_struct_sigevent" >&6; } +if test x"$samba_cv_struct_sigevent" = x"yes"; then -- LIBS="-lsecurity $LIBS" +-if test x"$samba_cv_stat_dos_flags" = x"yes" ; then +$as_echo "#define HAVE_STRUCT_SIGEVENT 1" >>confdefs.h - ++ + ac_fn_c_check_member "$LINENO" "struct sigevent" "sigev_value.sival_ptr" "ac_cv_member_struct_sigevent_sigev_value_sival_ptr" "#include +" +if test "x$ac_cv_member_struct_sigevent_sigev_value_sival_ptr" = x""yes; then : - --cat >>confdefs.h <<\_ACEOF --#define HAVE_PUTPRPWNAM 1 ++ +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SIGEVENT_SIGEV_VALUE_SIVAL_PTR 1 - _ACEOF - - ++_ACEOF ++ ++ +fi +ac_fn_c_check_member "$LINENO" "struct sigevent" "sigev_value.sigval_ptr" "ac_cv_member_struct_sigevent_sigev_value_sigval_ptr" "#include +" +if test "x$ac_cv_member_struct_sigevent_sigev_value_sigval_ptr" = x""yes; then : --else -- -- -- # putprpwnam was not found in libsecurity -- # nothing to do here by default -- true +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_STAT_DOS_FLAGS 1 +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SIGEVENT_SIGEV_VALUE_SIGVAL_PTR 1 -+_ACEOF - + _ACEOF ++ fi -- ;; -- esac -- - fi --done +-##################################### +-# needed for SRV lookups ++fi -- -- -- --for ac_func in putprpwnam --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +-{ $as_echo "$as_me:$LINENO: checking for dn_expand in -lresolv" >&5 +-$as_echo_n "checking for dn_expand in -lresolv... " >&6; } +-if test "${ac_cv_lib_resolv_dn_expand+set}" = set; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec type" >&5 +$as_echo_n "checking for struct timespec type... " >&6; } +if test "${samba_cv_struct_timespec+set}" = set; then : $as_echo_n "(cached) " >&6 else -- cat >conftest.$ac_ext <<_ACEOF +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lresolv $LIBS" +-cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func -- --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ - --#ifdef __STDC__ --# include --#else --# include --#endif -- --#undef $ac_func ++ + cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ + /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -52675,12 +51585,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#include +#include #endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me +-char dn_expand (); +#if TIME_WITH_SYS_TIME +# include +# include @@ -52690,12 +51595,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +# else +# include +# endif - #endif - ++#endif ++ int main () { --return $ac_func (); +-return dn_expand (); +struct timespec ts; ; return 0; @@ -52722,51 +51627,72 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- eval "$as_ac_var=yes" +- ac_cv_lib_resolv_dn_expand=yes +if ac_fn_c_try_compile "$LINENO"; then : + samba_cv_struct_timespec=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -- eval "$as_ac_var=no" +- ac_cv_lib_resolv_dn_expand=no + samba_cv_struct_timespec=no fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_dn_expand" >&5 +-$as_echo "$ac_cv_lib_resolv_dn_expand" >&6; } +-if test "x$ac_cv_lib_resolv_dn_expand" = x""yes; then - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-#define HAVE_LIBRESOLV 1 -_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_struct_timespec" >&5 +$as_echo "$samba_cv_struct_timespec" >&6; } +if test x"$samba_cv_struct_timespec" = x"yes"; then -- # putprpwnam was found in libc or existing $LIBS +- LIBS="-lresolv $LIBS" +$as_echo "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h -+fi + fi --cat >>confdefs.h <<\_ACEOF --#define HAVE_PUTPRPWNAM 1 +- +-{ $as_echo "$as_me:$LINENO: checking for _dn_expand in -lresolv" >&5 +-$as_echo_n "checking for _dn_expand in -lresolv... " >&6; } +-if test "${ac_cv_lib_resolv__dn_expand+set}" = set; then +# and glibc has setresuid under linux but the function does +# nothing until kernel 2.1.44! very dumb. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for real setresuid" >&5 +$as_echo_n "checking for real setresuid... " >&6; } +if test "${samba_cv_have_setresuid+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ + $as_echo_n "(cached) " >&6 + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lresolv $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char _dn_expand (); +-int +-main () +-{ +-return _dn_expand (); +- ; +- return 0; +-} + if test "$cross_compiling" = yes; then : + samba_cv_have_setresuid=cross +else @@ -52775,35 +51701,68 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#include +main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);} _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_lib_resolv__dn_expand=yes +if ac_fn_c_try_run "$LINENO"; then : + samba_cv_have_setresuid=yes -+else + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + samba_cv_have_setresuid=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi -+ -+fi + +- ac_cv_lib_resolv__dn_expand=no + fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_have_setresuid" >&5 +$as_echo "$samba_cv_have_setresuid" >&6; } +if test x"$samba_cv_have_setresuid" = x"yes"; then - ++ +$as_echo "#define HAVE_SETRESUID 1" >>confdefs.h -+fi +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_resolv__dn_expand" >&5 +-$as_echo "$ac_cv_lib_resolv__dn_expand" >&6; } +-if test "x$ac_cv_lib_resolv__dn_expand" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBRESOLV 1 +-_ACEOF +- LIBS="-lresolv $LIBS" +# Do the same check for setresguid... +# +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for real setresgid" >&5 +$as_echo_n "checking for real setresgid... " >&6; } +if test "${samba_cv_have_setresgid+set}" = set; then : + $as_echo_n "(cached) " >&6 - else - -- # putprpwnam was not found, try adding libsec -- case " $LIBS " in -- *\ -lsec\ *) ++else ++ + if test "$cross_compiling" = yes; then : + samba_cv_have_setresgid=cross +else @@ -52822,22 +51781,16 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi -- # putprpwnam was not found and we already had libsec -- # nothing to do here by default -- true -+fi + fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_have_setresgid" >&5 +$as_echo "$samba_cv_have_setresgid" >&6; } +if test x"$samba_cv_have_setresgid" = x"yes"; then -- ;; -- *) -- # putprpwnam was not found, try adding libsec -- { $as_echo "$as_me:$LINENO: checking for putprpwnam in -lsec" >&5 --$as_echo_n "checking for putprpwnam in -lsec... " >&6; } --if test "${ac_cv_lib_sec_putprpwnam+set}" = set; then +$as_echo "#define HAVE_SETRESGID 1" >>confdefs.h -+ + +-{ $as_echo "$as_me:$LINENO: checking for __dn_expand in -lresolv" >&5 +-$as_echo_n "checking for __dn_expand in -lresolv... " >&6; } +-if test "${ac_cv_lib_resolv___dn_expand+set}" = set; then +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 @@ -52846,7 +51799,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else - ac_check_lib_save_LIBS=$LIBS --LIBS="-lsec $LIBS" +-LIBS="-lresolv $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF @@ -52864,12 +51817,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#ifdef __cplusplus -extern "C" -#endif --char putprpwnam (); +-char __dn_expand (); +$ac_includes_default int main () { --return putprpwnam (); +-return __dn_expand (); + + /* Some versions of memcmp are not 8-bit clean. */ + char c0 = '\100', c1 = '\200', c2 = '\201'; @@ -52920,14 +51873,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- ac_cv_lib_sec_putprpwnam=yes +- ac_cv_lib_resolv___dn_expand=yes +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_memcmp_working=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_cv_lib_sec_putprpwnam=no +- ac_cv_lib_resolv___dn_expand=no + ac_cv_func_memcmp_working=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -52939,9 +51892,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_sec_putprpwnam" >&5 --$as_echo "$ac_cv_lib_sec_putprpwnam" >&6; } --if test "x$ac_cv_lib_sec_putprpwnam" = x""yes; then +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_resolv___dn_expand" >&5 +-$as_echo "$ac_cv_lib_resolv___dn_expand" >&6; } +-if test "x$ac_cv_lib_resolv___dn_expand" = x""yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 +$as_echo "$ac_cv_func_memcmp_working" >&6; } +test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in @@ -52949,46 +51902,46 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" + ;; +esac - -- LIBS="-lsec $LIBS" - - --cat >>confdefs.h <<\_ACEOF --#define HAVE_PUTPRPWNAM 1 --_ACEOF ++ ++ ++ +############################################### +# Readline included by default unless explicitly asked not to +test "${with_readline+set}" != "set" && with_readline=yes - ++ +# test for where we get readline() from +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use readline" >&5 +$as_echo_n "checking whether to use readline... " >&6; } - ++ +# Check whether --with-readline was given. +if test "${with_readline+set}" = set; then : + withval=$with_readline; case "$with_readline" in + yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } - --else ++ + for ac_header in readline.h history.h readline/readline.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF + cat >>confdefs.h <<_ACEOF +-#define HAVE_LIBRESOLV 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF + _ACEOF -+fi +- LIBS="-lresolv $LIBS" +- + fi -- # putprpwnam was not found in libsec -- # nothing to do here by default -- true +done +-# +-# Check for the functions putprpwnam, set_auth_parameters, +-# getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity +-# Needed for OSF1 and HPUX. +-# + for ac_header in readline/history.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "readline/history.h" "ac_cv_header_readline_history_h" "$ac_includes_default" @@ -52996,14 +51949,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat >>confdefs.h <<_ACEOF +#define HAVE_READLINE_HISTORY_H 1 +_ACEOF - - fi - -- ;; -- esac -- --fi - done ++ ++fi ++ ++done + for ac_header in readline.h readline/readline.h @@ -53016,9 +51965,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF -- -- --for ac_func in set_auth_parameters +-for ac_func in putprpwnam -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -53059,7 +52006,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -47778,100 +14567,41 @@ +@@ -47061,100 +14378,41 @@ #ifdef __cplusplus extern "C" #endif @@ -53133,22 +52080,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -- # set_auth_parameters was found in libc or existing $LIBS +- # putprpwnam was found in libc or existing $LIBS - - -cat >>confdefs.h <<\_ACEOF --#define HAVE_SET_AUTH_PARAMETERS 1 +-#define HAVE_PUTPRPWNAM 1 -_ACEOF - - - -else - -- # set_auth_parameters was not found, try adding libsecurity +- # putprpwnam was not found, try adding libsecurity - case " $LIBS " in - *\ -lsecurity\ *) - -- # set_auth_parameters was not found and we already had libsecurity +- # putprpwnam was not found and we already had libsecurity - # nothing to do here by default - true +eval as_val=\$$as_ac_Lib @@ -53158,10 +52105,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ;; - *) -- # set_auth_parameters was not found, try adding libsecurity -- { $as_echo "$as_me:$LINENO: checking for set_auth_parameters in -lsecurity" >&5 --$as_echo_n "checking for set_auth_parameters in -lsecurity... " >&6; } --if test "${ac_cv_lib_security_set_auth_parameters+set}" = set; then +- # putprpwnam was not found, try adding libsecurity +- { $as_echo "$as_me:$LINENO: checking for putprpwnam in -lsecurity" >&5 +-$as_echo_n "checking for putprpwnam in -lsecurity... " >&6; } +-if test "${ac_cv_lib_security_putprpwnam+set}" = set; then + done + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_callback_handler_install in -lreadline" >&5 +$as_echo_n "checking for rl_callback_handler_install in -lreadline... " >&6; } @@ -53180,16 +52127,16 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -47880,111 +14610,149 @@ +@@ -47163,111 +14421,106 @@ #ifdef __cplusplus extern "C" #endif --char set_auth_parameters (); +-char putprpwnam (); +char rl_callback_handler_install (); int main () { --return set_auth_parameters (); +-return putprpwnam (); +return rl_callback_handler_install (); ; return 0; @@ -53216,14 +52163,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- ac_cv_lib_security_set_auth_parameters=yes +- ac_cv_lib_security_putprpwnam=yes +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_readline_rl_callback_handler_install=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_cv_lib_security_set_auth_parameters=no +- ac_cv_lib_security_putprpwnam=no + ac_cv_lib_readline_rl_callback_handler_install=no fi - @@ -53234,9 +52181,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_security_set_auth_parameters" >&5 --$as_echo "$ac_cv_lib_security_set_auth_parameters" >&6; } --if test "x$ac_cv_lib_security_set_auth_parameters" = x""yes; then +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_security_putprpwnam" >&5 +-$as_echo "$ac_cv_lib_security_putprpwnam" >&6; } +-if test "x$ac_cv_lib_security_putprpwnam" = x""yes; then - - LIBS="-lsecurity $LIBS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_callback_handler_install" >&5 @@ -53247,7 +52194,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +$as_echo "#define HAVE_LIBREADLINE 1" >>confdefs.h -cat >>confdefs.h <<\_ACEOF --#define HAVE_SET_AUTH_PARAMETERS 1 +-#define HAVE_PUTPRPWNAM 1 -_ACEOF + break +else @@ -53273,7 +52220,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + _ldflags=${LDFLAGS} + _cppflags=${CPPFLAGS} -- # set_auth_parameters was not found in libsecurity +- # putprpwnam was not found in libsecurity - # nothing to do here by default - true + # Add additional search path @@ -53320,7 +52267,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF --for ac_func in set_auth_parameters +-for ac_func in putprpwnam -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -53350,58 +52297,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - +- -#ifdef __STDC__ -# include -#else -# include -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" - #endif -+char tgetent (); -+int -+main () -+{ -+return tgetent (); -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ eval "$as_ac_Lib=yes" -+else -+ eval "$as_ac_Lib=no" -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+eval ac_res=\$$as_ac_Lib -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+eval as_val=\$$as_ac_Lib -+ if test "x$as_val" = x""yes; then : -+ TERMLIBS="-l${termlib}"; break -+fi - +-#endif +- -#undef $ac_func -+ done -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_callback_handler_install in -lreadline" >&5 -+$as_echo_n "checking for rl_callback_handler_install in -lreadline... " >&6; } -+if test "${ac_cv_lib_readline_rl_callback_handler_install+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lreadline $TERMLIBS $LIBS" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -47992,100 +14760,67 @@ +@@ -47275,100 +14528,41 @@ #ifdef __cplusplus extern "C" #endif @@ -53413,11 +52320,125 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -choke me -#endif - -+char rl_callback_handler_install (); ++char tgetent (); int main () { -return $ac_func (); ++return tgetent (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" ++if ac_fn_c_try_link "$LINENO"; then : ++ eval "$as_ac_Lib=yes" + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" ++ eval "$as_ac_Lib=no" + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS + fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 ++eval ac_res=\$$as_ac_Lib ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 + $as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF +- +- # putprpwnam was found in libc or existing $LIBS +- +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_PUTPRPWNAM 1 +-_ACEOF +- +- +- +-else +- +- # putprpwnam was not found, try adding libsec +- case " $LIBS " in +- *\ -lsec\ *) +- +- # putprpwnam was not found and we already had libsec +- # nothing to do here by default +- true ++eval as_val=\$$as_ac_Lib ++ if test "x$as_val" = x""yes; then : ++ TERMLIBS="-l${termlib}"; break ++fi + +- ;; +- *) +- # putprpwnam was not found, try adding libsec +- { $as_echo "$as_me:$LINENO: checking for putprpwnam in -lsec" >&5 +-$as_echo_n "checking for putprpwnam in -lsec... " >&6; } +-if test "${ac_cv_lib_sec_putprpwnam+set}" = set; then ++ done ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_callback_handler_install in -lreadline" >&5 ++$as_echo_n "checking for rl_callback_handler_install in -lreadline... " >&6; } ++if test "${ac_cv_lib_readline_rl_callback_handler_install+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lsec $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++LIBS="-lreadline $TERMLIBS $LIBS" ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -47377,112 +14571,68 @@ + #ifdef __cplusplus + extern "C" + #endif +-char putprpwnam (); ++char rl_callback_handler_install (); + int + main () + { +-return putprpwnam (); +return rl_callback_handler_install (); ; return 0; @@ -53444,14 +52465,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- eval "$as_ac_var=yes" +- ac_cv_lib_sec_putprpwnam=yes +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_readline_rl_callback_handler_install=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -- eval "$as_ac_var=no" +- ac_cv_lib_sec_putprpwnam=no + ac_cv_lib_readline_rl_callback_handler_install=no fi - @@ -53459,198 +52480,73 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS - fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -- cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 --_ACEOF -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_callback_handler_install" >&5 -+$as_echo "$ac_cv_lib_readline_rl_callback_handler_install" >&6; } -+if test "x$ac_cv_lib_readline_rl_callback_handler_install" = x""yes; then : -+ TERMLDFLAGS="-L$with_readline/lib" -+ TERMCPPFLAGS="-I$with_readline/include" -+ CPPFLAGS="-I$with_readline/include $CPPFLAGS" -+ TERMLIBS="-lreadline $TERMLIBS" - -- # set_auth_parameters was found in libc or existing $LIBS -+$as_echo "#define HAVE_LIBREADLINE 1" >>confdefs.h - -+ break -+else -+ TERMLIBS= CPPFLAGS=$_cppflags -+fi - --cat >>confdefs.h <<\_ACEOF --#define HAVE_SET_AUTH_PARAMETERS 1 --_ACEOF -+fi - -+done - - -+ LDFLAGS=$_ldflags -+ ;; -+ esac - else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } - -- # set_auth_parameters was not found, try adding libsec -- case " $LIBS " in -- *\ -lsec\ *) -+fi - -- # set_auth_parameters was not found and we already had libsec -- # nothing to do here by default -- true - -- ;; -- *) -- # set_auth_parameters was not found, try adding libsec -- { $as_echo "$as_me:$LINENO: checking for set_auth_parameters in -lsec" >&5 --$as_echo_n "checking for set_auth_parameters in -lsec... " >&6; } --if test "${ac_cv_lib_sec_set_auth_parameters+set}" = set; then -+ -+ -+# The readline API changed slightly from readline3 to readline4, so -+# code will generate warnings on one of them unless we have a few -+# special cases. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_completion_matches in -lreadline" >&5 -+$as_echo_n "checking for rl_completion_matches in -lreadline... " >&6; } -+if test "${ac_cv_lib_readline_rl_completion_matches+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS --LIBS="-lsec $LIBS" --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+LIBS="-lreadline $TERMLIBS $LIBS" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -48094,113 +14829,55 @@ - #ifdef __cplusplus - extern "C" - #endif --char set_auth_parameters (); -+char rl_completion_matches (); - int - main () - { --return set_auth_parameters (); -+return rl_completion_matches (); - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- ac_cv_lib_sec_set_auth_parameters=yes -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_readline_rl_completion_matches=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_lib_sec_set_auth_parameters=no -+ ac_cv_lib_readline_rl_completion_matches=no - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_sec_set_auth_parameters" >&5 --$as_echo "$ac_cv_lib_sec_set_auth_parameters" >&6; } --if test "x$ac_cv_lib_sec_set_auth_parameters" = x""yes; then +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_sec_putprpwnam" >&5 +-$as_echo "$ac_cv_lib_sec_putprpwnam" >&6; } +-if test "x$ac_cv_lib_sec_putprpwnam" = x""yes; then - - LIBS="-lsec $LIBS" - - -cat >>confdefs.h <<\_ACEOF --#define HAVE_SET_AUTH_PARAMETERS 1 +-#define HAVE_PUTPRPWNAM 1 -_ACEOF - -- -- --else -- -- -- # set_auth_parameters was not found in libsec ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_callback_handler_install" >&5 ++$as_echo "$ac_cv_lib_readline_rl_callback_handler_install" >&6; } ++if test "x$ac_cv_lib_readline_rl_callback_handler_install" = x""yes; then : ++ TERMLDFLAGS="-L$with_readline/lib" ++ TERMCPPFLAGS="-I$with_readline/include" ++ CPPFLAGS="-I$with_readline/include $CPPFLAGS" ++ TERMLIBS="-lreadline $TERMLIBS" + ++$as_echo "#define HAVE_LIBREADLINE 1" >>confdefs.h + ++ break + else ++ TERMLIBS= CPPFLAGS=$_cppflags ++fi + ++fi + +- # putprpwnam was not found in libsec - # nothing to do here by default - true -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_completion_matches" >&5 -+$as_echo "$ac_cv_lib_readline_rl_completion_matches" >&6; } -+if test "x$ac_cv_lib_readline_rl_completion_matches" = x""yes; then : +- ++done -+$as_echo "#define HAVE_NEW_LIBREADLINE 1" >>confdefs.h - - fi +-fi - ;; - esac - -+# not all readline libs have rl_event_hook or history_list -+ac_fn_c_check_decl "$LINENO" "rl_event_hook" "ac_cv_have_decl_rl_event_hook" "#include -+" -+if test "x$ac_cv_have_decl_rl_event_hook" = x""yes; then : -+ ac_have_decl=1 ++ LDFLAGS=$_ldflags ++ ;; ++ esac +else -+ ac_have_decl=0 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } + fi -done - -- -- --# UnixWare 7.x has its getspnam in -lgen -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL_RL_EVENT_HOOK $ac_have_decl -+_ACEOF --for ac_func in getspnam + + +-for ac_func in set_auth_parameters -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for history_list in -lreadline" >&5 -+$as_echo_n "checking for history_list in -lreadline... " >&6; } -+if test "${ac_cv_lib_readline_history_list+set}" = set; then : ++# The readline API changed slightly from readline3 to readline4, so ++# code will generate warnings on one of them unless we have a few ++# special cases. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_completion_matches in -lreadline" >&5 ++$as_echo_n "checking for rl_completion_matches in -lreadline... " >&6; } ++if test "${ac_cv_lib_readline_rl_completion_matches+set}" = set; then : $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF @@ -53681,7 +52577,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -48208,100 +14885,42 @@ +@@ -47490,100 +14640,54 @@ #ifdef __cplusplus extern "C" #endif @@ -53693,12 +52589,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -choke me -#endif - -+char history_list (); ++char rl_completion_matches (); int main () { -return $ac_func (); -+return history_list (); ++return rl_completion_matches (); ; return 0; } @@ -53726,13 +52622,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - }; then - eval "$as_ac_var=yes" +if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_readline_history_list=yes ++ ac_cv_lib_readline_rl_completion_matches=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -+ ac_cv_lib_readline_history_list=no ++ ac_cv_lib_readline_rl_completion_matches=no fi - -rm -rf conftest.dSYM @@ -53753,36 +52649,159 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -- # getspnam was found in libc or existing $LIBS +- # set_auth_parameters was found in libc or existing $LIBS +- ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_completion_matches" >&5 ++$as_echo "$ac_cv_lib_readline_rl_completion_matches" >&6; } ++if test "x$ac_cv_lib_readline_rl_completion_matches" = x""yes; then : + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_SET_AUTH_PARAMETERS 1 +-_ACEOF ++$as_echo "#define HAVE_NEW_LIBREADLINE 1" >>confdefs.h + ++fi + + ++# not all readline libs have rl_event_hook or history_list ++ac_fn_c_check_decl "$LINENO" "rl_event_hook" "ac_cv_have_decl_rl_event_hook" "#include ++" ++if test "x$ac_cv_have_decl_rl_event_hook" = x""yes; then : ++ ac_have_decl=1 + else ++ ac_have_decl=0 ++fi + +- # set_auth_parameters was not found, try adding libsecurity +- case " $LIBS " in +- *\ -lsecurity\ *) +- +- # set_auth_parameters was not found and we already had libsecurity +- # nothing to do here by default +- true ++cat >>confdefs.h <<_ACEOF ++#define HAVE_DECL_RL_EVENT_HOOK $ac_have_decl ++_ACEOF + +- ;; +- *) +- # set_auth_parameters was not found, try adding libsecurity +- { $as_echo "$as_me:$LINENO: checking for set_auth_parameters in -lsecurity" >&5 +-$as_echo_n "checking for set_auth_parameters in -lsecurity... " >&6; } +-if test "${ac_cv_lib_security_set_auth_parameters+set}" = set; then ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for history_list in -lreadline" >&5 ++$as_echo_n "checking for history_list in -lreadline... " >&6; } ++if test "${ac_cv_lib_readline_history_list+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lsecurity $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++LIBS="-lreadline $TERMLIBS $LIBS" ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -47592,111 +14696,43 @@ + #ifdef __cplusplus + extern "C" + #endif +-char set_auth_parameters (); ++char history_list (); + int + main () + { +-return set_auth_parameters (); ++return history_list (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_lib_security_set_auth_parameters=yes ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_readline_history_list=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_security_set_auth_parameters=no ++ ac_cv_lib_readline_history_list=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_security_set_auth_parameters" >&5 +-$as_echo "$ac_cv_lib_security_set_auth_parameters" >&6; } +-if test "x$ac_cv_lib_security_set_auth_parameters" = x""yes; then +- +- LIBS="-lsecurity $LIBS" - - -cat >>confdefs.h <<\_ACEOF --#define HAVE_GETSPNAM 1 +-#define HAVE_SET_AUTH_PARAMETERS 1 -_ACEOF - - +- +-else +- +- +- # set_auth_parameters was not found in libsecurity +- # nothing to do here by default +- true +- +- +-fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_history_list" >&5 +$as_echo "$ac_cv_lib_readline_history_list" >&6; } +if test "x$ac_cv_lib_readline_history_list" = x""yes; then : --else +- ;; +- esac +$as_echo "#define HAVE_HISTORY_LIST 1" >>confdefs.h -- # getspnam was not found, try adding libgen -- case " $LIBS " in -- *\ -lgen\ *) -+fi + fi +-done -- # getspnam was not found and we already had libgen -- # nothing to do here by default -- true -- ;; -- *) -- # getspnam was not found, try adding libgen -- { $as_echo "$as_me:$LINENO: checking for getspnam in -lgen" >&5 --$as_echo_n "checking for getspnam in -lgen... " >&6; } --if test "${ac_cv_lib_gen_getspnam+set}" = set; then +- +- +-for ac_func in set_auth_parameters +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +############################################### +# test for where we get yp_get_default_domain() from +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing yp_get_default_domain" >&5 @@ -53790,9 +52809,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +if test "${ac_cv_search_yp_get_default_domain+set}" = set; then : $as_echo_n "(cached) " >&6 else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lgen $LIBS" --cat >conftest.$ac_ext <<_ACEOF +- cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext @@ -53800,18 +52817,42 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func /* Override any GCC internal prototype to avoid an error. -@@ -48310,213 +14929,299 @@ + Use char because int might match the return type of a GCC +@@ -47704,316 +14740,299 @@ #ifdef __cplusplus extern "C" #endif --char getspnam (); +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +char yp_get_default_domain (); int main () { --return getspnam (); +-return $ac_func (); +return yp_get_default_domain (); ; return 0; @@ -53838,7 +52879,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- ac_cv_lib_gen_getspnam=yes +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +for ac_lib in '' nsl; do + if test -z "$ac_lib"; then + ac_res="none required" @@ -53856,44 +52900,48 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi +done +if test "${ac_cv_search_yp_get_default_domain+set}" = set; then : -+ - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 + +- eval "$as_ac_var=no" ++else + ac_cv_search_yp_get_default_domain=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS -+fi + fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_yp_get_default_domain" >&5 +$as_echo "$ac_cv_search_yp_get_default_domain" >&6; } +ac_res=$ac_cv_search_yp_get_default_domain +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -- ac_cv_lib_gen_getspnam=no - fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS + fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ +for ac_func in yp_get_default_domain +do : + ac_fn_c_check_func "$LINENO" "yp_get_default_domain" "ac_cv_func_yp_get_default_domain" +if test "x$ac_cv_func_yp_get_default_domain" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define HAVE_YP_GET_DEFAULT_DOMAIN 1 -+_ACEOF -+ - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_gen_getspnam" >&5 --$as_echo "$ac_cv_lib_gen_getspnam" >&6; } --if test "x$ac_cv_lib_gen_getspnam" = x""yes; then + _ACEOF + +- # set_auth_parameters was found in libc or existing $LIBS ++fi +done -- LIBS="-lgen $LIBS" +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_SET_AUTH_PARAMETERS 1 +# Check if we have execl, if not we need to compile smbrun. +for ac_func in execl +do : @@ -53901,17 +52949,82 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +if test "x$ac_cv_func_execl" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_EXECL 1 -+_ACEOF -+ + _ACEOF + +fi +done --cat >>confdefs.h <<\_ACEOF --#define HAVE_GETSPNAM 1 +if test x"$ac_cv_func_execl" = x"no"; then + EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)" +fi -+ + +-else +- +- # set_auth_parameters was not found, try adding libsec +- case " $LIBS " in +- *\ -lsec\ *) +- +- # set_auth_parameters was not found and we already had libsec +- # nothing to do here by default +- true +- +- ;; +- *) +- # set_auth_parameters was not found, try adding libsec +- { $as_echo "$as_me:$LINENO: checking for set_auth_parameters in -lsec" >&5 +-$as_echo_n "checking for set_auth_parameters in -lsec... " >&6; } +-if test "${ac_cv_lib_sec_set_auth_parameters+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lsec $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char set_auth_parameters (); +-int +-main () +-{ +-return set_auth_parameters (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_lib_sec_set_auth_parameters=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +for ac_func in getcwd fchown chmod fchmod mknod mknod64 +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -53921,8 +53034,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -+ -+fi + +- ac_cv_lib_sec_set_auth_parameters=no + fi +done + +for ac_func in strtol @@ -53931,12 +53045,48 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +if test "x$ac_cv_func_strtol" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRTOL 1 ++_ACEOF + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_sec_set_auth_parameters" >&5 +-$as_echo "$ac_cv_lib_sec_set_auth_parameters" >&6; } +-if test "x$ac_cv_lib_sec_set_auth_parameters" = x""yes; then ++done + +- LIBS="-lsec $LIBS" ++for ac_func in strchr chflags ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF + ++fi ++done + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_SET_AUTH_PARAMETERS 1 ++for ac_func in getrlimit fsync fdatasync setpgid ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF +fi +done -+for ac_func in strchr chflags ++for ac_func in setsid glob strpbrk crypt16 getauthuid +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -53950,7 +53100,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi +done -+for ac_func in getrlimit fsync fdatasync setpgid ++for ac_func in sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -53960,13 +53110,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -- # getspnam was not found in libgen +- # set_auth_parameters was not found in libsec - # nothing to do here by default - true +fi +done -+for ac_func in setsid glob strpbrk crypt16 getauthuid ++for ac_func in initgroups select poll rdchk getgrnam getgrent pathconf +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -53981,7 +53131,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ;; - esac -+for ac_func in sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent ++for ac_func in setpriv setgidx setuidx setgroups sysconf stat64 fstat64 +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -53994,7 +53144,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi done -+for ac_func in initgroups select poll rdchk getgrnam getgrent pathconf ++for ac_func in lstat64 fopen64 atexit grantpt lseek64 ftruncate64 posix_fallocate posix_fallocate64 +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -54007,7 +53157,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi +done -+for ac_func in setpriv setgidx setuidx setgroups sysconf stat64 fstat64 +-# UnixWare 7.x has its getspnam in -lgen ++for ac_func in fseek64 fseeko64 ftell64 ftello64 setluid getpwanam +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -54030,7 +53181,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -+for ac_func in lstat64 fopen64 atexit grantpt lseek64 ftruncate64 ++for ac_func in opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64 +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -54050,28 +53201,24 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -+fi -+done - +- -#ifdef __STDC__ -# include -#else -# include -#endif -+for ac_func in fseek64 fseeko64 ftell64 ftello64 setluid getpwanam -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+eval as_val=\$$as_ac_var -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF - --#undef $ac_func +fi +done +-#undef $ac_func ++for ac_func in getpwent_r ++do : ++ ac_fn_c_check_func "$LINENO" "getpwent_r" "ac_cv_func_getpwent_r" ++if test "x$ac_cv_func_getpwent_r" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_GETPWENT_R 1 ++_ACEOF + -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ @@ -54085,15 +53232,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -+for ac_func in opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64 -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+eval as_val=\$$as_ac_var -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF ++fi ++done -int -main () @@ -54102,15 +53242,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} -+fi -+done -+ -+for ac_func in getpwent_r ++for ac_func in getdents64 +do : -+ ac_fn_c_check_func "$LINENO" "getpwent_r" "ac_cv_func_getpwent_r" -+if test "x$ac_cv_func_getpwent_r" = x""yes; then : ++ ac_fn_c_check_func "$LINENO" "getdents64" "ac_cv_func_getdents64" ++if test "x$ac_cv_func_getdents64" = x""yes; then : + cat >>confdefs.h <<_ACEOF -+#define HAVE_GETPWENT_R 1 ++#define HAVE_GETDENTS64 1 _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" @@ -54141,19 +53278,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - eval "$as_ac_var=no" fi +done -+ -+for ac_func in getdents64 -+do : -+ ac_fn_c_check_func "$LINENO" "getdents64" "ac_cv_func_getdents64" -+if test "x$ac_cv_func_getdents64" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_GETDENTS64 1 -+_ACEOF -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - fi +-fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -54161,8 +53290,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+done -+ +for ac_func in setenv strcasecmp fcvt fcvtl +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -54176,7 +53303,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - # getspnam was found in libc or existing $LIBS +fi +done - ++ +for ac_func in syslog vsyslog timegm +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -54187,11 +53314,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF --cat >>confdefs.h <<\_ACEOF --#define HAVE_GETSPNAM 1 +fi +done -+ + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_GETSPNAM 1 +for ac_func in setlocale nl_langinfo +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -54215,11 +53342,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else -- # getspnam was not found, try adding libsecurity +- # getspnam was not found, try adding libgen - case " $LIBS " in -- *\ -lsecurity\ *) +- *\ -lgen\ *) -- # getspnam was not found and we already had libsecurity +- # getspnam was not found and we already had libgen - # nothing to do here by default - true +ac_check_lib_ext_save_LIBS=$LIBS @@ -54227,10 +53354,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ;; - *) -- # getspnam was not found, try adding libsecurity -- { $as_echo "$as_me:$LINENO: checking for getspnam in -lsecurity" >&5 --$as_echo_n "checking for getspnam in -lsecurity... " >&6; } --if test "${ac_cv_lib_security_getspnam+set}" = set; then +- # getspnam was not found, try adding libgen +- { $as_echo "$as_me:$LINENO: checking for getspnam in -lgen" >&5 +-$as_echo_n "checking for getspnam in -lgen... " >&6; } +-if test "${ac_cv_lib_gen_getspnam+set}" = set; then + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nanosleep in -lrt" >&5 @@ -54239,7 +53366,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else - ac_check_lib_save_LIBS=$LIBS --LIBS="-lsecurity $LIBS" +-LIBS="-lgen $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF @@ -54249,7 +53376,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -48525,111 +15230,155 @@ +@@ -48022,112 +15041,179 @@ #ifdef __cplusplus extern "C" #endif @@ -54285,31 +53412,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- ac_cv_lib_security_getspnam=yes +- ac_cv_lib_gen_getspnam=yes +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ext_rt_nanosleep=yes; + ac_cv_lib_ext_rt=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_lib_security_getspnam=no + ac_cv_lib_ext_rt_nanosleep=no; + ac_cv_lib_ext_rt=no - fi ++fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS +- ac_cv_lib_gen_getspnam=no fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_security_getspnam" >&5 --$as_echo "$ac_cv_lib_security_getspnam" >&6; } --if test "x$ac_cv_lib_security_getspnam" = x""yes; then -- -- LIBS="-lsecurity $LIBS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_rt_nanosleep" >&5 +$as_echo "$ac_cv_lib_ext_rt_nanosleep" >&6; } + if test $ac_cv_lib_ext_rt_nanosleep = yes; then : @@ -54317,16 +53434,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define HAVE_NANOSLEEP 1 +_ACEOF -+fi +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_gen_getspnam" >&5 +-$as_echo "$ac_cv_lib_gen_getspnam" >&6; } +-if test "x$ac_cv_lib_gen_getspnam" = x""yes; then +LIBS=$ac_check_lib_ext_save_LIBS --cat >>confdefs.h <<\_ACEOF --#define HAVE_GETSPNAM 1 +- LIBS="-lgen $LIBS" +if test $ac_cv_lib_ext_rt = yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBRT 1 - _ACEOF - ++_ACEOF ++ + case "$LIBS" in + *-lrt*) + ;; @@ -54336,10 +53459,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + esac --else +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_GETSPNAM 1 +fi +fi +done ++ ++for ac_func in utimensat ++do : ++ ac_fn_c_check_func "$LINENO" "utimensat" "ac_cv_func_utimensat" ++if test "x$ac_cv_func_utimensat" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_UTIMENSAT 1 + _ACEOF + ++fi ++done +for ac_func in mlock munlock mlockall munlockall +do : @@ -54351,9 +53486,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -- # getspnam was not found in libsecurity -- # nothing to do here by default -- true +-else +fi +done @@ -54367,11 +53500,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF - fi +- # getspnam was not found in libgen +- # nothing to do here by default +- true ++fi +done -- ;; -- esac +for ac_header in sys/mman.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" @@ -54381,9 +53515,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +_ACEOF fi -+ - done +- ;; +- esac ++done ++ +# setbuffer, shmget, shm_open are needed for smbtorture +for ac_func in shmget shm_open +do : @@ -54394,11 +53530,24 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -+ + + fi + done + ++for ac_func in gettext dgettext ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF + +fi +done -+for ac_func in gettext dgettext ++for ac_func in bindtextdomain textdomain +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -54476,7 +53625,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -48637,100 +15386,66 @@ +@@ -48135,100 +15221,66 @@ #ifdef __cplusplus extern "C" #endif @@ -54588,27 +53737,27 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - -else - -- # getspnam was not found, try adding libsec +- # getspnam was not found, try adding libsecurity - case " $LIBS " in -- *\ -lsec\ *) +- *\ -lsecurity\ *) - -- # getspnam was not found and we already had libsec +- # getspnam was not found and we already had libsecurity - # nothing to do here by default - true - - ;; - *) -- # getspnam was not found, try adding libsec -- { $as_echo "$as_me:$LINENO: checking for getspnam in -lsec" >&5 --$as_echo_n "checking for getspnam in -lsec... " >&6; } --if test "${ac_cv_lib_sec_getspnam+set}" = set; then +- # getspnam was not found, try adding libsecurity +- { $as_echo "$as_me:$LINENO: checking for getspnam in -lsecurity" >&5 +-$as_echo_n "checking for getspnam in -lsecurity... " >&6; } +-if test "${ac_cv_lib_security_getspnam+set}" = set; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for trace_back_stack in -lexc" >&5 +$as_echo_n "checking for trace_back_stack in -lexc... " >&6; } +if test "${ac_cv_lib_exc_trace_back_stack+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS --LIBS="-lsec $LIBS" +-LIBS="-lsecurity $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF @@ -54619,7 +53768,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -48739,213 +15454,191 @@ +@@ -48237,212 +15289,191 @@ #ifdef __cplusplus extern "C" #endif @@ -54655,14 +53804,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- ac_cv_lib_sec_getspnam=yes +- ac_cv_lib_security_getspnam=yes +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_exc_trace_back_stack=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_cv_lib_sec_getspnam=no +- ac_cv_lib_security_getspnam=no + ac_cv_lib_exc_trace_back_stack=no fi - @@ -54673,25 +53822,38 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_sec_getspnam" >&5 --$as_echo "$ac_cv_lib_sec_getspnam" >&6; } --if test "x$ac_cv_lib_sec_getspnam" = x""yes; then +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_security_getspnam" >&5 +-$as_echo "$ac_cv_lib_security_getspnam" >&6; } +-if test "x$ac_cv_lib_security_getspnam" = x""yes; then +- +- LIBS="-lsecurity $LIBS" +- +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_GETSPNAM 1 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_exc_trace_back_stack" >&5 +$as_echo "$ac_cv_lib_exc_trace_back_stack" >&6; } +if test "x$ac_cv_lib_exc_trace_back_stack" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBEXC 1 -+_ACEOF + _ACEOF -- LIBS="-lsec $LIBS" +- +- +-else +- +- +- # getspnam was not found in libsecurity +- # nothing to do here by default +- true +- + LIBS="-lexc $LIBS" -+fi - --cat >>confdefs.h <<\_ACEOF --#define HAVE_GETSPNAM 1 --_ACEOF + fi +- ;; +- esac ++ +# check for sysctlbyname for BSD systems +for ac_func in sysctlbyname +do : @@ -54701,77 +53863,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define HAVE_SYSCTLBYNAME 1 +_ACEOF -+fi -+done - --else - -+############################# -+# check if building with gpfs -+for ac_header in gpfs_gpl.h -+do : -+ ac_fn_c_check_header_mongrel "$LINENO" "gpfs_gpl.h" "ac_cv_header_gpfs_gpl_h" "$ac_includes_default" -+if test "x$ac_cv_header_gpfs_gpl_h" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_GPFS_GPL_H 1 -+_ACEOF - -- # getspnam was not found in libsec -- # nothing to do here by default -- true -+fi - -+done - --fi -+if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then - -- ;; -- esac -+$as_echo "#define HAVE_GPFS 1" >>confdefs.h - -+ default_shared_modules="$default_shared_modules vfs_gpfs" fi --done + done -+############################################# -+# check if building on Isilon OneFS -+printf "%s" "checking for Isilon OneFS... " -+save_LIBS="$LIBS" -+LIBS="$LIBS -lisi_version" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+get_isilon_copyright() -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ samba_cv_HAVE_ONEFS=yes -+else -+ samba_cv_HAVE_ONEFS=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+echo $samba_cv_HAVE_ONEFS -+if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then -+$as_echo "#define HAVE_ONEFS 1" >>confdefs.h - -+ default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs" -+ default_static_modules="$default_static_modules" -+ ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util" -+ # Need to also add general libs for oplocks support -+ save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat" -+fi - -+LIBS="$save_LIBS" - --for ac_func in bigcrypt +- +- +-for ac_func in getspnam -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -54781,31 +53879,26 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ --_ACEOF ++############################# ++# check if building with gpfs ++for ac_header in gpfs_gpl.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "gpfs_gpl.h" "ac_cv_header_gpfs_gpl_h" "$ac_includes_default" ++if test "x$ac_cv_header_gpfs_gpl_h" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_GPFS_GPL_H 1 + _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -+# Note that all the libunwind symbols in the API are defined to internal -+# platform-specific version, so we must include libunwind.h before checking -+# any of them. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libunwind" >&5 -+$as_echo_n "checking for libunwind... " >&6; } -+save_LIBS=$LIBS -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -+UNWIND_ARCH="unknown" -+if test x"$UNAME_I" != x"unknown"; then -+ UNWIND_ARCH="$UNAME_I" -+elif test x"$UNAME_M" != x"unknown"; then -+ UNWIND_ARCH="$UNAME_M" -+elif test x"$UNAME_P" != x"unknown"; then -+ UNWIND_ARCH="$UNAME_P" +fi -#ifdef __STDC__ @@ -54813,26 +53906,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#else -# include -#endif -+case "$UNWIND_ARCH" in -+ unknown) -+ # This probably won't link without -+ # the platform-specific libunwind. -+ LIBS="$LIBS -lunwind" -+ ;; -+ i386|i586|i686) -+ # Add the platform-specific libunwind module. -+ LIBS="$LIBS -lunwind -lunwind-x86" -+ ;; -+ *) -+ # Add the platform-specific libunwind module. -+ # based on uname -i, uname -m or uname -p -+ LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH" -+ ;; -+esac ++done -#undef $ac_func -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ ++if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -54846,20 +53923,25 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -+#ifdef HAVE_LIBUNWIND_H -+#include - #endif +-#endif ++$as_echo "#define HAVE_GPFS 1" >>confdefs.h ++ ++ default_shared_modules="$default_shared_modules vfs_gpfs" ++fi ++############################################# ++# check if building on Isilon OneFS ++printf "%s" "checking for Isilon OneFS... " ++save_LIBS="$LIBS" ++LIBS="$LIBS -lisi_version" ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include int main () { -return $ac_func (); -+ -+ unw_context_t ctx; unw_cursor_t cur; -+ char buf[256]; unw_word_t off; -+ unw_getcontext(&ctx); unw_init_local(&cur, &ctx); -+ unw_get_proc_name(&cur, buf, sizeof(buf), &off); -+ ++get_isilon_copyright() ; return 0; } @@ -54886,18 +53968,48 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" --else ++if ac_fn_c_try_link "$LINENO"; then : ++ samba_cv_HAVE_ONEFS=yes + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++ samba_cv_HAVE_ONEFS=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++echo $samba_cv_HAVE_ONEFS ++if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then + - eval "$as_ac_var=no" --fi -+if ac_fn_c_try_link "$LINENO"; then : ++$as_echo "#define HAVE_ONEFS 1" >>confdefs.h ++ ++ default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs" ++ default_static_modules="$default_static_modules" ++ ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util" ++ # Need to also add general libs for oplocks support ++ save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat" + fi -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext --fi ++LIBS="$save_LIBS" ++ ++# Note that all the libunwind symbols in the API are defined to internal ++# platform-specific version, so we must include libunwind.h before checking ++# any of them. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libunwind" >&5 ++$as_echo_n "checking for libunwind... " >&6; } ++save_LIBS=$LIBS ++ ++UNWIND_ARCH="unknown" ++if test x"$UNAME_I" != x"unknown"; then ++ UNWIND_ARCH="$UNAME_I" ++elif test x"$UNAME_M" != x"unknown"; then ++ UNWIND_ARCH="$UNAME_M" ++elif test x"$UNAME_P" != x"unknown"; then ++ UNWIND_ARCH="$UNAME_P" + fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -54908,15 +54020,59 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF + +- # getspnam was found in libc or existing $LIBS ++case "$UNWIND_ARCH" in ++ unknown) ++ # This probably won't link without ++ # the platform-specific libunwind. ++ LIBS="$LIBS -lunwind" ++ ;; ++ i386|i586|i686) ++ # Add the platform-specific libunwind module. ++ LIBS="$LIBS -lunwind -lunwind-x86" ++ ;; ++ *) ++ # Add the platform-specific libunwind module. ++ # based on uname -i, uname -m or uname -p ++ LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH" ++ ;; ++esac ++ ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++#ifdef HAVE_LIBUNWIND_H ++#include ++#endif ++ ++int ++main () ++{ + ++ unw_context_t ctx; unw_cursor_t cur; ++ char buf[256]; unw_word_t off; ++ unw_getcontext(&ctx); unw_init_local(&cur, &ctx); ++ unw_get_proc_name(&cur, buf, sizeof(buf), &off); + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_GETSPNAM 1 ++ ; ++ return 0; ++} + _ACEOF ++if ac_fn_c_try_link "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } -- # bigcrypt was found in libc or existing $LIBS +$as_echo "#define HAVE_LIBUNWIND 1" >>confdefs.h +-else --cat >>confdefs.h <<\_ACEOF --#define HAVE_BIGCRYPT 1 +- # getspnam was not found, try adding libsec +- case " $LIBS " in +- *\ -lsec\ *) + # If we have libunwind, test whether we also have libunwind-ptrace + # which would let us unwind arbitrary processes. + save_LIBS=$LIBS @@ -54926,35 +54082,28 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +if test "x$ac_cv_header_libunwind_ptrace_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBUNWIND_PTRACE_H 1 - _ACEOF ++_ACEOF -+fi - -+done - --else -- -- # bigcrypt was not found, try adding libsecurity -- case " $LIBS " in -- *\ -lsecurity\ *) -- -- # bigcrypt was not found and we already had libsecurity +- # getspnam was not found and we already had libsec - # nothing to do here by default - true -- ++fi + - ;; - *) -- # bigcrypt was not found, try adding libsecurity -- { $as_echo "$as_me:$LINENO: checking for bigcrypt in -lsecurity" >&5 --$as_echo_n "checking for bigcrypt in -lsecurity... " >&6; } --if test "${ac_cv_lib_security_bigcrypt+set}" = set; then +- # getspnam was not found, try adding libsec +- { $as_echo "$as_me:$LINENO: checking for getspnam in -lsec" >&5 +-$as_echo_n "checking for getspnam in -lsec... " >&6; } +-if test "${ac_cv_lib_sec_getspnam+set}" = set; then ++done ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _UPT_create in -lunwind-ptrace" >&5 +$as_echo_n "checking for _UPT_create in -lunwind-ptrace... " >&6; } +if test "${ac_cv_lib_unwind_ptrace__UPT_create+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS --LIBS="-lsecurity $LIBS" +-LIBS="-lsec $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF @@ -54965,16 +54114,16 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -48954,754 +15647,594 @@ +@@ -48451,969 +15482,594 @@ #ifdef __cplusplus extern "C" #endif --char bigcrypt (); +-char getspnam (); +char _UPT_create (); int main () { --return bigcrypt (); +-return getspnam (); +return _UPT_create (); ; return 0; @@ -55001,14 +54150,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- ac_cv_lib_security_bigcrypt=yes +- ac_cv_lib_sec_getspnam=yes +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_unwind_ptrace__UPT_create=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_cv_lib_security_bigcrypt=no +- ac_cv_lib_sec_getspnam=no + ac_cv_lib_unwind_ptrace__UPT_create=no fi - @@ -55019,18 +54168,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_security_bigcrypt" >&5 --$as_echo "$ac_cv_lib_security_bigcrypt" >&6; } --if test "x$ac_cv_lib_security_bigcrypt" = x""yes; then +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_sec_getspnam" >&5 +-$as_echo "$ac_cv_lib_sec_getspnam" >&6; } +-if test "x$ac_cv_lib_sec_getspnam" = x""yes; then - -- LIBS="-lsecurity $LIBS" +- LIBS="-lsec $LIBS" - +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_unwind_ptrace__UPT_create" >&5 +$as_echo "$ac_cv_lib_unwind_ptrace__UPT_create" >&6; } +if test "x$ac_cv_lib_unwind_ptrace__UPT_create" = x""yes; then : -cat >>confdefs.h <<\_ACEOF --#define HAVE_BIGCRYPT 1 +-#define HAVE_GETSPNAM 1 -_ACEOF + LIBUNWIND_PTRACE="-lunwind-ptrace"; @@ -55040,7 +54189,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else - - -- # bigcrypt was not found in libsecurity +- # getspnam was not found in libsec - # nothing to do here by default - true - @@ -55050,9 +54199,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ;; - esac - +- -fi -done + + LIBS=$save_LIBS +else @@ -55193,19 +54343,30 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -- cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 --_ACEOF +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi ++ ++ ++ ++for ac_func in _dup _dup2 _opendir _readdir _seekdir _telldir _closedir ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 + _ACEOF - # bigcrypt was found in libc or existing $LIBS - +- ++fi ++done -cat >>confdefs.h <<\_ACEOF -#define HAVE_BIGCRYPT 1 -+for ac_func in _dup _dup2 _opendir _readdir _seekdir _telldir _closedir ++for ac_func in __dup __dup2 __opendir __readdir __seekdir __telldir __closedir +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -55218,23 +54379,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi +done -+for ac_func in __dup __dup2 __opendir __readdir __seekdir __telldir __closedir -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+eval as_val=\$$as_ac_var -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF - --else -+fi -+done - -- # bigcrypt was not found, try adding libsec -- case " $LIBS " in -- *\ -lsec\ *) +for ac_func in __getcwd _getcwd +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -55245,7 +54389,24 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -- # bigcrypt was not found and we already had libsec +-else ++fi ++done + +- # bigcrypt was not found, try adding libsecurity +- case " $LIBS " in +- *\ -lsecurity\ *) ++for ac_func in __xstat __fxstat __lxstat ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF + +- # bigcrypt was not found and we already had libsecurity - # nothing to do here by default - true +fi @@ -55253,17 +54414,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ;; - *) -- # bigcrypt was not found, try adding libsec -- { $as_echo "$as_me:$LINENO: checking for bigcrypt in -lsec" >&5 --$as_echo_n "checking for bigcrypt in -lsec... " >&6; } --if test "${ac_cv_lib_sec_bigcrypt+set}" = set; then +- # bigcrypt was not found, try adding libsecurity +- { $as_echo "$as_me:$LINENO: checking for bigcrypt in -lsecurity" >&5 +-$as_echo_n "checking for bigcrypt in -lsecurity... " >&6; } +-if test "${ac_cv_lib_security_bigcrypt+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS --LIBS="-lsec $LIBS" +-LIBS="-lsecurity $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -+for ac_func in __xstat __fxstat __lxstat ++for ac_func in _stat _lstat _fstat __stat __lstat __fstat +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -55293,7 +54454,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi +done + -+for ac_func in _stat _lstat _fstat __stat __lstat __fstat ++for ac_func in _acl __acl _facl __facl _open __open _chdir __chdir +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -55323,16 +54484,16 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- ac_cv_lib_sec_bigcrypt=yes +- ac_cv_lib_security_bigcrypt=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ac_cv_lib_sec_bigcrypt=no +- ac_cv_lib_security_bigcrypt=no fi +done + -+for ac_func in _acl __acl _facl __facl _open __open _chdir __chdir ++for ac_func in _close __close _fchdir __fchdir _fcntl __fcntl +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -55347,13 +54508,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_sec_bigcrypt" >&5 --$as_echo "$ac_cv_lib_sec_bigcrypt" >&6; } --if test "x$ac_cv_lib_sec_bigcrypt" = x""yes; then +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_security_bigcrypt" >&5 +-$as_echo "$ac_cv_lib_security_bigcrypt" >&6; } +-if test "x$ac_cv_lib_security_bigcrypt" = x""yes; then +done -- LIBS="-lsec $LIBS" -+for ac_func in _close __close _fchdir __fchdir _fcntl __fcntl +- LIBS="-lsecurity $LIBS" ++for ac_func in getdents __getdents _lseek __lseek _read __read +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -55368,7 +54529,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>confdefs.h <<\_ACEOF -#define HAVE_BIGCRYPT 1 -+for ac_func in getdents __getdents _lseek __lseek _read __read ++for ac_func in getdirentries _write __write _fork __fork +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -55381,20 +54542,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi +done -+for ac_func in getdirentries _write __write _fork __fork -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+eval as_val=\$$as_ac_var -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF - --else -+fi -+done - +for ac_func in _stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64 +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -55405,13 +54552,27 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -- # bigcrypt was not found in libsec +-else ++fi ++done + ++for ac_func in __sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64 ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF + +- # bigcrypt was not found in libsecurity - # nothing to do here by default - true +fi +done -+for ac_func in __sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64 ++for ac_func in pread _pread __pread pread64 _pread64 __pread64 +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -55426,7 +54587,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ;; - esac -+for ac_func in pread _pread __pread pread64 _pread64 __pread64 ++for ac_func in pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64 +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -55439,19 +54600,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi done -+for ac_func in pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64 -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+eval as_val=\$$as_ac_var -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF - -+fi -+done - +for ac_func in open64 _open64 __open64 creat64 +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -55465,7 +54613,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi +done --for ac_func in getprpwnam +- +-for ac_func in bigcrypt -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -55573,8 +54722,16 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF +- +- # bigcrypt was found in libc or existing $LIBS +- +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_BIGCRYPT 1 +# +# +# @@ -55582,63 +54739,277 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +do : + ac_fn_c_check_func "$LINENO" "getgrouplist" "ac_cv_func_getgrouplist" +if test "x$ac_cv_func_getgrouplist" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++ cat >>confdefs.h <<_ACEOF +#define HAVE_GETGROUPLIST 1 _ACEOF -- # getprpwnam was found in libc or existing $LIBS +fi +done --cat >>confdefs.h <<\_ACEOF --#define HAVE_GETPRPWNAM 1 --_ACEOF +-else +- +- # bigcrypt was not found, try adding libsec +- case " $LIBS " in +- *\ -lsec\ *) +- +- # bigcrypt was not found and we already had libsec +- # nothing to do here by default +- true +# +# stat64 family may need on some systems, notably ReliantUNIX +# +- ;; +- *) +- # bigcrypt was not found, try adding libsec +- { $as_echo "$as_me:$LINENO: checking for bigcrypt in -lsec" >&5 +-$as_echo_n "checking for bigcrypt in -lsec... " >&6; } +-if test "${ac_cv_lib_sec_bigcrypt+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lsec $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +if test x$ac_cv_func_stat64 = xno ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stat64 in " >&5 +$as_echo_n "checking for stat64 in ... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ + /* end confdefs.h. */ +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +#if defined(HAVE_UNISTD_H) +#include -+#endif + #endif +-char bigcrypt (); +#include - --else -+int -+main () -+{ ++ + int + main () + { +-return bigcrypt (); +struct stat64 st64; exit(stat64(".",&st64)); -+ ; -+ return 0; -+} -+_ACEOF + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_lib_sec_bigcrypt=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_sec_bigcrypt=no +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_sec_bigcrypt" >&5 +-$as_echo "$ac_cv_lib_sec_bigcrypt" >&6; } +-if test "x$ac_cv_lib_sec_bigcrypt" = x""yes; then +- +- LIBS="-lsec $LIBS" +- +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_BIGCRYPT 1 +-_ACEOF +- +- +- +-else +- +- +- # bigcrypt was not found in libsec +- # nothing to do here by default +- true +- +- +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_stat64=yes -+fi + fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_stat64" >&5 +$as_echo "$ac_cv_func_stat64" >&6; } + if test x$ac_cv_func_stat64 = xyes ; then +- ;; +- esac ++$as_echo "#define HAVE_STAT64 1" >>confdefs.h + ++ fi + fi +-done +- +- + +- +- +-for ac_func in getprpwnam +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++if test x$ac_cv_func_lstat64 = xno ; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lstat64 in " >&5 ++$as_echo_n "checking for lstat64 in ... " >&6; } ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me ++#if defined(HAVE_UNISTD_H) ++#include + #endif ++#include + + int + main () + { +-return $ac_func (); ++struct stat64 st64; exit(lstat64(".",&st64)); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_func_lstat64=yes + fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat64" >&5 ++$as_echo "$ac_cv_func_lstat64" >&6; } ++ if test x$ac_cv_func_lstat64 = xyes ; then ++ $as_echo "#define HAVE_LSTAT64 Whether lstat64() is available" >>confdefs.h + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++ fi + fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF +- +- # getprpwnam was found in libc or existing $LIBS +- +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_GETPRPWNAM 1 +-_ACEOF +- +- +- +-else +- - # getprpwnam was not found, try adding libsecurity - case " $LIBS " in - *\ -lsecurity\ *) -+$as_echo "#define HAVE_STAT64 1" >>confdefs.h - +- - # getprpwnam was not found and we already had libsecurity - # nothing to do here by default - true -+ fi -+fi - +- - ;; - *) - # getprpwnam was not found, try adding libsecurity @@ -55654,17 +55025,19 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+if test x$ac_cv_func_lstat64 = xno ; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lstat64 in " >&5 -+$as_echo_n "checking for lstat64 in ... " >&6; } -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ +-/* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" ++if test x$ac_cv_func_fstat64 = xno ; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fstat64 in " >&5 ++$as_echo_n "checking for fstat64 in ... " >&6; } ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ +#if defined(HAVE_UNISTD_H) +#include #endif @@ -55675,7 +55048,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure main () { -return getprpwnam (); -+struct stat64 st64; exit(lstat64(".",&st64)); ++struct stat64 st64; exit(fstat64(0,&st64)); ; return 0; } @@ -55708,19 +55081,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - ac_cv_lib_security_getprpwnam=no +if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_func_lstat64=yes ++ ac_cv_func_fstat64=yes fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat64" >&5 -+$as_echo "$ac_cv_func_lstat64" >&6; } -+ if test x$ac_cv_func_lstat64 = xyes ; then -+ $as_echo "#define HAVE_LSTAT64 Whether lstat64() is available" >>confdefs.h ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fstat64" >&5 ++$as_echo "$ac_cv_func_fstat64" >&6; } ++ if test x$ac_cv_func_fstat64 = xyes ; then -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ++$as_echo "#define HAVE_FSTAT64 1" >>confdefs.h ++ + fi fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_security_getprpwnam" >&5 @@ -55728,42 +55102,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -if test "x$ac_cv_lib_security_getprpwnam" = x""yes; then - LIBS="-lsecurity $LIBS" -+if test x$ac_cv_func_fstat64 = xno ; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fstat64 in " >&5 -+$as_echo_n "checking for fstat64 in ... " >&6; } -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ - -+#if defined(HAVE_UNISTD_H) -+#include -+#endif -+#include - --cat >>confdefs.h <<\_ACEOF --#define HAVE_GETPRPWNAM 1 -+int -+main () -+{ -+struct stat64 st64; exit(fstat64(0,&st64)); -+ ; -+ return 0; -+} - _ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_func_fstat64=yes -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fstat64" >&5 -+$as_echo "$ac_cv_func_fstat64" >&6; } -+ if test x$ac_cv_func_fstat64 = xyes ; then - -+$as_echo "#define HAVE_FSTAT64 1" >>confdefs.h - -+ fi -+fi - --else +################################################# +# Check whether struct stat has timestamps with sub-second resolution. +# @@ -55772,33 +55110,34 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +ac_fn_c_check_member "$LINENO" "struct stat" "st_mtim.tv_nsec" "ac_cv_member_struct_stat_st_mtim_tv_nsec" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_mtim_tv_nsec" = x""yes; then : -- # getprpwnam was not found in libsecurity -- # nothing to do here by default -- true +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_GETPRPWNAM 1 +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 -+_ACEOF -+ + _ACEOF + +# Linux, Solaris + samba_cv_stat_hires=yes +fi +ac_fn_c_check_member "$LINENO" "struct stat" "st_mtimensec" "ac_cv_member_struct_stat_st_mtimensec" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_mtimensec" = x""yes; then : -+ + +-else +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_MTIMENSEC 1 +_ACEOF +# BSD, if defined _POSIX_SOURCE + samba_cv_stat_hires=yes - fi ++fi -- ;; -- esac +- # getprpwnam was not found in libsecurity +- # nothing to do here by default +- true +ac_fn_c_check_member "$LINENO" "struct stat" "st_mtimespec.tv_nsec" "ac_cv_member_struct_stat_st_mtimespec_tv_nsec" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_mtimespec_tv_nsec" = x""yes; then : -+ + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC 1 +_ACEOF @@ -55806,8 +55145,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +# BSD, if not defined _POSIX_SOURCE + samba_cv_stat_hires=yes fi --done +- ;; +- esac +ac_fn_c_check_member "$LINENO" "struct stat" "st_mtime_n" "ac_cv_member_struct_stat_st_mtime_n" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_mtime_n" = x""yes; then : + @@ -55817,11 +55157,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +# AIX + samba_cv_stat_hires=yes -+fi + fi +-done +ac_fn_c_check_member "$LINENO" "struct stat" "st_umtime" "ac_cv_member_struct_stat_st_umtime" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_umtime" = x""yes; then : ++cat >>confdefs.h <<_ACEOF ++#define HAVE_STRUCT_STAT_ST_UMTIME 1 ++_ACEOF + ++# Tru64 ++ samba_cv_stat_hires=yes ++fi + -for ac_func in getprpwnam -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -55832,9 +55181,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_STRUCT_STAT_ST_UMTIME 1 - _ACEOF +-_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ @@ -55846,18 +55193,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -+# Tru64 -+ samba_cv_stat_hires=yes -+fi ++if test x"$samba_cv_stat_hires" = x"yes" ; then -#ifdef __STDC__ -# include -#else -# include -#endif ++$as_echo "#define HAVE_STAT_HIRES_TIMESTAMPS 1" >>confdefs.h -#undef $ac_func -+if test x"$samba_cv_stat_hires" = x"yes" ; then ++fi -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC @@ -55872,7 +55218,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -+$as_echo "#define HAVE_STAT_HIRES_TIMESTAMPS 1" >>confdefs.h ++# recent FreeBSD, NetBSD have creation timestamps called birthtime: ++ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtimespec.tv_nsec" "ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" "$ac_includes_default" ++if test "x$ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" = x""yes; then : -int -main () @@ -55881,12 +55229,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} -+fi -+ -+# recent FreeBSD, NetBSD have creation timestamps called birthtime: -+ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtimespec.tv_nsec" "ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" "$ac_includes_default" -+if test "x$ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" = x""yes; then : -+ +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC 1 _ACEOF @@ -56081,9 +55423,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -done +- +- -- -- - -for ac_func in strsignal -do @@ -56126,7 +55468,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -49709,85 +16242,43 @@ +@@ -49421,85 +16077,43 @@ #ifdef __cplusplus extern "C" #endif @@ -56232,7 +55574,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -49796,108 +16287,44 @@ +@@ -49508,108 +16122,44 @@ #ifdef __cplusplus extern "C" #endif @@ -56363,7 +55705,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -49905,103 +16332,80 @@ +@@ -49617,103 +16167,80 @@ #ifdef __cplusplus extern "C" #endif @@ -56412,28 +55754,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ ac_cv_lib_resolv___dn_expand=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___dn_expand" >&5 -+$as_echo "$ac_cv_lib_resolv___dn_expand" >&6; } -+if test "x$ac_cv_lib_resolv___dn_expand" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_LIBRESOLV 1 -+_ACEOF -+ -+ LIBS="-lresolv $LIBS" - +- - eval "$as_ac_var=no" ++ ac_cv_lib_resolv___dn_expand=no fi - +- -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext --fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS + fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -56441,7 +55773,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___dn_expand" >&5 ++$as_echo "$ac_cv_lib_resolv___dn_expand" >&6; } ++if test "x$ac_cv_lib_resolv___dn_expand" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define HAVE_LIBRESOLV 1 + _ACEOF + ++ LIBS="-lresolv $LIBS" + + fi +-done + + +# +# Check for the functions putprpwnam, set_auth_parameters, +# getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity @@ -56453,16 +55798,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +do : + ac_fn_c_check_func "$LINENO" "putprpwnam" "ac_cv_func_putprpwnam" +if test "x$ac_cv_func_putprpwnam" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++ cat >>confdefs.h <<_ACEOF +#define HAVE_PUTPRPWNAM 1 - _ACEOF - --fi --done ++_ACEOF ++ + # putprpwnam was found in libc or existing $LIBS - - ++ ++ +$as_echo "#define HAVE_PUTPRPWNAM 1" >>confdefs.h @@ -56518,7 +55860,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -50009,100 +16413,90 @@ +@@ -49721,183 +16248,89 @@ #ifdef __cplusplus extern "C" #endif @@ -56567,12 +55909,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" + ac_cv_lib_security_putprpwnam=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS -+fi + fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_security_putprpwnam" >&5 +$as_echo "$ac_cv_lib_security_putprpwnam" >&6; } +if test "x$ac_cv_lib_security_putprpwnam" = x""yes; then : @@ -56592,15 +55936,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + true + -- eval "$as_ac_var=no" - fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+ ;; -+ esac -+ fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` @@ -56609,26 +55947,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+done -+ -+ -+ -+ for ac_func in putprpwnam -+do : -+ ac_fn_c_check_func "$LINENO" "putprpwnam" "ac_cv_func_putprpwnam" -+if test "x$ac_cv_func_putprpwnam" = x""yes; then : - cat >>confdefs.h <<_ACEOF +- cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_PUTPRPWNAM 1 - _ACEOF +-_ACEOF ++ ++ ;; ++ esac --fi --done -+ # putprpwnam was found in libc or existing $LIBS -+ -+ -+$as_echo "#define HAVE_PUTPRPWNAM 1" >>confdefs.h -+ + fi + done -for ac_func in sizeof_proplist_entry @@ -56638,10 +55965,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 - else +-else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ --_ACEOF ++ ++ for ac_func in putprpwnam ++do : ++ ac_fn_c_check_func "$LINENO" "putprpwnam" "ac_cv_func_putprpwnam" ++if test "x$ac_cv_func_putprpwnam" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_PUTPRPWNAM 1 + _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ @@ -56653,39 +55987,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -+ # putprpwnam was not found, try adding libsec -+ case " $LIBS " in -+ *\ -lsec\ *) ++ # putprpwnam was found in libc or existing $LIBS -#ifdef __STDC__ -# include -#else -# include -#endif -+ # putprpwnam was not found and we already had libsec -+ # nothing to do here by default -+ true -#undef $ac_func -+ ;; -+ *) -+ # putprpwnam was not found, try adding libsec -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for putprpwnam in -lsec" >&5 -+$as_echo_n "checking for putprpwnam in -lsec... " >&6; } -+if test "${ac_cv_lib_sec_putprpwnam+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lsec $LIBS" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ ++$as_echo "#define HAVE_PUTPRPWNAM 1" >>confdefs.h - /* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC -@@ -50110,82 +16504,90 @@ - #ifdef __cplusplus - extern "C" - #endif +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named @@ -56693,17 +56011,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -- -+char putprpwnam (); - int - main () - { + +-int +-main () +-{ -return $ac_func (); -+return putprpwnam (); - ; - return 0; - } - _ACEOF +- ; +- return 0; +-} +-_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -56726,46 +56042,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_sec_putprpwnam=yes - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ ac_cv_lib_sec_putprpwnam=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sec_putprpwnam" >&5 -+$as_echo "$ac_cv_lib_sec_putprpwnam" >&6; } -+if test "x$ac_cv_lib_sec_putprpwnam" = x""yes; then : -+ -+ LIBS="-lsec $LIBS" -+ -+ -+$as_echo "#define HAVE_PUTPRPWNAM 1" >>confdefs.h -+ -+ -+ -+else -+ -+ -+ # putprpwnam was not found in libsec -+ # nothing to do here by default -+ true -+ - eval "$as_ac_var=no" - fi +-fi ++else -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+ ;; -+ esac -+ - fi +-fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -56773,50 +56061,30 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+done -+ -+ -+ -+ -+ for ac_func in set_auth_parameters -+do : -+ ac_fn_c_check_func "$LINENO" "set_auth_parameters" "ac_cv_func_set_auth_parameters" -+if test "x$ac_cv_func_set_auth_parameters" = x""yes; then : - cat >>confdefs.h <<_ACEOF +- cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_SET_AUTH_PARAMETERS 1 - _ACEOF +-_ACEOF ++ # putprpwnam was not found, try adding libsec ++ case " $LIBS " in ++ *\ -lsec\ *) -fi -done -+ # set_auth_parameters was found in libc or existing $LIBS ++ # putprpwnam was not found and we already had libsec ++ # nothing to do here by default ++ true - ;; - *) - { $as_echo "$as_me:$LINENO: checking for library containing getxattr" >&5 -$as_echo_n "checking for library containing getxattr... " >&6; } -if test "${ac_cv_search_getxattr+set}" = set; then -+ -+$as_echo "#define HAVE_SET_AUTH_PARAMETERS 1" >>confdefs.h -+ -+ -+ -+else -+ -+ # set_auth_parameters was not found, try adding libsecurity -+ case " $LIBS " in -+ *\ -lsecurity\ *) -+ -+ # set_auth_parameters was not found and we already had libsecurity -+ # nothing to do here by default -+ true -+ + ;; + *) -+ # set_auth_parameters was not found, try adding libsecurity -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for set_auth_parameters in -lsecurity" >&5 -+$as_echo_n "checking for set_auth_parameters in -lsecurity... " >&6; } -+if test "${ac_cv_lib_security_set_auth_parameters+set}" = set; then : ++ # putprpwnam was not found, try adding libsec ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for putprpwnam in -lsec" >&5 ++$as_echo_n "checking for putprpwnam in -lsec... " >&6; } ++if test "${ac_cv_lib_sec_putprpwnam+set}" = set; then : $as_echo_n "(cached) " >&6 else - ac_func_search_save_LIBS=$LIBS @@ -56826,22 +56094,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + ac_check_lib_save_LIBS=$LIBS -+LIBS="-lsecurity $LIBS" ++LIBS="-lsec $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -50194,109 +16596,90 @@ +@@ -49906,109 +16339,91 @@ #ifdef __cplusplus extern "C" #endif -char getxattr (); -+char set_auth_parameters (); ++char putprpwnam (); int main () { -return getxattr (); -+return set_auth_parameters (); ++return putprpwnam (); ; return 0; } @@ -56876,24 +56144,24 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - }; then - ac_cv_search_getxattr=$ac_res +if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_security_set_auth_parameters=yes ++ ac_cv_lib_sec_putprpwnam=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ ac_cv_lib_security_set_auth_parameters=no ++ ac_cv_lib_sec_putprpwnam=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_security_set_auth_parameters" >&5 -+$as_echo "$ac_cv_lib_security_set_auth_parameters" >&6; } -+if test "x$ac_cv_lib_security_set_auth_parameters" = x""yes; then : ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sec_putprpwnam" >&5 ++$as_echo "$ac_cv_lib_sec_putprpwnam" >&6; } ++if test "x$ac_cv_lib_sec_putprpwnam" = x""yes; then : + -+ LIBS="-lsecurity $LIBS" ++ LIBS="-lsec $LIBS" + + -+$as_echo "#define HAVE_SET_AUTH_PARAMETERS 1" >>confdefs.h ++$as_echo "#define HAVE_PUTPRPWNAM 1" >>confdefs.h -fi @@ -56914,7 +56182,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -LIBS=$ac_func_search_save_LIBS + + -+ # set_auth_parameters was not found in libsecurity ++ # putprpwnam was not found in libsec + # nothing to do here by default + true + @@ -56931,9 +56199,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi +done -+ -+ -+ + + + + + for ac_func in set_auth_parameters +do : + ac_fn_c_check_func "$LINENO" "set_auth_parameters" "ac_cv_func_set_auth_parameters" @@ -56941,15 +56210,180 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat >>confdefs.h <<_ACEOF +#define HAVE_SET_AUTH_PARAMETERS 1 +_ACEOF - ++ + # set_auth_parameters was found in libc or existing $LIBS ++ ++ ++$as_echo "#define HAVE_SET_AUTH_PARAMETERS 1" >>confdefs.h ++ +-for ac_func in getxattr lgetxattr fgetxattr listxattr llistxattr +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++ # set_auth_parameters was not found, try adding libsecurity ++ case " $LIBS " in ++ *\ -lsecurity\ *) + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++ # set_auth_parameters was not found and we already had libsecurity ++ # nothing to do here by default ++ true + +-#undef $ac_func ++ ;; ++ *) ++ # set_auth_parameters was not found, try adding libsecurity ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for set_auth_parameters in -lsecurity" >&5 ++$as_echo_n "checking for set_auth_parameters in -lsecurity... " >&6; } ++if test "${ac_cv_lib_security_set_auth_parameters+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsecurity $LIBS" ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC +@@ -50016,105 +16431,90 @@ + #ifdef __cplusplus + extern "C" + #endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- ++char set_auth_parameters (); + int + main () + { +-return $ac_func (); ++return set_auth_parameters (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_security_set_auth_parameters=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" ++ ac_cv_lib_security_set_auth_parameters=no + fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_security_set_auth_parameters" >&5 ++$as_echo "$ac_cv_lib_security_set_auth_parameters" >&6; } ++if test "x$ac_cv_lib_security_set_auth_parameters" = x""yes; then : ++ ++ LIBS="-lsecurity $LIBS" ++ ++ ++$as_echo "#define HAVE_SET_AUTH_PARAMETERS 1" >>confdefs.h ++ ++ ++ ++else ++ ++ ++ # set_auth_parameters was not found in libsecurity ++ # nothing to do here by default ++ true ++ + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext + fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF ++ ++ ;; ++ esac + + fi + done + + + ++ for ac_func in set_auth_parameters ++do : ++ ac_fn_c_check_func "$LINENO" "set_auth_parameters" "ac_cv_func_set_auth_parameters" ++if test "x$ac_cv_func_set_auth_parameters" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_SET_AUTH_PARAMETERS 1 ++_ACEOF ++ ++ # set_auth_parameters was found in libc or existing $LIBS ++ + +$as_echo "#define HAVE_SET_AUTH_PARAMETERS 1" >>confdefs.h --for ac_func in getxattr lgetxattr fgetxattr listxattr llistxattr +-for ac_func in getea fgetea lgetea listea flistea llistea -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -57000,7 +56434,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -50304,105 +16687,92 @@ +@@ -50122,105 +16522,92 @@ #ifdef __cplusplus extern "C" #endif @@ -57052,11 +56486,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - eval "$as_ac_var=no" + ac_cv_lib_sec_set_auth_parameters=no -+fi + fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS - fi ++fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sec_set_auth_parameters" >&5 +$as_echo "$ac_cv_lib_sec_set_auth_parameters" >&6; } +if test "x$ac_cv_lib_sec_set_auth_parameters" = x""yes; then : @@ -57116,7 +56550,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure --for ac_func in getea fgetea lgetea listea flistea llistea +-for ac_func in removeea fremoveea lremoveea setea fsetea lsetea -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -57167,7 +56601,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -50410,65 +16780,47 @@ +@@ -50228,103 +16615,91 @@ #ifdef __cplusplus extern "C" #endif @@ -57216,10 +56650,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_var=no" + ac_cv_lib_gen_getspnam=no - fi ++fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS @@ -57243,9 +56675,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + true + +- eval "$as_ac_var=no" + fi + -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext ++ ;; ++ esac ++ fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` @@ -57254,35 +56692,30 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -- cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 --_ACEOF ++done ++ ++ ++ + -+ ;; -+ esac - - fi - done -@@ -50476,39 +16828,43 @@ - - - + for ac_func in getspnam +do : + ac_fn_c_check_func "$LINENO" "getspnam" "ac_cv_func_getspnam" +if test "x$ac_cv_func_getspnam" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define HAVE_GETSPNAM 1 -+_ACEOF -+ + _ACEOF + +-fi +-done + # getspnam was found in libc or existing $LIBS -+ -+ + + +$as_echo "#define HAVE_GETSPNAM 1" >>confdefs.h --for ac_func in removeea fremoveea lremoveea setea fsetea lsetea +-for ac_func in flistxattr removexattr lremovexattr fremovexattr -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -57333,7 +56766,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -50516,103 +16872,90 @@ +@@ -50332,102 +16707,90 @@ #ifdef __cplusplus extern "C" #endif @@ -57440,65 +56873,64 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -fi -done + # getspnam was found in libc or existing $LIBS -+ + +$as_echo "#define HAVE_GETSPNAM 1" >>confdefs.h - - - -+else + -+ # getspnam was not found, try adding libsec -+ case " $LIBS " in -+ *\ -lsec\ *) -+ -+ # getspnam was not found and we already had libsec -+ # nothing to do here by default -+ true --for ac_func in flistxattr removexattr lremovexattr fremovexattr + +-for ac_func in setxattr lsetxattr fsetxattr -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ ;; -+ *) -+ # getspnam was not found, try adding libsec -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getspnam in -lsec" >&5 -+$as_echo_n "checking for getspnam in -lsec... " >&6; } -+if test "${ac_cv_lib_sec_getspnam+set}" = set; then : - $as_echo_n "(cached) " >&6 +- $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lsec $LIBS" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ +-/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -- + -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -- ++ # getspnam was not found, try adding libsec ++ case " $LIBS " in ++ *\ -lsec\ *) + -#ifdef __STDC__ -# include -#else -# include -#endif -- ++ # getspnam was not found and we already had libsec ++ # nothing to do here by default ++ true + -#undef $ac_func ++ ;; ++ *) ++ # getspnam was not found, try adding libsec ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getspnam in -lsec" >&5 ++$as_echo_n "checking for getspnam in -lsec... " >&6; } ++if test "${ac_cv_lib_sec_getspnam+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsec $LIBS" ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -50620,102 +16963,91 @@ +@@ -50435,103 +16798,91 @@ #ifdef __cplusplus extern "C" #endif @@ -57609,10 +57041,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +$as_echo "#define HAVE_BIGCRYPT 1" >>confdefs.h -+ --for ac_func in setxattr lsetxattr fsetxattr + +-for ac_func in attr_get attr_list attr_set attr_remove -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -57629,25 +57061,26 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - +- -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -+ # bigcrypt was not found, try adding libsecurity -+ case " $LIBS " in -+ *\ -lsecurity\ *) -#ifdef __STDC__ -# include -#else -# include -#endif ++ # bigcrypt was not found, try adding libsecurity ++ case " $LIBS " in ++ *\ -lsecurity\ *) + +-#undef $ac_func + # bigcrypt was not found and we already had libsecurity + # nothing to do here by default + true - --#undef $ac_func ++ + ;; + *) + # bigcrypt was not found, try adding libsecurity @@ -57663,7 +57096,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -50723,103 +17055,90 @@ +@@ -50539,103 +16890,90 @@ #ifdef __cplusplus extern "C" #endif @@ -57776,7 +57209,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure --for ac_func in attr_get attr_list attr_set attr_remove +-for ac_func in attr_getf attr_listf attr_setf attr_removef -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -57827,7 +57260,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -50827,103 +17146,91 @@ +@@ -50643,107 +16981,91 @@ #ifdef __cplusplus extern "C" #endif @@ -57935,13 +57368,19 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -fi -done + # getprpwnam was found in libc or existing $LIBS - - ++ ++ +$as_echo "#define HAVE_GETPRPWNAM 1" >>confdefs.h +- ;; +-esac +-######################################################## +-# Check if attropen() is present if this is Solaris +-case "$host_os" in +- *solaris*) --for ac_func in attr_getf attr_listf attr_setf attr_removef +-for ac_func in attropen -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -57992,7 +57431,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -50931,107 +17238,90 @@ +@@ -50751,190 +17073,90 @@ #ifdef __cplusplus extern "C" #endif @@ -58041,185 +57480,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" + ac_cv_lib_security_getprpwnam=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_security_getprpwnam" >&5 -+$as_echo "$ac_cv_lib_security_getprpwnam" >&6; } -+if test "x$ac_cv_lib_security_getprpwnam" = x""yes; then : -+ -+ LIBS="-lsecurity $LIBS" -+ -+ -+$as_echo "#define HAVE_GETPRPWNAM 1" >>confdefs.h -+ -+ -+ -+else -+ -+ -+ # getprpwnam was not found in libsecurity -+ # nothing to do here by default -+ true -+ - -- eval "$as_ac_var=no" fi - --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+ ;; -+ esac -+ - fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+done -+ -+ -+ -+ for ac_func in getprpwnam -+do : -+ ac_fn_c_check_func "$LINENO" "getprpwnam" "ac_cv_func_getprpwnam" -+if test "x$ac_cv_func_getprpwnam" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_GETPRPWNAM 1 - _ACEOF - --fi --done -+ # getprpwnam was found in libc or existing $LIBS -+ -+ -+$as_echo "#define HAVE_GETPRPWNAM 1" >>confdefs.h - -- ;; --esac - --######################################################## --# Check if attropen() is present if this is Solaris --case "$host_os" in -- *solaris*) - --for ac_func in attropen --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func - --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -+ # getprpwnam was not found, try adding libsec -+ case " $LIBS " in -+ *\ -lsec\ *) - --#ifdef __STDC__ --# include --#else --# include --#endif -+ # getprpwnam was not found and we already had libsec -+ # nothing to do here by default -+ true - --#undef $ac_func -+ ;; -+ *) -+ # getprpwnam was not found, try adding libsec -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getprpwnam in -lsec" >&5 -+$as_echo_n "checking for getprpwnam in -lsec... " >&6; } -+if test "${ac_cv_lib_sec_getprpwnam+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lsec $LIBS" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC -@@ -51039,190 +17329,77 @@ - #ifdef __cplusplus - extern "C" - #endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -- -+char getprpwnam (); - int - main () - { --return $ac_func (); -+return getprpwnam (); - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_sec_getprpwnam=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_var=no" --fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+ ac_cv_lib_sec_getprpwnam=no - fi +-fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -58239,9 +57508,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - ;; -esac -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sec_getprpwnam" >&5 -+$as_echo "$ac_cv_lib_sec_getprpwnam" >&6; } -+if test "x$ac_cv_lib_sec_getprpwnam" = x""yes; then : ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_security_getprpwnam" >&5 ++$as_echo "$ac_cv_lib_security_getprpwnam" >&6; } ++if test "x$ac_cv_lib_security_getprpwnam" = x""yes; then : -######################################################## -# Do xattr functions take additional options like on Darwin? @@ -58251,7 +57520,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -if test "${smb_attr_cv_xattr_add_opt+set}" = set; then - $as_echo_n "(cached) " >&6 -else -+ LIBS="-lsec $LIBS" ++ LIBS="-lsecurity $LIBS" - old_LIBS=$LIBS - LIBS="$LIBS $ACL_LIBS" @@ -58307,7 +57576,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ # getprpwnam was not found in libsec ++ # getprpwnam was not found in libsecurity + # nothing to do here by default + true + @@ -58333,23 +57602,186 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>confdefs.h <<\_ACEOF -#define BROKEN_EXTATTR 1 --_ACEOF ++ ++ for ac_func in getprpwnam ++do : ++ ac_fn_c_check_func "$LINENO" "getprpwnam" "ac_cv_func_getprpwnam" ++if test "x$ac_cv_func_getprpwnam" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_GETPRPWNAM 1 + _ACEOF - ;; - *) ++ # getprpwnam was found in libc or existing $LIBS ++ ++ ++$as_echo "#define HAVE_GETPRPWNAM 1" >>confdefs.h + + + +-for ac_func in extattr_delete_fd extattr_delete_file extattr_delete_link +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++ # getprpwnam was not found, try adding libsec ++ case " $LIBS " in ++ *\ -lsec\ *) + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++ # getprpwnam was not found and we already had libsec ++ # nothing to do here by default ++ true + +-#undef $ac_func ++ ;; ++ *) ++ # getprpwnam was not found, try adding libsec ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getprpwnam in -lsec" >&5 ++$as_echo_n "checking for getprpwnam in -lsec... " >&6; } ++if test "${ac_cv_lib_sec_getprpwnam+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsec $LIBS" ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC +@@ -50942,102 +17164,77 @@ + #ifdef __cplusplus + extern "C" + #endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- ++char getprpwnam (); + int + main () + { +-return $ac_func (); ++return getprpwnam (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_sec_getprpwnam=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ ac_cv_lib_sec_getprpwnam=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sec_getprpwnam" >&5 ++$as_echo "$ac_cv_lib_sec_getprpwnam" >&6; } ++if test "x$ac_cv_lib_sec_getprpwnam" = x""yes; then : ++ ++ LIBS="-lsec $LIBS" ++ ++ ++$as_echo "#define HAVE_GETPRPWNAM 1" >>confdefs.h ++ ++ ++ ++else ++ ++ ++ # getprpwnam was not found in libsec ++ # nothing to do here by default ++ true ++ + +- eval "$as_ac_var=no" + fi + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++ ;; ++ esac ++ + fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++done ++ ++ ++ +for ac_func in strsignal +do : + ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define HAVE_STRSIGNAL 1 -+_ACEOF + _ACEOF -+fi -+done + fi + done --for ac_func in extattr_delete_fd extattr_delete_file extattr_delete_link +- +- +-for ac_func in extattr_get_fd extattr_get_file extattr_get_link -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -58391,7 +57823,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -51230,62 +17407,66 @@ +@@ -51045,62 +17242,53 @@ #ifdef __cplusplus extern "C" #endif @@ -58435,6 +57867,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +for ac_lib in '' proplist; do + if test -z "$ac_lib"; then + ac_res="none required" @@ -58452,41 +57887,24 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi +done +if test "${ac_cv_search_getproplist+set}" = set; then : -+ - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 + +- eval "$as_ac_var=no" ++else + ac_cv_search_getproplist=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS -+fi + fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getproplist" >&5 +$as_echo "$ac_cv_search_getproplist" >&6; } +ac_res=$ac_cv_search_getproplist +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -+ -+fi -+ -+ for ac_func in getproplist fgetproplist setproplist fsetproplist -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+eval as_val=\$$as_ac_var -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF - -- eval "$as_ac_var=no" - fi -+done -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext --fi + fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -58494,7 +57912,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+ for ac_func in delproplist fdelproplist add_proplist_entry get_proplist_entry ++ ++ for ac_func in getproplist fgetproplist setproplist fsetproplist +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -58503,10 +57922,23 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -@@ -51293,39 +17474,27 @@ +@@ -51108,39 +17296,40 @@ fi done ++ for ac_func in delproplist fdelproplist add_proplist_entry get_proplist_entry ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++done + + for ac_func in sizeof_proplist_entry +do : + ac_fn_c_check_func "$LINENO" "sizeof_proplist_entry" "ac_cv_func_sizeof_proplist_entry" @@ -58518,8 +57950,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi +done -- --for ac_func in extattr_get_fd extattr_get_file extattr_get_link +-for ac_func in extattr_list_fd extattr_list_file extattr_list_link -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -58559,7 +57990,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC -@@ -51333,62 +17502,53 @@ +@@ -51148,62 +17337,118 @@ #ifdef __cplusplus extern "C" #endif @@ -58603,9 +58034,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 +for ac_lib in '' attr; do + if test -z "$ac_lib"; then + ac_res="none required" @@ -58623,31 +58051,22 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +fi +done +if test "${ac_cv_search_getxattr+set}" = set; then : - -- eval "$as_ac_var=no" -+else ++ + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_search_getxattr=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS - fi ++fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getxattr" >&5 +$as_echo "$ac_cv_search_getxattr" >&6; } +ac_res=$ac_cv_search_getxattr +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext - fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then ++ ++fi + + for ac_func in getxattr lgetxattr fgetxattr listxattr llistxattr +do : @@ -58655,13 +58074,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF - #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 - _ACEOF -@@ -51396,102 +17556,64 @@ - fi - done - ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++done ++ + for ac_func in getea fgetea lgetea listea flistea llistea +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -58671,21 +58090,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF - ++ +fi +done - -- --for ac_func in extattr_list_fd extattr_list_file extattr_list_link --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ ++ + for ac_func in removeea fremoveea lremoveea setea fsetea lsetea +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -58694,28 +58102,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 - _ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func -- --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ - --#ifdef __STDC__ --# include --#else --# include --#endif ++_ACEOF ++ +fi +done - --#undef $ac_func ++ + for ac_func in flistxattr removexattr lremovexattr fremovexattr +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -58726,29 +58117,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -+fi +- eval "$as_ac_var=no" + fi +done - --int --main () --{ --return $ac_func (); -- ; -- return 0; --} ++ + for ac_func in setxattr lsetxattr fsetxattr +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -58757,41 +58129,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 - -- eval "$as_ac_var=no" - fi -+done ++_ACEOF -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext --fi + fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -58799,6 +58142,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then ++done ++ + for ac_func in attr_get attr_list attr_set attr_remove +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -58808,7 +58153,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -@@ -51499,102 +17621,141 @@ +@@ -51211,102 +17456,141 @@ fi done @@ -59025,7 +58370,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -@@ -51606,7 +17767,7 @@ +@@ -51318,7 +17602,7 @@ esac # Check whether --enable-static was given. @@ -59034,7 +58379,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; -@@ -51628,7 +17789,7 @@ +@@ -51340,7 +17624,7 @@ fi # Check whether --enable-shared was given. @@ -59043,7 +58388,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; -@@ -51655,16 +17816,16 @@ +@@ -51367,16 +17651,16 @@ PIE_CFLAGS="" PIE_LDFLAGS="" # Check whether --enable-pie was given. @@ -59063,7 +58408,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else -@@ -51673,11 +17834,11 @@ +@@ -51385,11 +17669,11 @@ main () { return 0;} EOF if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&5' @@ -59078,7 +58423,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure then samba_cv_fpie=yes else -@@ -51686,7 +17847,7 @@ +@@ -51398,7 +17682,7 @@ rm -f conftest* fi @@ -59087,7 +58432,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$samba_cv_fpie" >&6; } if test x"${samba_cv_fpie}" = x"yes" then -@@ -51698,16 +17859,16 @@ +@@ -51410,16 +17694,16 @@ # Set defaults RELRO_LDFLAGS="" # Check whether --enable-relro was given. @@ -59107,7 +58452,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else -@@ -51716,11 +17877,11 @@ +@@ -51428,11 +17712,11 @@ main () { return 0;} EOF if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&5' @@ -59122,7 +58467,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure then samba_cv_relro=yes else -@@ -51729,7 +17890,7 @@ +@@ -51441,7 +17725,7 @@ rm -f conftest* fi @@ -59131,7 +58476,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$samba_cv_relro" >&6; } if test x"${samba_cv_relro}" = x"yes" then -@@ -51758,7 +17919,7 @@ +@@ -51470,7 +17754,7 @@ # You need to specify how to create a shared library and # how to compile C code to produce PIC object files @@ -59140,7 +58485,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking ability to build shared libraries... " >&6; } # and these are for particular systems -@@ -51766,14 +17927,10 @@ +@@ -51478,14 +17762,10 @@ *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*) case "$host_os" in *linux*) @@ -59157,7 +58502,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ;; esac BLDSHARED="true" -@@ -51785,15 +17942,11 @@ +@@ -51496,15 +17776,11 @@ DYNEXP="-Wl,--export-dynamic" PICFLAG="-fPIC" SONAMEFLAG="-Wl,-soname=" @@ -59175,7 +58520,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure BLDSHARED="true" LDSHFLAGS="-G" -@@ -51811,33 +17964,23 @@ +@@ -51522,33 +17798,23 @@ LDSHFLAGS="-G \${CFLAGS}" fi @@ -59214,7 +58559,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ;; *netbsd* | *freebsd* | *dragonfly* ) -@@ -51847,14 +17990,10 @@ +@@ -51558,14 +17824,10 @@ SONAMEFLAG="-Wl,-soname," PICFLAG="-fPIC -DPIC" @@ -59231,7 +58576,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ;; *openbsd*) BLDSHARED="true" -@@ -51863,26 +18002,18 @@ +@@ -51574,26 +17836,18 @@ SONAMEFLAG="-Wl,-soname," PICFLAG="-fPIC" @@ -59262,7 +58607,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ;; esac -@@ -51896,15 +18027,11 @@ +@@ -51607,15 +17861,11 @@ PICFLAG="-KPIC" fi @@ -59280,7 +58625,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure BLDSHARED="true" # use expfull to export underscored symbols -@@ -51920,25 +18047,17 @@ +@@ -51631,25 +17881,17 @@ fi @@ -59310,7 +58655,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure # Use special PIC flags for the native HP-UX compiler. BLDSHARED="true" -@@ -51960,74 +18079,52 @@ +@@ -51671,74 +17913,52 @@ DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib" fi @@ -59398,7 +58743,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else if test -n "$ROFF"; then -@@ -52038,91 +18135,71 @@ +@@ -51749,91 +17969,71 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -59505,7 +58850,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure BLDSHARED="true" LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress" -@@ -52136,16 +18213,12 @@ +@@ -51847,16 +18047,12 @@ # actually support the PIE stuff. PIE_LDFLAGS= PIE_CFLAGS= @@ -59524,7 +58869,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ;; esac -@@ -52162,53 +18235,53 @@ +@@ -51873,19 +18069,15 @@ LDFLAGS="$LDFLAGS -L./bin" fi @@ -59532,6 +58877,141 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $BLDSHARED" >&5 $as_echo "$BLDSHARED" >&6; } + for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do + saved_ldflags="$LDFLAGS" +- { $as_echo "$as_me:$LINENO: checking if $flags works" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $flags works" >&5 + $as_echo_n "checking if $flags works... " >&6; } + LDFLAGS="$flags $saved_ldflags" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -51896,42 +18088,17 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++if ac_fn_c_try_link "$LINENO"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + LD_AS_NEEDED_FLAG=$flags + ld_as_needed_flag_found=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags" + test x"$ld_as_needed_flag_found" = xyes && break + done +@@ -51944,14 +18111,10 @@ + + for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do + saved_ldflags="$LDFLAGS" +- { $as_echo "$as_me:$LINENO: checking if $flags works" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $flags works" >&5 + $as_echo_n "checking if $flags works... " >&6; } + LDFLAGS="$flags $saved_ldflags" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -51962,94 +18125,69 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++if ac_fn_c_try_link "$LINENO"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + LDSHFLAGS_Z_DEFS=$flags + ldshflags_z_defs_found=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$saved_ldflags + test x"$ldshflags_z_defs_found" = xyes && break + done + +-{ $as_echo "$as_me:$LINENO: checking LDSHFLAGS_Z_DEFS" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LDSHFLAGS_Z_DEFS" >&5 + $as_echo_n "checking LDSHFLAGS_Z_DEFS... " >&6; } +-{ $as_echo "$as_me:$LINENO: result: $LDSHFLAGS_Z_DEFS" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDSHFLAGS_Z_DEFS" >&5 + $as_echo "$LDSHFLAGS_Z_DEFS" >&6; } -{ $as_echo "$as_me:$LINENO: checking LDFLAGS" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LDFLAGS" >&5 $as_echo_n "checking LDFLAGS... " >&6; } @@ -59597,7 +59077,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else -@@ -52224,7 +18297,7 @@ +@@ -52065,7 +18203,7 @@ fi @@ -59606,8 +59086,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$ac_cv_shlib_works" >&6; } if test $ac_cv_shlib_works = no; then BLDSHARED=false -@@ -52240,9 +18313,9 @@ - SHLIBEXT="shared_libraries_disabled" +@@ -52082,9 +18220,9 @@ + merged_build_possible=no fi -{ $as_echo "$as_me:$LINENO: checking used PICFLAG" >&5 @@ -59618,7 +59098,1842 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$PICFLAG" >&6; } -@@ -52284,165 +18357,39 @@ +@@ -52156,10 +18294,10 @@ + USESHARED=false + + +-{ $as_echo "$as_me:$LINENO: checking whether to use shared libraries internally" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use shared libraries internally" >&5 + $as_echo_n "checking whether to use shared libraries internally... " >&6; } + # Check whether --enable-shared-libs was given. +-if test "${enable_shared_libs+set}" = set; then ++if test "${enable_shared_libs+set}" = set; then : + enableval=$enable_shared_libs; enable_shared_libs=$enableval + else + enable_shared_libs=yes +@@ -52170,11 +18308,11 @@ + USESHARED=$BLDSHARED + fi + +-{ $as_echo "$as_me:$LINENO: result: $USESHARED" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USESHARED" >&5 + $as_echo "$USESHARED" >&6; } + + if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then +- { $as_echo "$as_me:$LINENO: WARNING: --enable-shared-libs: no support for shared libraries" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-shared-libs: no support for shared libraries" >&5 + $as_echo "$as_me: WARNING: --enable-shared-libs: no support for shared libraries" >&2;} + fi + +@@ -52202,14 +18340,13 @@ + + + # Check whether --with-static-libs was given. +-if test "${with_static_libs+set}" = set; then +- withval=$with_static_libs; if test $withval; then ++if test "${with_static_libs+set}" = set; then : ++ withval=$with_static_libs; if test $withval; then : + for lib in `echo $withval | sed -e 's/,/ /g'` ; do + lib=`echo $lib | tr '[a-z]' '[A-Z]'` + eval LINK_$lib=STATIC + done + fi +- + fi + + +@@ -52231,7 +18368,7 @@ + # be extracted from their respective source directories + # + # Check whether --enable-external_libtalloc was given. +-if test "${enable_external_libtalloc+set}" = set; then ++if test "${enable_external_libtalloc+set}" = set; then : + enableval=$enable_external_libtalloc; enable_external_libtalloc=$enableval + else + enable_external_libtalloc=auto +@@ -52246,9 +18383,9 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. + set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then ++if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $PKG_CONFIG in +@@ -52261,14 +18398,14 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + ;; +@@ -52276,10 +18413,10 @@ + fi + PKG_CONFIG=$ac_cv_path_PKG_CONFIG + if test -n "$PKG_CONFIG"; then +- { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 + $as_echo "$PKG_CONFIG" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -52289,9 +18426,9 @@ + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. + set dummy pkg-config; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then ++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $ac_pt_PKG_CONFIG in +@@ -52304,14 +18441,14 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + ;; +@@ -52319,10 +18456,10 @@ + fi + ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG + if test -n "$ac_pt_PKG_CONFIG"; then +- { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 + $as_echo "$ac_pt_PKG_CONFIG" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -52331,7 +18468,7 @@ + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -52344,13 +18481,13 @@ + fi + if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 +- { $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 + $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + PKG_CONFIG="" + fi +@@ -52358,7 +18495,7 @@ + fi + + pkg_failed=no +-{ $as_echo "$as_me:$LINENO: checking for LIBTALLOC" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBTALLOC" >&5 + $as_echo_n "checking for LIBTALLOC... " >&6; } + + if test -n "$PKG_CONFIG"; then +@@ -52366,11 +18503,11 @@ + pkg_cv_LIBTALLOC_CFLAGS="$LIBTALLOC_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ +- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"talloc >= 2.0.1\"") >&5 ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"talloc >= 2.0.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "talloc >= 2.0.1") 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then + pkg_cv_LIBTALLOC_CFLAGS=`$PKG_CONFIG --cflags "talloc >= 2.0.1" 2>/dev/null` + else + pkg_failed=yes +@@ -52384,11 +18521,11 @@ + pkg_cv_LIBTALLOC_LIBS="$LIBTALLOC_LIBS" + else + if test -n "$PKG_CONFIG" && \ +- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"talloc >= 2.0.1\"") >&5 ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"talloc >= 2.0.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "talloc >= 2.0.1") 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then + pkg_cv_LIBTALLOC_LIBS=`$PKG_CONFIG --libs "talloc >= 2.0.1" 2>/dev/null` + else + pkg_failed=yes +@@ -52415,768 +18552,112 @@ + # Put the nasty error message in config.log where it belongs + echo "$LIBTALLOC_PKG_ERRORS" >&5 + +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + if test x$enable_external_libtalloc = xyes; then +- { { $as_echo "$as_me:$LINENO: error: Unable to find libtalloc" >&5 +-$as_echo "$as_me: error: Unable to find libtalloc" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error "Unable to find libtalloc" "$LINENO" 5 + else + enable_external_libtalloc=no + fi + + elif test $pkg_failed = untried; then + if test x$enable_external_libtalloc = xyes; then +- { { $as_echo "$as_me:$LINENO: error: Unable to find libtalloc" >&5 +-$as_echo "$as_me: error: Unable to find libtalloc" >&2;} +- { (exit 1); exit 1; }; } +- else +- enable_external_libtalloc=no +- fi +- +-else +- LIBTALLOC_CFLAGS=$pkg_cv_LIBTALLOC_CFLAGS +- LIBTALLOC_LIBS=$pkg_cv_LIBTALLOC_LIBS +- { $as_echo "$as_me:$LINENO: result: yes" >&5 +-$as_echo "yes" >&6; } +- enable_external_libtalloc=yes +-fi +-fi +- +-if test "x$enable_external_libtalloc" = xno +-then +- tallocdir="" +-tallocpaths=". lib/talloc talloc ../talloc ../lib/talloc" +-for d in $tallocpaths; do +- if test -f "$srcdir/$d/talloc.c"; then +- tallocdir="$d" +- +- break; +- fi +-done +-if test x"$tallocdir" = "x"; then +- { { $as_echo "$as_me:$LINENO: error: cannot find talloc source in $tallocpaths" >&5 +-$as_echo "$as_me: error: cannot find talloc source in $tallocpaths" >&2;} +- { (exit 1); exit 1; }; } +-fi +-TALLOC_OBJ="talloc.o" +- +- +-TALLOC_CFLAGS="-I$srcdir/$tallocdir" +- +- +-TALLOC_LIBS="" +- +- +-# The cast to long int works around a bug in the HP C Compiler +-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +-# This bug is HP SR number 8606223364. +-{ $as_echo "$as_me:$LINENO: checking size of size_t" >&5 +-$as_echo_n "checking size of size_t... " >&6; } +-if test "${ac_cv_sizeof_size_t+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- if test "$cross_compiling" = yes; then +- # Depending upon the size, compute the lo and hi bounds. +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) >= 0)]; +-test_array [0] = 0 +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_lo=0 ac_mid=0 +- while :; do +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) <= $ac_mid)]; +-test_array [0] = 0 +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_hi=$ac_mid; break +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_lo=`expr $ac_mid + 1` +- if test $ac_lo -le $ac_mid; then +- ac_lo= ac_hi= +- break +- fi +- ac_mid=`expr 2 '*' $ac_mid + 1` +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- done +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) < 0)]; +-test_array [0] = 0 +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_hi=-1 ac_mid=-1 +- while :; do +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) >= $ac_mid)]; +-test_array [0] = 0 +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_lo=$ac_mid; break +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_hi=`expr '(' $ac_mid ')' - 1` +- if test $ac_mid -le $ac_hi; then +- ac_lo= ac_hi= +- break +- fi +- ac_mid=`expr 2 '*' $ac_mid` +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- done +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_lo= ac_hi= +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-# Binary search between lo and hi bounds. +-while test "x$ac_lo" != "x$ac_hi"; do +- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) <= $ac_mid)]; +-test_array [0] = 0 +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_hi=$ac_mid +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_lo=`expr '(' $ac_mid ')' + 1` +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-case $ac_lo in +-?*) ac_cv_sizeof_size_t=$ac_lo;; +-'') if test "$ac_cv_type_size_t" = yes; then +- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (size_t) +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: cannot compute sizeof (size_t) +-See \`config.log' for more details." >&2;} +- { (exit 77); exit 77; }; }; } +- else +- ac_cv_sizeof_size_t=0 +- fi ;; +-esac +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-static long int longval () { return (long int) (sizeof (size_t)); } +-static unsigned long int ulongval () { return (long int) (sizeof (size_t)); } +-#include +-#include +-int +-main () +-{ +- +- FILE *f = fopen ("conftest.val", "w"); +- if (! f) +- return 1; +- if (((long int) (sizeof (size_t))) < 0) +- { +- long int i = longval (); +- if (i != ((long int) (sizeof (size_t)))) +- return 1; +- fprintf (f, "%ld", i); +- } +- else +- { +- unsigned long int i = ulongval (); +- if (i != ((long int) (sizeof (size_t)))) +- return 1; +- fprintf (f, "%lu", i); +- } +- /* Do not output a trailing newline, as this causes \r\n confusion +- on some platforms. */ +- return ferror (f) || fclose (f) != 0; +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_sizeof_size_t=`cat conftest.val` +-else +- $as_echo "$as_me: program exited with status $ac_status" >&5 +-$as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-( exit $ac_status ) +-if test "$ac_cv_type_size_t" = yes; then +- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (size_t) +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: cannot compute sizeof (size_t) +-See \`config.log' for more details." >&2;} +- { (exit 77); exit 77; }; }; } +- else +- ac_cv_sizeof_size_t=0 +- fi +-fi +-rm -rf conftest.dSYM +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi +-rm -f conftest.val +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_size_t" >&5 +-$as_echo "$ac_cv_sizeof_size_t" >&6; } +- +- +- +-cat >>confdefs.h <<_ACEOF +-#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t +-_ACEOF +- +- +-# The cast to long int works around a bug in the HP C Compiler +-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +-# This bug is HP SR number 8606223364. +-{ $as_echo "$as_me:$LINENO: checking size of void *" >&5 +-$as_echo_n "checking size of void *... " >&6; } +-if test "${ac_cv_sizeof_void_p+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- if test "$cross_compiling" = yes; then +- # Depending upon the size, compute the lo and hi bounds. +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) >= 0)]; +-test_array [0] = 0 +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_lo=0 ac_mid=0 +- while :; do +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)]; +-test_array [0] = 0 +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_hi=$ac_mid; break ++ as_fn_error "Unable to find libtalloc" "$LINENO" 5 ++ else ++ enable_external_libtalloc=no ++ fi ++ + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ LIBTALLOC_CFLAGS=$pkg_cv_LIBTALLOC_CFLAGS ++ LIBTALLOC_LIBS=$pkg_cv_LIBTALLOC_LIBS ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ enable_external_libtalloc=yes ++fi ++fi + +- ac_lo=`expr $ac_mid + 1` +- if test $ac_lo -le $ac_mid; then +- ac_lo= ac_hi= +- break +- fi +- ac_mid=`expr 2 '*' $ac_mid + 1` ++if test "x$enable_external_libtalloc" = xno ++then ++ tallocdir="" ++tallocpaths=". lib/talloc talloc ../talloc ../lib/talloc" ++for d in $tallocpaths; do ++ if test -f "$srcdir/$d/talloc.c"; then ++ tallocdir="$d" ++ ++ break; ++ fi ++done ++if test x"$tallocdir" = "x"; then ++ as_fn_error "cannot find talloc source in $tallocpaths" "$LINENO" 5 + fi ++TALLOC_OBJ="talloc.o" + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- done +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) < 0)]; +-test_array [0] = 0 ++TALLOC_CFLAGS="-I$srcdir/$tallocdir" + +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_hi=-1 ac_mid=-1 +- while :; do +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) >= $ac_mid)]; +-test_array [0] = 0 + +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_lo=$ac_mid; break +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++TALLOC_LIBS="" + +- ac_hi=`expr '(' $ac_mid ')' - 1` +- if test $ac_mid -le $ac_hi; then +- ac_lo= ac_hi= +- break +- fi +- ac_mid=`expr 2 '*' $ac_mid` +-fi + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- done ++# The cast to long int works around a bug in the HP C Compiler ++# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects ++# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. ++# This bug is HP SR number 8606223364. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 ++$as_echo_n "checking size of size_t... " >&6; } ++if test "${ac_cv_sizeof_size_t+set}" = set; then : ++ $as_echo_n "(cached) " >&6 + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : + +- ac_lo= ac_hi= ++else ++ if test "$ac_cv_type_size_t" = yes; then ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++{ as_fn_set_status 77 ++as_fn_error "cannot compute sizeof (size_t) ++See \`config.log' for more details." "$LINENO" 5; }; } ++ else ++ ac_cv_sizeof_size_t=0 ++ fi + fi + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 ++$as_echo "$ac_cv_sizeof_size_t" >&6; } + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-# Binary search between lo and hi bounds. +-while test "x$ac_lo" != "x$ac_hi"; do +- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)]; +-test_array [0] = 0 +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_hi=$ac_mid +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_lo=`expr '(' $ac_mid ')' + 1` +-fi + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-case $ac_lo in +-?*) ac_cv_sizeof_void_p=$ac_lo;; +-'') if test "$ac_cv_type_void_p" = yes; then +- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (void *) +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: cannot compute sizeof (void *) +-See \`config.log' for more details." >&2;} +- { (exit 77); exit 77; }; }; } +- else +- ac_cv_sizeof_void_p=0 +- fi ;; +-esac +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ ++cat >>confdefs.h <<_ACEOF ++#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t + _ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-static long int longval () { return (long int) (sizeof (void *)); } +-static unsigned long int ulongval () { return (long int) (sizeof (void *)); } +-#include +-#include +-int +-main () +-{ + +- FILE *f = fopen ("conftest.val", "w"); +- if (! f) +- return 1; +- if (((long int) (sizeof (void *))) < 0) +- { +- long int i = longval (); +- if (i != ((long int) (sizeof (void *)))) +- return 1; +- fprintf (f, "%ld", i); +- } +- else +- { +- unsigned long int i = ulongval (); +- if (i != ((long int) (sizeof (void *)))) +- return 1; +- fprintf (f, "%lu", i); +- } +- /* Do not output a trailing newline, as this causes \r\n confusion +- on some platforms. */ +- return ferror (f) || fclose (f) != 0; + +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_sizeof_void_p=`cat conftest.val` ++# The cast to long int works around a bug in the HP C Compiler ++# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects ++# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. ++# This bug is HP SR number 8606223364. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 ++$as_echo_n "checking size of void *... " >&6; } ++if test "${ac_cv_sizeof_void_p+set}" = set; then : ++ $as_echo_n "(cached) " >&6 + else +- $as_echo "$as_me: program exited with status $ac_status" >&5 +-$as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : + +-( exit $ac_status ) +-if test "$ac_cv_type_void_p" = yes; then +- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++else ++ if test "$ac_cv_type_void_p" = yes; then ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (void *) +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: cannot compute sizeof (void *) +-See \`config.log' for more details." >&2;} +- { (exit 77); exit 77; }; }; } ++{ as_fn_set_status 77 ++as_fn_error "cannot compute sizeof (void *) ++See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_void_p=0 + fi + fi +-rm -rf conftest.dSYM +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi +-rm -f conftest.val ++ + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_void_p" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 + $as_echo "$ac_cv_sizeof_void_p" >&6; } + + +@@ -53188,17 +18669,15 @@ + + + if test $ac_cv_sizeof_size_t -lt $ac_cv_sizeof_void_p; then +- { $as_echo "$as_me:$LINENO: WARNING: size_t cannot represent the amount of used memory of a process" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: size_t cannot represent the amount of used memory of a process" >&5 + $as_echo "$as_me: WARNING: size_t cannot represent the amount of used memory of a process" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: please report this to " >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: please report this to " >&5 + $as_echo "$as_me: WARNING: please report this to " >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: sizeof(size_t) = $ac_cv_sizeof_size_t" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: sizeof(size_t) = $ac_cv_sizeof_size_t" >&5 + $as_echo "$as_me: WARNING: sizeof(size_t) = $ac_cv_sizeof_size_t" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: sizeof(void *) = $ac_cv_sizeof_void_p" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: sizeof(void *) = $ac_cv_sizeof_void_p" >&5 + $as_echo "$as_me: WARNING: sizeof(void *) = $ac_cv_sizeof_void_p" >&2;} +- { { $as_echo "$as_me:$LINENO: error: sizeof(size_t) < sizeof(void *)" >&5 +-$as_echo "$as_me: error: sizeof(size_t) < sizeof(void *)" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error "sizeof(size_t) < sizeof(void *)" "$LINENO" 5 + fi + + if test x"$VERSIONSCRIPT" != "x"; then +@@ -53233,16 +18712,16 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking whether to build the libtalloc shared library" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build the libtalloc shared library" >&5 + $as_echo_n "checking whether to build the libtalloc shared library... " >&6; } + + + # Check whether --with-libtalloc was given. +-if test "${with_libtalloc+set}" = set; then ++if test "${with_libtalloc+set}" = set; then : + withval=$with_libtalloc; + case "$withval" in + no) +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + build_lib=no + ;; +@@ -53268,7 +18747,7 @@ + if eval $BLDSHARED = true; then + LIBTALLOC_SHARED=$LIBTALLOC_SHARED_TARGET + LIBTALLOC_TARGET=$LIBTALLOC_SHARED_TARGET +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + if test x"$USESHARED" != x"true" -o x"$LINK_LIBTALLOC" = "xSTATIC" ; then + enable_static=yes +@@ -53281,12 +18760,12 @@ + enable_static=yes + LIBTALLOC_TARGET=$LIBTALLOC_STATIC_TARGET + LIBTALLOC_LIBS=$LIBTALLOC_STATIC_TARGET +- { $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no shared library support -- will supply static library" >&5 + $as_echo "no shared library support -- will supply static library" >&6; } + fi + else + enable_static=yes +- { $as_echo "$as_me:$LINENO: result: shared library not selected" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared library not selected" >&5 + $as_echo "shared library not selected" >&6; } + fi + if test $enable_static = yes; then +@@ -53312,7 +18791,7 @@ + + + # Check whether --enable-external_libtdb was given. +-if test "${enable_external_libtdb+set}" = set; then ++if test "${enable_external_libtdb+set}" = set; then : + enableval=$enable_external_libtdb; enable_external_libtalloc=$enableval + else + enable_external_libtalloc=auto +@@ -53323,7 +18802,7 @@ + then + + pkg_failed=no +-{ $as_echo "$as_me:$LINENO: checking for LIBTDB" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBTDB" >&5 + $as_echo_n "checking for LIBTDB... " >&6; } + + if test -n "$PKG_CONFIG"; then +@@ -53331,11 +18810,11 @@ + pkg_cv_LIBTDB_CFLAGS="$LIBTDB_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ +- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"tdb >= 1.2.1\"") >&5 ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"tdb >= 1.2.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "tdb >= 1.2.1") 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then + pkg_cv_LIBTDB_CFLAGS=`$PKG_CONFIG --cflags "tdb >= 1.2.1" 2>/dev/null` + else + pkg_failed=yes +@@ -53349,11 +18828,11 @@ + pkg_cv_LIBTDB_LIBS="$LIBTDB_LIBS" + else + if test -n "$PKG_CONFIG" && \ +- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"tdb >= 1.2.1\"") >&5 ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"tdb >= 1.2.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "tdb >= 1.2.1") 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then + pkg_cv_LIBTDB_LIBS=`$PKG_CONFIG --libs "tdb >= 1.2.1" 2>/dev/null` + else + pkg_failed=yes +@@ -53380,13 +18859,11 @@ + # Put the nasty error message in config.log where it belongs + echo "$LIBTDB_PKG_ERRORS" >&5 + +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + + if test x$enable_external_libtdb = xyes; then +- { { $as_echo "$as_me:$LINENO: error: Unable to find libtdb" >&5 +-$as_echo "$as_me: error: Unable to find libtdb" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error "Unable to find libtdb" "$LINENO" 5 + else + enable_external_libtdb=no + fi +@@ -53394,9 +18871,7 @@ + elif test $pkg_failed = untried; then + + if test x$enable_external_libtdb = xyes; then +- { { $as_echo "$as_me:$LINENO: error: Unable to find libtdb" >&5 +-$as_echo "$as_me: error: Unable to find libtdb" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error "Unable to find libtdb" "$LINENO" 5 + else + enable_external_libtdb=no + fi +@@ -53404,7 +18879,7 @@ + else + LIBTDB_CFLAGS=$pkg_cv_LIBTDB_CFLAGS + LIBTDB_LIBS=$pkg_cv_LIBTDB_LIBS +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + enable_external_libtdb=yes + fi +@@ -53423,9 +18898,7 @@ + fi + done + if test x"$tdbdir" = "x"; then +- { { $as_echo "$as_me:$LINENO: error: cannot find tdb source in $tdbpaths" >&5 +-$as_echo "$as_me: error: cannot find tdb source in $tdbpaths" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error "cannot find tdb source in $tdbpaths" "$LINENO" 5 + fi + TDB_OBJ="common/tdb.o common/dump.o common/transaction.o common/error.o common/traverse.o" + TDB_OBJ="$TDB_OBJ common/freelist.o common/freelistcheck.o common/io.o common/lock.o common/open.o common/check.o" +@@ -53438,104 +18911,12 @@ + TDB_CFLAGS="-I$tdbdir/include" + + +- +- +- +- +- + for ac_func in mmap pread pwrite getpagesize utime +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 + _ACEOF +@@ -53543,151 +18924,12 @@ + fi + done + +- +- +- + for ac_header in getopt.h sys/select.h sys/time.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +- +-fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +@@ -53698,17 +18940,13 @@ + + + +- { $as_echo "$as_me:$LINENO: checking for pread declaration" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pread declaration" >&5 + $as_echo_n "checking for pread declaration... " >&6; } +-if test "${ac_cv_have_pread_decl+set}" = set; then ++if test "${ac_cv_have_pread_decl+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + int +@@ -53719,56 +18957,29 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_have_pread_decl=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_have_pread_decl=no ++ ac_cv_have_pread_decl=no + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_pread_decl" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_pread_decl" >&5 + $as_echo "$ac_cv_have_pread_decl" >&6; } + if test x"$ac_cv_have_pread_decl" = x"yes"; then + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_PREAD_DECL 1 +-_ACEOF ++$as_echo "#define HAVE_PREAD_DECL 1" >>confdefs.h + + fi + + +- { $as_echo "$as_me:$LINENO: checking for pwrite declaration" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pwrite declaration" >&5 + $as_echo_n "checking for pwrite declaration... " >&6; } +-if test "${ac_cv_have_pwrite_decl+set}" = set; then ++if test "${ac_cv_have_pwrite_decl+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + int +@@ -53779,41 +18990,18 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_have_pwrite_decl=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_have_pwrite_decl=no ++ ac_cv_have_pwrite_decl=no + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_pwrite_decl" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_pwrite_decl" >&5 + $as_echo "$ac_cv_have_pwrite_decl" >&6; } + if test x"$ac_cv_have_pwrite_decl" = x"yes"; then + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_PWRITE_DECL 1 +-_ACEOF ++$as_echo "#define HAVE_PWRITE_DECL 1" >>confdefs.h + + fi + +@@ -53850,16 +19038,16 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking whether to build the libtdb shared library" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build the libtdb shared library" >&5 + $as_echo_n "checking whether to build the libtdb shared library... " >&6; } + + + # Check whether --with-libtdb was given. +-if test "${with_libtdb+set}" = set; then ++if test "${with_libtdb+set}" = set; then : + withval=$with_libtdb; + case "$withval" in + no) +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + build_lib=no + ;; +@@ -53885,7 +19073,7 @@ + if eval $BLDSHARED = true; then + LIBTDB_SHARED=$LIBTDB_SHARED_TARGET + LIBTDB_TARGET=$LIBTDB_SHARED_TARGET +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + if test x"$USESHARED" != x"true" -o x"$LINK_LIBTDB" = "xSTATIC" ; then + enable_static=yes +@@ -53898,12 +19086,12 @@ + enable_static=yes + LIBTDB_TARGET=$LIBTDB_STATIC_TARGET + LIBTDB_LIBS=$LIBTDB_STATIC_TARGET +- { $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no shared library support -- will supply static library" >&5 + $as_echo "no shared library support -- will supply static library" >&6; } + fi + else + enable_static=yes +- { $as_echo "$as_me:$LINENO: result: shared library not selected" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared library not selected" >&5 + $as_echo "shared library not selected" >&6; } + fi + if test $enable_static = yes; then +@@ -53959,16 +19147,16 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking whether to build the libnetapi shared library" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build the libnetapi shared library" >&5 + $as_echo_n "checking whether to build the libnetapi shared library... " >&6; } + + + # Check whether --with-libnetapi was given. +-if test "${with_libnetapi+set}" = set; then ++if test "${with_libnetapi+set}" = set; then : + withval=$with_libnetapi; + case "$withval" in + no) +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + build_lib=no + ;; +@@ -53994,7 +19182,7 @@ + if eval $BLDSHARED = true; then + LIBNETAPI_SHARED=$LIBNETAPI_SHARED_TARGET + LIBNETAPI_TARGET=$LIBNETAPI_SHARED_TARGET +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + if test x"$USESHARED" != x"true" -o x"$LINK_LIBNETAPI" = "xSTATIC" ; then + enable_static=yes +@@ -54007,12 +19195,12 @@ + enable_static=yes + LIBNETAPI_TARGET=$LIBNETAPI_STATIC_TARGET + LIBNETAPI_LIBS=$LIBNETAPI_STATIC_TARGET +- { $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no shared library support -- will supply static library" >&5 + $as_echo "no shared library support -- will supply static library" >&6; } + fi + else + enable_static=yes +- { $as_echo "$as_me:$LINENO: result: shared library not selected" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared library not selected" >&5 + $as_echo "shared library not selected" >&6; } + fi + if test $enable_static = yes; then +@@ -54050,16 +19238,16 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking whether to build the libsmbclient shared library" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build the libsmbclient shared library" >&5 + $as_echo_n "checking whether to build the libsmbclient shared library... " >&6; } + + + # Check whether --with-libsmbclient was given. +-if test "${with_libsmbclient+set}" = set; then ++if test "${with_libsmbclient+set}" = set; then : + withval=$with_libsmbclient; + case "$withval" in + no) +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + build_lib=no + ;; +@@ -54085,7 +19273,7 @@ + if eval $BLDSHARED = true; then + LIBSMBCLIENT_SHARED=$LIBSMBCLIENT_SHARED_TARGET + LIBSMBCLIENT_TARGET=$LIBSMBCLIENT_SHARED_TARGET +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + if test x"$USESHARED" != x"true" -o x"$LINK_LIBSMBCLIENT" = "xSTATIC" ; then + enable_static=yes +@@ -54098,12 +19286,12 @@ + enable_static=yes + LIBSMBCLIENT_TARGET=$LIBSMBCLIENT_STATIC_TARGET + LIBSMBCLIENT_LIBS=$LIBSMBCLIENT_STATIC_TARGET +- { $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no shared library support -- will supply static library" >&5 + $as_echo "no shared library support -- will supply static library" >&6; } + fi + else + enable_static=yes +- { $as_echo "$as_me:$LINENO: result: shared library not selected" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared library not selected" >&5 + $as_echo "shared library not selected" >&6; } + fi + if test $enable_static = yes; then +@@ -54141,16 +19329,16 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking whether to build the libsmbsharemodes shared library" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build the libsmbsharemodes shared library" >&5 + $as_echo_n "checking whether to build the libsmbsharemodes shared library... " >&6; } + + + # Check whether --with-libsmbsharemodes was given. +-if test "${with_libsmbsharemodes+set}" = set; then ++if test "${with_libsmbsharemodes+set}" = set; then : + withval=$with_libsmbsharemodes; + case "$withval" in + no) +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + build_lib=no + ;; +@@ -54176,7 +19364,7 @@ + if eval $BLDSHARED = true; then + LIBSMBSHAREMODES_SHARED=$LIBSMBSHAREMODES_SHARED_TARGET + LIBSMBSHAREMODES_TARGET=$LIBSMBSHAREMODES_SHARED_TARGET +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + if test x"$USESHARED" != x"true" -o x"$LINK_LIBSMBSHAREMODES" = "xSTATIC" ; then + enable_static=yes +@@ -54189,12 +19377,12 @@ + enable_static=yes + LIBSMBSHAREMODES_TARGET=$LIBSMBSHAREMODES_STATIC_TARGET + LIBSMBSHAREMODES_LIBS=$LIBSMBSHAREMODES_STATIC_TARGET +- { $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no shared library support -- will supply static library" >&5 + $as_echo "no shared library support -- will supply static library" >&6; } + fi + else + enable_static=yes +- { $as_echo "$as_me:$LINENO: result: shared library not selected" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared library not selected" >&5 + $as_echo "shared library not selected" >&6; } + fi + if test $enable_static = yes; then +@@ -54232,19 +19420,19 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking whether to build the libaddns shared library" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build the libaddns shared library" >&5 + $as_echo_n "checking whether to build the libaddns shared library... " >&6; } + + + # Check whether --with-libaddns was given. +-if test "${with_libaddns+set}" = set; then ++if test "${with_libaddns+set}" = set; then : + withval=$with_libaddns; + case "$withval" in + yes) + build_lib=yes + ;; + *) +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + build_lib=no + ;; +@@ -54253,7 +19441,7 @@ + else + + # if unspecified, default is not to build +-{ $as_echo "$as_me:$LINENO: result: no" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + build_lib=no + +@@ -54269,7 +19457,7 @@ + if eval $BLDSHARED = true; then + LIBADDNS_SHARED=$LIBADDNS_SHARED_TARGET + LIBADDNS_TARGET=$LIBADDNS_SHARED_TARGET +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + if test x"$USESHARED" != x"true" -o x"$LINK_LIBADDNS" = "xSTATIC" ; then + enable_static=yes +@@ -54282,12 +19470,12 @@ + enable_static=yes + LIBADDNS_TARGET=$LIBADDNS_STATIC_TARGET + LIBADDNS_LIBS=$LIBADDNS_STATIC_TARGET +- { $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no shared library support -- will supply static library" >&5 + $as_echo "no shared library support -- will supply static library" >&6; } + fi + else + enable_static=yes +- { $as_echo "$as_me:$LINENO: result: shared library not selected" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared library not selected" >&5 + $as_echo "shared library not selected" >&6; } + fi + if test $enable_static = yes; then +@@ -54304,165 +19492,39 @@ ################ @@ -59796,7 +61111,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else cat >>confdefs.h <<_ACEOF -@@ -52452,102 +18399,9 @@ +@@ -54472,102 +19534,9 @@ fi else @@ -59887,11 +61202,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +- +-fi + ac_fn_c_check_type "$LINENO" "intptr_t" "ac_cv_type_intptr_t" "$ac_includes_default" +if test "x$ac_cv_type_intptr_t" = x""yes; then : --fi -- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_intptr_t" >&5 @@ -59901,7 +61216,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else cat >>confdefs.h <<_ACEOF -@@ -52562,17 +18416,13 @@ +@@ -54582,17 +19551,13 @@ # Check if the compiler supports the LL prefix on long long integers. # AIX needs this. @@ -59922,7 +61237,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -52583,190 +18433,97 @@ +@@ -54603,190 +19568,97 @@ return 0; } _ACEOF @@ -60065,8 +61380,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include - main() { exit((sizeof(off_t) == 8) ? 0 : 1); } - _ACEOF +-main() { exit((sizeof(off_t) == 8) ? 0 : 1); } +-_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -60089,6 +61404,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then ++main() { exit((sizeof(off_t) == 8) ? 0 : 1); } ++_ACEOF +if ac_fn_c_try_run "$LINENO"; then : samba_cv_SIZEOF_OFF_T=yes else @@ -60141,7 +61458,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -52776,67 +18533,34 @@ +@@ -54796,67 +19668,34 @@ #include main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); } _ACEOF @@ -60219,7 +61536,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -52846,67 +18570,34 @@ +@@ -54866,67 +19705,34 @@ #include main() { exit((sizeof(ino_t) == 8) ? 0 : 1); } _ACEOF @@ -60297,12 +61614,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -52914,69 +18605,36 @@ - #endif - #include +@@ -54936,67 +19742,34 @@ #include --main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); } --_ACEOF + main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); } + _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -60325,8 +61640,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then -+main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); } -+_ACEOF +if ac_fn_c_try_run "$LINENO"; then : samba_cv_HAVE_INO64_T=yes else @@ -60379,7 +61692,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -52986,67 +18644,34 @@ +@@ -55006,67 +19779,34 @@ #include main() { exit((sizeof(dev_t) == 8) ? 0 : 1); } _ACEOF @@ -60457,7 +61770,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -53056,64 +18681,31 @@ +@@ -55076,64 +19816,31 @@ #include main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); } _ACEOF @@ -60531,7 +61844,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -53129,55 +18721,28 @@ +@@ -55149,55 +19856,28 @@ return 0; } _ACEOF @@ -60594,7 +61907,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -53193,58 +18758,31 @@ +@@ -55213,58 +19893,31 @@ return 0; } _ACEOF @@ -60661,7 +61974,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -53253,67 +18791,34 @@ +@@ -55273,67 +19926,34 @@ #include main() { dev_t dev; int i = major(dev); return 0; } _ACEOF @@ -60739,7 +62052,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -53322,67 +18827,34 @@ +@@ -55342,67 +19962,34 @@ #include main() { dev_t dev; int i = minor(dev); return 0; } _ACEOF @@ -60817,7 +62130,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -53391,129 +18863,63 @@ +@@ -55411,129 +19998,63 @@ #include main() { dev_t dev = makedev(1,2); return 0; } _ACEOF @@ -60966,7 +62279,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -53526,55 +18932,28 @@ +@@ -55546,55 +20067,28 @@ return 0; } _ACEOF @@ -61029,7 +62342,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -53585,55 +18964,28 @@ +@@ -55605,55 +20099,28 @@ return 0; } _ACEOF @@ -61092,7 +62405,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -53646,46 +18998,19 @@ +@@ -55666,46 +20133,19 @@ return 0; } _ACEOF @@ -61145,7 +62458,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -53697,120 +19022,24 @@ +@@ -55717,120 +20157,24 @@ # which rely on signals. @@ -61274,7 +62587,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if TIME_WITH_SYS_TIME -@@ -53834,58 +19063,27 @@ +@@ -55854,58 +20198,27 @@ return 0; } _ACEOF @@ -61341,7 +62654,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if TIME_WITH_SYS_TIME -@@ -53909,58 +19107,27 @@ +@@ -55929,58 +20242,27 @@ return 0; } _ACEOF @@ -61408,7 +62721,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if TIME_WITH_SYS_TIME -@@ -53984,49 +19151,22 @@ +@@ -56004,49 +20286,22 @@ return 0; } _ACEOF @@ -61464,7 +62777,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -@@ -54044,18 +19184,14 @@ +@@ -56064,18 +20319,14 @@ ;; *) # clock_gettime was not found, try adding librt @@ -61486,7 +62799,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -54073,60 +19209,29 @@ +@@ -56093,60 +20344,29 @@ return 0; } _ACEOF @@ -61556,7 +62869,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if TIME_WITH_SYS_TIME -@@ -54150,58 +19255,27 @@ +@@ -56170,58 +20390,27 @@ return 0; } _ACEOF @@ -61623,7 +62936,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if TIME_WITH_SYS_TIME -@@ -54225,58 +19299,27 @@ +@@ -56245,58 +20434,27 @@ return 0; } _ACEOF @@ -61690,7 +63003,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if TIME_WITH_SYS_TIME -@@ -54300,49 +19343,22 @@ +@@ -56320,49 +20478,22 @@ return 0; } _ACEOF @@ -61746,7 +63059,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -@@ -54367,20 +19383,16 @@ +@@ -56387,20 +20518,16 @@ fi @@ -61771,7 +63084,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -54388,64 +19400,31 @@ +@@ -56408,216 +20535,67 @@ if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 && di->d_name[0] == 0) exit(0); exit(1);} _ACEOF @@ -61824,31 +63137,31 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>confdefs.h <<\_ACEOF -#define HAVE_BROKEN_READDIR_NAME 1 -_ACEOF -+$as_echo "#define HAVE_BROKEN_READDIR_NAME 1" >>confdefs.h - - fi - +- +-fi +- -{ $as_echo "$as_me:$LINENO: checking for utimbuf" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for utimbuf" >&5 - $as_echo_n "checking for utimbuf... " >&6; } +-$as_echo_n "checking for utimbuf... " >&6; } -if test "${samba_cv_HAVE_UTIMBUF+set}" = set; then -+if test "${samba_cv_HAVE_UTIMBUF+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - +- $as_echo_n "(cached) " >&6 +-else +- -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include - #include -@@ -54457,41 +19436,18 @@ - return 0; - } - _ACEOF +-/* end confdefs.h. */ +-#include +-#include +-int +-main () +-{ +-struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf)); +- ; +- return 0; +-} +-_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -61867,40 +63180,37 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then -+if ac_fn_c_try_compile "$LINENO"; then : - samba_cv_HAVE_UTIMBUF=yes - else +- samba_cv_HAVE_UTIMBUF=yes +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - samba_cv_HAVE_UTIMBUF=no -+ samba_cv_HAVE_UTIMBUF=no - fi +-fi - - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi -{ $as_echo "$as_me:$LINENO: result: $samba_cv_HAVE_UTIMBUF" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_HAVE_UTIMBUF" >&5 - $as_echo "$samba_cv_HAVE_UTIMBUF" >&6; } - if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then - +-$as_echo "$samba_cv_HAVE_UTIMBUF" >&6; } +-if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then +- -cat >>confdefs.h <<\_ACEOF -#define HAVE_UTIMBUF 1 -_ACEOF -+$as_echo "#define HAVE_UTIMBUF 1" >>confdefs.h - - fi - -@@ -54499,104 +19455,12 @@ - # Check utmp details, but only if our OS offers utmp.h - if test x"$ac_cv_header_utmp_h" = x"yes"; then - +- +-fi +- +-############## +-# Check utmp details, but only if our OS offers utmp.h +-if test x"$ac_cv_header_utmp_h" = x"yes"; then - - - - - - for ac_func in pututline pututxline updwtmp updwtmpx getutmpx +- +- +-for ac_func in pututline pututxline updwtmp updwtmpx getutmpx getutxent -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -61945,14 +63255,29 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -choke me -#endif - --int --main () --{ ++$as_echo "#define HAVE_BROKEN_READDIR_NAME 1" >>confdefs.h ++ ++fi ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for utimbuf" >&5 ++$as_echo_n "checking for utimbuf... " >&6; } ++if test "${samba_cv_HAVE_UTIMBUF+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++#include + int + main () + { -return $ac_func (); -- ; -- return 0; --} --_ACEOF ++struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf)); + ; + return 0; + } + _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -61975,17 +63300,27 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" --else ++if ac_fn_c_try_compile "$LINENO"; then : ++ samba_cv_HAVE_UTIMBUF=yes + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" --fi -- ++ samba_cv_HAVE_UTIMBUF=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_HAVE_UTIMBUF" >&5 ++$as_echo "$samba_cv_HAVE_UTIMBUF" >&6; } ++if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then ++ ++$as_echo "#define HAVE_UTIMBUF 1" >>confdefs.h + -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext --fi + fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -61993,6 +63328,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then ++ ++############## ++# Check utmp details, but only if our OS offers utmp.h ++if test x"$ac_cv_header_utmp_h" = x"yes"; then ++ ++for ac_func in pututline pututxline updwtmp updwtmpx getutmpx getutxent +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -62001,7 +63342,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -@@ -54605,17 +19469,13 @@ +@@ -56626,17 +20604,13 @@ done @@ -62022,7 +63363,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -54627,55 +19487,28 @@ +@@ -56648,55 +20622,28 @@ return 0; } _ACEOF @@ -62085,7 +63426,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -54687,55 +19520,28 @@ +@@ -56708,55 +20655,28 @@ return 0; } _ACEOF @@ -62148,7 +63489,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -54747,55 +19553,28 @@ +@@ -56768,55 +20688,28 @@ return 0; } _ACEOF @@ -62211,7 +63552,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -54807,55 +19586,28 @@ +@@ -56828,55 +20721,28 @@ return 0; } _ACEOF @@ -62274,14 +63615,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -54863,59 +19615,32 @@ - main () - { - struct utmp ut; time_t t; ut.ut_time = t; -- ; -- return 0; --} --_ACEOF +@@ -56888,55 +20754,28 @@ + return 0; + } + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -62300,10 +63637,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then -+ ; -+ return 0; -+} -+_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : samba_cv_HAVE_UT_UT_TIME=yes else @@ -62345,7 +63678,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -54927,55 +19652,28 @@ +@@ -56948,55 +20787,28 @@ return 0; } _ACEOF @@ -62408,7 +63741,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -54987,55 +19685,28 @@ +@@ -57008,55 +20820,28 @@ return 0; } _ACEOF @@ -62471,7 +63804,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -55047,55 +19718,28 @@ +@@ -57068,55 +20853,28 @@ return 0; } _ACEOF @@ -62534,7 +63867,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -55107,55 +19751,28 @@ +@@ -57128,55 +20886,28 @@ return 0; } _ACEOF @@ -62597,7 +63930,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -55167,55 +19784,28 @@ +@@ -57188,55 +20919,28 @@ return 0; } _ACEOF @@ -62660,7 +63993,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -55227,56 +19817,29 @@ +@@ -57248,56 +20952,29 @@ return 0; } _ACEOF @@ -62724,7 +64057,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -55288,56 +19851,29 @@ +@@ -57309,56 +20986,29 @@ return 0; } _ACEOF @@ -62788,7 +64121,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -55349,41 +19885,18 @@ +@@ -57370,41 +21020,18 @@ return 0; } _ACEOF @@ -62834,7 +64167,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -55394,12 +19907,10 @@ +@@ -57415,12 +21042,10 @@ ICONV_LOOK_DIRS="/usr /usr/local /sw /opt" # Check whether --with-libiconv was given. @@ -62849,7 +64182,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else if test "$withval" != "yes" ; then ICONV_PATH_SPEC=yes -@@ -55445,7 +19956,7 @@ +@@ -57466,7 +21091,7 @@ export LDFLAGS LIBS CPPFLAGS # Try to find iconv(3) @@ -62858,7 +64191,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking for iconv in $i/$l... " >&6; } jm_cv_func_iconv="no" jm_cv_lib_iconv="" -@@ -55453,11 +19964,7 @@ +@@ -57474,11 +21099,7 @@ jm_save_LIBS="$LIBS" if test "$jm_cv_func_iconv" != yes; then @@ -62871,7 +64204,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -55471,48 +19978,17 @@ +@@ -57492,48 +21113,17 @@ return 0; } _ACEOF @@ -62924,7 +64257,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -55526,49 +20002,18 @@ +@@ -57547,49 +21137,18 @@ return 0; } _ACEOF @@ -62978,7 +64311,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -55582,53 +20027,22 @@ +@@ -57603,53 +21162,22 @@ return 0; } _ACEOF @@ -63036,7 +64369,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -55642,50 +20056,19 @@ +@@ -57663,50 +21191,19 @@ return 0; } _ACEOF @@ -63091,7 +64424,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -55699,42 +20082,15 @@ +@@ -57720,42 +21217,15 @@ return 0; } _ACEOF @@ -63137,7 +64470,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure LIBS="$jm_save_LIBS" fi -@@ -55745,36 +20101,30 @@ +@@ -57766,36 +21236,30 @@ if test "$jm_cv_func_iconv" = yes; then if test "$jm_cv_giconv" = yes; then @@ -63181,7 +64514,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -55812,16 +20162,12 @@ +@@ -57833,16 +21297,12 @@ # check for default dos charset name for j in CP850 IBM850 ; do @@ -63201,7 +64534,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include <$jm_cv_include> -@@ -55834,43 +20180,16 @@ +@@ -57855,43 +21315,16 @@ } _ACEOF @@ -63250,7 +64583,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$ICONV_CHARSET" >&6; } default_dos_charset="$ICONV_CHARSET" -@@ -55882,16 +20201,12 @@ +@@ -57903,16 +21336,12 @@ # check for default display charset name for j in ASCII 646 ; do @@ -63270,7 +64603,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include <$jm_cv_include> -@@ -55904,43 +20219,16 @@ +@@ -57925,43 +21354,16 @@ } _ACEOF @@ -63319,7 +64652,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$ICONV_CHARSET" >&6; } default_display_charset="$ICONV_CHARSET" -@@ -55952,16 +20240,12 @@ +@@ -57973,16 +21375,12 @@ # check for default unix charset name for j in UTF-8 UTF8 ; do @@ -63339,7 +64672,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include <$jm_cv_include> -@@ -55974,43 +20258,16 @@ +@@ -57995,43 +21393,16 @@ } _ACEOF @@ -63388,7 +64721,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$ICONV_CHARSET" >&6; } default_unix_charset="$ICONV_CHARSET" -@@ -56049,9 +20306,9 @@ +@@ -58070,9 +21441,9 @@ default_display_charset="ASCII" default_unix_charset="UTF-8" samba_cv_HAVE_NATIVE_ICONV=yes @@ -63400,7 +64733,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: $default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE" >&2;} fi -@@ -56075,9 +20332,7 @@ +@@ -58096,9 +21467,7 @@ default_unix_charset="\"$default_unix_charset\"" @@ -63411,7 +64744,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF -@@ -56111,7 +20366,7 @@ +@@ -58132,7 +21501,7 @@ if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then @@ -63420,7 +64753,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!" >&5 $as_echo "$as_me: WARNING: Sufficient support for iconv function was not found. Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!" >&2;} -@@ -56133,20 +20388,16 @@ +@@ -58154,20 +21523,16 @@ fi @@ -63445,7 +64778,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -56160,67 +20411,34 @@ +@@ -58181,67 +21546,34 @@ } _ACEOF @@ -63523,7 +64856,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -56234,204 +20452,36 @@ +@@ -58255,204 +21587,36 @@ } _ACEOF @@ -63741,12 +65074,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -56440,119 +20490,25 @@ +@@ -58460,120 +21624,26 @@ + fi done - - - for ac_func in inotify_init +- +-for ac_func in inotify_init -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -63839,6 +65173,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then ++ ++for ac_func in inotify_init +do : + ac_fn_c_check_func "$LINENO" "inotify_init" "ac_cv_func_inotify_init" +if test "x$ac_cv_func_inotify_init" = x""yes; then : @@ -63868,7 +65204,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -56563,54 +20519,29 @@ +@@ -58584,54 +21654,29 @@ return 0; } _ACEOF @@ -63929,7 +65265,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -56619,157 +20550,18 @@ +@@ -58640,157 +21685,18 @@ # http://oss.sgi.com/projects/fam/ # http://savannah.nongnu.org/projects/fam/ # Check whether --enable-fam was given. @@ -64093,7 +65429,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF samba_cv_HAVE_FAM_H=yes else -@@ -56781,18 +20573,14 @@ +@@ -58802,18 +21708,14 @@ if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then # On IRIX, libfam requires libC, but other FAM implementations # might not need it. @@ -64115,11 +65451,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -56809,44 +20597,19 @@ - ; +@@ -58831,43 +21733,18 @@ return 0; } --_ACEOF + _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -64141,7 +65476,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -+_ACEOF +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_fam_FAMOpen2=yes else @@ -64167,7 +65501,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam" else samba_cv_HAVE_LIBFAM=no -@@ -56857,23 +20620,17 @@ +@@ -58878,23 +21755,17 @@ samba_fam_xtra=-lC @@ -64194,7 +65528,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -56891,72 +20648,41 @@ +@@ -58912,72 +21783,41 @@ return 0; } _ACEOF @@ -64275,7 +65609,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -56967,43 +20693,16 @@ +@@ -58988,43 +21828,16 @@ return 0; } _ACEOF @@ -64322,7 +65656,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi fi -@@ -57016,18 +20715,14 @@ +@@ -59037,18 +21850,14 @@ samba_dmapi_libs="" if test x"$samba_dmapi_libs" = x"" ; then @@ -64344,7 +65678,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -57045,61 +20740,32 @@ +@@ -59066,61 +21875,32 @@ return 0; } _ACEOF @@ -64415,7 +65749,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -57117,61 +20783,32 @@ +@@ -59138,61 +21918,32 @@ return 0; } _ACEOF @@ -64467,77 +65801,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi - if test x"$samba_dmapi_libs" = x"" ; then -- { $as_echo "$as_me:$LINENO: checking for dm_get_eventlist in -lxdsm" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dm_get_eventlist in -lxdsm" >&5 - $as_echo_n "checking for dm_get_eventlist in -lxdsm... " >&6; } --if test "${ac_cv_lib_xdsm_dm_get_eventlist+set}" = set; then -+if test "${ac_cv_lib_xdsm_dm_get_eventlist+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-lxdsm $LIBS" --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -57189,61 +20826,32 @@ - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_xdsm_dm_get_eventlist=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_lib_xdsm_dm_get_eventlist=no -+ ac_cv_lib_xdsm_dm_get_eventlist=no - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_xdsm_dm_get_eventlist" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xdsm_dm_get_eventlist" >&5 - $as_echo "$ac_cv_lib_xdsm_dm_get_eventlist" >&6; } --if test "x$ac_cv_lib_xdsm_dm_get_eventlist" = x""yes; then -+if test "x$ac_cv_lib_xdsm_dm_get_eventlist" = x""yes; then : - samba_dmapi_libs="-lxdsm" - fi - - fi - if test x"$samba_dmapi_libs" = x"" ; then - { $as_echo "$as_me:$LINENO: checking for dm_get_eventlist in -ldmapi" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dm_get_eventlist in -ldmapi" >&5 @@ -64557,7 +65820,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -57261,43 +20869,18 @@ +@@ -59210,61 +21961,32 @@ return 0; } _ACEOF @@ -64607,7 +65870,78 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure samba_dmapi_libs="-ldmapi" fi -@@ -57306,153 +20889,12 @@ + fi + + if test x"$samba_dmapi_libs" = x"" ; then +- { $as_echo "$as_me:$LINENO: checking for dm_get_eventlist in -lxdsm" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dm_get_eventlist in -lxdsm" >&5 + $as_echo_n "checking for dm_get_eventlist in -lxdsm... " >&6; } +-if test "${ac_cv_lib_xdsm_dm_get_eventlist+set}" = set; then ++if test "${ac_cv_lib_xdsm_dm_get_eventlist+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS + LIBS="-lxdsm $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -59282,43 +22004,18 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_xdsm_dm_get_eventlist=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_xdsm_dm_get_eventlist=no ++ ac_cv_lib_xdsm_dm_get_eventlist=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_xdsm_dm_get_eventlist" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xdsm_dm_get_eventlist" >&5 + $as_echo "$ac_cv_lib_xdsm_dm_get_eventlist" >&6; } +-if test "x$ac_cv_lib_xdsm_dm_get_eventlist" = x""yes; then ++if test "x$ac_cv_lib_xdsm_dm_get_eventlist" = x""yes; then : + samba_dmapi_libs="-lxdsm" + fi + +@@ -59327,153 +22024,12 @@ # Only bother to test ehaders if we have a candidate DMAPI library if test x"$samba_dmapi_libs" != x"" ; then @@ -64767,7 +66101,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -57466,11 +20908,7 @@ +@@ -59487,11 +22043,7 @@ if test x"$samba_dmapi_libs" != x"" ; then samba_dmapi_save_LIBS="$LIBS" LIBS="$LIBS $samba_dmapi_libs" @@ -64780,7 +66114,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include /* needed by Tru64 */ -@@ -57505,50 +20943,25 @@ +@@ -59526,50 +22078,25 @@ return 0; } _ACEOF @@ -64835,7 +66169,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: DMAPI support not present" >&6;} # DMAPI detection failure actions end -@@ -57556,11 +20969,9 @@ +@@ -59577,11 +22104,9 @@ # DMAPI detection success actions start @@ -64849,7 +66183,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: Found DMAPI support in $samba_dmapi_libs" >&6;} # DMAPI detection success actions end -@@ -57574,20 +20985,16 @@ +@@ -59595,20 +22120,16 @@ default_shared_modules="$default_shared_modules vfs_tsmsm" fi @@ -64874,7 +66208,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -57603,65 +21010,32 @@ +@@ -59624,65 +22145,32 @@ } _ACEOF @@ -64949,7 +66283,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -57673,185 +21047,29 @@ +@@ -59694,185 +22182,29 @@ return 0; } _ACEOF @@ -65142,7 +66476,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -57861,110 +21079,18 @@ +@@ -59882,110 +22214,18 @@ ac_save_LIBS=$LIBS @@ -65259,7 +66593,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -@@ -57981,18 +21107,14 @@ +@@ -60002,18 +22242,14 @@ ;; *) # cap_get_proc was not found, try adding libcap @@ -65281,7 +66615,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -58010,50 +21132,23 @@ +@@ -60031,50 +22267,23 @@ return 0; } _ACEOF @@ -65339,7 +66673,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -@@ -58075,20 +21170,16 @@ +@@ -60096,20 +22305,16 @@ @@ -65364,7 +66698,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -58104,52 +21195,23 @@ +@@ -60125,52 +22330,23 @@ exit(0); } _ACEOF @@ -65423,7 +66757,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else LIBS=$ac_save_LIBS -@@ -58162,17 +21224,13 @@ +@@ -60183,17 +22359,13 @@ # This is *really* broken but some systems (DEC OSF1) do this.... JRA. # @@ -65444,7 +66778,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #if defined(HAVE_RPC_RPC_H) -@@ -58186,55 +21244,28 @@ +@@ -60207,55 +22379,28 @@ return 0; } _ACEOF @@ -65507,7 +66841,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #if defined(HAVE_RPC_RPC_H) -@@ -58248,55 +21279,28 @@ +@@ -60269,55 +22414,28 @@ return 0; } _ACEOF @@ -65570,7 +66904,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #if defined(HAVE_RPC_RPC_H) -@@ -58310,55 +21314,28 @@ +@@ -60331,55 +22449,28 @@ return 0; } _ACEOF @@ -65594,11 +66928,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no ++else + samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no fi - @@ -65633,7 +66968,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #if defined(HAVE_RPC_RPC_H) -@@ -58372,56 +21349,29 @@ +@@ -60393,56 +22484,29 @@ return 0; } _ACEOF @@ -65697,7 +67032,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #ifdef HAVE_SYS_SECURITY_H -@@ -58439,238 +21389,112 @@ +@@ -60460,238 +22524,112 @@ return 0; } _ACEOF @@ -65972,7 +67307,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -58681,63 +21505,32 @@ +@@ -60702,63 +22640,32 @@ return 0; } _ACEOF @@ -65999,12 +67334,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - }; then +if ac_fn_c_try_link "$LINENO"; then : samba_cv_SYSCONF_SC_NGROUPS_MAX=yes --else + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - samba_cv_SYSCONF_SC_NGROUPS_MAX=no -+else + samba_cv_SYSCONF_SC_NGROUPS_MAX=no fi - @@ -66046,7 +67380,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -58748,63 +21541,32 @@ +@@ -60769,63 +22676,32 @@ return 0; } _ACEOF @@ -66119,7 +67453,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -58815,63 +21577,32 @@ +@@ -60836,63 +22712,32 @@ return 0; } _ACEOF @@ -66192,7 +67526,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -58882,147 +21613,30 @@ +@@ -60903,147 +22748,30 @@ return 0; } _ACEOF @@ -66350,7 +67684,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -59034,20 +21648,16 @@ +@@ -61055,20 +22783,16 @@ seteuid=no; if test $seteuid = no; then @@ -66375,7 +67709,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #define AUTOCONF_TEST 1 -@@ -59055,50 +21665,21 @@ +@@ -61076,50 +22800,21 @@ #include "confdefs.h" #include "${srcdir-.}/lib/util_sec.c" _ACEOF @@ -66432,7 +67766,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi fi -@@ -59106,20 +21687,16 @@ +@@ -61127,20 +22822,16 @@ # we check for setresuid second as it conflicts with AIO on Linux. # see http://samba.org/~tridge/junkcode/aio_uid.c if test $seteuid = no; then @@ -66457,7 +67791,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #define AUTOCONF_TEST 1 -@@ -59127,69 +21704,36 @@ +@@ -61148,69 +22839,36 @@ #include "confdefs.h" #include "${srcdir-.}/lib/util_sec.c" _ACEOF @@ -66537,7 +67871,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #define AUTOCONF_TEST 1 -@@ -59197,69 +21741,36 @@ +@@ -61218,69 +22876,36 @@ #include "confdefs.h" #include "${srcdir-.}/lib/util_sec.c" _ACEOF @@ -66617,7 +67951,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #define AUTOCONF_TEST 1 -@@ -59267,64 +21778,31 @@ +@@ -61288,64 +22913,31 @@ #include "confdefs.h" #include "${srcdir-.}/lib/util_sec.c" _ACEOF @@ -66691,7 +68025,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -59338,195 +21816,98 @@ +@@ -61359,195 +22951,98 @@ return 0; } _ACEOF @@ -66917,7 +68251,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -59550,66 +21931,33 @@ +@@ -61571,67 +23066,34 @@ #endif } _ACEOF @@ -66976,6 +68310,71 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi fi + # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT. +-{ $as_echo "$as_me:$LINENO: checking for broken posix_fallocate" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken posix_fallocate" >&5 + $as_echo_n "checking for broken posix_fallocate... " >&6; } +-if test "${samba_cv_HAVE_BROKEN_POSIX_FALLOCATE+set}" = set; then ++if test "${samba_cv_HAVE_BROKEN_POSIX_FALLOCATE+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + #define _XOPEN_SOURCE 600 +@@ -61649,56 +23111,29 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes ++ samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" >&5 + $as_echo "$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" >&6; } + if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_BROKEN_POSIX_FALLOCATE /**/ +-_ACEOF ++$as_echo "#define HAVE_BROKEN_POSIX_FALLOCATE /**/" >>confdefs.h + + fi + + -{ $as_echo "$as_me:$LINENO: checking for st_blocks in struct stat" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for st_blocks in struct stat" >&5 $as_echo_n "checking for st_blocks in struct stat... " >&6; } @@ -66993,7 +68392,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -59622,55 +21970,28 @@ +@@ -61711,141 +23146,24 @@ return 0; } _ACEOF @@ -67035,10 +68434,224 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>confdefs.h <<\_ACEOF -#define HAVE_STAT_ST_BLOCKS 1 -_ACEOF +- +-fi +- +-{ $as_echo "$as_me:$LINENO: checking for blksize_t" >&5 +-$as_echo_n "checking for blksize_t... " >&6; } +-if test "${ac_cv_type_blksize_t+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- ac_cv_type_blksize_t=no +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +- +-int +-main () +-{ +-if (sizeof (blksize_t)) +- return 0; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +- +-int +-main () +-{ +-if (sizeof ((blksize_t))) +- return 0; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- : +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_type_blksize_t=yes +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +$as_echo "#define HAVE_STAT_ST_BLOCKS 1" >>confdefs.h fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_blksize_t" >&5 +-$as_echo "$ac_cv_type_blksize_t" >&6; } +-if test "x$ac_cv_type_blksize_t" = x""yes; then ++ac_fn_c_check_type "$LINENO" "blksize_t" "ac_cv_type_blksize_t" "#include ++" ++if test "x$ac_cv_type_blksize_t" = x""yes; then : + + cat >>confdefs.h <<_ACEOF + #define HAVE_BLKSIZE_T 1 +@@ -61853,103 +23171,9 @@ + + + fi +-{ $as_echo "$as_me:$LINENO: checking for blkcnt_t" >&5 +-$as_echo_n "checking for blkcnt_t... " >&6; } +-if test "${ac_cv_type_blkcnt_t+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- ac_cv_type_blkcnt_t=no +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +- +-int +-main () +-{ +-if (sizeof (blkcnt_t)) +- return 0; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +- +-int +-main () +-{ +-if (sizeof ((blkcnt_t))) +- return 0; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- : +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_type_blkcnt_t=yes +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_blkcnt_t" >&5 +-$as_echo "$ac_cv_type_blkcnt_t" >&6; } +-if test "x$ac_cv_type_blkcnt_t" = x""yes; then ++ac_fn_c_check_type "$LINENO" "blkcnt_t" "ac_cv_type_blkcnt_t" "#include ++" ++if test "x$ac_cv_type_blkcnt_t" = x""yes; then : + + cat >>confdefs.h <<_ACEOF + #define HAVE_BLKCNT_T 1 +@@ -61959,17 +23183,13 @@ + fi + + -{ $as_echo "$as_me:$LINENO: checking for st_blksize in struct stat" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for st_blksize in struct stat" >&5 $as_echo_n "checking for st_blksize in struct stat... " >&6; } @@ -67056,7 +68669,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -59683,55 +22004,28 @@ +@@ -61982,55 +23202,28 @@ return 0; } _ACEOF @@ -67119,7 +68732,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -59744,57 +22038,30 @@ +@@ -62043,57 +23236,30 @@ return 0; } _ACEOF @@ -67184,7 +68797,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -59810,58 +22077,31 @@ +@@ -62109,58 +23275,31 @@ return 0; } _ACEOF @@ -67251,7 +68864,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -59880,74 +22120,45 @@ +@@ -62179,74 +23318,45 @@ } _ACEOF @@ -67337,7 +68950,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -59956,24 +22167,24 @@ +@@ -62255,24 +23365,24 @@ #################################################### # check for Linux-specific AFS fake-kaserver support samba_cv_WITH_FAKE_KASERVER=no @@ -67367,7 +68980,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -59985,18 +22196,14 @@ +@@ -62284,18 +23394,14 @@ test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then # see if this box has the OpenSSL DES libraries @@ -67389,7 +69002,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -60014,208 +22221,43 @@ +@@ -62313,208 +23419,43 @@ return 0; } _ACEOF @@ -67614,7 +69227,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -60227,12 +22269,10 @@ +@@ -62526,12 +23467,10 @@ if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" || test x"$samba_cv_WITH_AFS" = x"auto"; then @@ -67629,7 +69242,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi else have_afs_headers=yes -@@ -60242,9 +22282,7 @@ +@@ -62541,9 +23480,7 @@ FAKE_KASERVER_OBJ="" if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then @@ -67640,7 +69253,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure FAKE_KASERVER_OBJ="utils/net_afs.o" fi -@@ -60253,24 +22291,24 @@ +@@ -62552,24 +23489,24 @@ ################################################# # check whether to compile AFS/NT ACL mapping module samba_cv_WITH_VFS_AFSACL=no @@ -67670,80 +69283,78 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -60280,220 +22318,78 @@ - default_shared_modules="$default_shared_modules vfs_afsacl" - fi +@@ -62581,36 +23518,32 @@ + + if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then --if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then -- -cat >>confdefs.h <<\_ACEOF -#define WITH_AFS 1 -_ACEOF -- --fi -- --################################################# --# check for the DFS clear-text auth system ++$as_echo "#define WITH_AFS 1" >>confdefs.h + + fi + + ################################################# + # check for the DFS clear-text auth system -{ $as_echo "$as_me:$LINENO: checking whether to use DFS clear-text auth" >&5 --$as_echo_n "checking whether to use DFS clear-text auth... " >&6; } -- --# Check whether --with-dfs was given. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use DFS clear-text auth" >&5 + $as_echo_n "checking whether to use DFS clear-text auth... " >&6; } + + # Check whether --with-dfs was given. -if test "${with_dfs+set}" = set; then -- withval=$with_dfs; case "$withval" in -- yes) ++if test "${with_dfs+set}" = set; then : + withval=$with_dfs; case "$withval" in + yes) - { $as_echo "$as_me:$LINENO: result: yes" >&5 --$as_echo "yes" >&6; } -- ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + -cat >>confdefs.h <<\_ACEOF -#define WITH_DFS 1 -_ACEOF -- -- ;; -- *) ++$as_echo "#define WITH_DFS 1" >>confdefs.h + + ;; + *) - { $as_echo "$as_me:$LINENO: result: no" >&5 --$as_echo "no" >&6; } -- ;; -- esac --else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + ;; + esac + else - { $as_echo "$as_me:$LINENO: result: no" >&5 --$as_echo "no" >&6; } -- --fi -- -- --######################################################## --# Compile with LDAP support? -- --with_ldap_support=auto ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + + fi +@@ -62620,12 +23553,12 @@ + # Compile with LDAP support? + + with_ldap_support=auto -{ $as_echo "$as_me:$LINENO: checking for LDAP support" >&5 --$as_echo_n "checking for LDAP support... " >&6; } -- -- --# Check whether --with-ldap was given. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LDAP support" >&5 + $as_echo_n "checking for LDAP support... " >&6; } + + + # Check whether --with-ldap was given. -if test "${with_ldap+set}" = set; then -- withval=$with_ldap; case "$withval" in -- yes|no) -- with_ldap_support=$withval -- ;; -- esac --fi -- -- ++if test "${with_ldap+set}" = set; then : + withval=$with_ldap; case "$withval" in + yes|no) + with_ldap_support=$withval +@@ -62634,7 +23567,7 @@ + fi + + -{ $as_echo "$as_me:$LINENO: result: $with_ldap_support" >&5 --$as_echo "$with_ldap_support" >&6; } -- --SMBLDAP="" -- --SMBLDAPUTIL="" -- --LDBLDAP="" -- -- --if test x"$with_ldap_support" != x"no"; then -- -- ################################################################## -- # first test for ldap.h and lber.h -- # (ldap.h is required for this test) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_ldap_support" >&5 + $as_echo "$with_ldap_support" >&6; } + + SMBLDAP="" +@@ -62649,150 +23582,12 @@ + ################################################################## + # first test for ldap.h and lber.h + # (ldap.h is required for this test) - - -for ac_header in ldap.h lber.h @@ -67836,29 +69447,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -+if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then -+ -+$as_echo "#define WITH_AFS 1" >>confdefs.h -+ - fi - +-fi +- -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } -+################################################# -+# check for the DFS clear-text auth system -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use DFS clear-text auth" >&5 -+$as_echo_n "checking whether to use DFS clear-text auth... " >&6; } -+ -+# Check whether --with-dfs was given. -+if test "${with_dfs+set}" = set; then : -+ withval=$with_dfs; case "$withval" in -+ yes) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } -+ -+$as_echo "#define WITH_DFS 1" >>confdefs.h - +- -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) @@ -67867,7 +69461,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; +- ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} @@ -67887,64 +69481,24 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -## ---------------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 -+ *) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } - ;; +- ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -+ esac - else +-else - eval "$as_ac_Header=\$ac_header_preproc" -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+ - fi +-fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - -+ -+######################################################## -+# Compile with LDAP support? -+ -+with_ldap_support=auto -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LDAP support" >&5 -+$as_echo_n "checking for LDAP support... " >&6; } -+ -+ -+# Check whether --with-ldap was given. -+if test "${with_ldap+set}" = set; then : -+ withval=$with_ldap; case "$withval" in -+ yes|no) -+ with_ldap_support=$withval -+ ;; -+ esac - fi +- +-fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_ldap_support" >&5 -+$as_echo "$with_ldap_support" >&6; } -+ -+SMBLDAP="" -+ -+SMBLDAPUTIL="" -+ -+LDBLDAP="" -+ -+ -+if test x"$with_ldap_support" != x"no"; then -+ -+ ################################################################## -+ # first test for ldap.h and lber.h -+ # (ldap.h is required for this test) + for ac_header in ldap.h lber.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -67954,7 +69508,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -60505,11 +22401,9 @@ +@@ -62804,11 +23599,9 @@ if test x"$ac_cv_header_ldap_h" != x"yes"; then if test x"$with_ldap_support" = x"yes"; then @@ -67968,7 +69522,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: ldap.h is needed for LDAP support" >&2;} fi -@@ -60521,117 +22415,24 @@ +@@ -62820,117 +23613,24 @@ # unsigned int in include/includes.h case $host_os in *hpux*) @@ -68093,7 +69647,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: ber_tag_t is needed for LDAP support" >&2;} fi with_ldap_support=no -@@ -60648,23 +22449,17 @@ +@@ -62947,23 +23647,17 @@ # this test must be before the libldap test @@ -68120,7 +69674,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -60682,54 +22477,28 @@ +@@ -62981,54 +23675,28 @@ return 0; } _ACEOF @@ -68182,7 +69736,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBLBER 1 _ACEOF -@@ -60745,25 +22514,19 @@ +@@ -63044,25 +23712,19 @@ fi @@ -68211,7 +69765,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define ber_sockbuf_add_io to an innocuous variant, in case declares ber_sockbuf_add_io. For example, HP-UX 11i declares gettimeofday. */ -@@ -60804,61 +22567,31 @@ +@@ -63103,61 +23765,31 @@ return 0; } _ACEOF @@ -68282,7 +69836,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -60869,59 +22602,32 @@ +@@ -63168,59 +23800,32 @@ return 0; } _ACEOF @@ -68349,7 +69903,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -60932,42 +22638,19 @@ +@@ -63231,42 +23836,19 @@ return 0; } _ACEOF @@ -68396,7 +69950,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -60975,23 +22658,17 @@ +@@ -63274,23 +23856,17 @@ # now see if we can find the ldap libs in standard paths @@ -68423,7 +69977,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -61009,54 +22686,28 @@ +@@ -63308,54 +23884,28 @@ return 0; } _ACEOF @@ -68485,7 +70039,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBLDAP 1 _ACEOF -@@ -61072,25 +22723,19 @@ +@@ -63371,25 +23921,19 @@ fi @@ -68514,7 +70068,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define ldap_set_rebind_proc to an innocuous variant, in case declares ldap_set_rebind_proc. For example, HP-UX 11i declares gettimeofday. */ -@@ -61131,62 +22776,32 @@ +@@ -63430,62 +23974,32 @@ return 0; } _ACEOF @@ -68586,7 +70140,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -61199,37 +22814,16 @@ +@@ -63498,37 +24012,16 @@ return 0; } _ACEOF @@ -68627,7 +70181,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$smb_ldap_cv_ldap_set_rebind_proc" >&6; } -@@ -61240,19 +22834,14 @@ +@@ -63539,19 +24032,14 @@ @@ -68650,7 +70204,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define ldap_initialize to an innocuous variant, in case declares ldap_initialize. For example, HP-UX 11i declares gettimeofday. */ -@@ -61293,55 +22882,27 @@ +@@ -63592,55 +24080,27 @@ return 0; } _ACEOF @@ -68713,7 +70267,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED" default_static_modules="$default_static_modules pdb_ldap idmap_ldap"; -@@ -61349,17 +22910,15 @@ +@@ -63648,17 +24108,15 @@ SMBLDAP="lib/smbldap.o" SMBLDAPUTIL="lib/smbldap_util.o" with_ldap_support=yes @@ -68735,7 +70289,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: libldap is needed for LDAP support" >&2;} fi -@@ -61374,12 +22933,12 @@ +@@ -63673,12 +24131,12 @@ # active directory support with_ads_support=auto @@ -68750,7 +70304,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_ads; case "$withval" in yes|no) with_ads_support="$withval" -@@ -61388,7 +22947,7 @@ +@@ -63687,7 +24145,7 @@ fi @@ -68759,7 +70313,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$with_ads_support" >&6; } FOUND_KRB5=no -@@ -61397,11 +22956,9 @@ +@@ -63696,11 +24154,9 @@ if test x"$with_ldap_support" != x"yes"; then if test x"$with_ads_support" = x"yes"; then @@ -68773,7 +70327,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: Disabling Active Directory support (requires LDAP support)" >&2;} with_ads_support=no fi -@@ -61416,19 +22973,14 @@ +@@ -63715,19 +24171,14 @@ *hpux*) @@ -68796,7 +70350,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define ldap_init to an innocuous variant, in case declares ldap_init. For example, HP-UX 11i declares gettimeofday. */ -@@ -61469,57 +23021,29 @@ +@@ -63768,57 +24219,29 @@ return 0; } _ACEOF @@ -68862,7 +70416,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: Disabling Active Directory support (requires ldap_init on HPUX)" >&2;} with_ads_support=no fi -@@ -61528,19 +23052,14 @@ +@@ -63827,19 +24250,14 @@ *) @@ -68885,7 +70439,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define ldap_initialize to an innocuous variant, in case declares ldap_initialize. For example, HP-UX 11i declares gettimeofday. */ -@@ -61581,57 +23100,29 @@ +@@ -63880,57 +24298,29 @@ return 0; } _ACEOF @@ -68951,7 +70505,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: Disabling Active Directory support (requires ldap_initialize)" >&2;} with_ads_support=no fi -@@ -61642,19 +23133,14 @@ +@@ -63941,19 +24331,14 @@ @@ -68974,7 +70528,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define ldap_add_result_entry to an innocuous variant, in case declares ldap_add_result_entry. For example, HP-UX 11i declares gettimeofday. */ -@@ -61695,57 +23181,29 @@ +@@ -63994,57 +24379,29 @@ return 0; } _ACEOF @@ -69040,7 +70594,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: Disabling Active Directory support (requires ldap_add_result_entry)" >&2;} with_ads_support=no fi -@@ -61761,23 +23219,23 @@ +@@ -64060,23 +24417,23 @@ if test x$FOUND_KRB5 = x"no"; then ################################################# # check for location of Kerberos 5 install @@ -69069,7 +70623,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$withval" >&6; } KRB5_CFLAGS="-I$withval/include" KRB5_CPPFLAGS="-I$withval/include" -@@ -61789,7 +23247,7 @@ +@@ -64088,7 +24445,7 @@ ;; esac else @@ -69078,7 +70632,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no krb5-path given" >&6; } fi -@@ -61800,9 +23258,9 @@ +@@ -64099,9 +24456,9 @@ # check for krb5-config from recent MIT and Heimdal kerberos 5 # Extract the first word of "krb5-config", so it can be a program name with args. set dummy krb5-config; ac_word=$2 @@ -69090,7 +70644,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else case $KRB5CONFIG in -@@ -61815,14 +23273,14 @@ +@@ -64114,14 +24471,14 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -69108,7 +70662,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS ;; -@@ -61830,15 +23288,15 @@ +@@ -64129,15 +24486,15 @@ fi KRB5CONFIG=$ac_cv_path_KRB5CONFIG if test -n "$KRB5CONFIG"; then @@ -69127,7 +70681,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking for working krb5-config... " >&6; } if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then ac_save_CFLAGS=$CFLAGS -@@ -61852,17 +23310,17 @@ +@@ -64151,17 +24508,17 @@ CFLAGS=$ac_save_CFLAGS;export CFLAGS LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS FOUND_KRB5=yes @@ -69148,7 +70702,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking for /usr/include/heimdal... " >&6; } if test -d /usr/include/heimdal; then if test -f /usr/lib/heimdal/lib/libkrb5.a; then -@@ -61870,17 +23328,17 @@ +@@ -64169,17 +24526,17 @@ KRB5_CPPFLAGS="-I/usr/include/heimdal" KRB5_LDFLAGS="-L/usr/lib/heimdal/lib" FOUND_KRB5=yes @@ -69169,7 +70723,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi fi -@@ -61888,17 +23346,17 @@ +@@ -64187,17 +24544,17 @@ if test x$FOUND_KRB5 = x"no"; then ################################################# # see if this box has the RedHat location for kerberos @@ -69190,7 +70744,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi fi -@@ -61906,16 +23364,16 @@ +@@ -64205,16 +24562,16 @@ if test x$FOUND_KRB5 = x"no"; then ################################################# # see if this box has the OpenBSD location for heimdal krb5 @@ -69210,10 +70764,52 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi fi -@@ -62002,151 +23460,12 @@ - # now check for krb5.h. Some systems have the libraries without the headers! - # note that this check is done here to allow for different kerberos - # include paths +@@ -64259,193 +24616,54 @@ + KRB5_LIBS=$ac_new_flags + + +- ac_new_flags="" +- l="" +- for i in $KRB5_LDFLAGS; do +- case $l$i in +- -L/usr/lib) ;; +- -L/usr/lib/) ;; +- -L/usr/lib64) ;; +- -L/usr/lib64/) ;; +- -Wl,-rpath,/usr/lib) l="";; +- -Wl,-rpath,/usr/lib/) l="";; +- -Wl,-rpath,/usr/lib64) l="";; +- -Wl,-rpath,/usr/lib64/) l="";; +- -Wl,-rpath) l=$i;; +- -Wl,-rpath-Wl,/usr/lib) l="";; +- -Wl,-rpath-Wl,/usr/lib/) l="";; +- -Wl,-rpath-Wl,/usr/lib64) l="";; +- -Wl,-rpath-Wl,/usr/lib64/) l="";; +- *) +- s=" " +- if test x"$ac_new_flags" = x""; then +- s=""; +- fi +- if test x"$l" = x""; then +- ac_new_flags="$ac_new_flags$s$i"; +- else +- ac_new_flags="$ac_new_flags$s$l $i"; +- fi +- l="" +- ;; +- esac +- done +- KRB5_LDFLAGS=$ac_new_flags +- +- CFLAGS="$KRB5_CFLAGS $CFLAGS" +- CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" +- LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" +- +- KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS" +- +- # now check for krb5.h. Some systems have the libraries without the headers! +- # note that this check is done here to allow for different kerberos +- # include paths - -for ac_header in krb5.h -do @@ -69310,7 +70906,39 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } -- ++ ac_new_flags="" ++ l="" ++ for i in $KRB5_LDFLAGS; do ++ case $l$i in ++ -L/usr/lib) ;; ++ -L/usr/lib/) ;; ++ -L/usr/lib64) ;; ++ -L/usr/lib64/) ;; ++ -Wl,-rpath,/usr/lib) l="";; ++ -Wl,-rpath,/usr/lib/) l="";; ++ -Wl,-rpath,/usr/lib64) l="";; ++ -Wl,-rpath,/usr/lib64/) l="";; ++ -Wl,-rpath) l=$i;; ++ -Wl,-rpath-Wl,/usr/lib) l="";; ++ -Wl,-rpath-Wl,/usr/lib/) l="";; ++ -Wl,-rpath-Wl,/usr/lib64) l="";; ++ -Wl,-rpath-Wl,/usr/lib64/) l="";; ++ *) ++ s=" " ++ if test x"$ac_new_flags" = x""; then ++ s=""; ++ fi ++ if test x"$l" = x""; then ++ ac_new_flags="$ac_new_flags$s$i"; ++ else ++ ac_new_flags="$ac_new_flags$s$l $i"; ++ fi ++ l="" ++ ;; ++ esac ++ done ++ KRB5_LDFLAGS=$ac_new_flags + -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) @@ -69352,11 +70980,19 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -- ++ CFLAGS="$KRB5_CFLAGS $CFLAGS" ++ CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" ++ LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" + -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then ++ KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS" ++ ++ # now check for krb5.h. Some systems have the libraries without the headers! ++ # note that this check is done here to allow for different kerberos ++ # include paths + for ac_header in krb5.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "krb5.h" "ac_cv_header_krb5_h" "$ac_includes_default" @@ -69367,7 +71003,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -62160,11 +23479,9 @@ +@@ -64459,11 +24677,9 @@ # i.e with_ads_support = auto, otherwise die with an error. if test x"$with_ads_support" = x"yes"; then @@ -69381,7 +71017,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: Active Directory cannot be supported without krb5.h" >&2;} fi -@@ -62176,65 +23493,16 @@ +@@ -64475,65 +24691,16 @@ CPPFLAGS=$ac_save_CPPFLAGS LDFLAGS=$ac_save_LDFLAGS fi @@ -69453,7 +71089,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -62249,17 +23517,13 @@ +@@ -64550,17 +24717,13 @@ # check for new heimdal KRB5_DEPRECATED handling @@ -69474,7 +71110,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #define KRB5_DEPRECATED 1 #include -@@ -62271,42 +23535,19 @@ +@@ -64572,42 +24735,19 @@ return 0; } _ACEOF @@ -69521,7 +71157,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi fi -@@ -62320,152 +23561,12 @@ +@@ -64621,152 +24761,12 @@ # now check for gssapi headers. This is also done here to allow for # different kerberos include paths @@ -69680,7 +71316,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -62479,23 +23580,17 @@ +@@ -64780,23 +24780,17 @@ # we might need the k5crypto and com_err libraries on some systems @@ -69707,7 +71343,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -62513,54 +23608,28 @@ +@@ -64814,54 +24808,28 @@ return 0; } _ACEOF @@ -69769,7 +71405,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBCOM_ERR 1 _ACEOF -@@ -62577,24 +23646,17 @@ +@@ -64878,24 +24846,17 @@ fi @@ -69797,7 +71433,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -62612,54 +23674,28 @@ +@@ -64913,54 +24874,28 @@ return 0; } _ACEOF @@ -69859,7 +71495,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBK5CRYPTO 1 _ACEOF -@@ -62675,27 +23711,20 @@ +@@ -64976,27 +24911,20 @@ fi @@ -69890,7 +71526,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -62713,54 +23742,28 @@ +@@ -65014,54 +24942,28 @@ return 0; } _ACEOF @@ -69952,7 +71588,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBCRYPTO 1 _ACEOF -@@ -62777,24 +23780,17 @@ +@@ -65078,24 +24980,17 @@ fi @@ -69980,7 +71616,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -62812,54 +23808,28 @@ +@@ -65113,54 +25008,28 @@ return 0; } _ACEOF @@ -70042,7 +71678,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBASN1 1 _ACEOF -@@ -62876,24 +23846,17 @@ +@@ -65177,24 +25046,17 @@ fi @@ -70070,7 +71706,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -62911,54 +23874,28 @@ +@@ -65212,54 +25074,28 @@ return 0; } _ACEOF @@ -70132,7 +71768,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBROKEN 1 _ACEOF -@@ -62974,27 +23911,20 @@ +@@ -65275,27 +25111,20 @@ fi @@ -70163,7 +71799,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -63012,54 +23942,28 @@ +@@ -65313,54 +25142,28 @@ return 0; } _ACEOF @@ -70225,7 +71861,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBGSSAPI 1 _ACEOF -@@ -63075,29 +23979,22 @@ +@@ -65376,29 +25179,22 @@ fi @@ -70258,7 +71894,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -63115,54 +24012,28 @@ +@@ -65416,54 +25212,28 @@ return 0; } _ACEOF @@ -70320,7 +71956,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBKRB5 1 _ACEOF -@@ -63179,24 +24050,17 @@ +@@ -65480,24 +25250,17 @@ fi @@ -70348,7 +71984,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -63214,54 +24078,28 @@ +@@ -65515,54 +25278,28 @@ return 0; } _ACEOF @@ -70410,7 +72046,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBKRB5 1 _ACEOF -@@ -63277,29 +24115,22 @@ +@@ -65578,29 +25315,22 @@ fi @@ -70443,7 +72079,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -63317,54 +24148,28 @@ +@@ -65618,54 +25348,28 @@ return 0; } _ACEOF @@ -70505,7 +72141,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBGSSAPI_KRB5 1 _ACEOF -@@ -63379,24 +24184,18 @@ +@@ -65680,24 +25384,18 @@ have_gssapi=yes fi @@ -70533,7 +72169,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_set_real_time to an innocuous variant, in case declares krb5_set_real_time. For example, HP-UX 11i declares gettimeofday. */ -@@ -63437,43 +24236,18 @@ +@@ -65738,43 +25436,18 @@ return 0; } _ACEOF @@ -70583,7 +72219,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_SET_REAL_TIME 1 _ACEOF -@@ -63481,20 +24255,14 @@ +@@ -65782,20 +25455,14 @@ fi @@ -70607,7 +72243,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_set_default_in_tkt_etypes to an innocuous variant, in case declares krb5_set_default_in_tkt_etypes. For example, HP-UX 11i declares gettimeofday. */ -@@ -63535,43 +24303,18 @@ +@@ -65836,43 +25503,18 @@ return 0; } _ACEOF @@ -70657,7 +72293,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_SET_DEFAULT_IN_TKT_ETYPES 1 _ACEOF -@@ -63579,20 +24322,14 @@ +@@ -65880,20 +25522,14 @@ fi @@ -70681,7 +72317,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_set_default_tgs_enctypes to an innocuous variant, in case declares krb5_set_default_tgs_enctypes. For example, HP-UX 11i declares gettimeofday. */ -@@ -63633,43 +24370,18 @@ +@@ -65934,43 +25570,18 @@ return 0; } _ACEOF @@ -70731,7 +72367,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_SET_DEFAULT_TGS_ENCTYPES 1 _ACEOF -@@ -63677,20 +24389,14 @@ +@@ -65978,20 +25589,14 @@ fi @@ -70755,7 +72391,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_set_default_tgs_ktypes to an innocuous variant, in case declares krb5_set_default_tgs_ktypes. For example, HP-UX 11i declares gettimeofday. */ -@@ -63731,43 +24437,18 @@ +@@ -66032,43 +25637,18 @@ return 0; } _ACEOF @@ -70805,7 +72441,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_SET_DEFAULT_TGS_KTYPES 1 _ACEOF -@@ -63775,20 +24456,14 @@ +@@ -66076,20 +25656,14 @@ fi @@ -70829,7 +72465,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_principal2salt to an innocuous variant, in case declares krb5_principal2salt. For example, HP-UX 11i declares gettimeofday. */ -@@ -63829,43 +24504,18 @@ +@@ -66130,43 +25704,18 @@ return 0; } _ACEOF @@ -70879,7 +72515,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_PRINCIPAL2SALT 1 _ACEOF -@@ -63873,20 +24523,14 @@ +@@ -66174,20 +25723,14 @@ fi @@ -70903,7 +72539,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_use_enctype to an innocuous variant, in case declares krb5_use_enctype. For example, HP-UX 11i declares gettimeofday. */ -@@ -63927,43 +24571,18 @@ +@@ -66228,43 +25771,18 @@ return 0; } _ACEOF @@ -70953,7 +72589,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_USE_ENCTYPE 1 _ACEOF -@@ -63971,20 +24590,14 @@ +@@ -66272,20 +25790,14 @@ fi @@ -70977,7 +72613,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_string_to_key to an innocuous variant, in case declares krb5_string_to_key. For example, HP-UX 11i declares gettimeofday. */ -@@ -64025,43 +24638,18 @@ +@@ -66326,43 +25838,18 @@ return 0; } _ACEOF @@ -71027,7 +72663,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_STRING_TO_KEY 1 _ACEOF -@@ -64069,20 +24657,14 @@ +@@ -66370,20 +25857,14 @@ fi @@ -71051,7 +72687,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_get_pw_salt to an innocuous variant, in case declares krb5_get_pw_salt. For example, HP-UX 11i declares gettimeofday. */ -@@ -64123,43 +24705,18 @@ +@@ -66424,43 +25905,18 @@ return 0; } _ACEOF @@ -71101,7 +72737,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_GET_PW_SALT 1 _ACEOF -@@ -64167,20 +24724,14 @@ +@@ -66468,20 +25924,14 @@ fi @@ -71125,7 +72761,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_string_to_key_salt to an innocuous variant, in case declares krb5_string_to_key_salt. For example, HP-UX 11i declares gettimeofday. */ -@@ -64221,43 +24772,18 @@ +@@ -66522,43 +25972,18 @@ return 0; } _ACEOF @@ -71175,7 +72811,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_STRING_TO_KEY_SALT 1 _ACEOF -@@ -64265,20 +24791,14 @@ +@@ -66566,20 +25991,14 @@ fi @@ -71199,7 +72835,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_auth_con_setkey to an innocuous variant, in case declares krb5_auth_con_setkey. For example, HP-UX 11i declares gettimeofday. */ -@@ -64319,43 +24839,18 @@ +@@ -66620,43 +26039,18 @@ return 0; } _ACEOF @@ -71249,7 +72885,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_AUTH_CON_SETKEY 1 _ACEOF -@@ -64363,20 +24858,14 @@ +@@ -66664,20 +26058,14 @@ fi @@ -71273,7 +72909,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_auth_con_setuseruserkey to an innocuous variant, in case declares krb5_auth_con_setuseruserkey. For example, HP-UX 11i declares gettimeofday. */ -@@ -64417,43 +24906,18 @@ +@@ -66718,43 +26106,18 @@ return 0; } _ACEOF @@ -71323,7 +72959,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_AUTH_CON_SETUSERUSERKEY 1 _ACEOF -@@ -64461,20 +24925,14 @@ +@@ -66762,20 +26125,14 @@ fi @@ -71347,7 +72983,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_locate_kdc to an innocuous variant, in case declares krb5_locate_kdc. For example, HP-UX 11i declares gettimeofday. */ -@@ -64515,43 +24973,18 @@ +@@ -66816,43 +26173,18 @@ return 0; } _ACEOF @@ -71397,7 +73033,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_LOCATE_KDC 1 _ACEOF -@@ -64559,20 +24992,14 @@ +@@ -66860,20 +26192,14 @@ fi @@ -71421,7 +73057,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_get_permitted_enctypes to an innocuous variant, in case declares krb5_get_permitted_enctypes. For example, HP-UX 11i declares gettimeofday. */ -@@ -64613,43 +25040,18 @@ +@@ -66914,43 +26240,18 @@ return 0; } _ACEOF @@ -71471,7 +73107,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_GET_PERMITTED_ENCTYPES 1 _ACEOF -@@ -64657,20 +25059,14 @@ +@@ -66958,20 +26259,14 @@ fi @@ -71495,7 +73131,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_get_default_in_tkt_etypes to an innocuous variant, in case declares krb5_get_default_in_tkt_etypes. For example, HP-UX 11i declares gettimeofday. */ -@@ -64711,43 +25107,18 @@ +@@ -67012,43 +26307,18 @@ return 0; } _ACEOF @@ -71545,7 +73181,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_GET_DEFAULT_IN_TKT_ETYPES 1 _ACEOF -@@ -64755,20 +25126,14 @@ +@@ -67056,20 +26326,14 @@ fi @@ -71569,7 +73205,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_free_data_contents to an innocuous variant, in case declares krb5_free_data_contents. For example, HP-UX 11i declares gettimeofday. */ -@@ -64809,43 +25174,18 @@ +@@ -67110,43 +26374,18 @@ return 0; } _ACEOF @@ -71619,7 +73255,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_FREE_DATA_CONTENTS 1 _ACEOF -@@ -64853,20 +25193,14 @@ +@@ -67154,20 +26393,14 @@ fi @@ -71643,7 +73279,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_principal_get_comp_string to an innocuous variant, in case declares krb5_principal_get_comp_string. For example, HP-UX 11i declares gettimeofday. */ -@@ -64907,43 +25241,18 @@ +@@ -67208,43 +26441,18 @@ return 0; } _ACEOF @@ -71693,7 +73329,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_PRINCIPAL_GET_COMP_STRING 1 _ACEOF -@@ -64951,20 +25260,14 @@ +@@ -67252,20 +26460,14 @@ fi @@ -71717,7 +73353,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_free_unparsed_name to an innocuous variant, in case declares krb5_free_unparsed_name. For example, HP-UX 11i declares gettimeofday. */ -@@ -65005,43 +25308,18 @@ +@@ -67306,43 +26508,18 @@ return 0; } _ACEOF @@ -71767,7 +73403,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_FREE_UNPARSED_NAME 1 _ACEOF -@@ -65049,20 +25327,14 @@ +@@ -67350,20 +26527,14 @@ fi @@ -71791,7 +73427,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_free_keytab_entry_contents to an innocuous variant, in case declares krb5_free_keytab_entry_contents. For example, HP-UX 11i declares gettimeofday. */ -@@ -65103,43 +25375,18 @@ +@@ -67404,43 +26575,18 @@ return 0; } _ACEOF @@ -71841,7 +73477,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_FREE_KEYTAB_ENTRY_CONTENTS 1 _ACEOF -@@ -65147,20 +25394,14 @@ +@@ -67448,20 +26594,14 @@ fi @@ -71865,7 +73501,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_kt_free_entry to an innocuous variant, in case declares krb5_kt_free_entry. For example, HP-UX 11i declares gettimeofday. */ -@@ -65201,43 +25442,18 @@ +@@ -67502,43 +26642,18 @@ return 0; } _ACEOF @@ -71915,7 +73551,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_KT_FREE_ENTRY 1 _ACEOF -@@ -65245,20 +25461,14 @@ +@@ -67546,20 +26661,14 @@ fi @@ -71939,7 +73575,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_krbhst_init to an innocuous variant, in case declares krb5_krbhst_init. For example, HP-UX 11i declares gettimeofday. */ -@@ -65299,43 +25509,18 @@ +@@ -67600,43 +26709,18 @@ return 0; } _ACEOF @@ -71989,7 +73625,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_KRBHST_INIT 1 _ACEOF -@@ -65343,20 +25528,14 @@ +@@ -67644,20 +26728,14 @@ fi @@ -72013,7 +73649,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_krbhst_get_addrinfo to an innocuous variant, in case declares krb5_krbhst_get_addrinfo. For example, HP-UX 11i declares gettimeofday. */ -@@ -65397,43 +25576,18 @@ +@@ -67698,43 +26776,18 @@ return 0; } _ACEOF @@ -72063,7 +73699,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_KRBHST_GET_ADDRINFO 1 _ACEOF -@@ -65441,20 +25595,14 @@ +@@ -67742,20 +26795,14 @@ fi @@ -72087,19 +73723,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_c_enctype_compare to an innocuous variant, in case declares krb5_c_enctype_compare. For example, HP-UX 11i declares gettimeofday. */ -@@ -65486,52 +25634,27 @@ - #if defined __stub_krb5_c_enctype_compare || defined __stub___krb5_c_enctype_compare - choke me - #endif -- --int --main () --{ --return krb5_c_enctype_compare (); -- ; -- return 0; --} --_ACEOF +@@ -67796,43 +26843,18 @@ + return 0; + } + _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -72121,15 +73748,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -+ -+int -+main () -+{ -+return krb5_c_enctype_compare (); -+ ; -+ return 0; -+} -+_ACEOF +if ac_fn_c_try_link "$LINENO"; then : ac_cv_func_ext_krb5_c_enctype_compare=yes else @@ -72155,7 +73773,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_C_ENCTYPE_COMPARE 1 _ACEOF -@@ -65539,20 +25662,14 @@ +@@ -67840,20 +26862,14 @@ fi @@ -72179,7 +73797,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_enctypes_compatible_keys to an innocuous variant, in case declares krb5_enctypes_compatible_keys. For example, HP-UX 11i declares gettimeofday. */ -@@ -65593,43 +25710,18 @@ +@@ -67894,43 +26910,18 @@ return 0; } _ACEOF @@ -72229,7 +73847,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_ENCTYPES_COMPATIBLE_KEYS 1 _ACEOF -@@ -65637,20 +25729,14 @@ +@@ -67938,20 +26929,14 @@ fi @@ -72253,7 +73871,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_crypto_init to an innocuous variant, in case declares krb5_crypto_init. For example, HP-UX 11i declares gettimeofday. */ -@@ -65691,43 +25777,18 @@ +@@ -67992,43 +26977,18 @@ return 0; } _ACEOF @@ -72303,7 +73921,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_CRYPTO_INIT 1 _ACEOF -@@ -65735,20 +25796,14 @@ +@@ -68036,20 +26996,14 @@ fi @@ -72327,7 +73945,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_crypto_destroy to an innocuous variant, in case declares krb5_crypto_destroy. For example, HP-UX 11i declares gettimeofday. */ -@@ -65789,43 +25844,18 @@ +@@ -68090,43 +27044,18 @@ return 0; } _ACEOF @@ -72377,7 +73995,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_CRYPTO_DESTROY 1 _ACEOF -@@ -65833,20 +25863,14 @@ +@@ -68134,20 +27063,14 @@ fi @@ -72401,7 +74019,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_decode_ap_req to an innocuous variant, in case declares krb5_decode_ap_req. For example, HP-UX 11i declares gettimeofday. */ -@@ -65887,43 +25911,18 @@ +@@ -68188,43 +27111,18 @@ return 0; } _ACEOF @@ -72451,7 +74069,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_DECODE_AP_REQ 1 _ACEOF -@@ -65931,20 +25930,14 @@ +@@ -68232,20 +27130,14 @@ fi @@ -72475,7 +74093,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define free_AP_REQ to an innocuous variant, in case declares free_AP_REQ. For example, HP-UX 11i declares gettimeofday. */ -@@ -65985,43 +25978,18 @@ +@@ -68286,43 +27178,18 @@ return 0; } _ACEOF @@ -72525,7 +74143,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_FREE_AP_REQ 1 _ACEOF -@@ -66029,20 +25997,14 @@ +@@ -68330,20 +27197,14 @@ fi @@ -72549,7 +74167,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_verify_checksum to an innocuous variant, in case declares krb5_verify_checksum. For example, HP-UX 11i declares gettimeofday. */ -@@ -66083,43 +26045,18 @@ +@@ -68384,43 +27245,18 @@ return 0; } _ACEOF @@ -72599,7 +74217,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_VERIFY_CHECKSUM 1 _ACEOF -@@ -66127,20 +26064,14 @@ +@@ -68428,20 +27264,14 @@ fi @@ -72623,7 +74241,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_c_verify_checksum to an innocuous variant, in case declares krb5_c_verify_checksum. For example, HP-UX 11i declares gettimeofday. */ -@@ -66181,43 +26112,18 @@ +@@ -68482,43 +27312,18 @@ return 0; } _ACEOF @@ -72673,7 +74291,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_C_VERIFY_CHECKSUM 1 _ACEOF -@@ -66225,20 +26131,14 @@ +@@ -68526,20 +27331,14 @@ fi @@ -72697,7 +74315,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_principal_compare_any_realm to an innocuous variant, in case declares krb5_principal_compare_any_realm. For example, HP-UX 11i declares gettimeofday. */ -@@ -66279,43 +26179,18 @@ +@@ -68580,43 +27379,18 @@ return 0; } _ACEOF @@ -72747,7 +74365,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_PRINCIPAL_COMPARE_ANY_REALM 1 _ACEOF -@@ -66323,20 +26198,14 @@ +@@ -68624,20 +27398,14 @@ fi @@ -72771,7 +74389,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_parse_name_norealm to an innocuous variant, in case declares krb5_parse_name_norealm. For example, HP-UX 11i declares gettimeofday. */ -@@ -66377,43 +26246,18 @@ +@@ -68678,43 +27446,18 @@ return 0; } _ACEOF @@ -72821,7 +74439,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_PARSE_NAME_NOREALM 1 _ACEOF -@@ -66421,20 +26265,14 @@ +@@ -68722,20 +27465,14 @@ fi @@ -72845,7 +74463,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_princ_size to an innocuous variant, in case declares krb5_princ_size. For example, HP-UX 11i declares gettimeofday. */ -@@ -66475,43 +26313,18 @@ +@@ -68776,43 +27513,18 @@ return 0; } _ACEOF @@ -72895,7 +74513,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_PRINC_SIZE 1 _ACEOF -@@ -66519,20 +26332,14 @@ +@@ -68820,20 +27532,14 @@ fi @@ -72919,7 +74537,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_get_init_creds_opt_set_pac_request to an innocuous variant, in case declares krb5_get_init_creds_opt_set_pac_request. For example, HP-UX 11i declares gettimeofday. */ -@@ -66573,43 +26380,18 @@ +@@ -68874,43 +27580,18 @@ return 0; } _ACEOF @@ -72969,7 +74587,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_GET_INIT_CREDS_OPT_SET_PAC_REQUEST 1 _ACEOF -@@ -66617,20 +26399,14 @@ +@@ -68918,20 +27599,14 @@ fi @@ -72993,7 +74611,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_get_renewed_creds to an innocuous variant, in case declares krb5_get_renewed_creds. For example, HP-UX 11i declares gettimeofday. */ -@@ -66671,43 +26447,18 @@ +@@ -68972,43 +27647,18 @@ return 0; } _ACEOF @@ -73043,7 +74661,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_GET_RENEWED_CREDS 1 _ACEOF -@@ -66715,20 +26466,14 @@ +@@ -69016,20 +27666,14 @@ fi @@ -73067,7 +74685,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_get_kdc_cred to an innocuous variant, in case declares krb5_get_kdc_cred. For example, HP-UX 11i declares gettimeofday. */ -@@ -66769,43 +26514,18 @@ +@@ -69070,43 +27714,18 @@ return 0; } _ACEOF @@ -73117,7 +74735,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_GET_KDC_CRED 1 _ACEOF -@@ -66813,20 +26533,14 @@ +@@ -69114,20 +27733,14 @@ fi @@ -73141,7 +74759,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_free_error_contents to an innocuous variant, in case declares krb5_free_error_contents. For example, HP-UX 11i declares gettimeofday. */ -@@ -66867,43 +26581,18 @@ +@@ -69168,43 +27781,18 @@ return 0; } _ACEOF @@ -73191,7 +74809,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_FREE_ERROR_CONTENTS 1 _ACEOF -@@ -66911,20 +26600,14 @@ +@@ -69212,20 +27800,14 @@ fi @@ -73215,7 +74833,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define initialize_krb5_error_table to an innocuous variant, in case declares initialize_krb5_error_table. For example, HP-UX 11i declares gettimeofday. */ -@@ -66965,43 +26648,18 @@ +@@ -69266,43 +27848,18 @@ return 0; } _ACEOF @@ -73265,7 +74883,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_INITIALIZE_KRB5_ERROR_TABLE 1 _ACEOF -@@ -67009,20 +26667,14 @@ +@@ -69310,20 +27867,14 @@ fi @@ -73289,7 +74907,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_get_init_creds_opt_alloc to an innocuous variant, in case declares krb5_get_init_creds_opt_alloc. For example, HP-UX 11i declares gettimeofday. */ -@@ -67063,43 +26715,18 @@ +@@ -69364,43 +27915,18 @@ return 0; } _ACEOF @@ -73339,7 +74957,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC 1 _ACEOF -@@ -67107,20 +26734,14 @@ +@@ -69408,20 +27934,14 @@ fi @@ -73363,7 +74981,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_get_init_creds_opt_free to an innocuous variant, in case declares krb5_get_init_creds_opt_free. For example, HP-UX 11i declares gettimeofday. */ -@@ -67161,43 +26782,18 @@ +@@ -69462,43 +27982,18 @@ return 0; } _ACEOF @@ -73413,7 +75031,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_GET_INIT_CREDS_OPT_FREE 1 _ACEOF -@@ -67205,20 +26801,14 @@ +@@ -69506,20 +28001,14 @@ fi @@ -73437,10 +75055,19 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_get_init_creds_opt_get_error to an innocuous variant, in case declares krb5_get_init_creds_opt_get_error. For example, HP-UX 11i declares gettimeofday. */ -@@ -67259,43 +26849,18 @@ - return 0; - } - _ACEOF +@@ -69551,52 +28040,27 @@ + #if defined __stub_krb5_get_init_creds_opt_get_error || defined __stub___krb5_get_init_creds_opt_get_error + choke me + #endif +- +-int +-main () +-{ +-return krb5_get_init_creds_opt_get_error (); +- ; +- return 0; +-} +-_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -73462,6 +75089,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then ++ ++int ++main () ++{ ++return krb5_get_init_creds_opt_get_error (); ++ ; ++ return 0; ++} ++_ACEOF +if ac_fn_c_try_link "$LINENO"; then : ac_cv_func_ext_krb5_get_init_creds_opt_get_error=yes else @@ -73487,7 +75123,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_GET_INIT_CREDS_OPT_GET_ERROR 1 _ACEOF -@@ -67303,20 +26868,14 @@ +@@ -69604,20 +28068,14 @@ fi @@ -73511,7 +75147,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_enctype_to_string to an innocuous variant, in case declares krb5_enctype_to_string. For example, HP-UX 11i declares gettimeofday. */ -@@ -67357,43 +26916,18 @@ +@@ -69658,43 +28116,18 @@ return 0; } _ACEOF @@ -73561,7 +75197,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_ENCTYPE_TO_STRING 1 _ACEOF -@@ -67401,20 +26935,14 @@ +@@ -69702,20 +28135,14 @@ fi @@ -73585,7 +75221,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_fwd_tgt_creds to an innocuous variant, in case declares krb5_fwd_tgt_creds. For example, HP-UX 11i declares gettimeofday. */ -@@ -67455,43 +26983,18 @@ +@@ -69756,43 +28183,18 @@ return 0; } _ACEOF @@ -73635,7 +75271,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_FWD_TGT_CREDS 1 _ACEOF -@@ -67499,20 +27002,14 @@ +@@ -69800,20 +28202,14 @@ fi @@ -73659,7 +75295,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define krb5_auth_con_set_req_cksumtype to an innocuous variant, in case declares krb5_auth_con_set_req_cksumtype. For example, HP-UX 11i declares gettimeofday. */ -@@ -67553,136 +27050,48 @@ +@@ -69854,43 +28250,18 @@ return 0; } _ACEOF @@ -73709,9 +75345,531 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE 1 _ACEOF +@@ -69898,20 +28269,14 @@ + fi + + +- +- + ac_check_func_ext_save_LIBS=$LIBS + LIBS="$KRB5_LIBS $LIBS" +- { $as_echo "$as_me:$LINENO: checking for krb5_get_creds_opt_alloc" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_get_creds_opt_alloc" >&5 + $as_echo_n "checking for krb5_get_creds_opt_alloc... " >&6; } +-if test "${ac_cv_func_ext_krb5_get_creds_opt_alloc+set}" = set; then ++if test "${ac_cv_func_ext_krb5_get_creds_opt_alloc+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + /* Define krb5_get_creds_opt_alloc to an innocuous variant, in case declares krb5_get_creds_opt_alloc. + For example, HP-UX 11i declares gettimeofday. */ +@@ -69952,43 +28317,18 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_ext_krb5_get_creds_opt_alloc=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_func_ext_krb5_get_creds_opt_alloc=no ++ ac_cv_func_ext_krb5_get_creds_opt_alloc=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_ext_krb5_get_creds_opt_alloc" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ext_krb5_get_creds_opt_alloc" >&5 + $as_echo "$ac_cv_func_ext_krb5_get_creds_opt_alloc" >&6; } + LIBS=$ac_check_func_ext_save_LIBS +- if test $ac_cv_func_ext_krb5_get_creds_opt_alloc = yes; then ++ if test $ac_cv_func_ext_krb5_get_creds_opt_alloc = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_KRB5_GET_CREDS_OPT_ALLOC 1 + _ACEOF +@@ -69996,20 +28336,14 @@ + fi + + +- +- + ac_check_func_ext_save_LIBS=$LIBS + LIBS="$KRB5_LIBS $LIBS" +- { $as_echo "$as_me:$LINENO: checking for krb5_get_creds_opt_set_impersonate" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_get_creds_opt_set_impersonate" >&5 + $as_echo_n "checking for krb5_get_creds_opt_set_impersonate... " >&6; } +-if test "${ac_cv_func_ext_krb5_get_creds_opt_set_impersonate+set}" = set; then ++if test "${ac_cv_func_ext_krb5_get_creds_opt_set_impersonate+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + /* Define krb5_get_creds_opt_set_impersonate to an innocuous variant, in case declares krb5_get_creds_opt_set_impersonate. + For example, HP-UX 11i declares gettimeofday. */ +@@ -70050,43 +28384,18 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_ext_krb5_get_creds_opt_set_impersonate=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_func_ext_krb5_get_creds_opt_set_impersonate=no ++ ac_cv_func_ext_krb5_get_creds_opt_set_impersonate=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_ext_krb5_get_creds_opt_set_impersonate" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ext_krb5_get_creds_opt_set_impersonate" >&5 + $as_echo "$ac_cv_func_ext_krb5_get_creds_opt_set_impersonate" >&6; } + LIBS=$ac_check_func_ext_save_LIBS +- if test $ac_cv_func_ext_krb5_get_creds_opt_set_impersonate = yes; then ++ if test $ac_cv_func_ext_krb5_get_creds_opt_set_impersonate = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_KRB5_GET_CREDS_OPT_SET_IMPERSONATE 1 + _ACEOF +@@ -70094,20 +28403,14 @@ + fi + + +- +- + ac_check_func_ext_save_LIBS=$LIBS + LIBS="$KRB5_LIBS $LIBS" +- { $as_echo "$as_me:$LINENO: checking for krb5_get_creds" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_get_creds" >&5 + $as_echo_n "checking for krb5_get_creds... " >&6; } +-if test "${ac_cv_func_ext_krb5_get_creds+set}" = set; then ++if test "${ac_cv_func_ext_krb5_get_creds+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + /* Define krb5_get_creds to an innocuous variant, in case declares krb5_get_creds. + For example, HP-UX 11i declares gettimeofday. */ +@@ -70148,43 +28451,18 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_ext_krb5_get_creds=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_func_ext_krb5_get_creds=no ++ ac_cv_func_ext_krb5_get_creds=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_ext_krb5_get_creds" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ext_krb5_get_creds" >&5 + $as_echo "$ac_cv_func_ext_krb5_get_creds" >&6; } + LIBS=$ac_check_func_ext_save_LIBS +- if test $ac_cv_func_ext_krb5_get_creds = yes; then ++ if test $ac_cv_func_ext_krb5_get_creds = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_KRB5_GET_CREDS 1 + _ACEOF +@@ -70192,20 +28470,14 @@ + fi + + +- +- + ac_check_func_ext_save_LIBS=$LIBS + LIBS="$KRB5_LIBS $LIBS" +- { $as_echo "$as_me:$LINENO: checking for krb5_get_credentials_for_user" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_get_credentials_for_user" >&5 + $as_echo_n "checking for krb5_get_credentials_for_user... " >&6; } +-if test "${ac_cv_func_ext_krb5_get_credentials_for_user+set}" = set; then ++if test "${ac_cv_func_ext_krb5_get_credentials_for_user+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + /* Define krb5_get_credentials_for_user to an innocuous variant, in case declares krb5_get_credentials_for_user. + For example, HP-UX 11i declares gettimeofday. */ +@@ -70246,43 +28518,18 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_ext_krb5_get_credentials_for_user=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_func_ext_krb5_get_credentials_for_user=no ++ ac_cv_func_ext_krb5_get_credentials_for_user=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_ext_krb5_get_credentials_for_user" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ext_krb5_get_credentials_for_user" >&5 + $as_echo "$ac_cv_func_ext_krb5_get_credentials_for_user" >&6; } + LIBS=$ac_check_func_ext_save_LIBS +- if test $ac_cv_func_ext_krb5_get_credentials_for_user = yes; then ++ if test $ac_cv_func_ext_krb5_get_credentials_for_user = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_KRB5_GET_CREDENTIALS_FOR_USER 1 + _ACEOF +@@ -70290,20 +28537,14 @@ + fi + + +- +- + ac_check_func_ext_save_LIBS=$LIBS + LIBS="$KRB5_LIBS $LIBS" +- { $as_echo "$as_me:$LINENO: checking for krb5_get_host_realm" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_get_host_realm" >&5 + $as_echo_n "checking for krb5_get_host_realm... " >&6; } +-if test "${ac_cv_func_ext_krb5_get_host_realm+set}" = set; then ++if test "${ac_cv_func_ext_krb5_get_host_realm+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + /* Define krb5_get_host_realm to an innocuous variant, in case declares krb5_get_host_realm. + For example, HP-UX 11i declares gettimeofday. */ +@@ -70344,43 +28585,18 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_ext_krb5_get_host_realm=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_func_ext_krb5_get_host_realm=no ++ ac_cv_func_ext_krb5_get_host_realm=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_ext_krb5_get_host_realm" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ext_krb5_get_host_realm" >&5 + $as_echo "$ac_cv_func_ext_krb5_get_host_realm" >&6; } + LIBS=$ac_check_func_ext_save_LIBS +- if test $ac_cv_func_ext_krb5_get_host_realm = yes; then ++ if test $ac_cv_func_ext_krb5_get_host_realm = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_KRB5_GET_HOST_REALM 1 + _ACEOF +@@ -70388,20 +28604,14 @@ + fi + + +- +- + ac_check_func_ext_save_LIBS=$LIBS + LIBS="$KRB5_LIBS $LIBS" +- { $as_echo "$as_me:$LINENO: checking for krb5_free_host_realm" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_free_host_realm" >&5 + $as_echo_n "checking for krb5_free_host_realm... " >&6; } +-if test "${ac_cv_func_ext_krb5_free_host_realm+set}" = set; then ++if test "${ac_cv_func_ext_krb5_free_host_realm+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + /* Define krb5_free_host_realm to an innocuous variant, in case declares krb5_free_host_realm. + For example, HP-UX 11i declares gettimeofday. */ +@@ -70442,208 +28652,62 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_ext_krb5_free_host_realm=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_func_ext_krb5_free_host_realm=no ++ ac_cv_func_ext_krb5_free_host_realm=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_ext_krb5_free_host_realm" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ext_krb5_free_host_realm" >&5 + $as_echo "$ac_cv_func_ext_krb5_free_host_realm" >&6; } + LIBS=$ac_check_func_ext_save_LIBS +- if test $ac_cv_func_ext_krb5_free_host_realm = yes; then ++ if test $ac_cv_func_ext_krb5_free_host_realm = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_KRB5_FREE_HOST_REALM 1 + _ACEOF fi +- + # MIT krb5 1.8 does not expose this call (yet) +- { $as_echo "$as_me:$LINENO: checking whether krb5_get_credentials_for_user is declared" >&5 +-$as_echo_n "checking whether krb5_get_credentials_for_user is declared... " >&6; } +-if test "${ac_cv_have_decl_krb5_get_credentials_for_user+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +- +-int +-main () +-{ +-#ifndef krb5_get_credentials_for_user +- (void) krb5_get_credentials_for_user; +-#endif +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_cv_have_decl_krb5_get_credentials_for_user=yes ++ ac_fn_c_check_decl "$LINENO" "krb5_get_credentials_for_user" "ac_cv_have_decl_krb5_get_credentials_for_user" "#include ++" ++if test "x$ac_cv_have_decl_krb5_get_credentials_for_user" = x""yes; then : ++ ac_have_decl=1 + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_have_decl_krb5_get_credentials_for_user=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_have_decl=0 + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_krb5_get_credentials_for_user" >&5 +-$as_echo "$ac_cv_have_decl_krb5_get_credentials_for_user" >&6; } +-if test "x$ac_cv_have_decl_krb5_get_credentials_for_user" = x""yes; then + + cat >>confdefs.h <<_ACEOF +-#define HAVE_DECL_KRB5_GET_CREDENTIALS_FOR_USER 1 +-_ACEOF +- +- +-else +- cat >>confdefs.h <<_ACEOF +-#define HAVE_DECL_KRB5_GET_CREDENTIALS_FOR_USER 0 ++#define HAVE_DECL_KRB5_GET_CREDENTIALS_FOR_USER $ac_have_decl + _ACEOF + + +-fi +- +- - # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration # but does have the symbol @@ -73778,16 +75936,16 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE 1 +-_ACEOF +- +- +-else +- cat >>confdefs.h <<_ACEOF +-#define HAVE_DECL_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE 0 +#define HAVE_DECL_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE $ac_have_decl _ACEOF --else -- cat >>confdefs.h <<_ACEOF --#define HAVE_DECL_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE 0 --_ACEOF -- -- -fi - - @@ -73811,7 +75969,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -67702,57 +27111,30 @@ +@@ -70663,57 +28727,30 @@ return 0; } _ACEOF @@ -73876,7 +76034,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -67768,58 +27150,31 @@ +@@ -70729,58 +28766,31 @@ return 0; } _ACEOF @@ -73942,7 +76100,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -67831,36 +27186,15 @@ +@@ -70792,36 +28802,15 @@ return 0; } _ACEOF @@ -73982,7 +76140,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$smb_krb5_cv_verify_checksum" >&6; } cat >>confdefs.h <<_ACEOF -@@ -67868,17 +27202,13 @@ +@@ -70829,17 +28818,13 @@ _ACEOF @@ -74003,7 +76161,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -67889,56 +27219,29 @@ +@@ -70850,56 +28835,29 @@ return 0; } _ACEOF @@ -74067,7 +76225,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -67949,56 +27252,29 @@ +@@ -70910,56 +28868,29 @@ return 0; } _ACEOF @@ -74131,7 +76289,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68009,56 +27285,29 @@ +@@ -70970,56 +28901,29 @@ return 0; } _ACEOF @@ -74195,7 +76353,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68069,56 +27318,29 @@ +@@ -71030,56 +28934,29 @@ return 0; } _ACEOF @@ -74259,7 +76417,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68129,56 +27351,29 @@ +@@ -71090,56 +28967,29 @@ return 0; } _ACEOF @@ -74323,7 +76481,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68189,56 +27384,29 @@ +@@ -71150,56 +29000,29 @@ return 0; } _ACEOF @@ -74387,7 +76545,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68249,56 +27417,29 @@ +@@ -71210,56 +29033,29 @@ return 0; } _ACEOF @@ -74451,7 +76609,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68309,55 +27450,28 @@ +@@ -71270,55 +29066,28 @@ return 0; } _ACEOF @@ -74514,7 +76672,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68368,56 +27482,29 @@ +@@ -71329,56 +29098,29 @@ return 0; } _ACEOF @@ -74578,7 +76736,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68428,56 +27515,29 @@ +@@ -71389,56 +29131,29 @@ return 0; } _ACEOF @@ -74642,7 +76800,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68488,56 +27548,29 @@ +@@ -71449,56 +29164,29 @@ return 0; } _ACEOF @@ -74706,7 +76864,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68548,56 +27581,29 @@ +@@ -71509,56 +29197,29 @@ return 0; } _ACEOF @@ -74770,7 +76928,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68608,47 +27614,22 @@ +@@ -71569,47 +29230,22 @@ return 0; } _ACEOF @@ -74824,7 +76982,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68659,58 +27640,31 @@ +@@ -71620,58 +29256,31 @@ return 0; } _ACEOF @@ -74890,7 +77048,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68721,56 +27675,29 @@ +@@ -71682,56 +29291,29 @@ return 0; } _ACEOF @@ -74954,7 +77112,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68781,56 +27708,29 @@ +@@ -71742,56 +29324,29 @@ return 0; } _ACEOF @@ -75018,7 +77176,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68841,56 +27741,29 @@ +@@ -71802,56 +29357,29 @@ return 0; } _ACEOF @@ -75082,7 +77240,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68901,56 +27774,29 @@ +@@ -71862,56 +29390,29 @@ return 0; } _ACEOF @@ -75146,7 +77304,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -68961,61 +27807,30 @@ +@@ -71922,61 +29423,30 @@ return 0; } _ACEOF @@ -75217,7 +77375,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -69026,56 +27841,29 @@ +@@ -71987,56 +29457,29 @@ return 0; } _ACEOF @@ -75281,7 +77439,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -69086,56 +27874,29 @@ +@@ -72047,56 +29490,29 @@ return 0; } _ACEOF @@ -75345,7 +77503,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -69146,65 +27907,35 @@ +@@ -72107,65 +29523,35 @@ return 0; } _ACEOF @@ -75422,7 +77580,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -69217,65 +27948,32 @@ +@@ -72178,65 +29564,32 @@ return krb5_kt_resolve(context, "WRFILE:api", &keytab); } _ACEOF @@ -75480,6 +77638,70 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi +- { $as_echo "$as_me:$LINENO: checking for krb5_realm type" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_realm type" >&5 + $as_echo_n "checking for krb5_realm type... " >&6; } +-if test "${samba_cv_HAVE_KRB5_REALM_TYPE+set}" = set; then ++if test "${samba_cv_HAVE_KRB5_REALM_TYPE+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + int +@@ -72247,56 +29600,29 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + samba_cv_HAVE_KRB5_REALM_TYPE=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- samba_cv_HAVE_KRB5_REALM_TYPE=no ++ samba_cv_HAVE_KRB5_REALM_TYPE=no + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $samba_cv_HAVE_KRB5_REALM_TYPE" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_HAVE_KRB5_REALM_TYPE" >&5 + $as_echo "$samba_cv_HAVE_KRB5_REALM_TYPE" >&6; } + + if test x"$samba_cv_HAVE_KRB5_REALM_TYPE" = x"yes"; then + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_KRB5_REALM_TYPE 1 +-_ACEOF ++$as_echo "#define HAVE_KRB5_REALM_TYPE 1" >>confdefs.h + + fi + - { $as_echo "$as_me:$LINENO: checking for krb5_princ_realm returns krb5_realm or krb5_data" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_princ_realm returns krb5_realm or krb5_data" >&5 $as_echo_n "checking for krb5_princ_realm returns krb5_realm or krb5_data... " >&6; } @@ -75497,7 +77719,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -69289,56 +27987,29 @@ +@@ -72310,56 +29636,29 @@ return 0; } _ACEOF @@ -75561,7 +77783,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -69349,56 +28020,29 @@ +@@ -72370,56 +29669,29 @@ return 0; } _ACEOF @@ -75625,7 +77847,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -69410,49 +28054,26 @@ +@@ -72431,49 +29703,26 @@ return 0; } _ACEOF @@ -75681,7 +77903,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else -@@ -69466,20 +28087,13 @@ +@@ -72487,20 +29736,13 @@ old_LDFLAGS="$LDFLAGS"; LDFLAGS="$LDFLAGS"; export LDFLAGS; @@ -75707,7 +77929,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -69493,42 +28107,15 @@ +@@ -72514,42 +29756,15 @@ } _ACEOF @@ -75754,7 +77976,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure CFLAGS="$old_CFLAGS"; old_CFLAGS=""; export CFLAGS; -@@ -69540,20 +28127,18 @@ +@@ -72561,20 +29776,18 @@ export LDFLAGS; fi @@ -75779,7 +78001,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else -@@ -69567,20 +28152,13 @@ +@@ -72588,20 +29801,13 @@ old_LDFLAGS="$LDFLAGS"; LDFLAGS="$LDFLAGS"; export LDFLAGS; @@ -75805,7 +78027,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -69591,42 +28169,15 @@ +@@ -72612,42 +29818,15 @@ } _ACEOF @@ -75852,7 +78074,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure CFLAGS="$old_CFLAGS"; old_CFLAGS=""; export CFLAGS; -@@ -69638,29 +28189,23 @@ +@@ -72659,29 +29838,23 @@ export LDFLAGS; fi @@ -75887,7 +78109,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -69671,61 +28216,30 @@ +@@ -72692,61 +29865,30 @@ return 0; } _ACEOF @@ -75958,7 +78180,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -69736,47 +28250,20 @@ +@@ -72757,47 +29899,20 @@ return 0; } _ACEOF @@ -76012,7 +78234,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -69788,7 +28275,7 @@ +@@ -72809,7 +29924,7 @@ # # if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then @@ -76021,7 +78243,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: krb5_mk_req_extended not found in -lkrb5" >&2;} use_ads=no fi -@@ -69796,7 +28283,7 @@ +@@ -72817,7 +29932,7 @@ if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \ x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes" then @@ -76030,7 +78252,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: no CREATE_KEY_FUNCTIONS detected" >&2;} use_ads=no fi -@@ -69804,7 +28291,7 @@ +@@ -72825,7 +29940,7 @@ if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \ x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes" then @@ -76039,7 +78261,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: no GET_ENCTYPES_FUNCTIONS detected" >&2;} use_ads=no fi -@@ -69812,7 +28299,7 @@ +@@ -72833,7 +29948,7 @@ if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \ x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes" then @@ -76048,7 +78270,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: no KT_FREE_FUNCTION detected" >&2;} use_ads=no fi -@@ -69820,7 +28307,7 @@ +@@ -72841,7 +29956,7 @@ if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \ x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes" then @@ -76057,7 +78279,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: no KRB5_VERIFY_CHECKSUM_FUNCTION detected" >&2;} use_ads=no fi -@@ -69832,14 +28319,14 @@ +@@ -72853,14 +29968,14 @@ if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes" then @@ -76074,7 +78296,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: no KRB5_AP_REQ_DECODING_FUNCTION detected" >&2;} use_ads=no fi -@@ -69848,29 +28335,21 @@ +@@ -72869,29 +29984,21 @@ if test x"$use_ads" = x"yes"; then @@ -76109,7 +78331,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: krb5 libs don't have all features required for Active Directory support" >&2;} fi -@@ -69896,9 +28375,9 @@ +@@ -72917,9 +30024,9 @@ KRB5_LIBS="" with_ads_support=no fi @@ -76121,7 +78343,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$use_ads" >&6; } LIBS="$ac_save_LIBS" -@@ -69910,23 +28389,17 @@ +@@ -72931,23 +30038,17 @@ @@ -76148,7 +78370,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -69944,54 +28417,28 @@ +@@ -72965,54 +30066,28 @@ return 0; } _ACEOF @@ -76210,7 +78432,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBNSCD 1 _ACEOF -@@ -70006,7 +28453,6 @@ +@@ -73027,7 +30102,6 @@ fi @@ -76218,7 +78440,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS" -@@ -70014,12 +28460,12 @@ +@@ -73035,12 +30109,12 @@ # Compile with DNS Updates support? with_dnsupdate_support=no @@ -76233,7 +78455,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_dnsupdate; case "$withval" in yes|no) with_dnsupdate_support=$withval -@@ -70028,7 +28474,7 @@ +@@ -73049,7 +30123,7 @@ fi @@ -76242,7 +78464,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$with_dnsupdate_support" >&6; } if test x"$with_dnsupdate_support" != x"no"; then -@@ -70042,151 +28488,12 @@ +@@ -73063,151 +30137,12 @@ ################################################################## # then test for uuid.h (necessary to generate unique DNS keynames # (uuid.h is required for this test) @@ -76399,7 +78621,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -70196,11 +28503,9 @@ +@@ -73217,11 +30152,9 @@ if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then if test x"$with_dnsupdate_support" = x"yes"; then @@ -76413,7 +78635,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: uuid.h is needed to enable DNS Updates support" >&2;} fi with_dnsupdate_support=no -@@ -70216,102 +28521,12 @@ +@@ -73237,102 +30170,12 @@ UUID_LIBS="" @@ -76521,7 +78743,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF # uuid_generate was found in libc or existing $LIBS -@@ -70328,9 +28543,7 @@ +@@ -73349,9 +30192,7 @@ with_dnsupdate_support=yes @@ -76532,7 +78754,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -@@ -70343,11 +28556,9 @@ +@@ -73364,11 +30205,9 @@ if test x"$with_dnsupdate_support" = x"yes"; then @@ -76546,7 +78768,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: libuuid is needed to enable DNS Updates support" >&2;} fi with_dnsupdate_support=no -@@ -70356,18 +28567,14 @@ +@@ -73377,18 +30216,14 @@ ;; *) # uuid_generate was not found, try adding libuuid @@ -76568,7 +78790,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -70385,43 +28592,18 @@ +@@ -73406,43 +30241,18 @@ return 0; } _ACEOF @@ -76618,7 +78840,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure LIBS="-luuid $LIBS" -@@ -70437,9 +28619,7 @@ +@@ -73458,9 +30268,7 @@ with_dnsupdate_support=yes @@ -76629,7 +78851,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -@@ -70449,11 +28629,9 @@ +@@ -73470,11 +30278,9 @@ if test x"$with_dnsupdate_support" = x"yes"; then @@ -76643,7 +78865,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: libuuid is needed to enable DNS Updates support" >&2;} fi with_dnsupdate_support=no -@@ -70473,28 +28651,26 @@ +@@ -73494,28 +30300,26 @@ ################################################# # check for automount support @@ -76678,13 +78900,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -70505,34 +28681,30 @@ +@@ -73526,34 +30330,30 @@ CIFSMOUNT_PROGS="" INSTALL_CIFSMOUNT="" UNINSTALL_CIFSMOUNT="" --{ $as_echo "$as_me:$LINENO: checking whether to build mount.cifs and umount.cifs" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build mount.cifs and umount.cifs" >&5 - $as_echo_n "checking whether to build mount.cifs and umount.cifs... " >&6; } +-{ $as_echo "$as_me:$LINENO: checking whether to build mount.cifs" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build mount.cifs" >&5 + $as_echo_n "checking whether to build mount.cifs... " >&6; } # Check whether --with-cifsmount was given. -if test "${with_cifsmount+set}" = set; then @@ -76707,7 +78929,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF +$as_echo "#define WITH_CIFSMOUNT 1" >>confdefs.h - CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs" + CIFSMOUNT_PROGS="bin/mount.cifs" INSTALL_CIFSMOUNT="installcifsmount" UNINSTALL_CIFSMOUNT="uninstallcifsmount" ;; @@ -76719,7 +78941,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ;; esac ;; -@@ -70540,19 +28712,17 @@ +@@ -73561,19 +30361,17 @@ else case "$host_os" in *linux*) @@ -76732,7 +78954,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF +$as_echo "#define WITH_CIFSMOUNT 1" >>confdefs.h - CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs" + CIFSMOUNT_PROGS="bin/mount.cifs" INSTALL_CIFSMOUNT="installcifsmount" UNINSTALL_CIFSMOUNT="uninstallcifsmount" ;; @@ -76742,7 +78964,55 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } ;; esac -@@ -70562,151 +28732,12 @@ +@@ -73584,40 +30382,36 @@ + CIFSUMOUNT_PROGS="" + INSTALL_CIFSUMOUNT="" + UNINSTALL_CIFSUMOUNT="" +-{ $as_echo "$as_me:$LINENO: checking whether to build umount.cifs" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build umount.cifs" >&5 + $as_echo_n "checking whether to build umount.cifs... " >&6; } + + # Check whether --with-cifsumount was given. +-if test "${with_cifsumount+set}" = set; then ++if test "${with_cifsumount+set}" = set; then : + withval=$with_cifsumount; case "$withval" in + yes) + case "$host_os" in + *linux*) +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + +-cat >>confdefs.h <<\_ACEOF +-#define WITH_CIFSUMOUNT 1 +-_ACEOF ++$as_echo "#define WITH_CIFSUMOUNT 1" >>confdefs.h + + CIFSUMOUNT_PROGS="bin/umount.cifs" + INSTALL_CIFSUMOUNT="installcifsumount" + UNINSTALL_CIFSUMOUNT="uninstallcifsumount" + ;; + *) +- { { $as_echo "$as_me:$LINENO: error: not on a linux system!" >&5 +-$as_echo "$as_me: error: not on a linux system!" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error "not on a linux system!" "$LINENO" 5 + ;; + esac + ;; + *) +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + ;; + esac + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + + fi +@@ -73625,151 +30419,12 @@ ################################################# # check for cifs.upcall support @@ -76898,7 +79168,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF HAVE_KEYUTILS_H=1 else -@@ -70718,34 +28749,28 @@ +@@ -73781,34 +30436,28 @@ CIFSUPCALL_PROGS="" INSTALL_CIFSUPCALL="" UNINSTALL_CIFSUPCALL="" @@ -76940,7 +79210,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure CIFSUPCALL_PROGS="bin/cifs.upcall" INSTALL_CIFSUPCALL="installcifsupcall" -@@ -70753,9 +28778,7 @@ +@@ -73816,9 +30465,7 @@ fi ;; *) @@ -76951,7 +79221,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ;; esac ;; -@@ -70764,18 +28787,16 @@ +@@ -73827,18 +30474,16 @@ case "$host_os" in *linux*) if test x"$use_ads" != x"yes"; then @@ -76974,7 +79244,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure CIFSUPCALL_PROGS="bin/cifs.upcall" INSTALL_CIFSUPCALL="installcifsupcall" -@@ -70783,7 +28804,7 @@ +@@ -73846,191 +30491,53 @@ fi ;; *) @@ -76982,34 +79252,44 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; - esac -@@ -70800,11 +28821,11 @@ - - with_pam_for_crypt=no - try_pam=no +- esac +- +-fi +- +- +- +-################################################# +-# Check for a PAM clear-text auth, accounts, password +-# and session support. Most PAM implementations keep their +-# headers in /usr/include/security. Darwin keeps its in +-# /usr/include/pam. +- +-with_pam_for_crypt=no +-try_pam=auto -{ $as_echo "$as_me:$LINENO: checking whether to try PAM support" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to try PAM support" >&5 - $as_echo_n "checking whether to try PAM support... " >&6; } - - # Check whether --with-pam was given. +-$as_echo_n "checking whether to try PAM support... " >&6; } +- +-# Check whether --with-pam was given. -if test "${with_pam+set}" = set; then -+if test "${with_pam+set}" = set; then : - withval=$with_pam; case "$withval" in - yes|no) - try_pam=$withval -@@ -70813,7 +28834,7 @@ - - fi - +- withval=$with_pam; case "$withval" in +- yes|no|auto) +- try_pam=$withval +- ;; +- esac +- +-fi +- -{ $as_echo "$as_me:$LINENO: result: $try_pam" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $try_pam" >&5 - $as_echo "$try_pam" >&6; } - - use_pam=no -@@ -70824,150 +28845,12 @@ - - # Most systems have PAM headers in /usr/include/security, but Darwin - # has them in /usr/include/pam. +-$as_echo "$try_pam" >&6; } +- +-use_pam=no +-create_pam_modules=no +-if test x"${try_pam}" != x"no";then +- use_pam=yes +- create_pam_modules=yes +- +- # Most systems have PAM headers in /usr/include/security, but Darwin +- # has them in /usr/include/pam. - - -for ac_header in security/pam_appl.h pam/pam_appl.h @@ -77100,14 +79380,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++ esac + - ac_header_preproc=no --fi -- + fi + -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } -- + -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) @@ -77136,7 +79417,24 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -## ---------------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 -- ;; ++ ++################################################# ++# Check for a PAM clear-text auth, accounts, password ++# and session support. Most PAM implementations keep their ++# headers in /usr/include/security. Darwin keeps its in ++# /usr/include/pam. ++ ++with_pam_for_crypt=no ++try_pam=auto ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to try PAM support" >&5 ++$as_echo_n "checking whether to try PAM support... " >&6; } ++ ++# Check whether --with-pam was given. ++if test "${with_pam+set}" = set; then : ++ withval=$with_pam; case "$withval" in ++ yes|no|auto) ++ try_pam=$withval + ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } @@ -77149,11 +79447,24 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -- --fi ++ esac + + fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $try_pam" >&5 ++$as_echo "$try_pam" >&6; } ++ ++use_pam=no ++create_pam_modules=no ++if test x"${try_pam}" != x"no";then ++ use_pam=yes ++ create_pam_modules=yes ++ ++ # Most systems have PAM headers in /usr/include/security, but Darwin ++ # has them in /usr/include/pam. + for ac_header in security/pam_appl.h pam/pam_appl.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -77163,7 +79474,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -70979,9 +28862,7 @@ +@@ -74042,9 +30549,7 @@ if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \ x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then if test x"${try_pam}" = x"yes";then @@ -77174,7 +79485,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi use_pam=no create_pam_modules=no -@@ -70989,23 +28870,17 @@ +@@ -74052,23 +30557,17 @@ @@ -77201,7 +79512,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -71023,54 +28898,28 @@ +@@ -74086,54 +30585,28 @@ return 0; } _ACEOF @@ -77263,7 +79574,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBPAM 1 _ACEOF -@@ -71085,34 +28934,18 @@ +@@ -74148,34 +30621,18 @@ fi @@ -77303,7 +79614,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure #if HAVE_SECURITY_PAM_APPL_H #include #endif -@@ -71120,44 +28953,9 @@ +@@ -74183,44 +30640,9 @@ #include #endif @@ -77351,7 +79662,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -71169,179 +28967,33 @@ +@@ -74232,179 +30654,33 @@ if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \ x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then if test x"${try_pam}" = x"yes";then @@ -77541,7 +79852,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -71350,150 +29002,12 @@ +@@ -74413,150 +30689,12 @@ done @@ -77698,7 +80009,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -71504,19 +29018,14 @@ +@@ -74567,19 +30705,14 @@ @@ -77721,7 +80032,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define pam_vsyslog to an innocuous variant, in case declares pam_vsyslog. For example, HP-UX 11i declares gettimeofday. */ -@@ -71557,62 +29066,36 @@ +@@ -74620,72 +30753,42 @@ return 0; } _ACEOF @@ -77795,10 +80106,60 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$create_pam_modules" >&6; } fi # try_pam != no -@@ -71621,26 +29104,22 @@ - PAM_MODULES="" - INSTALL_PAM_MODULES="" + ################################################# + # check for PAM_RADIO_TYPE +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + #if (!defined(LINUX)) +@@ -74723,36 +30826,11 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_PAM_RADIO_TYPE 1 +-_ACEOF +- +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++if ac_fn_c_try_compile "$LINENO"; then : + ++$as_echo "#define HAVE_PAM_RADIO_TYPE 1" >>confdefs.h + + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + ################################################# +@@ -74762,19 +30840,17 @@ UNINSTALL_PAM_MODULES="" + + try_pam_smbpass=auto -{ $as_echo "$as_me:$LINENO: checking whether to use pam_smbpass" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use pam_smbpass" >&5 $as_echo_n "checking whether to use pam_smbpass... " >&6; } @@ -77807,42 +80168,46 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -if test "${with_pam_smbpass+set}" = set; then +if test "${with_pam_smbpass+set}" = set; then : withval=$with_pam_smbpass; case "$withval" in - yes) -- { $as_echo "$as_me:$LINENO: result: yes" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } + yes|no|auto) + try_pam_smbpass=$withval + ;; + *) +- { { $as_echo "$as_me:$LINENO: error: valid options are yes,no,auto" >&5 +-$as_echo "$as_me: error: valid options are yes,no,auto" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error "valid options are yes,no,auto" "$LINENO" 5 + ;; + esac - # Conditions under which pam_smbpass should not be built. - - if test x"$BLDSHARED" != x"true"; then -- { { $as_echo "$as_me:$LINENO: error: No support for shared modules" >&5 +@@ -74788,16 +30864,12 @@ + # Conditions under which pam_smbpass can't be built. + if test x"$BLDSHARED" != xtrue ; then + if test x"${try_pam_smbpass}" = xyes ; then +- { { $as_echo "$as_me:$LINENO: error: No support for shared modules" >&5 -$as_echo "$as_me: error: No support for shared modules" >&2;} - { (exit 1); exit 1; }; } -+ as_fn_error "No support for shared modules" "$LINENO" 5 - elif test x"$create_pam_modules" != x"yes"; then -- { { $as_echo "$as_me:$LINENO: error: No support for PAM MODULES" >&5 ++ as_fn_error "No support for shared modules" "$LINENO" 5 + fi + use_pam_smbpass=no + elif test x"$create_pam_modules" != xyes ; then + if test x"${try_pam_smbpass}" = xyes ; then +- { { $as_echo "$as_me:$LINENO: error: No support for PAM MODULES" >&5 -$as_echo "$as_me: error: No support for PAM MODULES" >&2;} - { (exit 1); exit 1; }; } -+ as_fn_error "No support for PAM MODULES" "$LINENO" 5 - else - PAM_MODULES="pam_smbpass" - INSTALL_PAM_MODULES="installpammodules" -@@ -71648,12 +29127,12 @@ - fi - ;; - *) -- { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - ;; - esac - else -- { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - ++ as_fn_error "No support for PAM MODULES" "$LINENO" 5 + fi + use_pam_smbpass=no + fi +@@ -74808,7 +30880,7 @@ + UNINSTALL_PAM_MODULES="uninstallpammodules" + fi fi -@@ -71667,98 +29146,63 @@ +-{ $as_echo "$as_me:$LINENO: result: $use_pam_smbpass" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_pam_smbpass" >&5 + $as_echo "$use_pam_smbpass" >&6; } + + +@@ -74819,98 +30891,63 @@ ## $with_pam_for_crypt variable as above --jerry ## if test $with_pam_for_crypt = no; then @@ -77957,7 +80322,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -71766,28 +29210,26 @@ +@@ -74918,28 +30955,26 @@ ################################################# # check for syslog logging @@ -77992,7 +80357,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -71795,16 +29237,14 @@ +@@ -74947,16 +30982,14 @@ ################################################# # check for custom syslog facility @@ -78012,7 +80377,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else if test "$withval" != "yes" ; then syslog_facility="$withval" -@@ -71829,14 +29269,14 @@ +@@ -74981,14 +31014,14 @@ samba_cv_TRY_SYS_QUOTAS=auto samba_cv_SYSQUOTA_FOUND=no @@ -78030,7 +80395,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "yes" >&6; } samba_cv_WITH_QUOTAS=yes samba_cv_TRY_QUOTAS=yes -@@ -71845,7 +29285,7 @@ +@@ -74997,7 +31030,7 @@ samba_cv_TRY_SYS_QUOTAS=auto ;; auto) @@ -78039,7 +80404,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "auto" >&6; } samba_cv_WITH_QUOTAS=auto samba_cv_TRY_QUOTAS=auto -@@ -71854,74 +29294,74 @@ +@@ -75006,74 +31039,74 @@ samba_cv_TRY_SYS_QUOTAS=auto ;; no) @@ -78127,41 +80492,40 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } samba_cv_TRY_SYS_QUOTAS=no ;; -@@ -71937,483 +29377,68 @@ - *linux*) - samba_cv_SYSQUOTA_FOUND=yes +@@ -75084,641 +31117,87 @@ + # only check for quota stuff if --with-quotas + if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then +-case "$host_os" in +- # on linux we didn't need to test we have builtin support +- *linux*) +- samba_cv_SYSQUOTA_FOUND=yes +- -cat >>confdefs.h <<\_ACEOF -#define HAVE_QUOTACTL_LINUX 1 -_ACEOF -+$as_echo "#define HAVE_QUOTACTL_LINUX 1" >>confdefs.h - - samba_cv_sysquotas_file="lib/sysquotas_linux.c" +- +- samba_cv_sysquotas_file="lib/sysquotas_linux.c" - { $as_echo "$as_me:$LINENO: checking whether to use the lib/sysquotas_linux.c builtin support" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the lib/sysquotas_linux.c builtin support" >&5 - $as_echo_n "checking whether to use the lib/sysquotas_linux.c builtin support... " >&6; } +-$as_echo_n "checking whether to use the lib/sysquotas_linux.c builtin support... " >&6; } - { $as_echo "$as_me:$LINENO: result: yes" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - - +-$as_echo "yes" >&6; } +- +- -cat >>confdefs.h <<\_ACEOF -#define HAVE_LINUX_XFS_QUOTAS 1 -_ACEOF -+$as_echo "#define HAVE_LINUX_XFS_QUOTAS 1" >>confdefs.h - - samba_cv_found_xfs_header=yes +- +- samba_cv_found_xfs_header=yes - { $as_echo "$as_me:$LINENO: checking whether to use the lib/sysquotas_xfs.c builtin support" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the lib/sysquotas_xfs.c builtin support" >&5 - $as_echo_n "checking whether to use the lib/sysquotas_xfs.c builtin support... " >&6; } +-$as_echo_n "checking whether to use the lib/sysquotas_xfs.c builtin support... " >&6; } - { $as_echo "$as_me:$LINENO: result: yes" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - ;; - *solaris*) - # need to set this define when using static linking (BUG 1473) - CPPFLAGS="$CPPFLAGS -DSUNOS5" - ;; +-$as_echo "yes" >&6; } +- ;; +- *solaris*) +- # need to set this define when using static linking (BUG 1473) +- CPPFLAGS="$CPPFLAGS -DSUNOS5" +- ;; - *) - ;; -esac @@ -78442,9 +80806,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -+ *) -+ ;; - esac +-esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -78456,7 +80818,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - +- -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` @@ -78464,21 +80826,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF -+# some broken header files need this -+ac_fn_c_check_header_mongrel "$LINENO" "asm/types.h" "ac_cv_header_asm_types_h" "$ac_includes_default" -+if test "x$ac_cv_header_asm_types_h" = x""yes; then : - +- -fi - +- -done -+$as_echo "#define HAVE_ASM_TYPES_H 1" >>confdefs.h - -+ cat >> confdefs.h <<\EOF -+#include -+EOF - +- +- -# For quotas on Linux XFS filesystems - +- -for ac_header in linux/dqblk_xfs.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -78487,7 +80842,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 - fi +-fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -78527,13 +80882,209 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +- - ac_header_compiler=no -fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++case "$host_os" in ++ # on linux we didn't need to test we have builtin support ++ *linux*) ++ samba_cv_SYSQUOTA_FOUND=yes + +- ac_header_preproc=no +-fi ++$as_echo "#define HAVE_QUOTACTL_LINUX 1" >>confdefs.h + +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } ++ samba_cv_sysquotas_file="lib/sysquotas_linux.c" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the lib/sysquotas_linux.c builtin support" >&5 ++$as_echo_n "checking whether to use the lib/sysquotas_linux.c builtin support... " >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } + +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; ++ ++$as_echo "#define HAVE_LINUX_XFS_QUOTAS 1" >>confdefs.h ++ ++ samba_cv_found_xfs_header=yes ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the lib/sysquotas_xfs.c builtin support" >&5 ++$as_echo_n "checking whether to use the lib/sysquotas_xfs.c builtin support... " >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ ;; ++ *solaris*) ++ # need to set this define when using static linking (BUG 1473) ++ CPPFLAGS="$CPPFLAGS -DSUNOS5" ++ ;; ++ *) ++ ;; + esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } + +-fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF ++# some broken header files need this ++ac_fn_c_check_header_mongrel "$LINENO" "asm/types.h" "ac_cv_header_asm_types_h" "$ac_includes_default" ++if test "x$ac_cv_header_asm_types_h" = x""yes; then : + +-fi + +-done ++$as_echo "#define HAVE_ASM_TYPES_H 1" >>confdefs.h + ++ cat >> confdefs.h <<\EOF ++#include ++EOF + +-# For sys/quota.h and linux/quota.h + +-for ac_header in sys/quota.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 + fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> ++ ++ ++ ++# For quotas on Veritas VxFS filesystems ++for ac_header in sys/fs/vx_quota.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "sys/fs/vx_quota.h" "ac_cv_header_sys_fs_vx_quota_h" "$ac_includes_default" ++if test "x$ac_cv_header_sys_fs_vx_quota_h" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_SYS_FS_VX_QUOTA_H 1 + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_header_compiler=no + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } ++done -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 @@ -78545,13 +81096,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -+# For quotas on Veritas VxFS filesystems -+for ac_header in sys/fs/vx_quota.h ++ ++# For quotas on Linux XFS filesystems ++for ac_header in linux/dqblk_xfs.h +do : -+ ac_fn_c_check_header_mongrel "$LINENO" "sys/fs/vx_quota.h" "ac_cv_header_sys_fs_vx_quota_h" "$ac_includes_default" -+if test "x$ac_cv_header_sys_fs_vx_quota_h" = x""yes; then : ++ ac_fn_c_check_header_mongrel "$LINENO" "linux/dqblk_xfs.h" "ac_cv_header_linux_dqblk_xfs_h" "$ac_includes_default" ++if test "x$ac_cv_header_linux_dqblk_xfs_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF -+#define HAVE_SYS_FS_VX_QUOTA_H 1 ++#define HAVE_LINUX_DQBLK_XFS_H 1 _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in @@ -78629,164 +81181,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+# For quotas on Linux XFS filesystems -+for ac_header in linux/dqblk_xfs.h -+do : -+ ac_fn_c_check_header_mongrel "$LINENO" "linux/dqblk_xfs.h" "ac_cv_header_linux_dqblk_xfs_h" "$ac_includes_default" -+if test "x$ac_cv_header_linux_dqblk_xfs_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+#define HAVE_LINUX_DQBLK_XFS_H 1 - _ACEOF - - fi -@@ -72422,151 +29447,12 @@ - - - # For sys/quota.h and linux/quota.h -- - for ac_header in sys/quota.h --do --as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --else -- # Is the header compilable? --{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 --$as_echo_n "checking $ac_header usability... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --#include <$ac_header> --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_header_compiler=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_header_compiler=no --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --$as_echo "$ac_header_compiler" >&6; } -- --# Is the header present? --{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 --$as_echo_n "checking $ac_header presence... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <$ac_header> --_ACEOF --if { (ac_try="$ac_cpp conftest.$ac_ext" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } >/dev/null && { -- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -- test ! -s conftest.err -- }; then -- ac_header_preproc=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_header_preproc=no --fi -- --rm -f conftest.err conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --$as_echo "$ac_header_preproc" >&6; } -- --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -- yes:no: ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 --$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -- ac_header_preproc=yes -- ;; -- no:yes:* ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 --$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 --$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 --$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 --$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 --$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -- ( cat <<\_ASBOX --## ---------------------------------------- ## --## Report this to samba-technical@samba.org ## --## ---------------------------------------- ## --_ASBOX -- ) | sed "s/^/$as_me: WARNING: /" >&2 -- ;; --esac --{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- eval "$as_ac_Header=\$ac_header_preproc" --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } -- --fi --as_val=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then ++# For sys/quota.h and linux/quota.h ++for ac_header in sys/quota.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/quota.h" "ac_cv_header_sys_quota_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_quota_h" = x""yes; then : @@ -78796,7 +81192,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -72576,17 +29462,13 @@ +@@ -75728,17 +31207,13 @@ if test x"$samba_cv_found_xfs_header" != x"yes"; then # if we have xfs quota support (IRIX) we should use it @@ -78817,7 +81213,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include "confdefs.h" -@@ -72606,35 +29488,14 @@ +@@ -75758,35 +31233,14 @@ return 0; } _ACEOF @@ -78856,7 +81252,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$samba_cv_HAVE_SYS_QUOTA_XFS" >&6; } if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then samba_cv_found_xfs_header=yes -@@ -72642,17 +29503,13 @@ +@@ -75794,17 +31248,13 @@ fi # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX @@ -78877,7 +81273,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include "confdefs.h" -@@ -72670,41 +29527,18 @@ +@@ -75822,41 +31272,18 @@ return 0; } _ACEOF @@ -78923,7 +81319,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -72712,9 +29546,9 @@ +@@ -75864,9 +31291,9 @@ # look for a working quota system if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then @@ -78935,7 +81331,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else -@@ -72728,14 +29562,10 @@ +@@ -75880,14 +31307,10 @@ old_LDFLAGS="$LDFLAGS"; LDFLAGS="$LDFLAGS"; export LDFLAGS; @@ -78952,7 +81348,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #define HAVE_QUOTACTL_4A 1 -@@ -72743,42 +29573,15 @@ +@@ -75895,42 +31318,15 @@ #include "confdefs.h" #include "${srcdir-.}/../tests/sysquotas.c" _ACEOF @@ -78999,7 +81395,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure CFLAGS="$old_CFLAGS"; old_CFLAGS=""; export CFLAGS; -@@ -72790,23 +29593,21 @@ +@@ -75942,23 +31338,21 @@ export LDFLAGS; fi @@ -79027,7 +81423,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else -@@ -72820,14 +29621,10 @@ +@@ -75972,14 +31366,10 @@ old_LDFLAGS="$LDFLAGS"; LDFLAGS="$LDFLAGS"; export LDFLAGS; @@ -79044,7 +81440,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #define HAVE_QUOTACTL_4B 1 -@@ -72835,42 +29632,15 @@ +@@ -75987,42 +31377,15 @@ #include "confdefs.h" #include "${srcdir-.}/../tests/sysquotas.c" _ACEOF @@ -79091,7 +81487,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure CFLAGS="$old_CFLAGS"; old_CFLAGS=""; export CFLAGS; -@@ -72882,24 +29652,22 @@ +@@ -76034,24 +31397,22 @@ export LDFLAGS; fi @@ -79120,7 +81516,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else -@@ -72913,14 +29681,10 @@ +@@ -76065,14 +31426,10 @@ old_LDFLAGS="$LDFLAGS"; LDFLAGS="$LDFLAGS"; export LDFLAGS; @@ -79137,7 +81533,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #define HAVE_QUOTACTL_3 1 -@@ -72928,42 +29692,15 @@ +@@ -76080,42 +31437,15 @@ #include "confdefs.h" #include "${srcdir-.}/../tests/sysquotas.c" _ACEOF @@ -79184,7 +81580,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure CFLAGS="$old_CFLAGS"; old_CFLAGS=""; export CFLAGS; -@@ -72975,15 +29712,13 @@ +@@ -76127,15 +31457,13 @@ export LDFLAGS; fi @@ -79202,7 +81598,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure samba_cv_sysquotas_file="lib/sysquotas_3.c" fi -@@ -72991,151 +29726,12 @@ +@@ -76143,151 +31471,12 @@ ################################################# # check for mntent.h and struct mntent @@ -79358,7 +81754,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -73144,102 +29740,12 @@ +@@ -76296,102 +31485,12 @@ ################################################# # check for setmntent,getmntent,endmntent @@ -79466,7 +81862,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -@@ -73250,151 +29756,12 @@ +@@ -76402,151 +31501,12 @@ ################################################# # check for devnm.h and struct mntent @@ -79622,7 +82018,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -73403,102 +29770,12 @@ +@@ -76555,102 +31515,12 @@ ################################################# # check for devnm @@ -79729,7 +82125,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -73521,19 +29798,15 @@ +@@ -76673,19 +31543,15 @@ fi if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then @@ -79752,7 +82148,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include "confdefs.h" -@@ -73551,76 +29824,47 @@ +@@ -76703,76 +31569,47 @@ return 0; } _ACEOF @@ -79840,7 +82236,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include "confdefs.h" -@@ -73638,62 +29882,35 @@ +@@ -76790,62 +31627,35 @@ return 0; } _ACEOF @@ -79885,9 +82281,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>confdefs.h <<\_ACEOF -#define HAVE_XFS_QUOTAS 1 -_ACEOF -- +$as_echo "#define HAVE_XFS_QUOTAS 1" >>confdefs.h -+ + fi fi fi @@ -79911,7 +82306,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include "confdefs.h" -@@ -73709,56 +29926,33 @@ +@@ -76861,56 +31671,33 @@ return 0; } _ACEOF @@ -79976,7 +82371,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi fi -@@ -73770,12 +29964,12 @@ +@@ -76922,12 +31709,12 @@ ################################################# # check for experimental utmp accounting @@ -79991,7 +82386,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_utmp; case "$withval" in no) WITH_UTMP=no -@@ -73798,15 +29992,13 @@ +@@ -76950,41 +31737,35 @@ # Display test results if test x"$WITH_UTMP" = x"yes"; then @@ -80010,327 +82405,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no$utmp_no_reason" >&6; } fi -@@ -73832,10 +30024,10 @@ - USESHARED=false - - --{ $as_echo "$as_me:$LINENO: checking whether to use shared libraries internally" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use shared libraries internally" >&5 - $as_echo_n "checking whether to use shared libraries internally... " >&6; } - # Check whether --enable-shared-libs was given. --if test "${enable_shared_libs+set}" = set; then -+if test "${enable_shared_libs+set}" = set; then : - enableval=$enable_shared_libs; enable_shared_libs=$enableval - else - enable_shared_libs=yes -@@ -73846,11 +30038,11 @@ - USESHARED=$BLDSHARED - fi - --{ $as_echo "$as_me:$LINENO: result: $USESHARED" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USESHARED" >&5 - $as_echo "$USESHARED" >&6; } - - if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then -- { $as_echo "$as_me:$LINENO: WARNING: --enable-shared-libs: no support for shared libraries" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-shared-libs: no support for shared libraries" >&5 - $as_echo "$as_me: WARNING: --enable-shared-libs: no support for shared libraries" >&2;} - fi - -@@ -73878,14 +30070,13 @@ - - - # Check whether --with-static-libs was given. --if test "${with_static_libs+set}" = set; then -- withval=$with_static_libs; if test $withval; then -+if test "${with_static_libs+set}" = set; then : -+ withval=$with_static_libs; if test $withval; then : - for lib in `echo $withval | sed -e 's/,/ /g'` ; do - lib=`echo $lib | tr '[a-z]' '[A-Z]'` - eval LINK_$lib=STATIC - done - fi -- - fi - - -@@ -73934,16 +30125,16 @@ - - - --{ $as_echo "$as_me:$LINENO: checking whether to build the libtalloc shared library" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build the libtalloc shared library" >&5 - $as_echo_n "checking whether to build the libtalloc shared library... " >&6; } - - - # Check whether --with-libtalloc was given. --if test "${with_libtalloc+set}" = set; then -+if test "${with_libtalloc+set}" = set; then : - withval=$with_libtalloc; - case "$withval" in - no) -- { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - build_lib=no - ;; -@@ -73969,7 +30160,7 @@ - if eval $BLDSHARED = true; then - LIBTALLOC_SHARED=$LIBTALLOC_SHARED_TARGET - LIBTALLOC_TARGET=$LIBTALLOC_SHARED_TARGET -- { $as_echo "$as_me:$LINENO: result: yes" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - if test x"$USESHARED" != x"true" -o x"$LINK_LIBTALLOC" = "xSTATIC" ; then - enable_static=yes -@@ -73982,12 +30173,12 @@ - enable_static=yes - LIBTALLOC_TARGET=$LIBTALLOC_STATIC_TARGET - LIBTALLOC_LIBS=$LIBTALLOC_STATIC_TARGET -- { $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no shared library support -- will supply static library" >&5 - $as_echo "no shared library support -- will supply static library" >&6; } - fi - else - enable_static=yes -- { $as_echo "$as_me:$LINENO: result: shared library not selected" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared library not selected" >&5 - $as_echo "shared library not selected" >&6; } - fi - if test $enable_static = yes; then -@@ -74038,16 +30229,16 @@ - - - --{ $as_echo "$as_me:$LINENO: checking whether to build the libtdb shared library" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build the libtdb shared library" >&5 - $as_echo_n "checking whether to build the libtdb shared library... " >&6; } - - - # Check whether --with-libtdb was given. --if test "${with_libtdb+set}" = set; then -+if test "${with_libtdb+set}" = set; then : - withval=$with_libtdb; - case "$withval" in - no) -- { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - build_lib=no - ;; -@@ -74073,7 +30264,7 @@ - if eval $BLDSHARED = true; then - LIBTDB_SHARED=$LIBTDB_SHARED_TARGET - LIBTDB_TARGET=$LIBTDB_SHARED_TARGET -- { $as_echo "$as_me:$LINENO: result: yes" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - if test x"$USESHARED" != x"true" -o x"$LINK_LIBTDB" = "xSTATIC" ; then - enable_static=yes -@@ -74086,12 +30277,12 @@ - enable_static=yes - LIBTDB_TARGET=$LIBTDB_STATIC_TARGET - LIBTDB_LIBS=$LIBTDB_STATIC_TARGET -- { $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no shared library support -- will supply static library" >&5 - $as_echo "no shared library support -- will supply static library" >&6; } - fi - else - enable_static=yes -- { $as_echo "$as_me:$LINENO: result: shared library not selected" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared library not selected" >&5 - $as_echo "shared library not selected" >&6; } - fi - if test $enable_static = yes; then -@@ -74129,16 +30320,16 @@ - - - --{ $as_echo "$as_me:$LINENO: checking whether to build the libnetapi shared library" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build the libnetapi shared library" >&5 - $as_echo_n "checking whether to build the libnetapi shared library... " >&6; } - - - # Check whether --with-libnetapi was given. --if test "${with_libnetapi+set}" = set; then -+if test "${with_libnetapi+set}" = set; then : - withval=$with_libnetapi; - case "$withval" in - no) -- { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - build_lib=no - ;; -@@ -74164,7 +30355,7 @@ - if eval $BLDSHARED = true; then - LIBNETAPI_SHARED=$LIBNETAPI_SHARED_TARGET - LIBNETAPI_TARGET=$LIBNETAPI_SHARED_TARGET -- { $as_echo "$as_me:$LINENO: result: yes" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - if test x"$USESHARED" != x"true" -o x"$LINK_LIBNETAPI" = "xSTATIC" ; then - enable_static=yes -@@ -74177,12 +30368,12 @@ - enable_static=yes - LIBNETAPI_TARGET=$LIBNETAPI_STATIC_TARGET - LIBNETAPI_LIBS=$LIBNETAPI_STATIC_TARGET -- { $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no shared library support -- will supply static library" >&5 - $as_echo "no shared library support -- will supply static library" >&6; } - fi - else - enable_static=yes -- { $as_echo "$as_me:$LINENO: result: shared library not selected" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared library not selected" >&5 - $as_echo "shared library not selected" >&6; } - fi - if test $enable_static = yes; then -@@ -74220,16 +30411,16 @@ - - - --{ $as_echo "$as_me:$LINENO: checking whether to build the libsmbclient shared library" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build the libsmbclient shared library" >&5 - $as_echo_n "checking whether to build the libsmbclient shared library... " >&6; } - - - # Check whether --with-libsmbclient was given. --if test "${with_libsmbclient+set}" = set; then -+if test "${with_libsmbclient+set}" = set; then : - withval=$with_libsmbclient; - case "$withval" in - no) -- { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - build_lib=no - ;; -@@ -74255,7 +30446,7 @@ - if eval $BLDSHARED = true; then - LIBSMBCLIENT_SHARED=$LIBSMBCLIENT_SHARED_TARGET - LIBSMBCLIENT_TARGET=$LIBSMBCLIENT_SHARED_TARGET -- { $as_echo "$as_me:$LINENO: result: yes" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - if test x"$USESHARED" != x"true" -o x"$LINK_LIBSMBCLIENT" = "xSTATIC" ; then - enable_static=yes -@@ -74268,12 +30459,12 @@ - enable_static=yes - LIBSMBCLIENT_TARGET=$LIBSMBCLIENT_STATIC_TARGET - LIBSMBCLIENT_LIBS=$LIBSMBCLIENT_STATIC_TARGET -- { $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no shared library support -- will supply static library" >&5 - $as_echo "no shared library support -- will supply static library" >&6; } - fi - else - enable_static=yes -- { $as_echo "$as_me:$LINENO: result: shared library not selected" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared library not selected" >&5 - $as_echo "shared library not selected" >&6; } - fi - if test $enable_static = yes; then -@@ -74311,16 +30502,16 @@ - - - --{ $as_echo "$as_me:$LINENO: checking whether to build the libsmbsharemodes shared library" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build the libsmbsharemodes shared library" >&5 - $as_echo_n "checking whether to build the libsmbsharemodes shared library... " >&6; } - - - # Check whether --with-libsmbsharemodes was given. --if test "${with_libsmbsharemodes+set}" = set; then -+if test "${with_libsmbsharemodes+set}" = set; then : - withval=$with_libsmbsharemodes; - case "$withval" in - no) -- { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - build_lib=no - ;; -@@ -74346,7 +30537,7 @@ - if eval $BLDSHARED = true; then - LIBSMBSHAREMODES_SHARED=$LIBSMBSHAREMODES_SHARED_TARGET - LIBSMBSHAREMODES_TARGET=$LIBSMBSHAREMODES_SHARED_TARGET -- { $as_echo "$as_me:$LINENO: result: yes" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - if test x"$USESHARED" != x"true" -o x"$LINK_LIBSMBSHAREMODES" = "xSTATIC" ; then - enable_static=yes -@@ -74359,12 +30550,12 @@ - enable_static=yes - LIBSMBSHAREMODES_TARGET=$LIBSMBSHAREMODES_STATIC_TARGET - LIBSMBSHAREMODES_LIBS=$LIBSMBSHAREMODES_STATIC_TARGET -- { $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no shared library support -- will supply static library" >&5 - $as_echo "no shared library support -- will supply static library" >&6; } - fi - else - enable_static=yes -- { $as_echo "$as_me:$LINENO: result: shared library not selected" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared library not selected" >&5 - $as_echo "shared library not selected" >&6; } - fi - if test $enable_static = yes; then -@@ -74402,19 +30593,19 @@ - - - --{ $as_echo "$as_me:$LINENO: checking whether to build the libaddns shared library" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build the libaddns shared library" >&5 - $as_echo_n "checking whether to build the libaddns shared library... " >&6; } - - - # Check whether --with-libaddns was given. --if test "${with_libaddns+set}" = set; then -+if test "${with_libaddns+set}" = set; then : - withval=$with_libaddns; - case "$withval" in - yes) - build_lib=yes - ;; - *) -- { $as_echo "$as_me:$LINENO: result: yes" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - build_lib=no - ;; -@@ -74423,7 +30614,7 @@ - else - - # if unspecified, default is not to build --{ $as_echo "$as_me:$LINENO: result: yes" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - build_lib=no - -@@ -74439,7 +30630,7 @@ - if eval $BLDSHARED = true; then - LIBADDNS_SHARED=$LIBADDNS_SHARED_TARGET - LIBADDNS_TARGET=$LIBADDNS_SHARED_TARGET -- { $as_echo "$as_me:$LINENO: result: yes" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - if test x"$USESHARED" != x"true" -o x"$LINK_LIBADDNS" = "xSTATIC" ; then - enable_static=yes -@@ -74452,12 +30643,12 @@ - enable_static=yes - LIBADDNS_TARGET=$LIBADDNS_STATIC_TARGET - LIBADDNS_LIBS=$LIBADDNS_STATIC_TARGET -- { $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no shared library support -- will supply static library" >&5 - $as_echo "no shared library support -- will supply static library" >&6; } - fi - else - enable_static=yes -- { $as_echo "$as_me:$LINENO: result: shared library not selected" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared library not selected" >&5 - $as_echo "shared library not selected" >&6; } - fi - if test $enable_static = yes; then -@@ -74473,26 +30664,22 @@ ################################################# # these tests are taken from the GNU fileutils package @@ -80362,7 +82436,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -74506,51 +30693,22 @@ +@@ -76998,51 +31779,22 @@ exit (statvfs64 (".", &fsd)); } _ACEOF @@ -80390,13 +82464,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : fu_cv_sys_stat_statvfs64=yes - else +-else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -fu_cv_sys_stat_statvfs64=no ++else + fu_cv_sys_stat_statvfs64=no fi -rm -rf conftest.dSYM @@ -80420,7 +82495,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi fi -@@ -74563,16 +30721,12 @@ +@@ -77055,16 +31807,12 @@ # is what it gets when this test fails. if test $space = no; then # SVR4 @@ -80440,7 +82515,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -74584,47 +30738,20 @@ +@@ -77076,47 +31824,20 @@ return 0; } _ACEOF @@ -80494,7 +82569,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi fi -@@ -74632,17 +30759,13 @@ +@@ -77124,17 +31845,13 @@ # smbd/statvfs.c assumes that statvfs.f_fsid is an integer. # This is not the case on ancient Linux systems. @@ -80515,7 +82590,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -74654,57 +30777,30 @@ +@@ -77146,57 +31863,30 @@ return 0; } _ACEOF @@ -80580,7 +82655,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -74716,56 +30812,29 @@ +@@ -77208,56 +31898,29 @@ return 0; } _ACEOF @@ -80644,7 +82719,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -74777,55 +30846,28 @@ +@@ -77269,55 +31932,28 @@ return 0; } _ACEOF @@ -80707,7 +82782,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -74837,59 +30879,32 @@ +@@ -77329,59 +31965,32 @@ return 0; } _ACEOF @@ -80775,7 +82850,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -74902,71 +30917,38 @@ +@@ -77394,71 +32003,38 @@ exit (statfs (".", &fsd, sizeof (struct statfs))); } _ACEOF @@ -80857,7 +82932,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #ifdef HAVE_SYS_PARAM_H -@@ -74985,71 +30967,38 @@ +@@ -77477,71 +32053,38 @@ exit (statfs (".", &fsd)); } _ACEOF @@ -80939,7 +83014,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -75059,71 +31008,38 @@ +@@ -77551,71 +32094,38 @@ exit (statfs (".", &fsd, sizeof fsd, 0)); } _ACEOF @@ -81021,7 +83096,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #ifdef HAVE_SYS_PARAM_H -@@ -75139,71 +31055,38 @@ +@@ -77631,71 +32141,38 @@ exit (statfs (".", &fsd)); } _ACEOF @@ -81103,7 +83178,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #ifdef HAVE_SYS_PARAM_H -@@ -75223,52 +31106,23 @@ +@@ -77715,52 +32192,23 @@ exit (statfs (".", &fsd) != 1); } _ACEOF @@ -81162,7 +83237,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi fi -@@ -75281,13 +31135,9 @@ +@@ -77773,13 +32221,9 @@ # If we don't have all of these then disable large # file support. # @@ -81178,7 +83253,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8))) -@@ -75304,41 +31154,18 @@ +@@ -77796,41 +32240,18 @@ return 0; } _ACEOF @@ -81224,7 +83299,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" >&6; } ################################################# -@@ -75348,10 +31175,10 @@ +@@ -77840,10 +32261,10 @@ # Check whether --with-ctdb was given. @@ -81237,8 +83312,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: --with-ctdb called without argument" >&2;} ;; *) -@@ -75365,471 +31192,40 @@ - CPPFLAGS="$CPPFLAGS $CTDB_CPPFLAGS" +@@ -77857,71 +32278,23 @@ + CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS" ctdb_broken="missing or broken headers" - @@ -81317,46 +83392,33 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 --_ACEOF -- --fi -- --done -- -- -- -- { $as_echo "$as_me:$LINENO: checking for CTDB_CONTROL_TRANS2_COMMIT_RETRY declaration" >&5 --$as_echo_n "checking for CTDB_CONTROL_TRANS2_COMMIT_RETRY declaration... " >&6; } --if test "${ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl+set}" = set; then -- $as_echo_n "(cached) " >&6 --else -- + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +@@ -77932,17 +32305,13 @@ + + + +- { $as_echo "$as_me:$LINENO: checking for CTDB_CONTROL_TRANS3_COMMIT declaration" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CTDB_CONTROL_TRANS3_COMMIT declaration" >&5 + $as_echo_n "checking for CTDB_CONTROL_TRANS3_COMMIT declaration... " >&6; } +-if test "${ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl+set}" = set; then ++if test "${ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ -- --#include "confdefs.h" --#define NO_CONFIG_H --#include "replace.h" --#include "system/wait.h" --#include "system/network.h" --#include --#include --#include --#include -- --int --main () --{ --int i = (int)CTDB_CONTROL_TRANS2_COMMIT_RETRY -- ; -- return 0; --} --_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + #include "confdefs.h" +@@ -77963,41 +32332,18 @@ + return 0; + } + _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -81375,33 +83437,34 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then -- ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl=yes --else ++if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl=yes + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -- ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl=no --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl" >&5 --$as_echo "$ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl" >&6; } -- if test x"$ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl" = x"yes"; then +- ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl=no ++ ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl=no + fi - + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" >&5 + $as_echo "$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" >&6; } + if test x"$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" = x"yes"; then + -cat >>confdefs.h <<\_ACEOF --#define HAVE_CTDB_CONTROL_TRANS2_COMMIT_RETRY_DECL 1 +-#define HAVE_CTDB_CONTROL_TRANS3_COMMIT_DECL 1 -_ACEOF -- -- fi -- --if test x"$ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl" = x"yes"; then -- ctdb_broken=no --else -- ctdb_broken="missing transaction support" --fi -- --# in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client ++$as_echo "#define HAVE_CTDB_CONTROL_TRANS3_COMMIT_DECL 1" >>confdefs.h + + fi + +@@ -78008,255 +32354,43 @@ + fi + + # in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client -{ $as_echo "$as_me:$LINENO: checking for struct ctdb_tcp_client" >&5 -$as_echo_n "checking for struct ctdb_tcp_client... " >&6; } -if test "${ac_cv_type_struct_ctdb_tcp_client+set}" = set; then @@ -81461,15 +83524,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* end confdefs.h. */ - -#include "confdefs.h" --#define NO_CONFIG_H ++ac_fn_c_check_type "$LINENO" "struct ctdb_tcp_client" "ac_cv_type_struct_ctdb_tcp_client" " ++#include \"confdefs.h\" + #define NO_CONFIG_H -#include "replace.h" -#include "system/wait.h" -#include "system/network.h" --#include --#include --#include --#include -- ++#include \"replace.h\" ++#include \"system/wait.h\" ++#include \"system/network.h\" + #include + #include + #include + #include + - -int -main () @@ -81519,16 +83587,19 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_ctdb_tcp_client" >&5 -$as_echo "$ac_cv_type_struct_ctdb_tcp_client" >&6; } -if test "x$ac_cv_type_struct_ctdb_tcp_client" = x""yes; then -- -- ++" ++if test "x$ac_cv_type_struct_ctdb_tcp_client" = x""yes; then : + + -cat >>confdefs.h <<\_ACEOF -#define ctdb_control_tcp ctdb_tcp_client -_ACEOF -- -- --fi -- -- ++$as_echo "#define ctdb_control_tcp ctdb_tcp_client" >>confdefs.h + + + fi + + -{ $as_echo "$as_me:$LINENO: checking for struct ctdb_control_tcp" >&5 -$as_echo_n "checking for struct ctdb_control_tcp... " >&6; } -if test "${ac_cv_type_struct_ctdb_control_tcp+set}" = set; then @@ -81588,15 +83659,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* end confdefs.h. */ - -#include "confdefs.h" --#define NO_CONFIG_H ++ac_fn_c_check_type "$LINENO" "struct ctdb_control_tcp" "ac_cv_type_struct_ctdb_control_tcp" " ++#include \"confdefs.h\" + #define NO_CONFIG_H -#include "replace.h" -#include "system/wait.h" -#include "system/network.h" --#include --#include --#include --#include -- ++#include \"replace.h\" ++#include \"system/wait.h\" ++#include \"system/network.h\" + #include + #include + #include + #include + - -int -main () @@ -81646,20 +83722,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_ctdb_control_tcp" >&5 -$as_echo "$ac_cv_type_struct_ctdb_control_tcp" >&6; } -if test "x$ac_cv_type_struct_ctdb_control_tcp" = x""yes; then -- -- ++" ++if test "x$ac_cv_type_struct_ctdb_control_tcp" = x""yes; then : + + -cat >>confdefs.h <<\_ACEOF -#define HAVE_STRUCT_CTDB_CONTROL_TCP 1 -_ACEOF -- -- --else -- -- ctdb_broken="missing struct ctdb_control_tcp" -- --fi -- -- ++$as_echo "#define HAVE_STRUCT_CTDB_CONTROL_TCP 1" >>confdefs.h + + + else +@@ -78266,139 +32400,33 @@ + fi + + -{ $as_echo "$as_me:$LINENO: checking for struct ctdb_control_tcp_addr" >&5 -$as_echo_n "checking for struct ctdb_control_tcp_addr... " >&6; } -if test "${ac_cv_type_struct_ctdb_control_tcp_addr+set}" = set; then @@ -81713,42 +83790,36 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 - _ACEOF +-_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+ -+fi -+ -+done -+ -+ -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CTDB_CONTROL_TRANS2_COMMIT_RETRY declaration" >&5 -+$as_echo_n "checking for CTDB_CONTROL_TRANS2_COMMIT_RETRY declaration... " >&6; } -+if test "${ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - #include "confdefs.h" -@@ -75842,71 +31238,109 @@ +-/* end confdefs.h. */ +- +-#include "confdefs.h" ++ac_fn_c_check_type "$LINENO" "struct ctdb_control_tcp_addr" "ac_cv_type_struct_ctdb_control_tcp_addr" " ++#include \"confdefs.h\" + #define NO_CONFIG_H +-#include "replace.h" +-#include "system/wait.h" +-#include "system/network.h" ++#include \"replace.h\" ++#include \"system/wait.h\" ++#include \"system/network.h\" + #include + #include #include #include - - int - main () - { +-int +-main () +-{ -if (sizeof ((struct ctdb_control_tcp_addr))) - return 0; -+int i = (int)CTDB_CONTROL_TRANS2_COMMIT_RETRY - ; - return 0; - } - _ACEOF +- ; +- return 0; +-} +-_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -81768,103 +83839,33 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl=yes - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_struct_ctdb_control_tcp_addr=yes -+ ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl=no - fi +-fi - - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl" >&5 -+$as_echo "$ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl" >&6; } -+ if test x"$ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl" = x"yes"; then -+ -+$as_echo "#define HAVE_CTDB_CONTROL_TRANS2_COMMIT_RETRY_DECL 1" >>confdefs.h -+ -+ fi -+ -+if test x"$ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl" = x"yes"; then -+ ctdb_broken=no - else +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ ctdb_broken="missing transaction support" -+fi -+ -+# in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client -+ac_fn_c_check_type "$LINENO" "struct ctdb_tcp_client" "ac_cv_type_struct_ctdb_tcp_client" " -+#include \"confdefs.h\" -+#define NO_CONFIG_H -+#include \"replace.h\" -+#include \"system/wait.h\" -+#include \"system/network.h\" -+#include -+#include -+#include -+#include -+ -+" -+if test "x$ac_cv_type_struct_ctdb_tcp_client" = x""yes; then : -+ -+ -+$as_echo "#define ctdb_control_tcp ctdb_tcp_client" >>confdefs.h - - - fi - +- +- +-fi +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+ac_fn_c_check_type "$LINENO" "struct ctdb_control_tcp" "ac_cv_type_struct_ctdb_control_tcp" " -+#include \"confdefs.h\" -+#define NO_CONFIG_H -+#include \"replace.h\" -+#include \"system/wait.h\" -+#include \"system/network.h\" -+#include -+#include -+#include -+#include -+ -+" -+if test "x$ac_cv_type_struct_ctdb_control_tcp" = x""yes; then : -+ -+ -+$as_echo "#define HAVE_STRUCT_CTDB_CONTROL_TCP 1" >>confdefs.h -+ -+ -+else -+ -+ ctdb_broken="missing struct ctdb_control_tcp" -+ - fi +-fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_ctdb_control_tcp_addr" >&5 -$as_echo "$ac_cv_type_struct_ctdb_control_tcp_addr" >&6; } -if test "x$ac_cv_type_struct_ctdb_control_tcp_addr" = x""yes; then ++" ++if test "x$ac_cv_type_struct_ctdb_control_tcp_addr" = x""yes; then : -cat >>confdefs.h <<\_ACEOF -#define HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR 1 -_ACEOF -+ac_fn_c_check_type "$LINENO" "struct ctdb_control_tcp_addr" "ac_cv_type_struct_ctdb_control_tcp_addr" " -+#include \"confdefs.h\" -+#define NO_CONFIG_H -+#include \"replace.h\" -+#include \"system/wait.h\" -+#include \"system/network.h\" -+#include -+#include -+#include -+#include -+ -+" -+if test "x$ac_cv_type_struct_ctdb_control_tcp_addr" = x""yes; then : -+ -+ +$as_echo "#define HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR 1" >>confdefs.h @@ -81882,7 +83883,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_cluster_support; fi -@@ -75917,44 +31351,38 @@ +@@ -78409,44 +32437,38 @@ if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then if test "x$with_cluster_support" = "xyes"; then @@ -81934,7 +83935,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_acl_support; case "$withval" in yes|no) with_acl_support="$withval" -@@ -75967,105 +31395,85 @@ +@@ -78459,105 +32481,85 @@ with_acl_support="auto" fi @@ -82061,7 +84062,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -76083,60 +31491,31 @@ +@@ -78575,60 +32577,31 @@ return 0; } _ACEOF @@ -82131,7 +84132,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -76154,61 +31533,32 @@ +@@ -78646,61 +32619,32 @@ return 0; } _ACEOF @@ -82202,7 +84203,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -76227,64 +31577,33 @@ +@@ -78719,64 +32663,33 @@ return 0; } _ACEOF @@ -82277,7 +84278,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -76302,58 +31621,29 @@ +@@ -78794,58 +32707,29 @@ return 0; } _ACEOF @@ -82344,7 +84345,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi ;; -@@ -76365,31 +31655,27 @@ +@@ -78857,31 +32741,27 @@ ################################################# # check for AIO support @@ -82382,7 +84383,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -76407,58 +31693,29 @@ +@@ -78899,58 +32779,29 @@ return 0; } _ACEOF @@ -82450,7 +84451,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -76476,59 +31733,30 @@ +@@ -78968,59 +32819,30 @@ return 0; } _ACEOF @@ -82519,7 +84520,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -76540,55 +31768,26 @@ +@@ -79032,55 +32854,26 @@ return 0; } _ACEOF @@ -82583,7 +84584,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -76600,716 +31799,317 @@ +@@ -79092,716 +32885,317 @@ return 0; } _ACEOF @@ -83438,7 +85439,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -77326,30 +32126,26 @@ +@@ -79818,30 +33212,26 @@ # check for sendfile support with_sendfile_support=yes @@ -83475,7 +85476,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -77365,53 +32161,24 @@ +@@ -79857,53 +33247,24 @@ return 0; } _ACEOF @@ -83537,7 +85538,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -77427,54 +32194,25 @@ +@@ -79919,54 +33280,25 @@ return 0; } _ACEOF @@ -83600,7 +85601,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ \ #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64) -@@ -77494,103 +32232,58 @@ +@@ -79986,103 +33318,58 @@ return 0; } _ACEOF @@ -83721,19 +85722,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ \ #include -@@ -77608,85 +32301,50 @@ - hdr.headers = &hdtrl; - hdr.hdr_cnt = 1; - hdr.trailers = NULL; -- hdr.trl_cnt = 0; -- hdtrl.iov_base = NULL; -- hdtrl.iov_len = 0; -- ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0); -- -- ; -- return 0; --} --_ACEOF +@@ -80109,76 +33396,41 @@ + return 0; + } + _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -83755,15 +85747,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -+ hdr.trl_cnt = 0; -+ hdtrl.iov_base = NULL; -+ hdtrl.iov_len = 0; -+ ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0); -+ -+ ; -+ return 0; -+} -+_ACEOF +if ac_fn_c_try_link "$LINENO"; then : samba_cv_HAVE_SENDFILE=yes else @@ -83828,7 +85811,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ \ #include -@@ -77710,73 +32368,38 @@ +@@ -80202,73 +33454,38 @@ return 0; } _ACEOF @@ -83914,7 +85897,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ \ #include -@@ -77800,77 +32423,41 @@ +@@ -80292,77 +33509,41 @@ return 0; } _ACEOF @@ -84004,7 +85987,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -77888,43 +32475,18 @@ +@@ -80380,43 +33561,18 @@ return 0; } _ACEOF @@ -84054,7 +86037,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBSENDFILE 1 _ACEOF -@@ -77933,17 +32495,13 @@ +@@ -80425,17 +33581,13 @@ fi @@ -84075,7 +86058,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ \ #include -@@ -77974,74 +32532,39 @@ +@@ -80466,74 +33618,39 @@ return 0; } _ACEOF @@ -84162,7 +86145,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ \ #include -@@ -78072,75 +32595,40 @@ +@@ -80564,75 +33681,40 @@ return 0; } _ACEOF @@ -84250,7 +86233,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ \ #include -@@ -78168,59 +32656,28 @@ +@@ -80660,59 +33742,28 @@ return 0; } _ACEOF @@ -84319,7 +86302,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; }; fi ;; -@@ -78229,12 +32686,12 @@ +@@ -80721,12 +33772,12 @@ esac ;; *) @@ -84334,7 +86317,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "yes" >&6; } fi -@@ -78243,17 +32700,13 @@ +@@ -80735,17 +33786,13 @@ ############################################ # See if we have the Linux readahead syscall. @@ -84355,7 +86338,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -78268,62 +32721,31 @@ +@@ -80760,62 +33807,31 @@ return 0; } _ACEOF @@ -84427,7 +86410,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -78334,41 +32756,18 @@ +@@ -80826,41 +33842,18 @@ return 0; } _ACEOF @@ -84473,7 +86456,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -78376,17 +32775,13 @@ +@@ -80868,17 +33861,13 @@ ############################################ # See if we have the posix_fadvise syscall. @@ -84494,7 +86477,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -78401,47 +32796,20 @@ +@@ -80893,47 +33882,20 @@ return 0; } _ACEOF @@ -84521,11 +86504,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - }; then +if ac_fn_c_try_link "$LINENO"; then : samba_cv_HAVE_POSIX_FADVISE=yes - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - samba_cv_HAVE_POSIX_FADVISE=no ++else + samba_cv_HAVE_POSIX_FADVISE=no fi - @@ -84548,7 +86532,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -78450,17 +32818,13 @@ +@@ -80942,17 +33904,13 @@ case "$host_os" in *linux*) @@ -84569,7 +86553,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #if defined(HAVE_UNISTD_H) -@@ -78475,40 +32839,15 @@ +@@ -80967,40 +33925,15 @@ return 0; } _ACEOF @@ -84615,7 +86599,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$samba_cv_HAVE_LINUX_SPLICE" >&6; } ;; *) -@@ -78518,24 +32857,18 @@ +@@ -81010,24 +33943,18 @@ if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then @@ -84644,7 +86628,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -78546,41 +32879,18 @@ +@@ -81038,41 +33965,18 @@ return 0; } _ACEOF @@ -84690,7 +86674,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -78588,68 +32898,35 @@ +@@ -81080,68 +33984,35 @@ ############################################ # See if we have the a broken readlink syscall. @@ -84769,7 +86753,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -78657,7 +32934,7 @@ +@@ -81149,7 +34020,7 @@ # Check whether winbind is supported on this platform. If so we need to # build and install client programs, sbin programs and shared libraries @@ -84778,7 +86762,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking whether to build winbind... " >&6; } # Initially, the value of $host_os decides whether winbind is supported -@@ -78669,7 +32946,7 @@ +@@ -81161,7 +34032,7 @@ # We define this here so --with-winbind can override it. # Check whether --with-wbclient was given. @@ -84787,7 +86771,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_wbclient; case "$withval" in no) -@@ -78770,7 +33047,7 @@ +@@ -81259,7 +34130,7 @@ # Check whether --with-winbind was given. @@ -84796,7 +86780,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_winbind; case "$withval" in yes) -@@ -78801,18 +33078,14 @@ +@@ -81290,18 +34161,14 @@ WINBIND_WINS_NSS="" fi if test x"$HAVE_WBCLIENT" = x"yes"; then @@ -84818,7 +86802,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -78830,57 +33103,28 @@ +@@ -81319,57 +34186,28 @@ return 0; } _ACEOF @@ -84885,7 +86869,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)" else -@@ -78911,12 +33155,10 @@ +@@ -81398,12 +34236,10 @@ fi if test x"$HAVE_WINBIND" = x"yes"; then @@ -84900,7 +86884,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)" -@@ -78927,22 +33169,18 @@ +@@ -81414,7 +34250,7 @@ UNINSTALL_PAM_MODULES="uninstallpammodules" fi else @@ -84909,81 +86893,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no$winbind_no_reason" >&6; } fi --{ $as_echo "$as_me:$LINENO: checking for pthread_mutex_lock in -lpthread" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_mutex_lock in -lpthread" >&5 - $as_echo_n "checking for pthread_mutex_lock in -lpthread... " >&6; } --if test "${ac_cv_lib_pthread_pthread_mutex_lock+set}" = set; then -+if test "${ac_cv_lib_pthread_pthread_mutex_lock+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS - LIBS="-lpthread $LIBS" --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -78960,48 +33198,21 @@ - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pthread_pthread_mutex_lock=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_lib_pthread_pthread_mutex_lock=no -+ ac_cv_lib_pthread_pthread_mutex_lock=no - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_lock" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_mutex_lock" >&5 - $as_echo "$ac_cv_lib_pthread_pthread_mutex_lock" >&6; } --if test "x$ac_cv_lib_pthread_pthread_mutex_lock" = x""yes; then -+if test "x$ac_cv_lib_pthread_pthread_mutex_lock" = x""yes; then : - WINBIND_NSS_PTHREAD="-lpthread" - --cat >>confdefs.h <<\_ACEOF --#define HAVE_PTHREAD 1 --_ACEOF -+$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h - - fi - -@@ -79018,533 +33229,52 @@ +@@ -81427,108 +34263,11 @@ # Solaris 10 does have new member in nss_XbyY_key @@ -85085,17 +86995,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_union_nss_XbyY_key_ipnode_af_family" >&5 -$as_echo "$ac_cv_member_union_nss_XbyY_key_ipnode_af_family" >&6; } -if test "x$ac_cv_member_union_nss_XbyY_key_ipnode_af_family" = x""yes; then -- ++ac_fn_c_check_member "$LINENO" "union nss_XbyY_key" "ipnode.af_family" "ac_cv_member_union_nss_XbyY_key_ipnode_af_family" "#include ++" ++if test "x$ac_cv_member_union_nss_XbyY_key_ipnode_af_family" = x""yes; then : + -cat >>confdefs.h <<\_ACEOF -#define HAVE_NSS_XBYY_KEY_IPNODE 1 -_ACEOF -- --fi -- -- --# Solaris has some extra fields in struct passwd that need to be --# initialised otherwise nscd crashes. -- ++$as_echo "#define HAVE_NSS_XBYY_KEY_IPNODE 1" >>confdefs.h + + fi + +@@ -81536,318 +34275,29 @@ + # Solaris has some extra fields in struct passwd that need to be + # initialised otherwise nscd crashes. + -{ $as_echo "$as_me:$LINENO: checking for struct passwd.pw_comment" >&5 -$as_echo_n "checking for struct passwd.pw_comment... " >&6; } -if test "${ac_cv_member_struct_passwd_pw_comment+set}" = set; then @@ -85255,7 +87169,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -- ++ac_fn_c_check_member "$LINENO" "struct passwd" "pw_comment" "ac_cv_member_struct_passwd_pw_comment" "#include ++" ++if test "x$ac_cv_member_struct_passwd_pw_comment" = x""yes; then : + -int -main () -{ @@ -85288,28 +87205,33 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++$as_echo "#define HAVE_PASSWD_PW_COMMENT 1" >>confdefs.h + - ac_cv_member_struct_passwd_pw_age=no --fi -- + fi + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -- + -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_passwd_pw_age" >&5 -$as_echo "$ac_cv_member_struct_passwd_pw_age" >&6; } -if test "x$ac_cv_member_struct_passwd_pw_age" = x""yes; then -- ++ac_fn_c_check_member "$LINENO" "struct passwd" "pw_age" "ac_cv_member_struct_passwd_pw_age" "#include ++" ++if test "x$ac_cv_member_struct_passwd_pw_age" = x""yes; then : + -cat >>confdefs.h <<\_ACEOF -#define HAVE_PASSWD_PW_AGE 1 -_ACEOF -- --fi -- -- --# AIX 4.3.x and 5.1 do not have as many members in --# struct secmethod_table as AIX 5.2 ++$as_echo "#define HAVE_PASSWD_PW_AGE 1" >>confdefs.h + + fi + + + # AIX 4.3.x and 5.1 do not have as many members in + # struct secmethod_table as AIX 5.2 -{ $as_echo "$as_me:$LINENO: checking for struct secmethod_table.method_attrlist" >&5 -$as_echo_n "checking for struct secmethod_table.method_attrlist... " >&6; } -if test "${ac_cv_member_struct_secmethod_table_method_attrlist+set}" = set; then @@ -85408,16 +87330,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_secmethod_table_method_attrlist" >&5 -$as_echo "$ac_cv_member_struct_secmethod_table_method_attrlist" >&6; } -if test "x$ac_cv_member_struct_secmethod_table_method_attrlist" = x""yes; then -- --cat >>confdefs.h <<_ACEOF --#define HAVE_STRUCT_SECMETHOD_TABLE_METHOD_ATTRLIST 1 --_ACEOF -- -- --fi -+ac_fn_c_check_member "$LINENO" "union nss_XbyY_key" "ipnode.af_family" "ac_cv_member_union_nss_XbyY_key_ipnode_af_family" "#include ++ac_fn_c_check_member "$LINENO" "struct secmethod_table" "method_attrlist" "ac_cv_member_struct_secmethod_table_method_attrlist" "#include +" -+if test "x$ac_cv_member_union_nss_XbyY_key_ipnode_af_family" = x""yes; then : ++if test "x$ac_cv_member_struct_secmethod_table_method_attrlist" = x""yes; then : + + cat >>confdefs.h <<_ACEOF + #define HAVE_STRUCT_SECMETHOD_TABLE_METHOD_ATTRLIST 1 +@@ -81856,104 +34306,9 @@ + + fi -{ $as_echo "$as_me:$LINENO: checking for struct secmethod_table.method_version" >&5 -$as_echo_n "checking for struct secmethod_table.method_version... " >&6; } @@ -85431,8 +87352,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -+$as_echo "#define HAVE_NSS_XBYY_KEY_IPNODE 1" >>confdefs.h - +- -int -main () -{ @@ -85465,8 +87385,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+fi - +- - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF @@ -85474,7 +87393,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - +- -int -main () -{ @@ -85507,53 +87426,25 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+# Solaris has some extra fields in struct passwd that need to be -+# initialised otherwise nscd crashes. -+ -+ac_fn_c_check_member "$LINENO" "struct passwd" "pw_comment" "ac_cv_member_struct_passwd_pw_comment" "#include -+" -+if test "x$ac_cv_member_struct_passwd_pw_comment" = x""yes; then : -+ -+$as_echo "#define HAVE_PASSWD_PW_COMMENT 1" >>confdefs.h - +- - ac_cv_member_struct_secmethod_table_method_version=no - fi - +-fi +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+ac_fn_c_check_member "$LINENO" "struct passwd" "pw_age" "ac_cv_member_struct_passwd_pw_age" "#include -+" -+if test "x$ac_cv_member_struct_passwd_pw_age" = x""yes; then : -+ -+$as_echo "#define HAVE_PASSWD_PW_AGE 1" >>confdefs.h -+ - fi - +-fi +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+# AIX 4.3.x and 5.1 do not have as many members in -+# struct secmethod_table as AIX 5.2 -+ac_fn_c_check_member "$LINENO" "struct secmethod_table" "method_attrlist" "ac_cv_member_struct_secmethod_table_method_attrlist" "#include -+" -+if test "x$ac_cv_member_struct_secmethod_table_method_attrlist" = x""yes; then : -+ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_STRUCT_SECMETHOD_TABLE_METHOD_ATTRLIST 1 -+_ACEOF -+ -+ - fi +-fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_secmethod_table_method_version" >&5 -$as_echo "$ac_cv_member_struct_secmethod_table_method_version" >&6; } -if test "x$ac_cv_member_struct_secmethod_table_method_version" = x""yes; then -+ +ac_fn_c_check_member "$LINENO" "struct secmethod_table" "method_version" "ac_cv_member_struct_secmethod_table_method_version" "#include +" +if test "x$ac_cv_member_struct_secmethod_table_method_version" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_SECMETHOD_TABLE_METHOD_VERSION 1 -@@ -79554,17 +33284,13 @@ +@@ -81963,17 +34318,13 @@ fi @@ -85574,7 +87465,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -79579,41 +33305,18 @@ +@@ -81988,41 +34339,18 @@ return 0; } _ACEOF @@ -85620,7 +87511,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -79623,7 +33326,7 @@ +@@ -82032,7 +34360,7 @@ # Check whether --with-included-popt was given. @@ -85629,7 +87520,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_included_popt; case "$withval" in yes) -@@ -79636,18 +33339,14 @@ +@@ -82045,18 +34373,14 @@ fi if test x"$INCLUDED_POPT" != x"yes"; then @@ -85651,7 +87542,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -79665,43 +33364,18 @@ +@@ -82074,43 +34398,18 @@ return 0; } _ACEOF @@ -85701,7 +87592,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure INCLUDED_POPT=no else INCLUDED_POPT=yes -@@ -79709,16 +33383,16 @@ +@@ -82118,16 +34417,16 @@ fi @@ -85721,7 +87612,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } BUILD_POPT="" POPTLIBS="-lpopt" -@@ -79731,7 +33405,7 @@ +@@ -82140,7 +34439,7 @@ # Check if user wants DNS service discovery support # Check whether --enable-dnssd was given. @@ -85730,7 +87621,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure enableval=$enable_dnssd; fi -@@ -79740,151 +33414,12 @@ +@@ -82149,151 +34448,12 @@ if test x"$enable_dnssd" = x"yes"; then have_dnssd_support=yes @@ -85887,7 +87778,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -79897,102 +33432,12 @@ +@@ -82306,102 +34466,12 @@ # On Darwin the DNSSD API is in libc, but on other platforms it's # probably in -ldns_sd @@ -85995,7 +87886,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -80000,23 +33445,17 @@ +@@ -82409,23 +34479,17 @@ @@ -86022,10 +87913,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -80034,54 +33473,28 @@ - return 0; - } - _ACEOF +@@ -82438,59 +34502,33 @@ + int + main () + { +-return DNSServiceRegister (); +- ; +- return 0; +-} +-_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -86047,6 +87943,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then ++return DNSServiceRegister (); ++ ; ++ return 0; ++} ++_ACEOF +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ext_dns_sd_DNSServiceRegister=yes; ac_cv_lib_ext_dns_sd=yes @@ -86084,7 +87985,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBDNS_SD 1 _ACEOF -@@ -80096,7 +33509,6 @@ +@@ -82505,7 +34543,6 @@ fi @@ -86092,7 +87993,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \ x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then have_dnssd_support=no -@@ -80104,15 +33516,11 @@ +@@ -82513,15 +34550,11 @@ if test x"$have_dnssd_support" = x"yes"; then @@ -86110,7 +88011,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi fi -@@ -80122,7 +33530,7 @@ +@@ -82531,7 +34564,7 @@ # Check if user wants avahi support # Check whether --enable-avahi was given. @@ -86119,7 +88020,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure enableval=$enable_avahi; fi -@@ -80130,151 +33538,12 @@ +@@ -82539,151 +34572,12 @@ if test x"$enable_avahi" != x"no"; then have_avahi_support=yes @@ -86276,7 +88177,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -80285,151 +33554,12 @@ +@@ -82694,151 +34588,12 @@ have_avahi_support=no fi @@ -86433,7 +88334,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -80441,18 +33571,14 @@ +@@ -82850,18 +34605,14 @@ fi save_LIBS="$LIBS" @@ -86455,7 +88356,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -80470,58 +33596,29 @@ +@@ -82879,58 +34630,29 @@ return 0; } _ACEOF @@ -86523,7 +88424,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -80539,43 +33636,18 @@ +@@ -82948,43 +34670,18 @@ return 0; } _ACEOF @@ -86573,7 +88474,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure have_avahi_strerror=yes fi -@@ -80590,17 +33662,13 @@ +@@ -82999,17 +34696,13 @@ AVAHI_LIBS="-lavahi-client -lavahi-common" @@ -86593,7 +88494,586 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi fi fi -@@ -80610,7 +33678,7 @@ +@@ -83024,18 +34717,14 @@ + # If it's error, then the user didn't + # define it. + if test "x$PTHREAD_LDFLAGS" = xerror; then +- { $as_echo "$as_me:$LINENO: checking for pthread_attr_init in -lpthread" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_attr_init in -lpthread" >&5 + $as_echo_n "checking for pthread_attr_init in -lpthread... " >&6; } +-if test "${ac_cv_lib_pthread_pthread_attr_init+set}" = set; then ++if test "${ac_cv_lib_pthread_pthread_attr_init+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS + LIBS="-lpthread $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -83053,43 +34742,18 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthread_pthread_attr_init=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_pthread_pthread_attr_init=no ++ ac_cv_lib_pthread_pthread_attr_init=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_attr_init" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_attr_init" >&5 + $as_echo "$ac_cv_lib_pthread_pthread_attr_init" >&6; } +-if test "x$ac_cv_lib_pthread_pthread_attr_init" = x""yes; then ++if test "x$ac_cv_lib_pthread_pthread_attr_init" = x""yes; then : + + PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS" + PTHREAD_LDFLAGS="-lpthread" +@@ -83098,18 +34762,14 @@ + fi + + if test "x$PTHREAD_LDFLAGS" = xerror; then +- { $as_echo "$as_me:$LINENO: checking for pthread_attr_init in -lpthreads" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_attr_init in -lpthreads" >&5 + $as_echo_n "checking for pthread_attr_init in -lpthreads... " >&6; } +-if test "${ac_cv_lib_pthreads_pthread_attr_init+set}" = set; then ++if test "${ac_cv_lib_pthreads_pthread_attr_init+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS + LIBS="-lpthreads $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -83127,43 +34787,18 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthreads_pthread_attr_init=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_pthreads_pthread_attr_init=no ++ ac_cv_lib_pthreads_pthread_attr_init=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthreads_pthread_attr_init" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreads_pthread_attr_init" >&5 + $as_echo "$ac_cv_lib_pthreads_pthread_attr_init" >&6; } +-if test "x$ac_cv_lib_pthreads_pthread_attr_init" = x""yes; then ++if test "x$ac_cv_lib_pthreads_pthread_attr_init" = x""yes; then : + + PTHREAD_CFLAGS="-D_THREAD_SAFE" + PTHREAD_LDFLAGS="-lpthreads" +@@ -83172,18 +34807,14 @@ + fi + + if test "x$PTHREAD_LDFLAGS" = xerror; then +- { $as_echo "$as_me:$LINENO: checking for pthread_attr_init in -lc_r" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_attr_init in -lc_r" >&5 + $as_echo_n "checking for pthread_attr_init in -lc_r... " >&6; } +-if test "${ac_cv_lib_c_r_pthread_attr_init+set}" = set; then ++if test "${ac_cv_lib_c_r_pthread_attr_init+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS + LIBS="-lc_r $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -83201,43 +34832,18 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_c_r_pthread_attr_init=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_c_r_pthread_attr_init=no ++ ac_cv_lib_c_r_pthread_attr_init=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_c_r_pthread_attr_init" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_attr_init" >&5 + $as_echo "$ac_cv_lib_c_r_pthread_attr_init" >&6; } +-if test "x$ac_cv_lib_c_r_pthread_attr_init" = x""yes; then ++if test "x$ac_cv_lib_c_r_pthread_attr_init" = x""yes; then : + + PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread" + PTHREAD_LDFLAGS="-pthread" +@@ -83246,92 +34852,8 @@ + fi + + if test "x$PTHREAD_LDFLAGS" = xerror; then +- { $as_echo "$as_me:$LINENO: checking for pthread_attr_init" >&5 +-$as_echo_n "checking for pthread_attr_init... " >&6; } +-if test "${ac_cv_func_pthread_attr_init+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define pthread_attr_init to an innocuous variant, in case declares pthread_attr_init. +- For example, HP-UX 11i declares gettimeofday. */ +-#define pthread_attr_init innocuous_pthread_attr_init +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char pthread_attr_init (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef pthread_attr_init +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char pthread_attr_init (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_pthread_attr_init || defined __stub___pthread_attr_init +-choke me +-#endif +- +-int +-main () +-{ +-return pthread_attr_init (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- ac_cv_func_pthread_attr_init=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_func_pthread_attr_init=no +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_pthread_attr_init" >&5 +-$as_echo "$ac_cv_func_pthread_attr_init" >&6; } +-if test "x$ac_cv_func_pthread_attr_init" = x""yes; then ++ ac_fn_c_check_func "$LINENO" "pthread_attr_init" "ac_cv_func_pthread_attr_init" ++if test "x$ac_cv_func_pthread_attr_init" = x""yes; then : + + PTHREAD_CFLAGS="-D_REENTRANT" + PTHREAD_LDFLAGS="-lpthread" +@@ -83342,18 +34864,14 @@ + # especially for HP-UX, where the AC_CHECK_FUNC macro fails to test for + # pthread_attr_init. On pthread_mutex_lock it works there... + if test "x$PTHREAD_LDFLAGS" = xerror; then +- { $as_echo "$as_me:$LINENO: checking for pthread_mutex_lock in -lpthread" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_mutex_lock in -lpthread" >&5 + $as_echo_n "checking for pthread_mutex_lock in -lpthread... " >&6; } +-if test "${ac_cv_lib_pthread_pthread_mutex_lock+set}" = set; then ++if test "${ac_cv_lib_pthread_pthread_mutex_lock+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS + LIBS="-lpthread $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -83371,43 +34889,18 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthread_pthread_mutex_lock=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_pthread_pthread_mutex_lock=no ++ ac_cv_lib_pthread_pthread_mutex_lock=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_lock" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_mutex_lock" >&5 + $as_echo "$ac_cv_lib_pthread_pthread_mutex_lock" >&6; } +-if test "x$ac_cv_lib_pthread_pthread_mutex_lock" = x""yes; then ++if test "x$ac_cv_lib_pthread_pthread_mutex_lock" = x""yes; then : + + PTHREAD_CFLAGS="-D_REENTRANT" + PTHREAD_LDFLAGS="-lpthread" +@@ -83426,151 +34919,12 @@ + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + ac_save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS" +- +-for ac_header in pthread.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +- +-fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ for ac_header in pthread.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" ++if test "x$ac_cv_header_pthread_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++#define HAVE_PTHREAD_H 1 + _ACEOF + + fi +@@ -83580,9 +34934,7 @@ + CFLAGS=$ac_save_CFLAGS + LDFLAGS=$ac_save_LDFLAGS + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_PTHREAD 1 +-_ACEOF ++$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h + + fi + +@@ -83590,24 +34942,20 @@ + # Check if user wants pthreadpool support + + # Check whether --enable-pthreadpool was given. +-if test "${enable_pthreadpool+set}" = set; then ++if test "${enable_pthreadpool+set}" = set; then : + enableval=$enable_pthreadpool; + fi + + + if test x"$enable_pthreadpool" = xyes -a x"$samba_cv_HAVE_PTHREAD" != x"yes"; then +- { { $as_echo "$as_me:$LINENO: error: pthreadpool support cannot be enabled when pthread support was found" >&5 +-$as_echo "$as_me: error: pthreadpool support cannot be enabled when pthread support was found" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error "pthreadpool support cannot be enabled when pthread support was found" "$LINENO" 5 + fi + + if test x"$enable_pthreadpool" = x"yes" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then + LIBS="$LIBS $PTHREAD_LDFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + +-cat >>confdefs.h <<\_ACEOF +-#define WITH_PTHREADPOOL 1 +-_ACEOF ++$as_echo "#define WITH_PTHREADPOOL 1" >>confdefs.h + + PTHREADPOOL_OBJ="lib/pthreadpool.o" + +@@ -83618,7 +34966,7 @@ # Check whether --with-included-iniparser was given. @@ -86602,7 +89082,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_included_iniparser; case "$withval" in yes) -@@ -80623,18 +33691,14 @@ +@@ -83631,18 +34979,14 @@ fi if test x"$INCLUDED_INIPARSER" != x"yes"; then @@ -86624,7 +89104,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -80652,43 +33716,18 @@ +@@ -83660,43 +35004,18 @@ return 0; } _ACEOF @@ -86674,7 +89154,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure INCLUDED_INIPARSER=no else INCLUDED_INIPARSER=yes -@@ -80696,260 +33735,40 @@ +@@ -83704,260 +35023,40 @@ fi @@ -86686,12 +89166,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } BUILD_INIPARSER='$(INIPARSER_OBJ)' - INIPARSERLIBS="" - FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src" - else +- INIPARSERLIBS="" +- FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src" +-else - { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } +-$as_echo "no" >&6; } - BUILD_INIPARSER="" - INIPARSERLIBS="-liniparser" -fi @@ -86881,14 +89360,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -+ BUILD_INIPARSER="" -+ INIPARSERLIBS="-liniparser" - fi - +-fi +- -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - +- -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) @@ -86923,9 +89400,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 --else ++ INIPARSERLIBS="" ++ FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src" + else - eval "$as_ac_Header=\$ac_header_preproc" --fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ BUILD_INIPARSER="" ++ INIPARSERLIBS="-liniparser" + fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -86934,6 +89417,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + + + ++ ++ +# Checks for the vfs_fileid module +# Start +ac_fn_c_check_func "$LINENO" "getmntent" "ac_cv_func_getmntent" @@ -86955,7 +89440,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -80957,20 +33776,16 @@ +@@ -83965,20 +35064,16 @@ done @@ -86980,7 +89465,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -80982,46 +33797,19 @@ +@@ -83990,46 +35085,19 @@ return statfs (".", &fsd); } _ACEOF @@ -87032,7 +89517,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$vfsfileid_cv_statfs" >&6; } if test x"$ac_cv_func_getmntent" = x"yes" -a \ -@@ -81056,7 +33844,7 @@ +@@ -84064,7 +35132,7 @@ # Check whether --with-static-modules was given. @@ -87041,7 +89526,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_static_modules; if test $withval; then for i in `echo $withval | sed -e 's/,/ /g'` do -@@ -81068,7 +33856,7 @@ +@@ -84076,7 +35144,7 @@ # Check whether --with-shared-modules was given. @@ -87050,8 +89535,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_shared_modules; if test $withval; then for i in `echo $withval | sed -e 's/,/ /g'` do -@@ -81079,7 +33867,7 @@ - +@@ -84093,7 +35161,7 @@ + fi - { $as_echo "$as_me:$LINENO: checking how to build pdb_ldap" >&5 @@ -87059,7 +89544,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build pdb_ldap... " >&6; } if test "$MODULE_pdb_ldap"; then DEST=$MODULE_pdb_ldap -@@ -81091,12 +33879,10 @@ +@@ -84105,12 +35173,10 @@ if test x"$DEST" = xSHARED; then @@ -87074,7 +89559,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules pdb_ldap" -@@ -81107,16 +33893,16 @@ +@@ -84121,16 +35187,16 @@ PDB_STATIC="$PDB_STATIC passdb/pdb_ldap.o passdb/pdb_nds.o" PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" @@ -87089,12 +89574,47 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi +- { $as_echo "$as_me:$LINENO: checking how to build pdb_ads" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to build pdb_ads" >&5 + $as_echo_n "checking how to build pdb_ads... " >&6; } + if test "$MODULE_pdb_ads"; then + DEST=$MODULE_pdb_ads +@@ -84142,12 +35208,10 @@ + + if test x"$DEST" = xSHARED; then + +-cat >>confdefs.h <<\_ACEOF +-#define pdb_ads_init init_samba_module +-_ACEOF ++$as_echo "#define pdb_ads_init init_samba_module" >>confdefs.h + + PDB_MODULES="$PDB_MODULES "bin/ads.$SHLIBEXT"" +- { $as_echo "$as_me:$LINENO: result: shared" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared" >&5 + $as_echo "shared" >&6; } + + string_shared_modules="$string_shared_modules pdb_ads" +@@ -84158,16 +35222,16 @@ + PDB_STATIC="$PDB_STATIC passdb/pdb_ads.o \$(TLDAP_OBJ)" + + +- { $as_echo "$as_me:$LINENO: result: static" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: static" >&5 + $as_echo "static" >&6; } + else + string_ignored_modules="$string_ignored_modules pdb_ads" +- { $as_echo "$as_me:$LINENO: result: not" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not" >&5 + $as_echo "not" >&6; } + fi + + - { $as_echo "$as_me:$LINENO: checking how to build pdb_smbpasswd" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to build pdb_smbpasswd" >&5 $as_echo_n "checking how to build pdb_smbpasswd... " >&6; } if test "$MODULE_pdb_smbpasswd"; then DEST=$MODULE_pdb_smbpasswd -@@ -81128,12 +33914,10 @@ +@@ -84179,12 +35243,10 @@ if test x"$DEST" = xSHARED; then @@ -87109,7 +89629,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules pdb_smbpasswd" -@@ -81144,16 +33928,16 @@ +@@ -84195,16 +35257,16 @@ PDB_STATIC="$PDB_STATIC passdb/pdb_smbpasswd.o" @@ -87129,7 +89649,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build pdb_tdbsam... " >&6; } if test "$MODULE_pdb_tdbsam"; then DEST=$MODULE_pdb_tdbsam -@@ -81165,12 +33949,10 @@ +@@ -84216,12 +35278,10 @@ if test x"$DEST" = xSHARED; then @@ -87144,7 +89664,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules pdb_tdbsam" -@@ -81181,16 +33963,16 @@ +@@ -84232,16 +35292,16 @@ PDB_STATIC="$PDB_STATIC passdb/pdb_tdb.o" @@ -87164,7 +89684,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build pdb_wbc_sam... " >&6; } if test "$MODULE_pdb_wbc_sam"; then DEST=$MODULE_pdb_wbc_sam -@@ -81202,12 +33984,10 @@ +@@ -84253,12 +35313,10 @@ if test x"$DEST" = xSHARED; then @@ -87179,7 +89699,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules pdb_wbc_sam" -@@ -81218,11 +33998,11 @@ +@@ -84269,11 +35327,11 @@ PDB_STATIC="$PDB_STATIC passdb/pdb_wbc_sam.o" @@ -87193,7 +89713,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "not" >&6; } fi -@@ -81244,7 +34024,7 @@ +@@ -84295,7 +35353,7 @@ @@ -87202,7 +89722,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build rpc_lsarpc... " >&6; } if test "$MODULE_rpc_lsarpc"; then DEST=$MODULE_rpc_lsarpc -@@ -81256,12 +34036,10 @@ +@@ -84307,12 +35365,10 @@ if test x"$DEST" = xSHARED; then @@ -87217,7 +89737,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules rpc_lsarpc" -@@ -81272,16 +34050,16 @@ +@@ -84323,16 +35379,16 @@ RPC_STATIC="$RPC_STATIC \$(RPC_LSA_OBJ)" @@ -87237,7 +89757,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build rpc_winreg... " >&6; } if test "$MODULE_rpc_winreg"; then DEST=$MODULE_rpc_winreg -@@ -81293,12 +34071,10 @@ +@@ -84344,12 +35400,10 @@ if test x"$DEST" = xSHARED; then @@ -87252,7 +89772,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules rpc_winreg" -@@ -81309,16 +34085,16 @@ +@@ -84360,16 +35414,16 @@ RPC_STATIC="$RPC_STATIC \$(RPC_REG_OBJ)" @@ -87272,7 +89792,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build rpc_initshutdown... " >&6; } if test "$MODULE_rpc_initshutdown"; then DEST=$MODULE_rpc_initshutdown -@@ -81330,12 +34106,10 @@ +@@ -84381,12 +35435,10 @@ if test x"$DEST" = xSHARED; then @@ -87287,7 +89807,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules rpc_initshutdown" -@@ -81346,16 +34120,16 @@ +@@ -84397,16 +35449,16 @@ RPC_STATIC="$RPC_STATIC \$(RPC_INITSHUTDOWN_OBJ)" @@ -87307,7 +89827,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build rpc_dssetup... " >&6; } if test "$MODULE_rpc_dssetup"; then DEST=$MODULE_rpc_dssetup -@@ -81367,12 +34141,10 @@ +@@ -84418,12 +35470,10 @@ if test x"$DEST" = xSHARED; then @@ -87322,7 +89842,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules rpc_dssetup" -@@ -81383,16 +34155,16 @@ +@@ -84434,16 +35484,16 @@ RPC_STATIC="$RPC_STATIC \$(RPC_DSSETUP_OBJ)" @@ -87342,7 +89862,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build rpc_wkssvc... " >&6; } if test "$MODULE_rpc_wkssvc"; then DEST=$MODULE_rpc_wkssvc -@@ -81404,12 +34176,10 @@ +@@ -84455,12 +35505,10 @@ if test x"$DEST" = xSHARED; then @@ -87357,7 +89877,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules rpc_wkssvc" -@@ -81420,16 +34190,16 @@ +@@ -84471,16 +35519,16 @@ RPC_STATIC="$RPC_STATIC \$(RPC_WKS_OBJ)" @@ -87377,7 +89897,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build rpc_svcctl... " >&6; } if test "$MODULE_rpc_svcctl"; then DEST=$MODULE_rpc_svcctl -@@ -81441,12 +34211,10 @@ +@@ -84492,12 +35540,10 @@ if test x"$DEST" = xSHARED; then @@ -87392,7 +89912,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules rpc_svcctl" -@@ -81457,16 +34225,16 @@ +@@ -84508,16 +35554,16 @@ RPC_STATIC="$RPC_STATIC \$(RPC_SVCCTL_OBJ)" @@ -87412,7 +89932,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build rpc_ntsvcs... " >&6; } if test "$MODULE_rpc_ntsvcs"; then DEST=$MODULE_rpc_ntsvcs -@@ -81478,12 +34246,10 @@ +@@ -84529,12 +35575,10 @@ if test x"$DEST" = xSHARED; then @@ -87427,7 +89947,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules rpc_ntsvcs" -@@ -81494,16 +34260,16 @@ +@@ -84545,16 +35589,16 @@ RPC_STATIC="$RPC_STATIC \$(RPC_NTSVCS_OBJ)" @@ -87447,7 +89967,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build rpc_netlogon... " >&6; } if test "$MODULE_rpc_netlogon"; then DEST=$MODULE_rpc_netlogon -@@ -81515,12 +34281,10 @@ +@@ -84566,12 +35610,10 @@ if test x"$DEST" = xSHARED; then @@ -87462,7 +89982,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules rpc_netlogon" -@@ -81531,16 +34295,16 @@ +@@ -84582,16 +35624,16 @@ RPC_STATIC="$RPC_STATIC \$(RPC_NETLOG_OBJ)" @@ -87482,7 +90002,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build rpc_netdfs... " >&6; } if test "$MODULE_rpc_netdfs"; then DEST=$MODULE_rpc_netdfs -@@ -81552,12 +34316,10 @@ +@@ -84603,12 +35645,10 @@ if test x"$DEST" = xSHARED; then @@ -87497,7 +90017,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules rpc_netdfs" -@@ -81568,16 +34330,16 @@ +@@ -84619,16 +35659,16 @@ RPC_STATIC="$RPC_STATIC \$(RPC_DFS_OBJ)" @@ -87517,7 +90037,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build rpc_srvsvc... " >&6; } if test "$MODULE_rpc_srvsvc"; then DEST=$MODULE_rpc_srvsvc -@@ -81589,12 +34351,10 @@ +@@ -84640,12 +35680,10 @@ if test x"$DEST" = xSHARED; then @@ -87532,7 +90052,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules rpc_srvsvc" -@@ -81605,16 +34365,16 @@ +@@ -84656,16 +35694,16 @@ RPC_STATIC="$RPC_STATIC \$(RPC_SVC_OBJ)" @@ -87552,7 +90072,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build rpc_spoolss... " >&6; } if test "$MODULE_rpc_spoolss"; then DEST=$MODULE_rpc_spoolss -@@ -81626,12 +34386,10 @@ +@@ -84677,12 +35715,10 @@ if test x"$DEST" = xSHARED; then @@ -87567,7 +90087,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules rpc_spoolss" -@@ -81642,16 +34400,16 @@ +@@ -84693,16 +35729,16 @@ RPC_STATIC="$RPC_STATIC \$(RPC_SPOOLSS_OBJ)" @@ -87587,7 +90107,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build rpc_eventlog... " >&6; } if test "$MODULE_rpc_eventlog"; then DEST=$MODULE_rpc_eventlog -@@ -81663,12 +34421,10 @@ +@@ -84714,12 +35750,10 @@ if test x"$DEST" = xSHARED; then @@ -87602,7 +90122,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules rpc_eventlog" -@@ -81679,16 +34435,16 @@ +@@ -84730,16 +35764,16 @@ RPC_STATIC="$RPC_STATIC \$(RPC_EVENTLOG_OBJ)" @@ -87622,7 +90142,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build rpc_samr... " >&6; } if test "$MODULE_rpc_samr"; then DEST=$MODULE_rpc_samr -@@ -81700,12 +34456,10 @@ +@@ -84751,12 +35785,10 @@ if test x"$DEST" = xSHARED; then @@ -87637,7 +90157,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules rpc_samr" -@@ -81716,16 +34470,16 @@ +@@ -84767,16 +35799,16 @@ RPC_STATIC="$RPC_STATIC \$(RPC_SAMR_OBJ)" @@ -87657,7 +90177,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build rpc_rpcecho... " >&6; } if test "$MODULE_rpc_rpcecho"; then DEST=$MODULE_rpc_rpcecho -@@ -81737,12 +34491,10 @@ +@@ -84788,12 +35820,10 @@ if test x"$DEST" = xSHARED; then @@ -87672,7 +90192,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules rpc_rpcecho" -@@ -81753,11 +34505,11 @@ +@@ -84804,11 +35834,11 @@ RPC_STATIC="$RPC_STATIC \$(RPC_ECHO_OBJ)" @@ -87686,7 +90206,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "not" >&6; } fi -@@ -81778,7 +34530,7 @@ +@@ -84829,7 +35859,7 @@ @@ -87695,7 +90215,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build idmap_ldap... " >&6; } if test "$MODULE_idmap_ldap"; then DEST=$MODULE_idmap_ldap -@@ -81790,12 +34542,10 @@ +@@ -84841,12 +35871,10 @@ if test x"$DEST" = xSHARED; then @@ -87710,7 +90230,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules idmap_ldap" -@@ -81806,16 +34556,16 @@ +@@ -84857,16 +35885,16 @@ IDMAP_STATIC="$IDMAP_STATIC winbindd/idmap_ldap.o" @@ -87730,7 +90250,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build idmap_tdb... " >&6; } if test "$MODULE_idmap_tdb"; then DEST=$MODULE_idmap_tdb -@@ -81827,12 +34577,10 @@ +@@ -84878,12 +35906,10 @@ if test x"$DEST" = xSHARED; then @@ -87745,7 +90265,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules idmap_tdb" -@@ -81843,16 +34591,16 @@ +@@ -84894,16 +35920,16 @@ IDMAP_STATIC="$IDMAP_STATIC winbindd/idmap_tdb.o" @@ -87765,7 +90285,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build idmap_tdb2... " >&6; } if test "$MODULE_idmap_tdb2"; then DEST=$MODULE_idmap_tdb2 -@@ -81864,12 +34612,10 @@ +@@ -84915,12 +35941,10 @@ if test x"$DEST" = xSHARED; then @@ -87780,7 +90300,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules idmap_tdb2" -@@ -81880,16 +34626,16 @@ +@@ -84931,16 +35955,16 @@ IDMAP_STATIC="$IDMAP_STATIC winbindd/idmap_tdb2.o" @@ -87800,7 +90320,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build idmap_passdb... " >&6; } if test "$MODULE_idmap_passdb"; then DEST=$MODULE_idmap_passdb -@@ -81901,12 +34647,10 @@ +@@ -84952,12 +35976,10 @@ if test x"$DEST" = xSHARED; then @@ -87815,7 +90335,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules idmap_passdb" -@@ -81917,16 +34661,16 @@ +@@ -84968,16 +35990,16 @@ IDMAP_STATIC="$IDMAP_STATIC winbindd/idmap_passdb.o" @@ -87835,7 +90355,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build idmap_nss... " >&6; } if test "$MODULE_idmap_nss"; then DEST=$MODULE_idmap_nss -@@ -81938,12 +34682,10 @@ +@@ -84989,12 +36011,10 @@ if test x"$DEST" = xSHARED; then @@ -87850,7 +90370,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules idmap_nss" -@@ -81954,16 +34696,16 @@ +@@ -85005,16 +36025,16 @@ IDMAP_STATIC="$IDMAP_STATIC winbindd/idmap_nss.o" @@ -87870,7 +90390,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build idmap_rid... " >&6; } if test "$MODULE_idmap_rid"; then DEST=$MODULE_idmap_rid -@@ -81975,12 +34717,10 @@ +@@ -85026,12 +36046,10 @@ if test x"$DEST" = xSHARED; then @@ -87885,7 +90405,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules idmap_rid" -@@ -81991,16 +34731,16 @@ +@@ -85042,16 +36060,16 @@ IDMAP_STATIC="$IDMAP_STATIC winbindd/idmap_rid.o" @@ -87905,7 +90425,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build idmap_ad... " >&6; } if test "$MODULE_idmap_ad"; then DEST=$MODULE_idmap_ad -@@ -82012,12 +34752,10 @@ +@@ -85063,12 +36081,10 @@ if test x"$DEST" = xSHARED; then @@ -87920,7 +90440,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules idmap_ad" -@@ -82028,16 +34766,16 @@ +@@ -85079,16 +36095,16 @@ IDMAP_STATIC="$IDMAP_STATIC winbindd/idmap_ad.o" @@ -87940,7 +90460,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build idmap_hash... " >&6; } if test "$MODULE_idmap_hash"; then DEST=$MODULE_idmap_hash -@@ -82049,12 +34787,10 @@ +@@ -85100,12 +36116,10 @@ if test x"$DEST" = xSHARED; then @@ -87955,7 +90475,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules idmap_hash" -@@ -82065,16 +34801,16 @@ +@@ -85116,16 +36130,16 @@ IDMAP_STATIC="$IDMAP_STATIC \$(IDMAP_HASH_OBJ)" @@ -87975,7 +90495,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build idmap_adex... " >&6; } if test "$MODULE_idmap_adex"; then DEST=$MODULE_idmap_adex -@@ -82086,12 +34822,10 @@ +@@ -85137,12 +36151,10 @@ if test x"$DEST" = xSHARED; then @@ -87990,7 +90510,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules idmap_adex" -@@ -82102,11 +34836,11 @@ +@@ -85153,11 +36165,11 @@ IDMAP_STATIC="$IDMAP_STATIC \$(IDMAP_ADEX_OBJ)" @@ -88004,7 +90524,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "not" >&6; } fi -@@ -82127,7 +34861,7 @@ +@@ -85178,7 +36190,7 @@ @@ -88013,7 +90533,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build nss_info_template... " >&6; } if test "$MODULE_nss_info_template"; then DEST=$MODULE_nss_info_template -@@ -82139,12 +34873,10 @@ +@@ -85190,12 +36202,10 @@ if test x"$DEST" = xSHARED; then @@ -88028,7 +90548,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules nss_info_template" -@@ -82155,11 +34887,11 @@ +@@ -85206,11 +36216,11 @@ NSS_INFO_STATIC="$NSS_INFO_STATIC winbindd/nss_info_template.o" @@ -88042,7 +90562,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "not" >&6; } fi -@@ -82180,7 +34912,7 @@ +@@ -85231,7 +36241,7 @@ @@ -88051,7 +90571,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build charset_weird... " >&6; } if test "$MODULE_charset_weird"; then DEST=$MODULE_charset_weird -@@ -82192,12 +34924,10 @@ +@@ -85243,12 +36253,10 @@ if test x"$DEST" = xSHARED; then @@ -88066,7 +90586,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules charset_weird" -@@ -82208,16 +34938,16 @@ +@@ -85259,16 +36267,16 @@ CHARSET_STATIC="$CHARSET_STATIC modules/weird.o" @@ -88086,7 +90606,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build charset_CP850... " >&6; } if test "$MODULE_charset_CP850"; then DEST=$MODULE_charset_CP850 -@@ -82229,12 +34959,10 @@ +@@ -85280,12 +36288,10 @@ if test x"$DEST" = xSHARED; then @@ -88101,7 +90621,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules charset_CP850" -@@ -82245,16 +34973,16 @@ +@@ -85296,16 +36302,16 @@ CHARSET_STATIC="$CHARSET_STATIC modules/CP850.o" @@ -88121,7 +90641,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build charset_CP437... " >&6; } if test "$MODULE_charset_CP437"; then DEST=$MODULE_charset_CP437 -@@ -82266,12 +34994,10 @@ +@@ -85317,12 +36323,10 @@ if test x"$DEST" = xSHARED; then @@ -88136,7 +90656,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules charset_CP437" -@@ -82282,16 +35008,16 @@ +@@ -85333,16 +36337,16 @@ CHARSET_STATIC="$CHARSET_STATIC modules/CP437.o" @@ -88156,7 +90676,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build charset_macosxfs... " >&6; } if test "$MODULE_charset_macosxfs"; then DEST=$MODULE_charset_macosxfs -@@ -82303,12 +35029,10 @@ +@@ -85354,12 +36358,10 @@ if test x"$DEST" = xSHARED; then @@ -88171,7 +90691,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules charset_macosxfs" -@@ -82319,11 +35043,11 @@ +@@ -85370,11 +36372,11 @@ CHARSET_STATIC="$CHARSET_STATIC modules/charset_macosxfs.o" @@ -88185,7 +90705,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "not" >&6; } fi -@@ -82344,7 +35068,7 @@ +@@ -85395,7 +36397,7 @@ @@ -88194,7 +90714,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build auth_sam... " >&6; } if test "$MODULE_auth_sam"; then DEST=$MODULE_auth_sam -@@ -82356,12 +35080,10 @@ +@@ -85407,12 +36409,10 @@ if test x"$DEST" = xSHARED; then @@ -88209,7 +90729,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules auth_sam" -@@ -82372,16 +35094,16 @@ +@@ -85423,16 +36423,16 @@ AUTH_STATIC="$AUTH_STATIC \$(AUTH_SAM_OBJ)" @@ -88229,7 +90749,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build auth_unix... " >&6; } if test "$MODULE_auth_unix"; then DEST=$MODULE_auth_unix -@@ -82393,12 +35115,10 @@ +@@ -85444,12 +36444,10 @@ if test x"$DEST" = xSHARED; then @@ -88244,7 +90764,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules auth_unix" -@@ -82409,16 +35129,16 @@ +@@ -85460,16 +36458,16 @@ AUTH_STATIC="$AUTH_STATIC \$(AUTH_UNIX_OBJ)" @@ -88264,7 +90784,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build auth_winbind... " >&6; } if test "$MODULE_auth_winbind"; then DEST=$MODULE_auth_winbind -@@ -82430,12 +35150,10 @@ +@@ -85481,12 +36479,10 @@ if test x"$DEST" = xSHARED; then @@ -88279,7 +90799,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules auth_winbind" -@@ -82446,16 +35164,16 @@ +@@ -85497,16 +36493,16 @@ AUTH_STATIC="$AUTH_STATIC \$(AUTH_WINBIND_OBJ)" @@ -88299,7 +90819,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build auth_wbc... " >&6; } if test "$MODULE_auth_wbc"; then DEST=$MODULE_auth_wbc -@@ -82467,12 +35185,10 @@ +@@ -85518,12 +36514,10 @@ if test x"$DEST" = xSHARED; then @@ -88314,7 +90834,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules auth_wbc" -@@ -82483,16 +35199,16 @@ +@@ -85534,16 +36528,16 @@ AUTH_STATIC="$AUTH_STATIC \$(AUTH_WBC_OBJ)" @@ -88334,7 +90854,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build auth_server... " >&6; } if test "$MODULE_auth_server"; then DEST=$MODULE_auth_server -@@ -82504,12 +35220,10 @@ +@@ -85555,12 +36549,10 @@ if test x"$DEST" = xSHARED; then @@ -88349,7 +90869,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules auth_server" -@@ -82520,16 +35234,16 @@ +@@ -85571,16 +36563,16 @@ AUTH_STATIC="$AUTH_STATIC \$(AUTH_SERVER_OBJ)" @@ -88369,7 +90889,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build auth_domain... " >&6; } if test "$MODULE_auth_domain"; then DEST=$MODULE_auth_domain -@@ -82541,12 +35255,10 @@ +@@ -85592,12 +36584,10 @@ if test x"$DEST" = xSHARED; then @@ -88384,7 +90904,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules auth_domain" -@@ -82557,16 +35269,16 @@ +@@ -85608,16 +36598,16 @@ AUTH_STATIC="$AUTH_STATIC \$(AUTH_DOMAIN_OBJ)" @@ -88404,7 +90924,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build auth_builtin... " >&6; } if test "$MODULE_auth_builtin"; then DEST=$MODULE_auth_builtin -@@ -82578,12 +35290,10 @@ +@@ -85629,12 +36619,10 @@ if test x"$DEST" = xSHARED; then @@ -88419,7 +90939,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules auth_builtin" -@@ -82594,16 +35304,16 @@ +@@ -85645,16 +36633,16 @@ AUTH_STATIC="$AUTH_STATIC \$(AUTH_BUILTIN_OBJ)" @@ -88439,7 +90959,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build auth_script... " >&6; } if test "$MODULE_auth_script"; then DEST=$MODULE_auth_script -@@ -82615,12 +35325,10 @@ +@@ -85666,12 +36654,10 @@ if test x"$DEST" = xSHARED; then @@ -88454,7 +90974,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules auth_script" -@@ -82631,16 +35339,16 @@ +@@ -85682,16 +36668,16 @@ AUTH_STATIC="$AUTH_STATIC \$(AUTH_SCRIPT_OBJ)" @@ -88474,7 +90994,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build auth_netlogond... " >&6; } if test "$MODULE_auth_netlogond"; then DEST=$MODULE_auth_netlogond -@@ -82652,12 +35360,10 @@ +@@ -85703,12 +36689,10 @@ if test x"$DEST" = xSHARED; then @@ -88489,7 +91009,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules auth_netlogond" -@@ -82668,11 +35374,11 @@ +@@ -85719,11 +36703,11 @@ AUTH_STATIC="$AUTH_STATIC \$(AUTH_NETLOGOND_OBJ)" @@ -88503,7 +91023,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "not" >&6; } fi -@@ -82693,7 +35399,7 @@ +@@ -85744,7 +36728,7 @@ @@ -88512,7 +91032,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_default... " >&6; } if test "$MODULE_vfs_default"; then DEST=$MODULE_vfs_default -@@ -82705,12 +35411,10 @@ +@@ -85756,12 +36740,10 @@ if test x"$DEST" = xSHARED; then @@ -88527,7 +91047,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_default" -@@ -82721,16 +35425,16 @@ +@@ -85772,16 +36754,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_DEFAULT_OBJ)" @@ -88547,7 +91067,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_recycle... " >&6; } if test "$MODULE_vfs_recycle"; then DEST=$MODULE_vfs_recycle -@@ -82742,12 +35446,10 @@ +@@ -85793,12 +36775,10 @@ if test x"$DEST" = xSHARED; then @@ -88562,7 +91082,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_recycle" -@@ -82758,16 +35460,16 @@ +@@ -85809,16 +36789,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_RECYCLE_OBJ)" @@ -88582,7 +91102,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_audit... " >&6; } if test "$MODULE_vfs_audit"; then DEST=$MODULE_vfs_audit -@@ -82779,12 +35481,10 @@ +@@ -85830,12 +36810,10 @@ if test x"$DEST" = xSHARED; then @@ -88597,7 +91117,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_audit" -@@ -82795,16 +35495,16 @@ +@@ -85846,16 +36824,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_AUDIT_OBJ)" @@ -88617,7 +91137,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_extd_audit... " >&6; } if test "$MODULE_vfs_extd_audit"; then DEST=$MODULE_vfs_extd_audit -@@ -82816,12 +35516,10 @@ +@@ -85867,12 +36845,10 @@ if test x"$DEST" = xSHARED; then @@ -88632,7 +91152,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_extd_audit" -@@ -82832,16 +35530,16 @@ +@@ -85883,16 +36859,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_EXTD_AUDIT_OBJ)" @@ -88652,7 +91172,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_full_audit... " >&6; } if test "$MODULE_vfs_full_audit"; then DEST=$MODULE_vfs_full_audit -@@ -82853,12 +35551,10 @@ +@@ -85904,12 +36880,10 @@ if test x"$DEST" = xSHARED; then @@ -88667,7 +91187,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_full_audit" -@@ -82869,16 +35565,16 @@ +@@ -85920,16 +36894,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_FULL_AUDIT_OBJ)" @@ -88687,7 +91207,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_netatalk... " >&6; } if test "$MODULE_vfs_netatalk"; then DEST=$MODULE_vfs_netatalk -@@ -82890,12 +35586,10 @@ +@@ -85941,12 +36915,10 @@ if test x"$DEST" = xSHARED; then @@ -88702,7 +91222,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_netatalk" -@@ -82906,16 +35600,16 @@ +@@ -85957,16 +36929,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_NETATALK_OBJ)" @@ -88722,7 +91242,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_fake_perms... " >&6; } if test "$MODULE_vfs_fake_perms"; then DEST=$MODULE_vfs_fake_perms -@@ -82927,12 +35621,10 @@ +@@ -85978,12 +36950,10 @@ if test x"$DEST" = xSHARED; then @@ -88737,7 +91257,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_fake_perms" -@@ -82943,16 +35635,16 @@ +@@ -85994,16 +36964,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_FAKE_PERMS_OBJ)" @@ -88757,7 +91277,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_default_quota... " >&6; } if test "$MODULE_vfs_default_quota"; then DEST=$MODULE_vfs_default_quota -@@ -82964,12 +35656,10 @@ +@@ -86015,12 +36985,10 @@ if test x"$DEST" = xSHARED; then @@ -88772,7 +91292,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_default_quota" -@@ -82980,16 +35670,16 @@ +@@ -86031,16 +36999,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_DEFAULT_QUOTA_OBJ)" @@ -88792,7 +91312,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_readonly... " >&6; } if test "$MODULE_vfs_readonly"; then DEST=$MODULE_vfs_readonly -@@ -83001,12 +35691,10 @@ +@@ -86052,12 +37020,10 @@ if test x"$DEST" = xSHARED; then @@ -88807,7 +91327,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_readonly" -@@ -83017,16 +35705,16 @@ +@@ -86068,16 +37034,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_READONLY_OBJ)" @@ -88827,7 +91347,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_cap... " >&6; } if test "$MODULE_vfs_cap"; then DEST=$MODULE_vfs_cap -@@ -83038,12 +35726,10 @@ +@@ -86089,12 +37055,10 @@ if test x"$DEST" = xSHARED; then @@ -88842,7 +91362,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_cap" -@@ -83054,16 +35740,16 @@ +@@ -86105,16 +37069,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_CAP_OBJ)" @@ -88862,7 +91382,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_expand_msdfs... " >&6; } if test "$MODULE_vfs_expand_msdfs"; then DEST=$MODULE_vfs_expand_msdfs -@@ -83075,12 +35761,10 @@ +@@ -86126,12 +37090,10 @@ if test x"$DEST" = xSHARED; then @@ -88877,7 +91397,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_expand_msdfs" -@@ -83091,16 +35775,16 @@ +@@ -86142,16 +37104,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_EXPAND_MSDFS_OBJ)" @@ -88897,7 +91417,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_shadow_copy... " >&6; } if test "$MODULE_vfs_shadow_copy"; then DEST=$MODULE_vfs_shadow_copy -@@ -83112,12 +35796,10 @@ +@@ -86163,12 +37125,10 @@ if test x"$DEST" = xSHARED; then @@ -88912,7 +91432,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_shadow_copy" -@@ -83128,16 +35810,16 @@ +@@ -86179,16 +37139,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_SHADOW_COPY_OBJ)" @@ -88932,7 +91452,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_shadow_copy2... " >&6; } if test "$MODULE_vfs_shadow_copy2"; then DEST=$MODULE_vfs_shadow_copy2 -@@ -83149,12 +35831,10 @@ +@@ -86200,12 +37160,10 @@ if test x"$DEST" = xSHARED; then @@ -88947,7 +91467,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_shadow_copy2" -@@ -83165,16 +35845,16 @@ +@@ -86216,16 +37174,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_SHADOW_COPY2_OBJ)" @@ -88967,7 +91487,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_afsacl... " >&6; } if test "$MODULE_vfs_afsacl"; then DEST=$MODULE_vfs_afsacl -@@ -83186,12 +35866,10 @@ +@@ -86237,12 +37195,10 @@ if test x"$DEST" = xSHARED; then @@ -88982,7 +91502,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_afsacl" -@@ -83202,16 +35880,16 @@ +@@ -86253,16 +37209,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_AFSACL_OBJ)" @@ -89002,7 +91522,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_xattr_tdb... " >&6; } if test "$MODULE_vfs_xattr_tdb"; then DEST=$MODULE_vfs_xattr_tdb -@@ -83223,12 +35901,10 @@ +@@ -86274,12 +37230,10 @@ if test x"$DEST" = xSHARED; then @@ -89017,7 +91537,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_xattr_tdb" -@@ -83239,16 +35915,16 @@ +@@ -86290,16 +37244,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_XATTR_TDB_OBJ)" @@ -89037,7 +91557,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_posixacl... " >&6; } if test "$MODULE_vfs_posixacl"; then DEST=$MODULE_vfs_posixacl -@@ -83260,12 +35936,10 @@ +@@ -86311,12 +37265,10 @@ if test x"$DEST" = xSHARED; then @@ -89052,7 +91572,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_posixacl" -@@ -83276,16 +35950,16 @@ +@@ -86327,16 +37279,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_POSIXACL_OBJ)" @@ -89072,7 +91592,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_aixacl... " >&6; } if test "$MODULE_vfs_aixacl"; then DEST=$MODULE_vfs_aixacl -@@ -83297,12 +35971,10 @@ +@@ -86348,12 +37300,10 @@ if test x"$DEST" = xSHARED; then @@ -89087,7 +91607,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_aixacl" -@@ -83313,16 +35985,16 @@ +@@ -86364,16 +37314,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_AIXACL_OBJ)" @@ -89107,7 +91627,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_aixacl2... " >&6; } if test "$MODULE_vfs_aixacl2"; then DEST=$MODULE_vfs_aixacl2 -@@ -83334,12 +36006,10 @@ +@@ -86385,12 +37335,10 @@ if test x"$DEST" = xSHARED; then @@ -89122,7 +91642,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_aixacl2" -@@ -83350,16 +36020,16 @@ +@@ -86401,16 +37349,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_AIXACL2_OBJ)" @@ -89142,7 +91662,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_solarisacl... " >&6; } if test "$MODULE_vfs_solarisacl"; then DEST=$MODULE_vfs_solarisacl -@@ -83371,12 +36041,10 @@ +@@ -86422,12 +37370,10 @@ if test x"$DEST" = xSHARED; then @@ -89157,7 +91677,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_solarisacl" -@@ -83387,16 +36055,16 @@ +@@ -86438,16 +37384,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_SOLARISACL_OBJ)" @@ -89177,7 +91697,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_irixacl... " >&6; } if test "$MODULE_vfs_irixacl"; then DEST=$MODULE_vfs_irixacl -@@ -83408,12 +36076,10 @@ +@@ -86459,12 +37405,10 @@ if test x"$DEST" = xSHARED; then @@ -89192,7 +91712,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_irixacl" -@@ -83424,16 +36090,16 @@ +@@ -86475,16 +37419,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_IRIXACL_OBJ)" @@ -89212,7 +91732,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_hpuxacl... " >&6; } if test "$MODULE_vfs_hpuxacl"; then DEST=$MODULE_vfs_hpuxacl -@@ -83445,12 +36111,10 @@ +@@ -86496,12 +37440,10 @@ if test x"$DEST" = xSHARED; then @@ -89227,7 +91747,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_hpuxacl" -@@ -83461,16 +36125,16 @@ +@@ -86512,16 +37454,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_HPUXACL_OBJ)" @@ -89247,7 +91767,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_tru64acl... " >&6; } if test "$MODULE_vfs_tru64acl"; then DEST=$MODULE_vfs_tru64acl -@@ -83482,12 +36146,10 @@ +@@ -86533,12 +37475,10 @@ if test x"$DEST" = xSHARED; then @@ -89262,7 +91782,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_tru64acl" -@@ -83498,16 +36160,16 @@ +@@ -86549,16 +37489,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_TRU64ACL_OBJ)" @@ -89282,7 +91802,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_catia... " >&6; } if test "$MODULE_vfs_catia"; then DEST=$MODULE_vfs_catia -@@ -83519,12 +36181,10 @@ +@@ -86570,12 +37510,10 @@ if test x"$DEST" = xSHARED; then @@ -89297,7 +91817,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_catia" -@@ -83535,16 +36195,16 @@ +@@ -86586,16 +37524,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_CATIA_OBJ)" @@ -89317,7 +91837,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_streams_xattr... " >&6; } if test "$MODULE_vfs_streams_xattr"; then DEST=$MODULE_vfs_streams_xattr -@@ -83556,12 +36216,10 @@ +@@ -86607,12 +37545,10 @@ if test x"$DEST" = xSHARED; then @@ -89332,7 +91852,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_streams_xattr" -@@ -83572,16 +36230,16 @@ +@@ -86623,16 +37559,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_STREAMS_XATTR_OBJ)" @@ -89352,7 +91872,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_streams_depot... " >&6; } if test "$MODULE_vfs_streams_depot"; then DEST=$MODULE_vfs_streams_depot -@@ -83593,12 +36251,10 @@ +@@ -86644,12 +37580,10 @@ if test x"$DEST" = xSHARED; then @@ -89367,7 +91887,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_streams_depot" -@@ -83609,16 +36265,16 @@ +@@ -86660,16 +37594,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_STREAMS_DEPOT_OBJ)" @@ -89387,7 +91907,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_cacheprime... " >&6; } if test "$MODULE_vfs_cacheprime"; then DEST=$MODULE_vfs_cacheprime -@@ -83630,12 +36286,10 @@ +@@ -86681,12 +37615,10 @@ if test x"$DEST" = xSHARED; then @@ -89402,7 +91922,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_cacheprime" -@@ -83646,16 +36300,16 @@ +@@ -86697,16 +37629,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_CACHEPRIME_OBJ)" @@ -89422,7 +91942,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_prealloc... " >&6; } if test "$MODULE_vfs_prealloc"; then DEST=$MODULE_vfs_prealloc -@@ -83667,12 +36321,10 @@ +@@ -86718,12 +37650,10 @@ if test x"$DEST" = xSHARED; then @@ -89437,7 +91957,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_prealloc" -@@ -83683,16 +36335,16 @@ +@@ -86734,16 +37664,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_PREALLOC_OBJ)" @@ -89457,7 +91977,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_commit... " >&6; } if test "$MODULE_vfs_commit"; then DEST=$MODULE_vfs_commit -@@ -83704,12 +36356,10 @@ +@@ -86755,12 +37685,10 @@ if test x"$DEST" = xSHARED; then @@ -89472,7 +91992,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_commit" -@@ -83720,16 +36370,16 @@ +@@ -86771,16 +37699,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_COMMIT_OBJ)" @@ -89492,7 +92012,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_gpfs... " >&6; } if test "$MODULE_vfs_gpfs"; then DEST=$MODULE_vfs_gpfs -@@ -83741,12 +36391,10 @@ +@@ -86792,12 +37720,10 @@ if test x"$DEST" = xSHARED; then @@ -89507,7 +92027,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_gpfs" -@@ -83757,16 +36405,16 @@ +@@ -86808,16 +37734,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_GPFS_OBJ)" @@ -89527,7 +92047,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_readahead... " >&6; } if test "$MODULE_vfs_readahead"; then DEST=$MODULE_vfs_readahead -@@ -83778,12 +36426,10 @@ +@@ -86829,12 +37755,10 @@ if test x"$DEST" = xSHARED; then @@ -89542,7 +92062,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_readahead" -@@ -83794,16 +36440,16 @@ +@@ -86845,16 +37769,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_READAHEAD_OBJ)" @@ -89562,7 +92082,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_tsmsm... " >&6; } if test "$MODULE_vfs_tsmsm"; then DEST=$MODULE_vfs_tsmsm -@@ -83815,12 +36461,10 @@ +@@ -86866,12 +37790,10 @@ if test x"$DEST" = xSHARED; then @@ -89577,7 +92097,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_tsmsm" -@@ -83831,16 +36475,16 @@ +@@ -86882,16 +37804,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_TSMSM_OBJ)" @@ -89597,7 +92117,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_fileid... " >&6; } if test "$MODULE_vfs_fileid"; then DEST=$MODULE_vfs_fileid -@@ -83852,12 +36496,10 @@ +@@ -86903,12 +37825,10 @@ if test x"$DEST" = xSHARED; then @@ -89612,7 +92132,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_fileid" -@@ -83868,16 +36510,16 @@ +@@ -86919,16 +37839,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_FILEID_OBJ)" @@ -89632,7 +92152,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_aio_fork... " >&6; } if test "$MODULE_vfs_aio_fork"; then DEST=$MODULE_vfs_aio_fork -@@ -83889,12 +36531,10 @@ +@@ -86940,12 +37860,10 @@ if test x"$DEST" = xSHARED; then @@ -89647,7 +92167,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_aio_fork" -@@ -83905,16 +36545,16 @@ +@@ -86956,16 +37874,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_AIO_FORK_OBJ)" @@ -89667,7 +92187,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_preopen... " >&6; } if test "$MODULE_vfs_preopen"; then DEST=$MODULE_vfs_preopen -@@ -83926,12 +36566,10 @@ +@@ -86977,12 +37895,10 @@ if test x"$DEST" = xSHARED; then @@ -89682,7 +92202,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_preopen" -@@ -83942,16 +36580,16 @@ +@@ -86993,16 +37909,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_PREOPEN_OBJ)" @@ -89702,7 +92222,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_syncops... " >&6; } if test "$MODULE_vfs_syncops"; then DEST=$MODULE_vfs_syncops -@@ -83963,12 +36601,10 @@ +@@ -87014,12 +37930,10 @@ if test x"$DEST" = xSHARED; then @@ -89717,7 +92237,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_syncops" -@@ -83979,16 +36615,16 @@ +@@ -87030,16 +37944,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_SYNCOPS_OBJ)" @@ -89737,7 +92257,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_zfsacl... " >&6; } if test "$MODULE_vfs_zfsacl"; then DEST=$MODULE_vfs_zfsacl -@@ -84000,12 +36636,10 @@ +@@ -87051,12 +37965,10 @@ if test x"$DEST" = xSHARED; then @@ -89752,7 +92272,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_zfsacl" -@@ -84016,16 +36650,16 @@ +@@ -87067,16 +37979,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_ZFSACL_OBJ)" @@ -89772,7 +92292,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_notify_fam... " >&6; } if test "$MODULE_vfs_notify_fam"; then DEST=$MODULE_vfs_notify_fam -@@ -84037,12 +36671,10 @@ +@@ -87088,12 +38000,10 @@ if test x"$DEST" = xSHARED; then @@ -89787,7 +92307,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_notify_fam" -@@ -84053,16 +36685,16 @@ +@@ -87104,16 +38014,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_NOTIFY_FAM_OBJ)" @@ -89807,7 +92327,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_acl_xattr... " >&6; } if test "$MODULE_vfs_acl_xattr"; then DEST=$MODULE_vfs_acl_xattr -@@ -84074,12 +36706,10 @@ +@@ -87125,12 +38035,10 @@ if test x"$DEST" = xSHARED; then @@ -89822,7 +92342,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_acl_xattr" -@@ -84090,16 +36720,16 @@ +@@ -87141,16 +38049,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_ACL_XATTR_OBJ)" @@ -89842,7 +92362,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_acl_tdb... " >&6; } if test "$MODULE_vfs_acl_tdb"; then DEST=$MODULE_vfs_acl_tdb -@@ -84111,12 +36741,10 @@ +@@ -87162,12 +38070,10 @@ if test x"$DEST" = xSHARED; then @@ -89857,7 +92377,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_acl_tdb" -@@ -84127,16 +36755,16 @@ +@@ -87178,16 +38084,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_ACL_TDB_OBJ)" @@ -89877,7 +92397,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_smb_traffic_analyzer... " >&6; } if test "$MODULE_vfs_smb_traffic_analyzer"; then DEST=$MODULE_vfs_smb_traffic_analyzer -@@ -84148,12 +36776,10 @@ +@@ -87199,12 +38105,10 @@ if test x"$DEST" = xSHARED; then @@ -89892,7 +92412,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_smb_traffic_analyzer" -@@ -84164,16 +36790,16 @@ +@@ -87215,16 +38119,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ)" @@ -89912,7 +92432,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_onefs... " >&6; } if test "$MODULE_vfs_onefs"; then DEST=$MODULE_vfs_onefs -@@ -84185,12 +36811,10 @@ +@@ -87236,12 +38140,10 @@ if test x"$DEST" = xSHARED; then @@ -89927,7 +92447,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_onefs" -@@ -84201,16 +36825,16 @@ +@@ -87252,16 +38154,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_ONEFS)" @@ -89947,7 +92467,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_onefs_shadow_copy... " >&6; } if test "$MODULE_vfs_onefs_shadow_copy"; then DEST=$MODULE_vfs_onefs_shadow_copy -@@ -84222,12 +36846,10 @@ +@@ -87273,12 +38175,10 @@ if test x"$DEST" = xSHARED; then @@ -89962,7 +92482,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_onefs_shadow_copy" -@@ -84238,16 +36860,16 @@ +@@ -87289,16 +38189,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_ONEFS_SHADOW_COPY)" @@ -89982,7 +92502,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build vfs_dirsort... " >&6; } if test "$MODULE_vfs_dirsort"; then DEST=$MODULE_vfs_dirsort -@@ -84259,12 +36881,10 @@ +@@ -87310,12 +38210,10 @@ if test x"$DEST" = xSHARED; then @@ -89997,7 +92517,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules vfs_dirsort" -@@ -84275,11 +36895,11 @@ +@@ -87326,16 +38224,16 @@ VFS_STATIC="$VFS_STATIC \$(VFS_DIRSORT_OBJ)" @@ -90011,7 +92531,42 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "not" >&6; } fi -@@ -84301,7 +36921,7 @@ + +- { $as_echo "$as_me:$LINENO: checking how to build vfs_scannedonly" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to build vfs_scannedonly" >&5 + $as_echo_n "checking how to build vfs_scannedonly... " >&6; } + if test "$MODULE_vfs_scannedonly"; then + DEST=$MODULE_vfs_scannedonly +@@ -87347,12 +38245,10 @@ + + if test x"$DEST" = xSHARED; then + +-cat >>confdefs.h <<\_ACEOF +-#define vfs_scannedonly_init init_samba_module +-_ACEOF ++$as_echo "#define vfs_scannedonly_init init_samba_module" >>confdefs.h + + VFS_MODULES="$VFS_MODULES "bin/scannedonly.$SHLIBEXT"" +- { $as_echo "$as_me:$LINENO: result: shared" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared" >&5 + $as_echo "shared" >&6; } + + string_shared_modules="$string_shared_modules vfs_scannedonly" +@@ -87363,11 +38259,11 @@ + VFS_STATIC="$VFS_STATIC \$(VFS_SCANNEDONLY_OBJ)" + + +- { $as_echo "$as_me:$LINENO: result: static" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: static" >&5 + $as_echo "static" >&6; } + else + string_ignored_modules="$string_ignored_modules vfs_scannedonly" +- { $as_echo "$as_me:$LINENO: result: not" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not" >&5 + $as_echo "not" >&6; } + fi + +@@ -87389,7 +38285,7 @@ @@ -90020,7 +92575,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build perfcount_onefs... " >&6; } if test "$MODULE_perfcount_onefs"; then DEST=$MODULE_perfcount_onefs -@@ -84313,12 +36933,10 @@ +@@ -87401,12 +38297,10 @@ if test x"$DEST" = xSHARED; then @@ -90035,7 +92590,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules perfcount_onefs" -@@ -84329,16 +36947,16 @@ +@@ -87417,16 +38311,16 @@ PERFCOUNT_STATIC="$PERFCOUNT_STATIC \$(PERFCOUNT_ONEFS)" @@ -90055,7 +92610,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build perfcount_test... " >&6; } if test "$MODULE_perfcount_test"; then DEST=$MODULE_perfcount_test -@@ -84350,12 +36968,10 @@ +@@ -87438,12 +38332,10 @@ if test x"$DEST" = xSHARED; then @@ -90070,7 +92625,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules perfcount_test" -@@ -84366,11 +36982,11 @@ +@@ -87454,11 +38346,11 @@ PERFCOUNT_STATIC="$PERFCOUNT_STATIC \$(PERFCOUNT_TEST)" @@ -90084,7 +92639,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "not" >&6; } fi -@@ -84391,7 +37007,7 @@ +@@ -87479,7 +38371,7 @@ @@ -90093,7 +92648,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build gpext_registry... " >&6; } if test "$MODULE_gpext_registry"; then DEST=$MODULE_gpext_registry -@@ -84403,12 +37019,10 @@ +@@ -87491,12 +38383,10 @@ if test x"$DEST" = xSHARED; then @@ -90108,7 +92663,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules gpext_registry" -@@ -84419,16 +37033,16 @@ +@@ -87507,16 +38397,16 @@ GPEXT_STATIC="$GPEXT_STATIC libgpo/gpext/registry.o" @@ -90128,7 +92683,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build gpext_scripts... " >&6; } if test "$MODULE_gpext_scripts"; then DEST=$MODULE_gpext_scripts -@@ -84440,12 +37054,10 @@ +@@ -87528,12 +38418,10 @@ if test x"$DEST" = xSHARED; then @@ -90143,7 +92698,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules gpext_scripts" -@@ -84456,16 +37068,16 @@ +@@ -87544,16 +38432,16 @@ GPEXT_STATIC="$GPEXT_STATIC libgpo/gpext/scripts.o" @@ -90163,7 +92718,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "checking how to build gpext_security... " >&6; } if test "$MODULE_gpext_security"; then DEST=$MODULE_gpext_security -@@ -84477,12 +37089,10 @@ +@@ -87565,12 +38453,10 @@ if test x"$DEST" = xSHARED; then @@ -90178,7 +92733,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "shared" >&6; } string_shared_modules="$string_shared_modules gpext_security" -@@ -84493,11 +37103,11 @@ +@@ -87581,11 +38467,11 @@ GPEXT_STATIC="$GPEXT_STATIC libgpo/gpext/security.o" @@ -90192,7 +92747,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "not" >&6; } fi -@@ -84533,18 +37143,16 @@ +@@ -87621,18 +38507,16 @@ ################################################# # If run from the build farm, enable NASTY hacks ################################################# @@ -90215,7 +92770,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -84561,11 +37169,11 @@ +@@ -87649,11 +38533,11 @@ rt_signal_lease_works=yes rt_signal_aio_works=yes @@ -90230,7 +92785,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "cross" >&6; } # cross compiling, I hope you know what you are doing -@@ -84573,11 +37181,7 @@ +@@ -87661,11 +38545,7 @@ else @@ -90243,7 +92798,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -84633,41 +37237,16 @@ +@@ -87724,41 +38604,16 @@ } _ACEOF @@ -90289,7 +92844,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ int -@@ -84678,61 +37257,31 @@ +@@ -87769,61 +38624,31 @@ return 0; } _ACEOF @@ -90328,8 +92883,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- +- - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -90350,15 +92905,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - --( exit $ac_status ) - +-( exit $ac_status ) + - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } case "$ac_status" in 1|11|101|111) rt_signal_lease_ok=no ;; -@@ -84746,13 +37295,9 @@ +@@ -87837,13 +38662,9 @@ # no RT_SIGNAL bug, we are golden @@ -90374,7 +92929,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ int -@@ -84763,65 +37308,39 @@ +@@ -87854,65 +38675,39 @@ return 0; } _ACEOF @@ -90413,8 +92968,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - + - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -90449,7 +93004,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure enableval=$enable_merged_build; enable_merged_build=$enableval else enable_merged_build=auto -@@ -84830,9 +37349,7 @@ +@@ -87921,9 +38716,7 @@ if test x"$enable_merged_build" = x"yes" -a \ x"$merged_build_possible" = x"no" ; then @@ -90460,10 +93015,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -84852,9 +37369,9 @@ - - # Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args. - set dummy python$PYTHON_VERSION; ac_word=$2 +@@ -87946,9 +38739,9 @@ + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } @@ -90472,7 +93027,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else case $PYTHON in -@@ -84867,14 +37384,14 @@ +@@ -87961,14 +38754,14 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -90490,7 +93045,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS ;; -@@ -84882,17 +37399,17 @@ +@@ -87976,10 +38769,10 @@ fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then @@ -90503,7 +93058,51 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi +@@ -87990,9 +38783,9 @@ + else + # Extract the first word of "python[$PYTHON_VER]", so it can be a program name with args. + set dummy python$PYTHON_VER; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_path_PYTHON+set}" = set; then ++if test "${ac_cv_path_PYTHON+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $PYTHON in +@@ -88005,14 +38798,14 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + ;; +@@ -88020,10 +38813,10 @@ + fi + PYTHON=$ac_cv_path_PYTHON + if test -n "$PYTHON"; then +- { $as_echo "$as_me:$LINENO: result: $PYTHON" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 + $as_echo "$PYTHON" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -88031,7 +38824,7 @@ + fi if test -z "$PYTHON"; then working_python=no - { $as_echo "$as_me:$LINENO: WARNING: No python found" >&5 @@ -90511,7 +93110,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: No python found" >&2;} fi -@@ -84903,9 +37420,9 @@ +@@ -88042,9 +38835,9 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -90523,7 +93122,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else case $PYTHON_CONFIG in -@@ -84918,14 +37435,14 @@ +@@ -88057,14 +38850,14 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -90541,7 +93140,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS ;; -@@ -84933,10 +37450,10 @@ +@@ -88072,10 +38865,10 @@ fi PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG if test -n "$PYTHON_CONFIG"; then @@ -90554,10 +93153,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -84947,9 +37464,9 @@ +@@ -88086,9 +38879,9 @@ else - # Extract the first word of "python[$PYTHON_VERSION]-config", so it can be a program name with args. - set dummy python$PYTHON_VERSION-config; ac_word=$2 + # Extract the first word of "python[$PYTHON_VER]-config", so it can be a program name with args. + set dummy python$PYTHON_VER-config; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } @@ -90566,7 +93165,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else case $PYTHON_CONFIG in -@@ -84962,14 +37479,14 @@ +@@ -88101,14 +38894,14 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -90584,7 +93183,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS ;; -@@ -84977,10 +37494,10 @@ +@@ -88116,10 +38909,10 @@ fi PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG if test -n "$PYTHON_CONFIG"; then @@ -90597,7 +93196,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -84988,7 +37505,7 @@ +@@ -88127,7 +38920,7 @@ fi if test -z "$PYTHON_CONFIG"; then @@ -90606,7 +93205,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: No python-config found" >&2;} else -@@ -84998,11 +37515,7 @@ +@@ -88137,11 +38930,7 @@ LIBS="$LIBS `$PYTHON_CONFIG --ldflags`" CFLAGS="$CFLAGS `$PYTHON_CONFIG --includes`" @@ -90618,8 +93217,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - /* we have our own configure tests */ -@@ -85018,42 +37531,15 @@ + #undef HAVE_UINTPTR_T +@@ -88158,42 +38947,15 @@ return 0; } _ACEOF @@ -90665,7 +93264,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure LIBS="$ac_save_LIBS" CFLAGS="$ac_save_CFLAGS" fi -@@ -85065,11 +37551,7 @@ +@@ -88205,11 +38967,7 @@ LIBS="$LIBS `$PYTHON_CONFIG --ldflags`" CFLAGS="$CFLAGS `$PYTHON_CONFIG --cflags`" @@ -90677,8 +93276,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - /* we have our own configure tests */ -@@ -85085,42 +37567,15 @@ + #undef HAVE_UINTPTR_T +@@ -88226,42 +38984,15 @@ return 0; } _ACEOF @@ -90724,7 +93323,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure LIBS="$ac_save_LIBS" CFLAGS="$ac_save_CFLAGS" fi -@@ -85135,11 +37590,7 @@ +@@ -88276,11 +39007,7 @@ LIBS="$LIBS `echo -n -L${base}/lib " "; $PYTHON_CONFIG --ldflags`" CFLAGS="$CFLAGS `$PYTHON_CONFIG --includes`" @@ -90736,8 +93335,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - /* we have our own configure tests */ -@@ -85155,42 +37606,15 @@ + #undef HAVE_UINTPTR_T +@@ -88297,42 +39024,15 @@ return 0; } _ACEOF @@ -90783,7 +93382,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure LIBS="$ac_save_LIBS" CFLAGS="$ac_save_CFLAGS" fi -@@ -85202,11 +37626,7 @@ +@@ -88344,11 +39044,7 @@ LIBS="$LIBS `echo -n -L${base}/lib " "; $PYTHON_CONFIG --ldflags`" CFLAGS="$CFLAGS `$PYTHON_CONFIG --cflags`" @@ -90795,8 +93394,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - /* we have our own configure tests */ -@@ -85222,42 +37642,15 @@ + #undef HAVE_UINTPTR_T +@@ -88365,42 +39061,15 @@ return 0; } _ACEOF @@ -90842,7 +93441,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure LIBS="$ac_save_LIBS" CFLAGS="$ac_save_CFLAGS" fi -@@ -85287,11 +37680,7 @@ +@@ -88430,11 +39099,7 @@ LIBS="$LIBS $DISTUTILS_LDFLAGS" CFLAGS="$CFLAGS $DISTUTILS_CFLAGS" @@ -90854,8 +93453,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - /* we have our own configure tests */ -@@ -85307,64 +37696,37 @@ + #undef HAVE_UINTPTR_T +@@ -88451,64 +39116,37 @@ return 0; } _ACEOF @@ -90928,10 +93527,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$merged_build_possible" >&6; } # Enable merged build automatically if possible, when in developer mode -@@ -85417,9 +37779,9 @@ - - # Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args. - set dummy python$PYTHON_VERSION; ac_word=$2 +@@ -88564,9 +39202,9 @@ + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } @@ -90940,7 +93539,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else case $PYTHON in -@@ -85432,14 +37794,14 @@ +@@ -88579,14 +39217,14 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -90958,7 +93557,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS ;; -@@ -85447,17 +37809,17 @@ +@@ -88594,10 +39232,10 @@ fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then @@ -90971,7 +93570,51 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi +@@ -88608,9 +39246,9 @@ + else + # Extract the first word of "python[$PYTHON_VER]", so it can be a program name with args. + set dummy python$PYTHON_VER; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_path_PYTHON+set}" = set; then ++if test "${ac_cv_path_PYTHON+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + case $PYTHON in +@@ -88623,14 +39261,14 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + ;; +@@ -88638,10 +39276,10 @@ + fi + PYTHON=$ac_cv_path_PYTHON + if test -n "$PYTHON"; then +- { $as_echo "$as_me:$LINENO: result: $PYTHON" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 + $as_echo "$PYTHON" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -88649,7 +39287,7 @@ + fi if test -z "$PYTHON"; then working_python=no - { $as_echo "$as_me:$LINENO: WARNING: No python found" >&5 @@ -90979,7 +93622,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: No python found" >&2;} fi -@@ -85468,9 +37830,9 @@ +@@ -88660,9 +39298,9 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -90991,7 +93634,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else case $PYTHON_CONFIG in -@@ -85483,14 +37845,14 @@ +@@ -88675,14 +39313,14 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -91009,7 +93652,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS ;; -@@ -85498,10 +37860,10 @@ +@@ -88690,10 +39328,10 @@ fi PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG if test -n "$PYTHON_CONFIG"; then @@ -91022,10 +93665,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -85512,9 +37874,9 @@ +@@ -88704,9 +39342,9 @@ else - # Extract the first word of "python[$PYTHON_VERSION]-config", so it can be a program name with args. - set dummy python$PYTHON_VERSION-config; ac_word=$2 + # Extract the first word of "python[$PYTHON_VER]-config", so it can be a program name with args. + set dummy python$PYTHON_VER-config; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } @@ -91034,7 +93677,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else case $PYTHON_CONFIG in -@@ -85527,14 +37889,14 @@ +@@ -88719,14 +39357,14 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -91052,7 +93695,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS ;; -@@ -85542,10 +37904,10 @@ +@@ -88734,10 +39372,10 @@ fi PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG if test -n "$PYTHON_CONFIG"; then @@ -91065,7 +93708,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -85553,7 +37915,7 @@ +@@ -88745,7 +39383,7 @@ fi if test -z "$PYTHON_CONFIG"; then @@ -91074,7 +93717,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: No python-config found" >&2;} else -@@ -85563,11 +37925,7 @@ +@@ -88755,11 +39393,7 @@ LIBS="$LIBS `$PYTHON_CONFIG --ldflags`" CFLAGS="$CFLAGS `$PYTHON_CONFIG --includes`" @@ -91086,8 +93729,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - /* we have our own configure tests */ -@@ -85583,42 +37941,15 @@ + #undef HAVE_UINTPTR_T +@@ -88776,42 +39410,15 @@ return 0; } _ACEOF @@ -91133,7 +93776,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure LIBS="$ac_save_LIBS" CFLAGS="$ac_save_CFLAGS" fi -@@ -85630,11 +37961,7 @@ +@@ -88823,11 +39430,7 @@ LIBS="$LIBS `$PYTHON_CONFIG --ldflags`" CFLAGS="$CFLAGS `$PYTHON_CONFIG --cflags`" @@ -91145,8 +93788,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - /* we have our own configure tests */ -@@ -85650,42 +37977,15 @@ + #undef HAVE_UINTPTR_T +@@ -88844,42 +39447,15 @@ return 0; } _ACEOF @@ -91192,7 +93835,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure LIBS="$ac_save_LIBS" CFLAGS="$ac_save_CFLAGS" fi -@@ -85700,11 +38000,7 @@ +@@ -88894,11 +39470,7 @@ LIBS="$LIBS `echo -n -L${base}/lib " "; $PYTHON_CONFIG --ldflags`" CFLAGS="$CFLAGS `$PYTHON_CONFIG --includes`" @@ -91204,8 +93847,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - /* we have our own configure tests */ -@@ -85720,42 +38016,15 @@ + #undef HAVE_UINTPTR_T +@@ -88915,42 +39487,15 @@ return 0; } _ACEOF @@ -91251,7 +93894,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure LIBS="$ac_save_LIBS" CFLAGS="$ac_save_CFLAGS" fi -@@ -85767,11 +38036,7 @@ +@@ -88962,11 +39507,7 @@ LIBS="$LIBS `echo -n -L${base}/lib " "; $PYTHON_CONFIG --ldflags`" CFLAGS="$CFLAGS `$PYTHON_CONFIG --cflags`" @@ -91263,8 +93906,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - /* we have our own configure tests */ -@@ -85787,42 +38052,15 @@ + #undef HAVE_UINTPTR_T +@@ -88983,42 +39524,15 @@ return 0; } _ACEOF @@ -91310,7 +93953,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure LIBS="$ac_save_LIBS" CFLAGS="$ac_save_CFLAGS" fi -@@ -85852,11 +38090,7 @@ +@@ -89048,11 +39562,7 @@ LIBS="$LIBS $DISTUTILS_LDFLAGS" CFLAGS="$CFLAGS $DISTUTILS_CFLAGS" @@ -91322,8 +93965,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - /* we have our own configure tests */ -@@ -85872,52 +38106,25 @@ + #undef HAVE_UINTPTR_T +@@ -89069,52 +39579,25 @@ return 0; } _ACEOF @@ -91381,7 +94024,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "yes" >&6; } -@@ -85945,20 +38152,18 @@ +@@ -89142,20 +39625,18 @@ else @@ -91406,10 +94049,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$pythondir" >&6; } -@@ -85981,545 +38186,125 @@ +@@ -89170,553 +39651,133 @@ +- MAKE_SETTINGS="$MAKE_SETTINGS +-LIBREPLACE_EXT_ENABLE = +-" +-SMB_INFO_ENABLES="$SMB_INFO_ENABLES +-\$enabled{\"LIBREPLACE_EXT\"} = \"\";" +- +- +- -MAKE_SETTINGS="$MAKE_SETTINGS -LIBREPLACE_NETWORK_LIBS = ${LIBREPLACE_NETWORK_LIBS} -LIBREPLACE_NETWORK_CFLAGS = @@ -91423,7 +94074,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -LIBREPLACE_NETWORK_ENABLE = -" -SMB_INFO_ENABLES="$SMB_INFO_ENABLES --\$enabled{LIBREPLACE_NETWORK} = \"\";" +-\$enabled{\"LIBREPLACE_NETWORK\"} = \"\";" - - - @@ -91622,7 +94273,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -- ++ MAKE_SETTINGS="$MAKE_SETTINGS ++LIBREPLACE_EXT_ENABLE = ++" ++SMB_INFO_ENABLES="$SMB_INFO_ENABLES ++\$enabled{\"LIBREPLACE_EXT\"} = \"\";" + -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` @@ -91630,6 +94286,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + +-fi + +-done +MAKE_SETTINGS="$MAKE_SETTINGS +LIBREPLACE_NETWORK_LIBS = ${LIBREPLACE_NETWORK_LIBS} +LIBREPLACE_NETWORK_CFLAGS = @@ -91637,15 +94297,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +LIBREPLACE_NETWORK_LDFLAGS = +" --fi - --done - -+ MAKE_SETTINGS="$MAKE_SETTINGS -+LIBREPLACE_NETWORK_ENABLE = -+" -+SMB_INFO_ENABLES="$SMB_INFO_ENABLES -+\$enabled{LIBREPLACE_NETWORK} = \"\";" -for ac_header in readline/history.h -do @@ -91698,15 +94349,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ac_header_compiler=no -fi ++ MAKE_SETTINGS="$MAKE_SETTINGS ++LIBREPLACE_NETWORK_ENABLE = ++" ++SMB_INFO_ENABLES="$SMB_INFO_ENABLES ++\$enabled{\"LIBREPLACE_NETWORK\"} = \"\";" -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } -+MAKE_SETTINGS="$MAKE_SETTINGS -+LIBREPLACE_CFLAGS = -I../lib/replace -+LIBREPLACE_ENABLE = YES -+LIBREPLACE_OBJ_FILES = ${LIBREPLACE_OBJS} -+" -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 @@ -91740,6 +94391,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_header_preproc=no +-fi ++MAKE_SETTINGS="$MAKE_SETTINGS ++LIBREPLACE_CFLAGS = -I../lib/replace ++LIBREPLACE_ENABLE = YES ++LIBREPLACE_OBJ_FILES = ${LIBREPLACE_OBJS} ++" + +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +SMB_INFO_SUBSYSTEMS="$SMB_INFO_SUBSYSTEMS +################################### +# Start Subsystem LIBREPLACE @@ -91751,14 +94414,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +################################### +" -- ac_header_preproc=no --fi - --rm -f conftest.err conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --$as_echo "$ac_header_preproc" >&6; } -+LIBREPLACE_HOSTCC_OBJS=`echo ${LIBREPLACE_OBJS} |sed -e 's/\.o/\.ho/g'` - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) @@ -91808,13 +94463,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF ++LIBREPLACE_HOSTCC_OBJS=`echo ${LIBREPLACE_OBJS} |sed -e 's/\.o/\.ho/g'` + +-fi + +-done +MAKE_SETTINGS="$MAKE_SETTINGS +LIBREPLACE_HOSTCC_CFLAGS = -I../lib/replace +LIBREPLACE_HOSTCC_ENABLE = YES +LIBREPLACE_HOSTCC_OBJ_FILES = ${LIBREPLACE_HOSTCC_OBJS} +" --fi +SMB_INFO_SUBSYSTEMS="$SMB_INFO_SUBSYSTEMS +################################### +# Start Subsystem LIBREPLACE_HOSTCC @@ -91826,24 +94485,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +################################### +" --done +############################################### +# Readline included by default unless explicitly asked not to +test "${with_readline+set}" != "set" && with_readline=yes -+EXTERNAL_READLINE=no -+# test for where we get readline() from -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use readline" >&5 -+$as_echo_n "checking whether to use readline... " >&6; } - -+# Check whether --with-readline was given. -+if test "${with_readline+set}" = set; then : -+ withval=$with_readline; case "$with_readline" in -+ yes) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } - -for ac_header in readline.h readline/readline.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -91869,6 +94515,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> ++EXTERNAL_READLINE=no ++# test for where we get readline() from ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use readline" >&5 ++$as_echo_n "checking whether to use readline... " >&6; } ++ ++# Check whether --with-readline was given. ++if test "${with_readline+set}" = set; then : ++ withval=$with_readline; case "$with_readline" in ++ yes) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ + for ac_header in readline.h history.h readline/readline.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -92032,7 +94690,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -86537,63 +38322,32 @@ +@@ -89734,63 +39795,32 @@ return 0; } _ACEOF @@ -92107,7 +94765,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -86611,43 +38365,18 @@ +@@ -89808,43 +39838,18 @@ return 0; } _ACEOF @@ -92157,7 +94815,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure TERMLIBS="-lreadline $TERMLIBS" EXTERNAL_READLINE=yes break -@@ -86661,11 +38390,11 @@ +@@ -89858,11 +39863,11 @@ ;; no) @@ -92171,7 +94829,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "yes" >&6; } # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at -@@ -86677,151 +38406,12 @@ +@@ -89874,151 +39879,12 @@ LDFLAGS="-L$with_readline/lib $LDFLAGS" CPPFLAGS="-I$with_readline/include $CPPFLAGS" @@ -92329,7 +94987,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -86830,151 +38420,12 @@ +@@ -90027,151 +39893,12 @@ done @@ -92486,7 +95144,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -86982,168 +38433,26 @@ +@@ -90179,168 +39906,26 @@ done @@ -92664,7 +95322,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -87161,63 +38470,32 @@ +@@ -90358,63 +39943,32 @@ return 0; } _ACEOF @@ -92739,7 +95397,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -87235,43 +38513,18 @@ +@@ -90432,43 +39986,18 @@ return 0; } _ACEOF @@ -92789,7 +95447,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure TERMLDFLAGS="-L$with_readline/lib" TERMCPPFLAGS="-I$with_readline/include" LDFLAGS="-L$with_readline/lib $LDFLAGS" -@@ -87291,7 +38544,7 @@ +@@ -90488,7 +40017,7 @@ ;; esac else @@ -92798,7 +95456,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -87300,18 +38553,14 @@ +@@ -90497,18 +40026,14 @@ # The readline API changed slightly from readline3 to readline4, so # code will generate warnings on one of them unless we have a few # special cases. @@ -92820,10 +95478,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -87329,134 +38578,45 @@ - return 0; - } - _ACEOF +@@ -90521,142 +40046,53 @@ + int + main () + { +-return rl_completion_matches (); +- ; +- return 0; +-} +-_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -92845,38 +95508,31 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -+if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_readline_rl_completion_matches=yes - else +- ac_cv_lib_readline_rl_completion_matches=yes +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_readline_rl_completion_matches=no -+ ac_cv_lib_readline_rl_completion_matches=no - fi +-fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_check_lib_save_LIBS - fi +-LIBS=$ac_check_lib_save_LIBS +-fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_readline_rl_completion_matches" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_completion_matches" >&5 - $as_echo "$ac_cv_lib_readline_rl_completion_matches" >&6; } +-$as_echo "$ac_cv_lib_readline_rl_completion_matches" >&6; } -if test "x$ac_cv_lib_readline_rl_completion_matches" = x""yes; then -+if test "x$ac_cv_lib_readline_rl_completion_matches" = x""yes; then : - +- -cat >>confdefs.h <<\_ACEOF -#define HAVE_NEW_LIBREADLINE 1 -_ACEOF -+$as_echo "#define HAVE_NEW_LIBREADLINE 1" >>confdefs.h - - fi - - - # not all readline libs have rl_event_hook or history_list +- +-fi +- +- +-# not all readline libs have rl_event_hook or history_list -{ $as_echo "$as_me:$LINENO: checking whether rl_event_hook is declared" >&5 -$as_echo_n "checking whether rl_event_hook is declared... " >&6; } -if test "${ac_cv_have_decl_rl_event_hook+set}" = set; then @@ -92888,7 +95544,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ --#include +- +- #include +- #include +- - -int -main () @@ -92920,39 +95579,61 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_have_decl_rl_event_hook=yes -+ac_fn_c_check_decl "$LINENO" "rl_event_hook" "ac_cv_have_decl_rl_event_hook" "#include -+" -+if test "x$ac_cv_have_decl_rl_event_hook" = x""yes; then : -+ ac_have_decl=1 ++return rl_completion_matches (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_readline_rl_completion_matches=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl_rl_event_hook=no -+ ac_have_decl=0 ++ ac_cv_lib_readline_rl_completion_matches=no fi - +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_rl_event_hook" >&5 -$as_echo "$ac_cv_have_decl_rl_event_hook" >&6; } -if test "x$ac_cv_have_decl_rl_event_hook" = x""yes; then -- - cat >>confdefs.h <<_ACEOF ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_completion_matches" >&5 ++$as_echo "$ac_cv_lib_readline_rl_completion_matches" >&6; } ++if test "x$ac_cv_lib_readline_rl_completion_matches" = x""yes; then : + +-cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_RL_EVENT_HOOK 1 -_ACEOF -- -- ++$as_echo "#define HAVE_NEW_LIBREADLINE 1" >>confdefs.h + ++fi + -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_RL_EVENT_HOOK 0 -+#define HAVE_DECL_RL_EVENT_HOOK $ac_have_decl - _ACEOF +-_ACEOF + ++# not all readline libs have rl_event_hook or history_list ++ac_fn_c_check_decl "$LINENO" "rl_event_hook" "ac_cv_have_decl_rl_event_hook" " ++ #include ++ #include + ++" ++if test "x$ac_cv_have_decl_rl_event_hook" = x""yes; then : ++ ac_have_decl=1 ++else ++ ac_have_decl=0 + fi + ++cat >>confdefs.h <<_ACEOF ++#define HAVE_DECL_RL_EVENT_HOOK $ac_have_decl ++_ACEOF -- --fi -- -- -{ $as_echo "$as_me:$LINENO: checking for history_list in -lreadline" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for history_list in -lreadline" >&5 $as_echo_n "checking for history_list in -lreadline... " >&6; } @@ -92971,15 +95652,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -87469,65 +38629,36 @@ - int - main () - { --return history_list (); -- ; -- return 0; --} --_ACEOF +@@ -90674,60 +40110,31 @@ + return 0; + } + _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -93001,11 +95677,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -+return history_list (); -+ ; -+ return 0; -+} -+_ACEOF +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_readline_history_list=yes else @@ -93052,7 +95723,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure MAKE_SETTINGS="$MAKE_SETTINGS -@@ -87582,7 +38713,7 @@ +@@ -90782,7 +40189,7 @@ ################################### " @@ -93061,7 +95732,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -87591,102 +38722,9 @@ +@@ -90791,102 +40198,9 @@ @@ -93166,7 +95837,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else cat >>confdefs.h <<_ACEOF -@@ -87695,102 +38733,9 @@ +@@ -90895,102 +40209,9 @@ fi @@ -93271,7 +95942,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else cat >>confdefs.h <<_ACEOF -@@ -87800,151 +38745,12 @@ +@@ -91000,151 +40221,12 @@ fi @@ -93427,7 +96098,163 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF else -@@ -87954,30 +38760,6 @@ +@@ -91154,151 +40236,12 @@ + done + + +- + for ac_header in ifaddrs.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +- +-fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "ifaddrs.h" "ac_cv_header_ifaddrs_h" "$ac_includes_default" ++if test "x$ac_cv_header_ifaddrs_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++#define HAVE_IFADDRS_H 1 + _ACEOF + + else +@@ -91308,29 +40251,6 @@ done @@ -93453,12 +96280,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - - - -- - for ac_header in \ crypt.h \ curses.h \ -@@ -88004,147 +38786,11 @@ +@@ -91356,147 +40276,11 @@ netinet6/in6.h \ libintl.h @@ -93611,7 +96437,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -88154,42 +38800,6 @@ +@@ -91506,42 +40290,6 @@ done @@ -93654,10 +96480,16 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure for ac_func in \ atexit \ cgetent \ -@@ -88228,98 +38838,11 @@ - freehostent \ - writev - +@@ -91574,271 +40322,65 @@ + warn \ + errx \ + warnx \ +- flock \ +- getipnodebyname \ +- getipnodebyaddr \ +- freehostent \ +- writev +- -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -93750,36 +96582,150 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+eval as_val=\$$as_ac_var -+ if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF - #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 - _ACEOF -@@ -88330,17 +38853,13 @@ - - - +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF +- +-fi +-done +- +- +- +- -{ $as_echo "$as_me:$LINENO: checking for bswap16" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bswap16" >&5 - $as_echo_n "checking for bswap16... " >&6; } +-$as_echo_n "checking for bswap16... " >&6; } -if test "${ac_cv_love_func_bswap16+set}" = set; then -+if test "${ac_cv_love_func_bswap16+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - +- $as_echo_n "(cached) " >&6 +-else +- -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#ifdef HAVE_SYS_BSWAP_H +-#include +-#endif +-int +-main () +-{ +-bswap16(0) +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "ac_cv_love_func_bswap16=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ flock \ ++ getipnodebyname \ ++ getipnodebyaddr \ ++ freehostent \ ++ writev + +- eval "ac_cv_love_func_bswap16=no" +-fi ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext + fi ++done + + +-eval "ac_res=\$ac_cv_love_func_bswap16" + +-if false; then + +-for ac_func in bswap16 +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bswap16" >&5 ++$as_echo_n "checking for bswap16... " >&6; } ++if test "${ac_cv_love_func_bswap16+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #ifdef HAVE_SYS_BSWAP_H - #include -@@ -88353,140 +38872,25 @@ ++/* end confdefs.h. */ ++#ifdef HAVE_SYS_BSWAP_H ++#include + #endif +- + int + main () + { +-return $ac_func (); ++bswap16(0) + ; return 0; } _ACEOF @@ -93804,13 +96750,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then +- eval "$as_ac_var=yes" +if ac_fn_c_try_link "$LINENO"; then : - eval "ac_cv_love_func_bswap16=yes" ++ eval "ac_cv_love_func_bswap16=yes" else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -- eval "ac_cv_love_func_bswap16=no" +- eval "$as_ac_var=no" + eval "ac_cv_love_func_bswap16=no" fi - @@ -93820,98 +96767,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi - - - eval "ac_res=\$ac_cv_love_func_bswap16" - - if false; then -- --for ac_func in bswap16 --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func -- --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -- --#ifdef __STDC__ --# include --#else --# include --#endif -- --#undef $ac_func -- --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -- --int --main () --{ --return $ac_func (); -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_var=no" --fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -93919,6 +96774,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then ++ ++ ++eval "ac_res=\$ac_cv_love_func_bswap16" ++ ++if false; then + for ac_func in bswap16 +do : + ac_fn_c_check_func "$LINENO" "bswap16" "ac_cv_func_bswap16" @@ -93929,7 +96789,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -88502,11 +38906,11 @@ +@@ -91854,11 +40396,11 @@ #define $ac_tr_func 1 _ACEOF @@ -93943,7 +96803,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } ;; esac -@@ -88516,17 +38920,13 @@ +@@ -91868,17 +40410,13 @@ @@ -93964,7 +96824,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #ifdef HAVE_SYS_BSWAP_H #include -@@ -88539,140 +38939,25 @@ +@@ -91891,140 +40429,25 @@ return 0; } _ACEOF @@ -93996,17 +96856,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "ac_cv_love_func_bswap32=no" --fi ++ eval "ac_cv_love_func_bswap32=no" + fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext --fi -- -- --eval "ac_res=\$ac_cv_love_func_bswap32" -- --if false; then ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi + + + eval "ac_res=\$ac_cv_love_func_bswap32" + + if false; then - -for ac_func in bswap32 -do @@ -94088,15 +96951,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -+ eval "ac_cv_love_func_bswap32=no" - fi +-fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi +-fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -94104,11 +96964,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+ -+ -+eval "ac_res=\$ac_cv_love_func_bswap32" -+ -+if false; then + for ac_func in bswap32 +do : + ac_fn_c_check_func "$LINENO" "bswap32" "ac_cv_func_bswap32" @@ -94119,7 +96974,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -88688,11 +38973,11 @@ +@@ -92040,11 +40463,11 @@ #define $ac_tr_func 1 _ACEOF @@ -94133,7 +96988,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } ;; esac -@@ -88703,25 +38988,21 @@ +@@ -92055,25 +40478,21 @@ @@ -94163,7 +97018,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ac_cv_struct_winsize=yes; break fi rm -f conftest* -@@ -88731,63 +39012,45 @@ +@@ -92083,63 +40502,45 @@ if test "$ac_cv_struct_winsize" = "yes"; then @@ -94238,7 +97093,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -88800,35 +39063,14 @@ +@@ -92152,35 +40553,14 @@ return 0; } _ACEOF @@ -94277,7 +97132,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF -@@ -88838,9 +39080,7 @@ +@@ -92190,9 +40570,7 @@ if test "$ac_cv_type_signal" = "void" ; then @@ -94288,7 +97143,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -88871,18 +39111,14 @@ +@@ -92223,18 +40601,14 @@ @@ -94310,7 +97165,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #ifdef HAVE_SYS_TYPES_H #include -@@ -88899,44 +39135,15 @@ +@@ -92251,44 +40625,15 @@ return 0; } _ACEOF @@ -94360,7 +97215,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ extern int h_errno; int foo(void) { return h_errno; } -@@ -88948,44 +39155,19 @@ +@@ -92300,44 +40645,19 @@ return 0; } _ACEOF @@ -94410,7 +97265,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$ac_foo" >&6; } if test "$ac_foo" = yes; then -@@ -88993,85 +39175,26 @@ +@@ -92345,81 +40665,23 @@ #define HAVE_H_ERRNO 1 _ACEOF @@ -94471,15 +97326,15 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl_h_errno=no --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_have_decl=0 fi + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_h_errno" >&5 -$as_echo "$ac_cv_have_decl_h_errno" >&6; } -if test "x$ac_cv_have_decl_h_errno" = x""yes; then - +- cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_H_ERRNO 1 -_ACEOF @@ -94491,1487 +97346,6 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure +#define HAVE_DECL_H_ERRNO $ac_have_decl _ACEOF -- - fi - - --fi -- -- -- - - - -@@ -89092,17 +39215,12 @@ - - - -- -- { $as_echo "$as_me:$LINENO: checking for openpty in -lutil" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for openpty in -lutil" >&5 - $as_echo_n "checking for openpty in -lutil... " >&6; } --if test "${ac_cv_lib_ext_util_openpty+set}" = set; then -+if test "${ac_cv_lib_ext_util_openpty+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -89120,54 +39238,28 @@ - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ext_util_openpty=yes; - ac_cv_lib_ext_util=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_lib_ext_util_openpty=no; -+ ac_cv_lib_ext_util_openpty=no; - ac_cv_lib_ext_util=no - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ext_util_openpty" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_util_openpty" >&5 - $as_echo "$ac_cv_lib_ext_util_openpty" >&6; } -- if test $ac_cv_lib_ext_util_openpty = yes; then -+ if test $ac_cv_lib_ext_util_openpty = yes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE_OPENPTY 1 - _ACEOF - - fi -- - LIBS=$ac_check_lib_ext_save_LIBS - --if test $ac_cv_lib_ext_util = yes; then -+if test $ac_cv_lib_ext_util = yes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE_LIBUTIL 1 - _ACEOF -@@ -89184,7 +39276,6 @@ - fi - - -- - MAKE_SETTINGS="$MAKE_SETTINGS - OPENPTY_ENABLE = YES - " -@@ -89204,23 +39295,17 @@ - - - -- - ac_check_lib_ext_save_LIBS=$LIBS - LIBS="-lintl $INTL_LIBS $LIBS" - - - -- -- { $as_echo "$as_me:$LINENO: checking for gettext in -lintl" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettext in -lintl" >&5 - $as_echo_n "checking for gettext in -lintl... " >&6; } --if test "${ac_cv_lib_ext_intl_gettext+set}" = set; then -+if test "${ac_cv_lib_ext_intl_gettext+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -89238,54 +39323,28 @@ - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ext_intl_gettext=yes; - ac_cv_lib_ext_intl=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_lib_ext_intl_gettext=no; -+ ac_cv_lib_ext_intl_gettext=no; - ac_cv_lib_ext_intl=no - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ext_intl_gettext" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_intl_gettext" >&5 - $as_echo "$ac_cv_lib_ext_intl_gettext" >&6; } -- if test $ac_cv_lib_ext_intl_gettext = yes; then -+ if test $ac_cv_lib_ext_intl_gettext = yes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE_GETTEXT 1 - _ACEOF - - fi -- - LIBS=$ac_check_lib_ext_save_LIBS - --if test $ac_cv_lib_ext_intl = yes; then -+if test $ac_cv_lib_ext_intl = yes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE_LIBINTL 1 - _ACEOF -@@ -89302,7 +39361,6 @@ - fi - - -- - MAKE_SETTINGS="$MAKE_SETTINGS - INTL_ENABLE = YES - " -@@ -89326,151 +39384,12 @@ - - - -- - for ac_header in arpa/nameser.h --do --as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --else -- # Is the header compilable? --{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 --$as_echo_n "checking $ac_header usability... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --#include <$ac_header> --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_header_compiler=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_header_compiler=no --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --$as_echo "$ac_header_compiler" >&6; } -- --# Is the header present? --{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 --$as_echo_n "checking $ac_header presence... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <$ac_header> --_ACEOF --if { (ac_try="$ac_cpp conftest.$ac_ext" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } >/dev/null && { -- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -- test ! -s conftest.err -- }; then -- ac_header_preproc=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_header_preproc=no --fi -- --rm -f conftest.err conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --$as_echo "$ac_header_preproc" >&6; } -- --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -- yes:no: ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 --$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -- ac_header_preproc=yes -- ;; -- no:yes:* ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 --$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 --$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 --$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 --$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 --$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -- ( cat <<\_ASBOX --## ---------------------------------------- ## --## Report this to samba-technical@samba.org ## --## ---------------------------------------- ## --_ASBOX -- ) | sed "s/^/$as_me: WARNING: /" >&2 -- ;; --esac --{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- eval "$as_ac_Header=\$ac_header_preproc" --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } -- --fi --as_val=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+do : -+ ac_fn_c_check_header_mongrel "$LINENO" "arpa/nameser.h" "ac_cv_header_arpa_nameser_h" "$ac_includes_default" -+if test "x$ac_cv_header_arpa_nameser_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+#define HAVE_ARPA_NAMESER_H 1 - _ACEOF - - fi -@@ -89478,22 +39397,9 @@ - done - - -- - for ac_header in resolv.h --do --as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default -+do : -+ ac_fn_c_check_header_compile "$LINENO" "resolv.h" "ac_cv_header_resolv_h" "$ac_includes_default - #ifdef HAVE_SYS_TYPES_H - #include - #endif -@@ -89504,46 +39410,10 @@ - #include - #endif - -- --#include <$ac_header> --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- eval "$as_ac_Header=yes" --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_Header=no" --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+" -+if test "x$ac_cv_header_resolv_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+#define HAVE_RESOLV_H 1 - _ACEOF - - fi -@@ -89555,9 +39425,9 @@ - - - --{ $as_echo "$as_me:$LINENO: checking for res_search" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_search" >&5 - $as_echo_n "checking for res_search... " >&6; } --if test "${ac_cv_funclib_res_search+set}" = set; then -+if test "${ac_cv_funclib_res_search+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - -@@ -89572,11 +39442,7 @@ - *) ac_lib="-l$ac_lib" ;; - esac - LIBS=" $ac_lib $ac_save_LIBS" -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - #include -@@ -89601,38 +39467,11 @@ - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - eval "if test -n \"$ac_lib\";then ac_cv_funclib_res_search=$ac_lib; else ac_cv_funclib_res_search=yes; fi";break --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - done - eval "ac_cv_funclib_res_search=\${ac_cv_funclib_res_search-no}" - LIBS="$ac_save_LIBS" -@@ -89644,102 +39483,12 @@ - eval "ac_res=\$ac_cv_funclib_res_search" - - if false; then -- --for ac_func in res_search --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func -- --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -- --#ifdef __STDC__ --# include --#else --# include --#endif -- --#undef $ac_func -- --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -- --int --main () --{ --return $ac_func (); -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_var=no" --fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+ for ac_func in res_search -+do : -+ ac_fn_c_check_func "$LINENO" "res_search" "ac_cv_func_res_search" -+if test "x$ac_cv_func_res_search" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_RES_SEARCH 1 - _ACEOF - - fi -@@ -89759,13 +39508,13 @@ - #define $ac_tr_func 1 - _ACEOF - -- { $as_echo "$as_me:$LINENO: result: yes" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - ;; - no) - eval "ac_cv_func_res_search=no" - eval "LIB_res_search=" -- { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - ;; - *) -@@ -89779,7 +39528,7 @@ - #define $ac_tr_lib 1 - _ACEOF - -- { $as_echo "$as_me:$LINENO: result: yes, in $ac_res" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, in $ac_res" >&5 - $as_echo "yes, in $ac_res" >&6; } - ;; - esac -@@ -89794,9 +39543,9 @@ - - - --{ $as_echo "$as_me:$LINENO: checking for res_nsearch" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_nsearch" >&5 - $as_echo_n "checking for res_nsearch... " >&6; } --if test "${ac_cv_funclib_res_nsearch+set}" = set; then -+if test "${ac_cv_funclib_res_nsearch+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - -@@ -89811,11 +39560,7 @@ - *) ac_lib="-l$ac_lib" ;; - esac - LIBS=" $ac_lib $ac_save_LIBS" -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - #include -@@ -89840,38 +39585,11 @@ - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - eval "if test -n \"$ac_lib\";then ac_cv_funclib_res_nsearch=$ac_lib; else ac_cv_funclib_res_nsearch=yes; fi";break --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - done - eval "ac_cv_funclib_res_nsearch=\${ac_cv_funclib_res_nsearch-no}" - LIBS="$ac_save_LIBS" -@@ -89883,102 +39601,12 @@ - eval "ac_res=\$ac_cv_funclib_res_nsearch" - - if false; then -- --for ac_func in res_nsearch --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func -- --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -- --#ifdef __STDC__ --# include --#else --# include --#endif -- --#undef $ac_func -- --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -- --int --main () --{ --return $ac_func (); -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_var=no" --fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+ for ac_func in res_nsearch -+do : -+ ac_fn_c_check_func "$LINENO" "res_nsearch" "ac_cv_func_res_nsearch" -+if test "x$ac_cv_func_res_nsearch" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_RES_NSEARCH 1 - _ACEOF - - fi -@@ -89998,13 +39626,13 @@ - #define $ac_tr_func 1 - _ACEOF - -- { $as_echo "$as_me:$LINENO: result: yes" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - ;; - no) - eval "ac_cv_func_res_nsearch=no" - eval "LIB_res_nsearch=" -- { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - ;; - *) -@@ -90018,7 +39646,7 @@ - #define $ac_tr_lib 1 - _ACEOF - -- { $as_echo "$as_me:$LINENO: result: yes, in $ac_res" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, in $ac_res" >&5 - $as_echo "yes, in $ac_res" >&6; } - ;; - esac -@@ -90033,9 +39661,9 @@ - - - --{ $as_echo "$as_me:$LINENO: checking for res_ndestroy" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_ndestroy" >&5 - $as_echo_n "checking for res_ndestroy... " >&6; } --if test "${ac_cv_funclib_res_ndestroy+set}" = set; then -+if test "${ac_cv_funclib_res_ndestroy+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - -@@ -90050,11 +39678,7 @@ - *) ac_lib="-l$ac_lib" ;; - esac - LIBS=" $ac_lib $ac_save_LIBS" -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - #include -@@ -90079,38 +39703,11 @@ - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - eval "if test -n \"$ac_lib\";then ac_cv_funclib_res_ndestroy=$ac_lib; else ac_cv_funclib_res_ndestroy=yes; fi";break --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - done - eval "ac_cv_funclib_res_ndestroy=\${ac_cv_funclib_res_ndestroy-no}" - LIBS="$ac_save_LIBS" -@@ -90122,102 +39719,12 @@ - eval "ac_res=\$ac_cv_funclib_res_ndestroy" - - if false; then -- --for ac_func in res_ndestroy --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func -- --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -- --#ifdef __STDC__ --# include --#else --# include --#endif -- --#undef $ac_func -- --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -- --int --main () --{ --return $ac_func (); -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_var=no" --fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+ for ac_func in res_ndestroy -+do : -+ ac_fn_c_check_func "$LINENO" "res_ndestroy" "ac_cv_func_res_ndestroy" -+if test "x$ac_cv_func_res_ndestroy" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_RES_NDESTROY 1 - _ACEOF - - fi -@@ -90237,13 +39744,13 @@ - #define $ac_tr_func 1 - _ACEOF - -- { $as_echo "$as_me:$LINENO: result: yes" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - ;; - no) - eval "ac_cv_func_res_ndestroy=no" - eval "LIB_res_ndestroy=" -- { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - ;; - *) -@@ -90257,7 +39764,7 @@ - #define $ac_tr_lib 1 - _ACEOF - -- { $as_echo "$as_me:$LINENO: result: yes, in $ac_res" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, in $ac_res" >&5 - $as_echo "yes, in $ac_res" >&6; } - ;; - esac -@@ -90272,9 +39779,9 @@ - - - --{ $as_echo "$as_me:$LINENO: checking for dn_expand" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dn_expand" >&5 - $as_echo_n "checking for dn_expand... " >&6; } --if test "${ac_cv_funclib_dn_expand+set}" = set; then -+if test "${ac_cv_funclib_dn_expand+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - -@@ -90287,176 +39794,55 @@ - no) continue ;; - -l*) ;; - *) ac_lib="-l$ac_lib" ;; -- esac -- LIBS=" $ac_lib $ac_save_LIBS" -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ -- --#include --#ifdef HAVE_SYS_TYPES_H --#include --#endif --#ifdef HAVE_NETINET_IN_H --#include --#endif --#ifdef HAVE_ARPA_NAMESER_H --#include --#endif --#ifdef HAVE_RESOLV_H --#include --#endif -- --int --main () --{ --dn_expand(0,0,0,0,0) -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "if test -n \"$ac_lib\";then ac_cv_funclib_dn_expand=$ac_lib; else ac_cv_funclib_dn_expand=yes; fi";break --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- --fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -- done -- eval "ac_cv_funclib_dn_expand=\${ac_cv_funclib_dn_expand-no}" -- LIBS="$ac_save_LIBS" --fi -- --fi -- -- --eval "ac_res=\$ac_cv_funclib_dn_expand" -- --if false; then -- --for ac_func in dn_expand --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ esac -+ LIBS=" $ac_lib $ac_save_LIBS" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func -- --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ - --#ifdef __STDC__ --# include --#else --# include -+#include -+#ifdef HAVE_SYS_TYPES_H -+#include - #endif -- --#undef $ac_func -- --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" -+#ifdef HAVE_NETINET_IN_H -+#include - #endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me -+#ifdef HAVE_ARPA_NAMESER_H -+#include -+#endif -+#ifdef HAVE_RESOLV_H -+#include - #endif - - int - main () - { --return $ac_func (); -+dn_expand(0,0,0,0,0) - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_var=no" -+if ac_fn_c_try_link "$LINENO"; then : -+ eval "if test -n \"$ac_lib\";then ac_cv_funclib_dn_expand=$ac_lib; else ac_cv_funclib_dn_expand=yes; fi";break -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ done -+ eval "ac_cv_funclib_dn_expand=\${ac_cv_funclib_dn_expand-no}" -+ LIBS="$ac_save_LIBS" - fi - --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext - fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+ -+ -+eval "ac_res=\$ac_cv_funclib_dn_expand" -+ -+if false; then -+ for ac_func in dn_expand -+do : -+ ac_fn_c_check_func "$LINENO" "dn_expand" "ac_cv_func_dn_expand" -+if test "x$ac_cv_func_dn_expand" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_DN_EXPAND 1 - _ACEOF - - fi -@@ -90476,13 +39862,13 @@ - #define $ac_tr_func 1 - _ACEOF - -- { $as_echo "$as_me:$LINENO: result: yes" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } - ;; - no) - eval "ac_cv_func_dn_expand=no" - eval "LIB_dn_expand=" -- { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - ;; - *) -@@ -90496,7 +39882,7 @@ - #define $ac_tr_lib 1 - _ACEOF - -- { $as_echo "$as_me:$LINENO: result: yes, in $ac_res" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, in $ac_res" >&5 - $as_echo "yes, in $ac_res" >&6; } - ;; - esac -@@ -90508,18 +39894,14 @@ - - - --{ $as_echo "$as_me:$LINENO: checking for _res" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _res" >&5 - $as_echo_n "checking for _res... " >&6; } --if test "${ac_cv_var__res+set}" = set; then -+if test "${ac_cv_var__res+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - - -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include - #ifdef HAVE_SYS_TYPES_H -@@ -90543,44 +39925,15 @@ - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - ac_cv_var__res=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_var__res=no -+ ac_cv_var__res=no - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - if test "$ac_cv_var__res" != yes ; then --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - extern int _res; - int foo(void) { return _res; } -@@ -90592,44 +39945,19 @@ - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - ac_cv_var__res=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_var__res=no -+ ac_cv_var__res=no - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi - - fi - - ac_foo=`eval echo \\$ac_cv_var__res` --{ $as_echo "$as_me:$LINENO: result: $ac_foo" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_foo" >&5 - $as_echo "$ac_foo" >&6; } - if test "$ac_foo" = yes; then - -@@ -90637,18 +39965,7 @@ - #define HAVE__RES 1 - _ACEOF - -- { $as_echo "$as_me:$LINENO: checking whether _res is declared" >&5 --$as_echo_n "checking whether _res is declared... " >&6; } --if test "${ac_cv_have_decl__res+set}" = set; then -- $as_echo_n "(cached) " >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include -+ ac_fn_c_check_decl "$LINENO" "_res" "ac_cv_have_decl__res" "#include - #ifdef HAVE_SYS_TYPES_H - #include - #endif -@@ -90661,64 +39978,17 @@ - #ifdef HAVE_RESOLV_H - #include - #endif -- --int --main () --{ --#ifndef _res -- (void) _res; --#endif -- -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_cv_have_decl__res=yes -+" -+if test "x$ac_cv_have_decl__res" = x""yes; then : -+ ac_have_decl=1 - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_have_decl__res=no --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ ac_have_decl=0 - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl__res" >&5 --$as_echo "$ac_cv_have_decl__res" >&6; } --if test "x$ac_cv_have_decl__res" = x""yes; then - - cat >>confdefs.h <<_ACEOF --#define HAVE_DECL__RES 1 --_ACEOF -- -- --else -- cat >>confdefs.h <<_ACEOF --#define HAVE_DECL__RES 0 -+#define HAVE_DECL__RES $ac_have_decl - _ACEOF - - -fi - @@ -95979,1801 +97353,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -90784,9 +40054,9 @@ - do - # Extract the first word of "$ac_prog", so it can be a program name with args. - set dummy $ac_prog; ac_word=$2 --{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_LEX+set}" = set; then -+if test "${ac_cv_prog_LEX+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$LEX"; then -@@ -90797,24 +40067,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LEX="$ac_prog" -- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done --done -+ done - IFS=$as_save_IFS +@@ -92435,151 +40697,12 @@ - fi - fi - LEX=$ac_cv_prog_LEX - if test -n "$LEX"; then -- { $as_echo "$as_me:$LINENO: result: $LEX" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 - $as_echo "$LEX" >&6; } - else -- { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - fi -@@ -90843,20 +40113,20 @@ - return ! yylex () + ! yywrap (); - } - _ACEOF --{ (ac_try="$LEX conftest.l" -+{ { ac_try="$LEX conftest.l" - case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; - esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 - (eval "$LEX conftest.l") 2>&5 - ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } --{ $as_echo "$as_me:$LINENO: checking lex output file root" >&5 -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 - $as_echo_n "checking lex output file root... " >&6; } --if test "${ac_cv_prog_lex_root+set}" = set; then -+if test "${ac_cv_prog_lex_root+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - -@@ -90865,19 +40135,17 @@ - elif test -f lexyy.c; then - ac_cv_prog_lex_root=lexyy - else -- { { $as_echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 --$as_echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} -- { (exit 1); exit 1; }; } -+ as_fn_error "cannot find output from $LEX; giving up" "$LINENO" 5 - fi - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 - $as_echo "$ac_cv_prog_lex_root" >&6; } - LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root - - if test -z "${LEXLIB+set}"; then -- { $as_echo "$as_me:$LINENO: checking lex library" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 - $as_echo_n "checking lex library... " >&6; } --if test "${ac_cv_lib_lex+set}" = set; then -+if test "${ac_cv_lib_lex+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - -@@ -90885,55 +40153,29 @@ - ac_cv_lib_lex='none needed' - for ac_lib in '' -lfl -ll; do - LIBS="$ac_lib $ac_save_LIBS" -- cat >conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ - `cat $LEX_OUTPUT_ROOT.c` - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_lex=$ac_lib --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - test "$ac_cv_lib_lex" != 'none needed' && break - done - LIBS=$ac_save_LIBS - - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 - $as_echo "$ac_cv_lib_lex" >&6; } - test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex - fi - - --{ $as_echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 - $as_echo_n "checking whether yytext is a pointer... " >&6; } --if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then -+if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - # POSIX says lex can declare yytext either as a pointer or an array; the -@@ -90942,52 +40184,24 @@ - ac_cv_prog_lex_yytext_pointer=no - ac_save_LIBS=$LIBS - LIBS="$LEXLIB $ac_save_LIBS" --cat >conftest.$ac_ext <<_ACEOF -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ - #define YYTEXT_POINTER 1 - `cat $LEX_OUTPUT_ROOT.c` - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - ac_cv_prog_lex_yytext_pointer=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS=$ac_save_LIBS - - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 - $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } - if test $ac_cv_prog_lex_yytext_pointer = yes; then - --cat >>confdefs.h <<\_ACEOF --#define YYTEXT_POINTER 1 --_ACEOF -+$as_echo "#define YYTEXT_POINTER 1" >>confdefs.h - - fi - rm -f conftest.l $LEX_OUTPUT_ROOT.c -@@ -90997,9 +40211,9 @@ - if test x"$LEX_BASENAME" = x"flex"; then - # "flex 2.5.33" - FLEX_VERSION=`$LEX --version | cut -d ' ' -f2` -- { $as_echo "$as_me:$LINENO: checking flex version" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking flex version" >&5 - $as_echo_n "checking flex version... " >&6; } -- { $as_echo "$as_me:$LINENO: result: $FLEX_VERSION" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FLEX_VERSION" >&5 - $as_echo "$FLEX_VERSION" >&6; } - FLEX_MAJOR=`echo $FLEX_VERSION | cut -d '.' -f1` - FLEX_MINOR=`echo $FLEX_VERSION | cut -d '.' -f2` -@@ -91012,9 +40226,9 @@ - do - # Extract the first word of "$ac_prog", so it can be a program name with args. - set dummy $ac_prog; ac_word=$2 --{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 - $as_echo_n "checking for $ac_word... " >&6; } --if test "${ac_cv_prog_YACC+set}" = set; then -+if test "${ac_cv_prog_YACC+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - if test -n "$YACC"; then -@@ -91025,24 +40239,24 @@ - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -+ for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_YACC="$ac_prog" -- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi - done --done -+ done - IFS=$as_save_IFS - - fi - fi - YACC=$ac_cv_prog_YACC - if test -n "$YACC"; then -- { $as_echo "$as_me:$LINENO: result: $YACC" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 - $as_echo "$YACC" >&6; } - else -- { $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - fi - -@@ -91055,9 +40269,9 @@ - if test x"$YACC_BASENAME" = x"bison -y"; then - # bison (GNU Bison) 2.3 - BISON_VERSION=`$YACC --version | head -1 | cut -d ' ' -f4` -- { $as_echo "$as_me:$LINENO: checking bison version" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking bison version" >&5 - $as_echo_n "checking bison version... " >&6; } -- { $as_echo "$as_me:$LINENO: result: $BISON_VERSION" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BISON_VERSION" >&5 - $as_echo "$BISON_VERSION" >&6; } - BISON_MAJOR=`echo $BISON_VERSION | cut -d '.' -f1` - BISON_MINOR=`echo $BISON_VERSION | cut -d '.' -f2` -@@ -91065,7 +40279,7 @@ - YACC_VERSION="bison-$BISON_MAJOR.$BISON_MINOR" - fi - --{ $as_echo "$as_me:$LINENO: checking working LEX YACC combination" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking working LEX YACC combination" >&5 - $as_echo_n "checking working LEX YACC combination... " >&6; } - LEX_YACC="no" - if test x"$LEX_VERSION" != x"" -a x"$YACC_VERSION" != x""; then -@@ -91081,7 +40295,7 @@ - LEX=false - YACC=false - fi --{ $as_echo "$as_me:$LINENO: result: $LEX_YACC" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX_YACC" >&5 - $as_echo "$LEX_YACC" >&6; } - - # Portions of heimdal kerberos are unpacked into source/heimdal -@@ -91089,21 +40303,15 @@ - - # if we ever get to using a host kerberos, we might add conditionals here - --cat >>confdefs.h <<\_ACEOF --#define HAVE_COM_ERR 1 --_ACEOF -+$as_echo "#define HAVE_COM_ERR 1" >>confdefs.h - - HAVE_COM_ERR=YES - --cat >>confdefs.h <<\_ACEOF --#define HAVE_KRB5 1 --_ACEOF -+$as_echo "#define HAVE_KRB5 1" >>confdefs.h - - HAVE_KRB5=YES - --cat >>confdefs.h <<\_ACEOF --#define HAVE_GSSAPI 1 --_ACEOF -+$as_echo "#define HAVE_GSSAPI 1" >>confdefs.h - - HAVE_GSSAPI=YES - -@@ -91195,9 +40403,7 @@ - VPATH="$VPATH:\$(HEIMDAL_VPATH)" - - --cat >>confdefs.h <<\_ACEOF --#define SAMBA4_INTERNAL_HEIMDAL 1 --_ACEOF -+$as_echo "#define SAMBA4_INTERNAL_HEIMDAL 1" >>confdefs.h - - - -@@ -91206,170 +40412,27 @@ - " - - -- - for ac_header in execinfo.h --do --as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --else -- # Is the header compilable? --{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 --$as_echo_n "checking $ac_header usability... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --#include <$ac_header> --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_header_compiler=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_header_compiler=no --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --$as_echo "$ac_header_compiler" >&6; } -- --# Is the header present? --{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 --$as_echo_n "checking $ac_header presence... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <$ac_header> --_ACEOF --if { (ac_try="$ac_cpp conftest.$ac_ext" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } >/dev/null && { -- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -- test ! -s conftest.err -- }; then -- ac_header_preproc=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_header_preproc=no --fi -- --rm -f conftest.err conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --$as_echo "$ac_header_preproc" >&6; } -- --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -- yes:no: ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 --$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -- ac_header_preproc=yes -- ;; -- no:yes:* ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 --$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 --$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 --$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 --$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 --$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -- ( cat <<\_ASBOX --## ---------------------------------------- ## --## Report this to samba-technical@samba.org ## --## ---------------------------------------- ## --_ASBOX -- ) | sed "s/^/$as_me: WARNING: /" >&2 -- ;; --esac --{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- eval "$as_ac_Header=\$ac_header_preproc" --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } -- --fi --as_val=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+do : -+ ac_fn_c_check_header_mongrel "$LINENO" "execinfo.h" "ac_cv_header_execinfo_h" "$ac_includes_default" -+if test "x$ac_cv_header_execinfo_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+#define HAVE_EXECINFO_H 1 - _ACEOF - - fi - - done - --{ $as_echo "$as_me:$LINENO: checking for library containing backtrace" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 - $as_echo_n "checking for library containing backtrace... " >&6; } --if test "${ac_cv_search_ext_backtrace+set}" = set; then -+if test "${ac_cv_search_ext_backtrace+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - - ac_func_search_ext_save_LIBS=$LIBS - ac_cv_search_ext_backtrace=no --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -91387,46 +40450,15 @@ - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_ext_backtrace="none required" --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - if test "$ac_cv_search_ext_backtrace" = no; then - for ac_lib in execinfo; do - LIBS="-l$ac_lib $EXECINFO_LIBS $ac_func_search_save_ext_LIBS" -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - /* Override any GCC internal prototype to avoid an error. -@@ -91444,65 +40476,32 @@ - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_ext_backtrace="-l$ac_lib" - break --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - done - fi - LIBS=$ac_func_search_ext_save_LIBS - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_ext_backtrace" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ext_backtrace" >&5 - $as_echo "$ac_cv_search_ext_backtrace" >&6; } --if test "$ac_cv_search_ext_backtrace" != no; then -+if test "$ac_cv_search_ext_backtrace" != no; then : - test "$ac_cv_search_ext_backtrace" = "none required" || EXECINFO_LIBS="$ac_cv_search_ext_backtrace $EXECINFO_LIBS" - - fi - - -- -- - ac_check_func_ext_save_LIBS=$LIBS - LIBS="$EXECINFO_LIBS $LIBS" -- { $as_echo "$as_me:$LINENO: checking for backtrace" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for backtrace" >&5 - $as_echo_n "checking for backtrace... " >&6; } --if test "${ac_cv_func_ext_backtrace+set}" = set; then -+if test "${ac_cv_func_ext_backtrace+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - /* Define backtrace to an innocuous variant, in case declares backtrace. - For example, HP-UX 11i declares gettimeofday. */ -@@ -91543,43 +40542,18 @@ - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - ac_cv_func_ext_backtrace=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_cv_func_ext_backtrace=no -+ ac_cv_func_ext_backtrace=no - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi --{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_ext_backtrace" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ext_backtrace" >&5 - $as_echo "$ac_cv_func_ext_backtrace" >&6; } - LIBS=$ac_check_func_ext_save_LIBS -- if test $ac_cv_func_ext_backtrace = yes; then -+ if test $ac_cv_func_ext_backtrace = yes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE_BACKTRACE 1 - _ACEOF -@@ -91587,7 +40561,6 @@ - fi - - -- - if test x"$ac_cv_header_execinfo_h" = x"yes" -a x"$ac_cv_func_ext_backtrace" = x"yes";then - - MAKE_SETTINGS="$MAKE_SETTINGS -@@ -91619,102 +40592,12 @@ - - - -- -- -- - for ac_func in sigprocmask sigblock sigaction --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func -- --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -- --#ifdef __STDC__ --# include --#else --# include --#endif -- --#undef $ac_func -- --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -- --int --main () --{ --return $ac_func (); -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_var=no" --fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+eval as_val=\$$as_ac_var -+ if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF - #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 - _ACEOF -@@ -91723,102 +40606,12 @@ - done - - -- - for ac_func in setsid --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func -- --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -- --#ifdef __STDC__ --# include --#else --# include --#endif -- --#undef $ac_func -- --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -- --int --main () --{ --return $ac_func (); -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -- eval "$as_ac_var=yes" --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- eval "$as_ac_var=no" --fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext --fi --ac_res=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_var'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+do : -+ ac_fn_c_check_func "$LINENO" "setsid" "ac_cv_func_setsid" -+if test "x$ac_cv_func_setsid" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_SETSID 1 - _ACEOF - - fi -@@ -91827,221 +40620,33 @@ - - ################################################# - # these tests are taken from the GNU fileutils package --{ $as_echo "$as_me:$LINENO: checking how to get filesystem space usage..." >&5 --$as_echo "$as_me: checking how to get filesystem space usage..." >&6;} -- -- -- --for ac_header in sys/statfs.h sys/statvfs.h sys/vfs.h --do --as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --else -- # Is the header compilable? --{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 --$as_echo_n "checking $ac_header usability... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --#include <$ac_header> --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_header_compiler=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_header_compiler=no --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --$as_echo "$ac_header_compiler" >&6; } -- --# Is the header present? --{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 --$as_echo_n "checking $ac_header presence... " >&6; } --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <$ac_header> --_ACEOF --if { (ac_try="$ac_cpp conftest.$ac_ext" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } >/dev/null && { -- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -- test ! -s conftest.err -- }; then -- ac_header_preproc=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- ac_header_preproc=no --fi -- --rm -f conftest.err conftest.$ac_ext --{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --$as_echo "$ac_header_preproc" >&6; } -- --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -- yes:no: ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 --$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -- ac_header_preproc=yes -- ;; -- no:yes:* ) -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 --$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 --$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 --$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 --$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 --$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 --$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -- ( cat <<\_ASBOX --## ---------------------------------------- ## --## Report this to samba-technical@samba.org ## --## ---------------------------------------- ## --_ASBOX -- ) | sed "s/^/$as_me: WARNING: /" >&2 -- ;; --esac --{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- eval "$as_ac_Header=\$ac_header_preproc" --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } -- --fi --as_val=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -- cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 --_ACEOF -- --fi -- --done -- -- -- --for ac_header in sys/mount.h --do --as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 --$as_echo_n "checking for $ac_header... " >&6; } --if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --$ac_includes_default --#ifdef HAVE_SYS_PARAM_H --#include --#endif -- --#include <$ac_header> --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- eval "$as_ac_Header=yes" --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to get filesystem space usage..." >&5 -+$as_echo "$as_me: checking how to get filesystem space usage..." >&6;} -+for ac_header in sys/statfs.h sys/statvfs.h sys/vfs.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF - -- eval "$as_ac_Header=no" - fi - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi --ac_res=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 --$as_echo "$ac_res" >&6; } --as_val=`eval 'as_val=${'$as_ac_Header'} -- $as_echo "$as_val"'` -- if test "x$as_val" = x""yes; then -+done -+ -+ -+for ac_header in sys/mount.h -+do : -+ ac_fn_c_check_header_compile "$LINENO" "sys/mount.h" "ac_cv_header_sys_mount_h" "$ac_includes_default -+#ifdef HAVE_SYS_PARAM_H -+#include -+#endif -+" -+if test "x$ac_cv_header_sys_mount_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+#define HAVE_SYS_MOUNT_H 1 - _ACEOF - - fi -@@ -92054,19 +40659,15 @@ - # Test for statvfs64. - if test $space = no; then - # SVR4 -- { $as_echo "$as_me:$LINENO: checking statvfs64 function (SVR4)" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking statvfs64 function (SVR4)" >&5 - $as_echo_n "checking statvfs64 function (SVR4)... " >&6; } --if test "${fu_cv_sys_stat_statvfs64+set}" = set; then -+if test "${fu_cv_sys_stat_statvfs64+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- if test "$cross_compiling" = yes; then -+ if test "$cross_compiling" = yes; then : - fu_cv_sys_stat_statvfs64=cross - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - #if defined(HAVE_UNISTD_H) -@@ -92080,51 +40681,22 @@ - exit (statvfs64 (".", &fsd)); - } - _ACEOF --rm -f conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -- { (case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_try") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); }; }; then -+if ac_fn_c_try_run "$LINENO"; then : - fu_cv_sys_stat_statvfs64=yes - else -- $as_echo "$as_me: program exited with status $ac_status" >&5 --$as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- --( exit $ac_status ) --fu_cv_sys_stat_statvfs64=no -+ fu_cv_sys_stat_statvfs64=no - fi --rm -rf conftest.dSYM --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - -- - fi --{ $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statvfs64" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_statvfs64" >&5 - $as_echo "$fu_cv_sys_stat_statvfs64" >&6; } - if test $fu_cv_sys_stat_statvfs64 = yes; then - space=yes - --cat >>confdefs.h <<\_ACEOF --#define STAT_STATVFS64 1 --_ACEOF -+$as_echo "#define STAT_STATVFS64 1" >>confdefs.h - - fi - fi -@@ -92137,16 +40709,12 @@ - # is what it gets when this test fails. - if test $space = no; then - # SVR4 -- { $as_echo "$as_me:$LINENO: checking statvfs function (SVR4)" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking statvfs function (SVR4)" >&5 - $as_echo_n "checking statvfs function (SVR4)... " >&6; } --if test "${fu_cv_sys_stat_statvfs+set}" = set; then -+if test "${fu_cv_sys_stat_statvfs+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include - #include -@@ -92158,64 +40726,33 @@ - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest$ac_exeext && { -- test "$cross_compiling" = yes || -- $as_test_x conftest$ac_exeext -- }; then -+if ac_fn_c_try_link "$LINENO"; then : - fu_cv_sys_stat_statvfs=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- fu_cv_sys_stat_statvfs=no -+ fu_cv_sys_stat_statvfs=no - fi -- --rm -rf conftest.dSYM --rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -- conftest$ac_exeext conftest.$ac_ext -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi --{ $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statvfs" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_statvfs" >&5 - $as_echo "$fu_cv_sys_stat_statvfs" >&6; } - if test $fu_cv_sys_stat_statvfs = yes; then - space=yes - --cat >>confdefs.h <<\_ACEOF --#define STAT_STATVFS 1 --_ACEOF -+$as_echo "#define STAT_STATVFS 1" >>confdefs.h - - fi - fi - - # fsusage.c assumes that statvfs has an f_frsize entry. Some weird - # systems use f_bsize. --{ $as_echo "$as_me:$LINENO: checking that statvfs.f_frsize works" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that statvfs.f_frsize works" >&5 - $as_echo_n "checking that statvfs.f_frsize works... " >&6; } --if test "${samba_cv_frsize+set}" = set; then -+if test "${samba_cv_frsize+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include - #include -@@ -92227,59 +40764,32 @@ - return 0; - } - _ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -+if ac_fn_c_try_compile "$LINENO"; then : - samba_cv_frsize=yes - else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- samba_cv_frsize=no -+ samba_cv_frsize=no - fi -- - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi --{ $as_echo "$as_me:$LINENO: result: $samba_cv_frsize" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_frsize" >&5 - $as_echo "$samba_cv_frsize" >&6; } - if test x"$samba_cv_frsize" = x"yes"; then - --cat >>confdefs.h <<\_ACEOF --#define HAVE_FRSIZE 1 --_ACEOF -+$as_echo "#define HAVE_FRSIZE 1" >>confdefs.h - - fi - - if test $space = no; then - # DEC Alpha running OSF/1 -- { $as_echo "$as_me:$LINENO: checking for 3-argument statfs function (DEC OSF/1)" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 3-argument statfs function (DEC OSF/1)" >&5 - $as_echo_n "checking for 3-argument statfs function (DEC OSF/1)... " >&6; } -- if test "${fu_cv_sys_stat_statfs3_osf1+set}" = set; then -+ if test "${fu_cv_sys_stat_statfs3_osf1+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- if test "$cross_compiling" = yes; then -+ if test "$cross_compiling" = yes; then : - fu_cv_sys_stat_statfs3_osf1=no - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - #include -@@ -92292,71 +40802,38 @@ - exit (statfs (".", &fsd, sizeof (struct statfs))); - } - _ACEOF --rm -f conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -- { (case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_try") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); }; }; then -+if ac_fn_c_try_run "$LINENO"; then : - fu_cv_sys_stat_statfs3_osf1=yes - else -- $as_echo "$as_me: program exited with status $ac_status" >&5 --$as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- --( exit $ac_status ) --fu_cv_sys_stat_statfs3_osf1=no -+ fu_cv_sys_stat_statfs3_osf1=no - fi --rm -rf conftest.dSYM --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - -- - fi - -- { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statfs3_osf1" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_statfs3_osf1" >&5 - $as_echo "$fu_cv_sys_stat_statfs3_osf1" >&6; } - if test $fu_cv_sys_stat_statfs3_osf1 = yes; then - space=yes - --cat >>confdefs.h <<\_ACEOF --#define STAT_STATFS3_OSF1 1 --_ACEOF -+$as_echo "#define STAT_STATFS3_OSF1 1" >>confdefs.h - - fi - fi - - if test $space = no; then - # AIX -- { $as_echo "$as_me:$LINENO: checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)" >&5 - $as_echo_n "checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)... " >&6; } -- if test "${fu_cv_sys_stat_statfs2_bsize+set}" = set; then -+ if test "${fu_cv_sys_stat_statfs2_bsize+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- if test "$cross_compiling" = yes; then -+ if test "$cross_compiling" = yes; then : - fu_cv_sys_stat_statfs2_bsize=no - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - #ifdef HAVE_SYS_PARAM_H -@@ -92375,71 +40852,38 @@ - exit (statfs (".", &fsd)); - } - _ACEOF --rm -f conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -- { (case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_try") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); }; }; then -+if ac_fn_c_try_run "$LINENO"; then : - fu_cv_sys_stat_statfs2_bsize=yes - else -- $as_echo "$as_me: program exited with status $ac_status" >&5 --$as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- --( exit $ac_status ) --fu_cv_sys_stat_statfs2_bsize=no -+ fu_cv_sys_stat_statfs2_bsize=no - fi --rm -rf conftest.dSYM --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - -- - fi - -- { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statfs2_bsize" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_statfs2_bsize" >&5 - $as_echo "$fu_cv_sys_stat_statfs2_bsize" >&6; } - if test $fu_cv_sys_stat_statfs2_bsize = yes; then - space=yes - --cat >>confdefs.h <<\_ACEOF --#define STAT_STATFS2_BSIZE 1 --_ACEOF -+$as_echo "#define STAT_STATFS2_BSIZE 1" >>confdefs.h - - fi - fi - - if test $space = no; then - # SVR3 -- { $as_echo "$as_me:$LINENO: checking for four-argument statfs (AIX-3.2.5, SVR3)" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for four-argument statfs (AIX-3.2.5, SVR3)" >&5 - $as_echo_n "checking for four-argument statfs (AIX-3.2.5, SVR3)... " >&6; } -- if test "${fu_cv_sys_stat_statfs4+set}" = set; then -+ if test "${fu_cv_sys_stat_statfs4+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- if test "$cross_compiling" = yes; then -+ if test "$cross_compiling" = yes; then : - fu_cv_sys_stat_statfs4=no - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include - #include -@@ -92449,71 +40893,38 @@ - exit (statfs (".", &fsd, sizeof fsd, 0)); - } - _ACEOF --rm -f conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -- { (case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_try") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); }; }; then -+if ac_fn_c_try_run "$LINENO"; then : - fu_cv_sys_stat_statfs4=yes - else -- $as_echo "$as_me: program exited with status $ac_status" >&5 --$as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- --( exit $ac_status ) --fu_cv_sys_stat_statfs4=no -+ fu_cv_sys_stat_statfs4=no - fi --rm -rf conftest.dSYM --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - -- - fi - -- { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statfs4" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_statfs4" >&5 - $as_echo "$fu_cv_sys_stat_statfs4" >&6; } - if test $fu_cv_sys_stat_statfs4 = yes; then - space=yes - --cat >>confdefs.h <<\_ACEOF --#define STAT_STATFS4 1 --_ACEOF -+$as_echo "#define STAT_STATFS4 1" >>confdefs.h - - fi - fi - - if test $space = no; then - # 4.4BSD and NetBSD -- { $as_echo "$as_me:$LINENO: checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)" >&5 - $as_echo_n "checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)... " >&6; } -- if test "${fu_cv_sys_stat_statfs2_fsize+set}" = set; then -+ if test "${fu_cv_sys_stat_statfs2_fsize+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- if test "$cross_compiling" = yes; then -+ if test "$cross_compiling" = yes; then : - fu_cv_sys_stat_statfs2_fsize=no - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include - #ifdef HAVE_SYS_PARAM_H -@@ -92529,71 +40940,38 @@ - exit (statfs (".", &fsd)); - } - _ACEOF --rm -f conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -- { (case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_try") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); }; }; then -+if ac_fn_c_try_run "$LINENO"; then : - fu_cv_sys_stat_statfs2_fsize=yes - else -- $as_echo "$as_me: program exited with status $ac_status" >&5 --$as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- --( exit $ac_status ) --fu_cv_sys_stat_statfs2_fsize=no -+ fu_cv_sys_stat_statfs2_fsize=no - fi --rm -rf conftest.dSYM --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - -- - fi - -- { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statfs2_fsize" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_statfs2_fsize" >&5 - $as_echo "$fu_cv_sys_stat_statfs2_fsize" >&6; } - if test $fu_cv_sys_stat_statfs2_fsize = yes; then - space=yes - --cat >>confdefs.h <<\_ACEOF --#define STAT_STATFS2_FSIZE 1 --_ACEOF -+$as_echo "#define STAT_STATFS2_FSIZE 1" >>confdefs.h - - fi - fi - - if test $space = no; then - # Ultrix -- { $as_echo "$as_me:$LINENO: checking for two-argument statfs with struct fs_data (Ultrix)" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for two-argument statfs with struct fs_data (Ultrix)" >&5 - $as_echo_n "checking for two-argument statfs with struct fs_data (Ultrix)... " >&6; } -- if test "${fu_cv_sys_stat_fs_data+set}" = set; then -+ if test "${fu_cv_sys_stat_fs_data+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -- if test "$cross_compiling" = yes; then -+ if test "$cross_compiling" = yes; then : - fu_cv_sys_stat_fs_data=no - else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include - #ifdef HAVE_SYS_PARAM_H -@@ -92613,201 +40991,33 @@ - exit (statfs (".", &fsd) != 1); - } - _ACEOF --rm -f conftest$ac_exeext --if { (ac_try="$ac_link" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_link") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -- { (case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_try") 2>&5 -- ac_status=$? -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); }; }; then -+if ac_fn_c_try_run "$LINENO"; then : - fu_cv_sys_stat_fs_data=yes - else -- $as_echo "$as_me: program exited with status $ac_status" >&5 --$as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- --( exit $ac_status ) --fu_cv_sys_stat_fs_data=no -+ fu_cv_sys_stat_fs_data=no - fi --rm -rf conftest.dSYM --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - -- - fi - -- { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_fs_data" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_fs_data" >&5 - $as_echo "$fu_cv_sys_stat_fs_data" >&6; } - if test $fu_cv_sys_stat_fs_data = yes; then - space=yes - --cat >>confdefs.h <<\_ACEOF --#define STAT_STATFS2_FS_DATA 1 --_ACEOF -+$as_echo "#define STAT_STATFS2_FS_DATA 1" >>confdefs.h - - fi - fi - - - - for ac_header in sys/attributes.h attr/xattr.h sys/xattr.h + for ac_header in pty.h util.h libutil.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -97923,7 +97510,3639 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -92816,19 +41026,15 @@ +@@ -92591,23 +40714,17 @@ + + + +- + ac_check_lib_ext_save_LIBS=$LIBS + LIBS="-lutil $OPENPTY_LIBS $LIBS" + + + +- +- { $as_echo "$as_me:$LINENO: checking for openpty in -lutil" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for openpty in -lutil" >&5 + $as_echo_n "checking for openpty in -lutil... " >&6; } +-if test "${ac_cv_lib_ext_util_openpty+set}" = set; then ++if test "${ac_cv_lib_ext_util_openpty+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -92625,54 +40742,28 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ext_util_openpty=yes; + ac_cv_lib_ext_util=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_ext_util_openpty=no; ++ ac_cv_lib_ext_util_openpty=no; + ac_cv_lib_ext_util=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ext_util_openpty" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_util_openpty" >&5 + $as_echo "$ac_cv_lib_ext_util_openpty" >&6; } +- if test $ac_cv_lib_ext_util_openpty = yes; then ++ if test $ac_cv_lib_ext_util_openpty = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_OPENPTY 1 + _ACEOF + + fi +- + LIBS=$ac_check_lib_ext_save_LIBS + +-if test $ac_cv_lib_ext_util = yes; then ++if test $ac_cv_lib_ext_util = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBUTIL 1 + _ACEOF +@@ -92689,7 +40780,6 @@ + fi + + +- + MAKE_SETTINGS="$MAKE_SETTINGS + OPENPTY_ENABLE = YES + " +@@ -92709,23 +40799,17 @@ + + + +- + ac_check_lib_ext_save_LIBS=$LIBS + LIBS="-lintl $INTL_LIBS $LIBS" + + + +- +- { $as_echo "$as_me:$LINENO: checking for gettext in -lintl" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettext in -lintl" >&5 + $as_echo_n "checking for gettext in -lintl... " >&6; } +-if test "${ac_cv_lib_ext_intl_gettext+set}" = set; then ++if test "${ac_cv_lib_ext_intl_gettext+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -92743,54 +40827,28 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ext_intl_gettext=yes; + ac_cv_lib_ext_intl=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_ext_intl_gettext=no; ++ ac_cv_lib_ext_intl_gettext=no; + ac_cv_lib_ext_intl=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ext_intl_gettext" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_intl_gettext" >&5 + $as_echo "$ac_cv_lib_ext_intl_gettext" >&6; } +- if test $ac_cv_lib_ext_intl_gettext = yes; then ++ if test $ac_cv_lib_ext_intl_gettext = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_GETTEXT 1 + _ACEOF + + fi +- + LIBS=$ac_check_lib_ext_save_LIBS + +-if test $ac_cv_lib_ext_intl = yes; then ++if test $ac_cv_lib_ext_intl = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBINTL 1 + _ACEOF +@@ -92807,7 +40865,6 @@ + fi + + +- + MAKE_SETTINGS="$MAKE_SETTINGS + INTL_ENABLE = YES + " +@@ -92831,150 +40888,12 @@ + + + +- +- + for ac_header in arpa/nameser.h dns.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +- +-fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +@@ -92984,22 +40903,9 @@ + done + + +- + for ac_header in resolv.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default ++do : ++ ac_fn_c_check_header_compile "$LINENO" "resolv.h" "ac_cv_header_resolv_h" "$ac_includes_default + #ifdef HAVE_SYS_TYPES_H + #include + #endif +@@ -93010,46 +40916,10 @@ + #include + #endif + +- +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- eval "$as_ac_Header=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_Header=no" +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++" ++if test "x$ac_cv_header_resolv_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++#define HAVE_RESOLV_H 1 + _ACEOF + + fi +@@ -93061,9 +40931,9 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking for res_search" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_search" >&5 + $as_echo_n "checking for res_search... " >&6; } +-if test "${ac_cv_funclib_res_search+set}" = set; then ++if test "${ac_cv_funclib_res_search+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +@@ -93078,11 +40948,7 @@ + *) ac_lib="-l$ac_lib" ;; + esac + LIBS=" $ac_lib $ac_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + #include +@@ -93104,148 +40970,31 @@ + { + res_search(0,0,0,0,0) + ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "if test -n \"$ac_lib\";then ac_cv_funclib_res_search=$ac_lib; else ac_cv_funclib_res_search=yes; fi";break +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +- done +- eval "ac_cv_funclib_res_search=\${ac_cv_funclib_res_search-no}" +- LIBS="$ac_save_LIBS" +-fi +- +-fi +- +- +-eval "ac_res=\$ac_cv_funclib_res_search" +- +-if false; then +- +-for ac_func in res_search +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ eval "if test -n \"$ac_lib\";then ac_cv_funclib_res_search=$ac_lib; else ac_cv_funclib_res_search=yes; fi";break ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ done ++ eval "ac_cv_funclib_res_search=\${ac_cv_funclib_res_search-no}" ++ LIBS="$ac_save_LIBS" + fi + +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext + fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ ++ ++eval "ac_res=\$ac_cv_funclib_res_search" ++ ++if false; then ++ for ac_func in res_search ++do : ++ ac_fn_c_check_func "$LINENO" "res_search" "ac_cv_func_res_search" ++if test "x$ac_cv_func_res_search" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define HAVE_RES_SEARCH 1 + _ACEOF + + fi +@@ -93265,13 +41014,13 @@ + #define $ac_tr_func 1 + _ACEOF + +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + ;; + no) + eval "ac_cv_func_res_search=no" + eval "LIB_res_search=" +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + ;; + *) +@@ -93285,7 +41034,7 @@ + #define $ac_tr_lib 1 + _ACEOF + +- { $as_echo "$as_me:$LINENO: result: yes, in $ac_res" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, in $ac_res" >&5 + $as_echo "yes, in $ac_res" >&6; } + ;; + esac +@@ -93300,9 +41049,9 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking for res_nsearch" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_nsearch" >&5 + $as_echo_n "checking for res_nsearch... " >&6; } +-if test "${ac_cv_funclib_res_nsearch+set}" = set; then ++if test "${ac_cv_funclib_res_nsearch+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +@@ -93317,11 +41066,7 @@ + *) ac_lib="-l$ac_lib" ;; + esac + LIBS=" $ac_lib $ac_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + #include +@@ -93346,38 +41091,11 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + eval "if test -n \"$ac_lib\";then ac_cv_funclib_res_nsearch=$ac_lib; else ac_cv_funclib_res_nsearch=yes; fi";break +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + done + eval "ac_cv_funclib_res_nsearch=\${ac_cv_funclib_res_nsearch-no}" + LIBS="$ac_save_LIBS" +@@ -93389,102 +41107,12 @@ + eval "ac_res=\$ac_cv_funclib_res_nsearch" + + if false; then +- +-for ac_func in res_nsearch +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ for ac_func in res_nsearch ++do : ++ ac_fn_c_check_func "$LINENO" "res_nsearch" "ac_cv_func_res_nsearch" ++if test "x$ac_cv_func_res_nsearch" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define HAVE_RES_NSEARCH 1 + _ACEOF + + fi +@@ -93504,13 +41132,13 @@ + #define $ac_tr_func 1 + _ACEOF + +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + ;; + no) + eval "ac_cv_func_res_nsearch=no" + eval "LIB_res_nsearch=" +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + ;; + *) +@@ -93524,7 +41152,7 @@ + #define $ac_tr_lib 1 + _ACEOF + +- { $as_echo "$as_me:$LINENO: result: yes, in $ac_res" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, in $ac_res" >&5 + $as_echo "yes, in $ac_res" >&6; } + ;; + esac +@@ -93539,9 +41167,9 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking for res_ndestroy" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_ndestroy" >&5 + $as_echo_n "checking for res_ndestroy... " >&6; } +-if test "${ac_cv_funclib_res_ndestroy+set}" = set; then ++if test "${ac_cv_funclib_res_ndestroy+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +@@ -93556,11 +41184,7 @@ + *) ac_lib="-l$ac_lib" ;; + esac + LIBS=" $ac_lib $ac_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + #include +@@ -93585,38 +41209,11 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + eval "if test -n \"$ac_lib\";then ac_cv_funclib_res_ndestroy=$ac_lib; else ac_cv_funclib_res_ndestroy=yes; fi";break +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + done + eval "ac_cv_funclib_res_ndestroy=\${ac_cv_funclib_res_ndestroy-no}" + LIBS="$ac_save_LIBS" +@@ -93628,102 +41225,12 @@ + eval "ac_res=\$ac_cv_funclib_res_ndestroy" + + if false; then +- +-for ac_func in res_ndestroy +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ for ac_func in res_ndestroy ++do : ++ ac_fn_c_check_func "$LINENO" "res_ndestroy" "ac_cv_func_res_ndestroy" ++if test "x$ac_cv_func_res_ndestroy" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define HAVE_RES_NDESTROY 1 + _ACEOF + + fi +@@ -93743,13 +41250,13 @@ + #define $ac_tr_func 1 + _ACEOF + +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + ;; + no) + eval "ac_cv_func_res_ndestroy=no" + eval "LIB_res_ndestroy=" +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + ;; + *) +@@ -93763,7 +41270,7 @@ + #define $ac_tr_lib 1 + _ACEOF + +- { $as_echo "$as_me:$LINENO: result: yes, in $ac_res" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, in $ac_res" >&5 + $as_echo "yes, in $ac_res" >&6; } + ;; + esac +@@ -93777,9 +41284,9 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking for dns_search" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dns_search" >&5 + $as_echo_n "checking for dns_search... " >&6; } +-if test "${ac_cv_funclib_dns_search+set}" = set; then ++if test "${ac_cv_funclib_dns_search+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +@@ -93794,11 +41301,7 @@ + *) ac_lib="-l$ac_lib" ;; + esac + LIBS=" $ac_lib $ac_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + #ifdef HAVE_DNS_H +@@ -93813,38 +41316,11 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + eval "if test -n \"$ac_lib\";then ac_cv_funclib_dns_search=$ac_lib; else ac_cv_funclib_dns_search=yes; fi";break +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + done + eval "ac_cv_funclib_dns_search=\${ac_cv_funclib_dns_search-no}" + LIBS="$ac_save_LIBS" +@@ -93856,102 +41332,12 @@ + eval "ac_res=\$ac_cv_funclib_dns_search" + + if false; then +- +-for ac_func in dns_search +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ for ac_func in dns_search ++do : ++ ac_fn_c_check_func "$LINENO" "dns_search" "ac_cv_func_dns_search" ++if test "x$ac_cv_func_dns_search" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define HAVE_DNS_SEARCH 1 + _ACEOF + + fi +@@ -93971,13 +41357,13 @@ + #define $ac_tr_func 1 + _ACEOF + +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + ;; + no) + eval "ac_cv_func_dns_search=no" + eval "LIB_dns_search=" +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + ;; + *) +@@ -93991,7 +41377,7 @@ + #define $ac_tr_lib 1 + _ACEOF + +- { $as_echo "$as_me:$LINENO: result: yes, in $ac_res" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, in $ac_res" >&5 + $as_echo "yes, in $ac_res" >&6; } + ;; + esac +@@ -94003,9 +41389,9 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking for dn_expand" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dn_expand" >&5 + $as_echo_n "checking for dn_expand... " >&6; } +-if test "${ac_cv_funclib_dn_expand+set}" = set; then ++if test "${ac_cv_funclib_dn_expand+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +@@ -94020,11 +41406,7 @@ + *) ac_lib="-l$ac_lib" ;; + esac + LIBS=" $ac_lib $ac_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + #include +@@ -94049,38 +41431,11 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + eval "if test -n \"$ac_lib\";then ac_cv_funclib_dn_expand=$ac_lib; else ac_cv_funclib_dn_expand=yes; fi";break +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + done + eval "ac_cv_funclib_dn_expand=\${ac_cv_funclib_dn_expand-no}" + LIBS="$ac_save_LIBS" +@@ -94092,102 +41447,12 @@ + eval "ac_res=\$ac_cv_funclib_dn_expand" + + if false; then +- +-for ac_func in dn_expand +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ for ac_func in dn_expand ++do : ++ ac_fn_c_check_func "$LINENO" "dn_expand" "ac_cv_func_dn_expand" ++if test "x$ac_cv_func_dn_expand" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define HAVE_DN_EXPAND 1 + _ACEOF + + fi +@@ -94207,13 +41472,13 @@ + #define $ac_tr_func 1 + _ACEOF + +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + ;; + no) + eval "ac_cv_func_dn_expand=no" + eval "LIB_dn_expand=" +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + ;; + *) +@@ -94227,7 +41492,7 @@ + #define $ac_tr_lib 1 + _ACEOF + +- { $as_echo "$as_me:$LINENO: result: yes, in $ac_res" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, in $ac_res" >&5 + $as_echo "yes, in $ac_res" >&6; } + ;; + esac +@@ -94239,18 +41504,14 @@ + + + +-{ $as_echo "$as_me:$LINENO: checking for _res" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _res" >&5 + $as_echo_n "checking for _res... " >&6; } +-if test "${ac_cv_var__res+set}" = set; then ++if test "${ac_cv_var__res+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + + +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + #ifdef HAVE_SYS_TYPES_H +@@ -94274,44 +41535,15 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_var__res=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_var__res=no ++ ac_cv_var__res=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + if test "$ac_cv_var__res" != yes ; then +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + extern int _res; + int foo(void) { return _res; } +@@ -94323,44 +41555,19 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_var__res=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_var__res=no ++ ac_cv_var__res=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi + + fi + + ac_foo=`eval echo \\$ac_cv_var__res` +-{ $as_echo "$as_me:$LINENO: result: $ac_foo" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_foo" >&5 + $as_echo "$ac_foo" >&6; } + if test "$ac_foo" = yes; then + +@@ -94368,18 +41575,7 @@ + #define HAVE__RES 1 + _ACEOF + +- { $as_echo "$as_me:$LINENO: checking whether _res is declared" >&5 +-$as_echo_n "checking whether _res is declared... " >&6; } +-if test "${ac_cv_have_decl__res+set}" = set; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include ++ ac_fn_c_check_decl "$LINENO" "_res" "ac_cv_have_decl__res" "#include + #ifdef HAVE_SYS_TYPES_H + #include + #endif +@@ -94392,64 +41588,17 @@ + #ifdef HAVE_RESOLV_H + #include + #endif +- +-int +-main () +-{ +-#ifndef _res +- (void) _res; +-#endif +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_cv_have_decl__res=yes ++" ++if test "x$ac_cv_have_decl__res" = x""yes; then : ++ ac_have_decl=1 + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_have_decl__res=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_have_decl=0 + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl__res" >&5 +-$as_echo "$ac_cv_have_decl__res" >&6; } +-if test "x$ac_cv_have_decl__res" = x""yes; then + + cat >>confdefs.h <<_ACEOF +-#define HAVE_DECL__RES 1 +-_ACEOF +- +- +-else +- cat >>confdefs.h <<_ACEOF +-#define HAVE_DECL__RES 0 ++#define HAVE_DECL__RES $ac_have_decl + _ACEOF + +- +-fi +- +- + fi + + +@@ -94515,9 +41664,9 @@ + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_LEX+set}" = set; then ++if test "${ac_cv_prog_LEX+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$LEX"; then +@@ -94528,24 +41677,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LEX="$ac_prog" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + LEX=$ac_cv_prog_LEX + if test -n "$LEX"; then +- { $as_echo "$as_me:$LINENO: result: $LEX" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 + $as_echo "$LEX" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -94574,20 +41723,20 @@ + return ! yylex () + ! yywrap (); + } + _ACEOF +-{ (ac_try="$LEX conftest.l" ++{ { ac_try="$LEX conftest.l" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 + (eval "$LEX conftest.l") 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-{ $as_echo "$as_me:$LINENO: checking lex output file root" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 + $as_echo_n "checking lex output file root... " >&6; } +-if test "${ac_cv_prog_lex_root+set}" = set; then ++if test "${ac_cv_prog_lex_root+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +@@ -94596,19 +41745,17 @@ + elif test -f lexyy.c; then + ac_cv_prog_lex_root=lexyy + else +- { { $as_echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 +-$as_echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error "cannot find output from $LEX; giving up" "$LINENO" 5 + fi + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 + $as_echo "$ac_cv_prog_lex_root" >&6; } + LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root + + if test -z "${LEXLIB+set}"; then +- { $as_echo "$as_me:$LINENO: checking lex library" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 + $as_echo_n "checking lex library... " >&6; } +-if test "${ac_cv_lib_lex+set}" = set; then ++if test "${ac_cv_lib_lex+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +@@ -94616,55 +41763,29 @@ + ac_cv_lib_lex='none needed' + for ac_lib in '' -lfl -ll; do + LIBS="$ac_lib $ac_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ + `cat $LEX_OUTPUT_ROOT.c` + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_lex=$ac_lib +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + test "$ac_cv_lib_lex" != 'none needed' && break + done + LIBS=$ac_save_LIBS + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 + $as_echo "$ac_cv_lib_lex" >&6; } + test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex + fi + + +-{ $as_echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 + $as_echo_n "checking whether yytext is a pointer... " >&6; } +-if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then ++if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + # POSIX says lex can declare yytext either as a pointer or an array; the +@@ -94673,52 +41794,24 @@ + ac_cv_prog_lex_yytext_pointer=no + ac_save_LIBS=$LIBS + LIBS="$LEXLIB $ac_save_LIBS" +-cat >conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ + #define YYTEXT_POINTER 1 + `cat $LEX_OUTPUT_ROOT.c` + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_prog_lex_yytext_pointer=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_save_LIBS + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 + $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } + if test $ac_cv_prog_lex_yytext_pointer = yes; then + +-cat >>confdefs.h <<\_ACEOF +-#define YYTEXT_POINTER 1 +-_ACEOF ++$as_echo "#define YYTEXT_POINTER 1" >>confdefs.h + + fi + rm -f conftest.l $LEX_OUTPUT_ROOT.c +@@ -94728,9 +41821,9 @@ + if test x"$LEX_BASENAME" = x"flex"; then + # "flex 2.5.33" + FLEX_VERSION=`$LEX --version | cut -d ' ' -f2` +- { $as_echo "$as_me:$LINENO: checking flex version" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking flex version" >&5 + $as_echo_n "checking flex version... " >&6; } +- { $as_echo "$as_me:$LINENO: result: $FLEX_VERSION" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FLEX_VERSION" >&5 + $as_echo "$FLEX_VERSION" >&6; } + FLEX_MAJOR=`echo $FLEX_VERSION | cut -d '.' -f1` + FLEX_MINOR=`echo $FLEX_VERSION | cut -d '.' -f2` +@@ -94743,9 +41836,9 @@ + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_YACC+set}" = set; then ++if test "${ac_cv_prog_YACC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$YACC"; then +@@ -94756,24 +41849,24 @@ + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do ++ for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_YACC="$ac_prog" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + YACC=$ac_cv_prog_YACC + if test -n "$YACC"; then +- { $as_echo "$as_me:$LINENO: result: $YACC" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 + $as_echo "$YACC" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -94786,9 +41879,9 @@ + if test x"$YACC_BASENAME" = x"bison -y"; then + # bison (GNU Bison) 2.3 + BISON_VERSION=`$YACC --version | head -1 | cut -d ' ' -f4` +- { $as_echo "$as_me:$LINENO: checking bison version" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking bison version" >&5 + $as_echo_n "checking bison version... " >&6; } +- { $as_echo "$as_me:$LINENO: result: $BISON_VERSION" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BISON_VERSION" >&5 + $as_echo "$BISON_VERSION" >&6; } + BISON_MAJOR=`echo $BISON_VERSION | cut -d '.' -f1` + BISON_MINOR=`echo $BISON_VERSION | cut -d '.' -f2` +@@ -94796,7 +41889,7 @@ + YACC_VERSION="bison-$BISON_MAJOR.$BISON_MINOR" + fi + +-{ $as_echo "$as_me:$LINENO: checking working LEX YACC combination" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking working LEX YACC combination" >&5 + $as_echo_n "checking working LEX YACC combination... " >&6; } + LEX_YACC="no" + if test x"$LEX_VERSION" != x"" -a x"$YACC_VERSION" != x""; then +@@ -94812,7 +41905,7 @@ + LEX=false + YACC=false + fi +-{ $as_echo "$as_me:$LINENO: result: $LEX_YACC" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX_YACC" >&5 + $as_echo "$LEX_YACC" >&6; } + + # Portions of heimdal kerberos are unpacked into source/heimdal +@@ -94820,21 +41913,15 @@ + + # if we ever get to using a host kerberos, we might add conditionals here + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_COM_ERR 1 +-_ACEOF ++$as_echo "#define HAVE_COM_ERR 1" >>confdefs.h + + HAVE_COM_ERR=YES + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_KRB5 1 +-_ACEOF ++$as_echo "#define HAVE_KRB5 1" >>confdefs.h + + HAVE_KRB5=YES + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_GSSAPI 1 +-_ACEOF ++$as_echo "#define HAVE_GSSAPI 1" >>confdefs.h + + HAVE_GSSAPI=YES + +@@ -94914,193 +42001,48 @@ + SMB_INFO_ENABLES="$SMB_INFO_ENABLES + \$enabled{\"HEIMDAL_ROKEN_PROGNAME\"} = \"YES\";" + +- +- MAKE_SETTINGS="$MAKE_SETTINGS +-HEIMDAL_ROKEN_PROGNAME_H_ENABLE = YES +-" +-SMB_INFO_ENABLES="$SMB_INFO_ENABLES +-\$enabled{\"HEIMDAL_ROKEN_PROGNAME_H\"} = \"YES\";" +- +-fi +- +-VPATH="$VPATH:\$(HEIMDAL_VPATH)" +- +- +-cat >>confdefs.h <<\_ACEOF +-#define SAMBA4_INTERNAL_HEIMDAL 1 +-_ACEOF +- +- +- +-SMB_INFO_EXT_LIBS="$SMB_INFO_EXT_LIBS +-mkinclude heimdal_build/internal.mk +-" +- +- +- +-for ac_header in execinfo.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +- ++ ++ MAKE_SETTINGS="$MAKE_SETTINGS ++HEIMDAL_ROKEN_PROGNAME_H_ENABLE = YES ++" ++SMB_INFO_ENABLES="$SMB_INFO_ENABLES ++\$enabled{\"HEIMDAL_ROKEN_PROGNAME_H\"} = \"YES\";" ++ + fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ ++VPATH="$VPATH:\$(HEIMDAL_VPATH)" ++ ++ ++$as_echo "#define SAMBA4_INTERNAL_HEIMDAL 1" >>confdefs.h ++ ++ ++ ++SMB_INFO_EXT_LIBS="$SMB_INFO_EXT_LIBS ++mkinclude heimdal_build/internal.mk ++" ++ ++ ++for ac_header in execinfo.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "execinfo.h" "ac_cv_header_execinfo_h" "$ac_includes_default" ++if test "x$ac_cv_header_execinfo_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++#define HAVE_EXECINFO_H 1 + _ACEOF + + fi + + done + +-{ $as_echo "$as_me:$LINENO: checking for library containing backtrace" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 + $as_echo_n "checking for library containing backtrace... " >&6; } +-if test "${ac_cv_search_ext_backtrace+set}" = set; then ++if test "${ac_cv_search_ext_backtrace+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + + ac_func_search_ext_save_LIBS=$LIBS + ac_cv_search_ext_backtrace=no +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -95118,46 +42060,15 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_ext_backtrace="none required" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + if test "$ac_cv_search_ext_backtrace" = no; then + for ac_lib in execinfo; do + LIBS="-l$ac_lib $EXECINFO_LIBS $ac_func_search_save_ext_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -95175,65 +42086,32 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_ext_backtrace="-l$ac_lib" + break +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + done + fi + LIBS=$ac_func_search_ext_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_ext_backtrace" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ext_backtrace" >&5 + $as_echo "$ac_cv_search_ext_backtrace" >&6; } +-if test "$ac_cv_search_ext_backtrace" != no; then ++if test "$ac_cv_search_ext_backtrace" != no; then : + test "$ac_cv_search_ext_backtrace" = "none required" || EXECINFO_LIBS="$ac_cv_search_ext_backtrace $EXECINFO_LIBS" + + fi + + +- +- + ac_check_func_ext_save_LIBS=$LIBS + LIBS="$EXECINFO_LIBS $LIBS" +- { $as_echo "$as_me:$LINENO: checking for backtrace" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for backtrace" >&5 + $as_echo_n "checking for backtrace... " >&6; } +-if test "${ac_cv_func_ext_backtrace+set}" = set; then ++if test "${ac_cv_func_ext_backtrace+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + /* Define backtrace to an innocuous variant, in case declares backtrace. + For example, HP-UX 11i declares gettimeofday. */ +@@ -95274,43 +42152,18 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_ext_backtrace=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_func_ext_backtrace=no ++ ac_cv_func_ext_backtrace=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_ext_backtrace" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ext_backtrace" >&5 + $as_echo "$ac_cv_func_ext_backtrace" >&6; } + LIBS=$ac_check_func_ext_save_LIBS +- if test $ac_cv_func_ext_backtrace = yes; then ++ if test $ac_cv_func_ext_backtrace = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_BACKTRACE 1 + _ACEOF +@@ -95318,7 +42171,6 @@ + fi + + +- + if test x"$ac_cv_header_execinfo_h" = x"yes" -a x"$ac_cv_func_ext_backtrace" = x"yes";then + + MAKE_SETTINGS="$MAKE_SETTINGS +@@ -95404,102 +42256,12 @@ + + + +- +- +- + for ac_func in sigprocmask sigblock sigaction +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 + _ACEOF +@@ -95508,102 +42270,12 @@ + done + + +- + for ac_func in setsid +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef $ac_func +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif +- +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then +- eval "$as_ac_var=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_var=no" +-fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_var'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++do : ++ ac_fn_c_check_func "$LINENO" "setsid" "ac_cv_func_setsid" ++if test "x$ac_cv_func_setsid" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define HAVE_SETSID 1 + _ACEOF + + fi +@@ -95612,153 +42284,14 @@ + + ################################################# + # these tests are taken from the GNU fileutils package +-{ $as_echo "$as_me:$LINENO: checking how to get filesystem space usage..." >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to get filesystem space usage..." >&5 + $as_echo "$as_me: checking how to get filesystem space usage..." >&6;} +- +- +- + for ac_header in sys/statfs.h sys/statvfs.h sys/vfs.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +- +-fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +@@ -95768,65 +42301,16 @@ + done + + +- + for ac_header in sys/mount.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default ++do : ++ ac_fn_c_check_header_compile "$LINENO" "sys/mount.h" "ac_cv_header_sys_mount_h" "$ac_includes_default + #ifdef HAVE_SYS_PARAM_H + #include + #endif +- +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- eval "$as_ac_Header=yes" +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- eval "$as_ac_Header=no" +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++" ++if test "x$ac_cv_header_sys_mount_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++#define HAVE_SYS_MOUNT_H 1 + _ACEOF + + fi +@@ -95839,19 +42323,15 @@ + # Test for statvfs64. + if test $space = no; then + # SVR4 +- { $as_echo "$as_me:$LINENO: checking statvfs64 function (SVR4)" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking statvfs64 function (SVR4)" >&5 + $as_echo_n "checking statvfs64 function (SVR4)... " >&6; } +-if test "${fu_cv_sys_stat_statvfs64+set}" = set; then ++if test "${fu_cv_sys_stat_statvfs64+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- if test "$cross_compiling" = yes; then ++ if test "$cross_compiling" = yes; then : + fu_cv_sys_stat_statvfs64=cross + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + #if defined(HAVE_UNISTD_H) +@@ -95865,51 +42345,22 @@ + exit (statvfs64 (".", &fsd)); + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++if ac_fn_c_try_run "$LINENO"; then : + fu_cv_sys_stat_statvfs64=yes + else +- $as_echo "$as_me: program exited with status $ac_status" >&5 +-$as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-( exit $ac_status ) +-fu_cv_sys_stat_statvfs64=no ++ fu_cv_sys_stat_statvfs64=no + fi +-rm -rf conftest.dSYM +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + +- + fi +-{ $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statvfs64" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_statvfs64" >&5 + $as_echo "$fu_cv_sys_stat_statvfs64" >&6; } + if test $fu_cv_sys_stat_statvfs64 = yes; then + space=yes + +-cat >>confdefs.h <<\_ACEOF +-#define STAT_STATVFS64 1 +-_ACEOF ++$as_echo "#define STAT_STATVFS64 1" >>confdefs.h + + fi + fi +@@ -95922,16 +42373,12 @@ + # is what it gets when this test fails. + if test $space = no; then + # SVR4 +- { $as_echo "$as_me:$LINENO: checking statvfs function (SVR4)" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking statvfs function (SVR4)" >&5 + $as_echo_n "checking statvfs function (SVR4)... " >&6; } +-if test "${fu_cv_sys_stat_statvfs+set}" = set; then ++if test "${fu_cv_sys_stat_statvfs+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + #include +@@ -95943,64 +42390,33 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + fu_cv_sys_stat_statvfs=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- fu_cv_sys_stat_statvfs=no ++ fu_cv_sys_stat_statvfs=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statvfs" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_statvfs" >&5 + $as_echo "$fu_cv_sys_stat_statvfs" >&6; } + if test $fu_cv_sys_stat_statvfs = yes; then + space=yes + +-cat >>confdefs.h <<\_ACEOF +-#define STAT_STATVFS 1 +-_ACEOF ++$as_echo "#define STAT_STATVFS 1" >>confdefs.h + + fi + fi + + # fsusage.c assumes that statvfs has an f_frsize entry. Some weird + # systems use f_bsize. +-{ $as_echo "$as_me:$LINENO: checking that statvfs.f_frsize works" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that statvfs.f_frsize works" >&5 + $as_echo_n "checking that statvfs.f_frsize works... " >&6; } +-if test "${samba_cv_frsize+set}" = set; then ++if test "${samba_cv_frsize+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + #include +@@ -96012,59 +42428,32 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + samba_cv_frsize=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- samba_cv_frsize=no ++ samba_cv_frsize=no + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $samba_cv_frsize" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $samba_cv_frsize" >&5 + $as_echo "$samba_cv_frsize" >&6; } + if test x"$samba_cv_frsize" = x"yes"; then + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_FRSIZE 1 +-_ACEOF ++$as_echo "#define HAVE_FRSIZE 1" >>confdefs.h + + fi + + if test $space = no; then + # DEC Alpha running OSF/1 +- { $as_echo "$as_me:$LINENO: checking for 3-argument statfs function (DEC OSF/1)" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 3-argument statfs function (DEC OSF/1)" >&5 + $as_echo_n "checking for 3-argument statfs function (DEC OSF/1)... " >&6; } +- if test "${fu_cv_sys_stat_statfs3_osf1+set}" = set; then ++ if test "${fu_cv_sys_stat_statfs3_osf1+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- if test "$cross_compiling" = yes; then ++ if test "$cross_compiling" = yes; then : + fu_cv_sys_stat_statfs3_osf1=no + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + #include +@@ -96077,71 +42466,38 @@ + exit (statfs (".", &fsd, sizeof (struct statfs))); + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++if ac_fn_c_try_run "$LINENO"; then : + fu_cv_sys_stat_statfs3_osf1=yes + else +- $as_echo "$as_me: program exited with status $ac_status" >&5 +-$as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-( exit $ac_status ) +-fu_cv_sys_stat_statfs3_osf1=no ++ fu_cv_sys_stat_statfs3_osf1=no + fi +-rm -rf conftest.dSYM +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + +- + fi + +- { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statfs3_osf1" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_statfs3_osf1" >&5 + $as_echo "$fu_cv_sys_stat_statfs3_osf1" >&6; } + if test $fu_cv_sys_stat_statfs3_osf1 = yes; then + space=yes + +-cat >>confdefs.h <<\_ACEOF +-#define STAT_STATFS3_OSF1 1 +-_ACEOF ++$as_echo "#define STAT_STATFS3_OSF1 1" >>confdefs.h + + fi + fi + + if test $space = no; then + # AIX +- { $as_echo "$as_me:$LINENO: checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)" >&5 + $as_echo_n "checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)... " >&6; } +- if test "${fu_cv_sys_stat_statfs2_bsize+set}" = set; then ++ if test "${fu_cv_sys_stat_statfs2_bsize+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- if test "$cross_compiling" = yes; then ++ if test "$cross_compiling" = yes; then : + fu_cv_sys_stat_statfs2_bsize=no + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + #ifdef HAVE_SYS_PARAM_H +@@ -96160,71 +42516,38 @@ + exit (statfs (".", &fsd)); + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++if ac_fn_c_try_run "$LINENO"; then : + fu_cv_sys_stat_statfs2_bsize=yes + else +- $as_echo "$as_me: program exited with status $ac_status" >&5 +-$as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-( exit $ac_status ) +-fu_cv_sys_stat_statfs2_bsize=no ++ fu_cv_sys_stat_statfs2_bsize=no + fi +-rm -rf conftest.dSYM +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + +- + fi + +- { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statfs2_bsize" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_statfs2_bsize" >&5 + $as_echo "$fu_cv_sys_stat_statfs2_bsize" >&6; } + if test $fu_cv_sys_stat_statfs2_bsize = yes; then + space=yes + +-cat >>confdefs.h <<\_ACEOF +-#define STAT_STATFS2_BSIZE 1 +-_ACEOF ++$as_echo "#define STAT_STATFS2_BSIZE 1" >>confdefs.h + + fi + fi + + if test $space = no; then + # SVR3 +- { $as_echo "$as_me:$LINENO: checking for four-argument statfs (AIX-3.2.5, SVR3)" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for four-argument statfs (AIX-3.2.5, SVR3)" >&5 + $as_echo_n "checking for four-argument statfs (AIX-3.2.5, SVR3)... " >&6; } +- if test "${fu_cv_sys_stat_statfs4+set}" = set; then ++ if test "${fu_cv_sys_stat_statfs4+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- if test "$cross_compiling" = yes; then ++ if test "$cross_compiling" = yes; then : + fu_cv_sys_stat_statfs4=no + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + #include +@@ -96234,71 +42557,38 @@ + exit (statfs (".", &fsd, sizeof fsd, 0)); + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++if ac_fn_c_try_run "$LINENO"; then : + fu_cv_sys_stat_statfs4=yes + else +- $as_echo "$as_me: program exited with status $ac_status" >&5 +-$as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-( exit $ac_status ) +-fu_cv_sys_stat_statfs4=no ++ fu_cv_sys_stat_statfs4=no + fi +-rm -rf conftest.dSYM +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + +- + fi + +- { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statfs4" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_statfs4" >&5 + $as_echo "$fu_cv_sys_stat_statfs4" >&6; } + if test $fu_cv_sys_stat_statfs4 = yes; then + space=yes + +-cat >>confdefs.h <<\_ACEOF +-#define STAT_STATFS4 1 +-_ACEOF ++$as_echo "#define STAT_STATFS4 1" >>confdefs.h + + fi + fi + + if test $space = no; then + # 4.4BSD and NetBSD +- { $as_echo "$as_me:$LINENO: checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)" >&5 + $as_echo_n "checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)... " >&6; } +- if test "${fu_cv_sys_stat_statfs2_fsize+set}" = set; then ++ if test "${fu_cv_sys_stat_statfs2_fsize+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- if test "$cross_compiling" = yes; then ++ if test "$cross_compiling" = yes; then : + fu_cv_sys_stat_statfs2_fsize=no + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + #ifdef HAVE_SYS_PARAM_H +@@ -96314,71 +42604,38 @@ + exit (statfs (".", &fsd)); + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++if ac_fn_c_try_run "$LINENO"; then : + fu_cv_sys_stat_statfs2_fsize=yes + else +- $as_echo "$as_me: program exited with status $ac_status" >&5 +-$as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-( exit $ac_status ) +-fu_cv_sys_stat_statfs2_fsize=no ++ fu_cv_sys_stat_statfs2_fsize=no + fi +-rm -rf conftest.dSYM +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + +- + fi + +- { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statfs2_fsize" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_statfs2_fsize" >&5 + $as_echo "$fu_cv_sys_stat_statfs2_fsize" >&6; } + if test $fu_cv_sys_stat_statfs2_fsize = yes; then + space=yes + +-cat >>confdefs.h <<\_ACEOF +-#define STAT_STATFS2_FSIZE 1 +-_ACEOF ++$as_echo "#define STAT_STATFS2_FSIZE 1" >>confdefs.h + + fi + fi + + if test $space = no; then + # Ultrix +- { $as_echo "$as_me:$LINENO: checking for two-argument statfs with struct fs_data (Ultrix)" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for two-argument statfs with struct fs_data (Ultrix)" >&5 + $as_echo_n "checking for two-argument statfs with struct fs_data (Ultrix)... " >&6; } +- if test "${fu_cv_sys_stat_fs_data+set}" = set; then ++ if test "${fu_cv_sys_stat_fs_data+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- if test "$cross_compiling" = yes; then ++ if test "$cross_compiling" = yes; then : + fu_cv_sys_stat_fs_data=no + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + #ifdef HAVE_SYS_PARAM_H +@@ -96398,201 +42655,33 @@ + exit (statfs (".", &fsd) != 1); + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- fu_cv_sys_stat_fs_data=yes +-else +- $as_echo "$as_me: program exited with status $ac_status" >&5 +-$as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-( exit $ac_status ) +-fu_cv_sys_stat_fs_data=no +-fi +-rm -rf conftest.dSYM +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi +- +- +-fi +- +- { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_fs_data" >&5 +-$as_echo "$fu_cv_sys_stat_fs_data" >&6; } +- if test $fu_cv_sys_stat_fs_data = yes; then +- space=yes +- +-cat >>confdefs.h <<\_ACEOF +-#define STAT_STATFS2_FS_DATA 1 +-_ACEOF +- +- fi +-fi +- +- +- +- +-for ac_header in sys/attributes.h attr/xattr.h sys/xattr.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 ++if ac_fn_c_try_run "$LINENO"; then : ++ fu_cv_sys_stat_fs_data=yes + else +- eval "$as_ac_Header=\$ac_header_preproc" ++ fu_cv_sys_stat_fs_data=no + fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi ++ ++fi ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_fs_data" >&5 ++$as_echo "$fu_cv_sys_stat_fs_data" >&6; } ++ if test $fu_cv_sys_stat_fs_data = yes; then ++ space=yes + ++$as_echo "#define STAT_STATFS2_FS_DATA 1" >>confdefs.h ++ ++ fi + fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ ++for ac_header in sys/attributes.h attr/xattr.h sys/xattr.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +@@ -96601,19 +42690,15 @@ done @@ -97946,7 +101165,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -92846,46 +41052,15 @@ +@@ -96631,46 +42716,15 @@ return 0; } _ACEOF @@ -97997,7 +101216,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -92903,65 +41078,32 @@ +@@ -96688,65 +42742,32 @@ return 0; } _ACEOF @@ -98071,7 +101290,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define flistxattr to an innocuous variant, in case declares flistxattr. For example, HP-UX 11i declares gettimeofday. */ -@@ -93002,50 +41144,24 @@ +@@ -96787,50 +42808,24 @@ return 0; } _ACEOF @@ -98128,7 +101347,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure MAKE_SETTINGS="$MAKE_SETTINGS XATTR_LIBS = ${XATTR_LIBS} XATTR_CFLAGS = ${XATTR_CFLAGS} -@@ -93055,18 +41171,14 @@ +@@ -96840,18 +42835,14 @@ if test x"$ac_cv_func_ext_flistxattr" = x"yes"; then @@ -98150,7 +101369,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -93089,48 +41201,23 @@ +@@ -96874,48 +42865,23 @@ return 0; } _ACEOF @@ -98204,7 +101423,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure MAKE_SETTINGS="$MAKE_SETTINGS -@@ -93142,20 +41229,16 @@ +@@ -96927,20 +42893,16 @@ fi @@ -98229,7 +101448,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -93170,117 +41253,55 @@ +@@ -96955,117 +42917,55 @@ } _ACEOF @@ -98296,7 +101515,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -if test "$cross_compiling" = yes; then +if test "$cross_compiling" = yes; then : - samba_cv_HAVE_GETTIMEOFDAY_TZ=cross + samba_cv_HAVE_GETTIMEOFDAY_TZ=yes else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ @@ -98363,7 +101582,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -93288,7 +41309,7 @@ +@@ -97073,7 +42973,7 @@ INCLUDED_POPT=auto # Check whether --with-included-popt was given. @@ -98372,7 +101591,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_included_popt; INCLUDED_POPT=$withval fi -@@ -93297,169 +41318,26 @@ +@@ -97082,169 +42982,26 @@ if test x"$INCLUDED_POPT" != x"yes"; then @@ -98550,7 +101769,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -93477,43 +41355,18 @@ +@@ -97262,43 +43019,18 @@ return 0; } _ACEOF @@ -98600,7 +101819,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure POPT_LIBS="-lpopt" fi -@@ -93525,9 +41378,9 @@ +@@ -97310,9 +43042,9 @@ fi fi @@ -98612,7 +101831,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$INCLUDED_POPT" >&6; } if test x"$INCLUDED_POPT" != x"no"; then poptdir="" -@@ -93541,156 +41394,16 @@ +@@ -97326,156 +43058,16 @@ fi done if test x"$poptdir" = "x"; then @@ -98776,7 +101995,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -93729,12 +41442,10 @@ +@@ -97514,12 +43106,10 @@ LOOK_DIRS="/usr /usr/local /sw" # Check whether --with-libiconv was given. @@ -98791,7 +102010,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else if test "$withval" != "yes" ; then -@@ -93746,65 +41457,36 @@ +@@ -97531,26 +43121,20 @@ LIBS=-liconv @@ -98825,16 +102044,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include --#include -- --int main() --{ -- iconv_t cd = iconv_open("ASCII","UCS-2LE"); -- if (cd == 0 || cd == (iconv_t)-1) return -1; -- return 0; --} -- --_ACEOF + #include +@@ -97563,33 +43147,10 @@ + } + + _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -98858,27 +102072,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - { $as_echo "$as_me:$LINENO: result: yes" >&5 --$as_echo "yes" >&6; }; --cat >>confdefs.h <<\_ACEOF --#define HAVE_GICONV_H 1 -+#include -+ -+int main() -+{ -+ iconv_t cd = iconv_open("ASCII","UCS-2LE"); -+ if (cd == 0 || cd == (iconv_t)-1) return -1; -+ return 0; -+} -+ - _ACEOF +if ac_fn_c_try_run "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; }; + $as_echo "yes" >&6; }; +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_GICONV_H 1 +-_ACEOF +$as_echo "#define HAVE_GICONV_H 1" >>confdefs.h ICONV_FOUND=yes; ICONV_CPPFLAGS="$CPPFLAGS" -@@ -93812,29 +41494,17 @@ +@@ -97597,29 +43158,17 @@ ICONV_LDFLAGS="$LDFLAGS" else @@ -98913,7 +102117,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -93847,33 +41517,10 @@ +@@ -97632,33 +43181,10 @@ } _ACEOF @@ -98950,7 +102154,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ICONV_FOUND=yes; ICONV_CPPFLAGS="$CPPFLAGS" -@@ -93881,28 +41528,17 @@ +@@ -97666,28 +43192,17 @@ ICONV_LDFLAGS="$LDFLAGS" else @@ -98985,7 +102189,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -93915,33 +41551,10 @@ +@@ -97700,33 +43215,10 @@ } _ACEOF @@ -99022,7 +102226,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ICONV_FOUND=yes; ICONV_CPPFLAGS="$CPPFLAGS" -@@ -93949,31 +41562,22 @@ +@@ -97734,31 +43226,22 @@ ICONV_LDFLAGS="$LDFLAGS" else @@ -99060,7 +102264,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" -@@ -93986,17 +41590,13 @@ +@@ -97771,17 +43254,13 @@ if test x$ICONV_FOUND = xno; then @@ -99082,7 +102286,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -94009,49 +41609,20 @@ +@@ -97794,49 +43273,20 @@ } _ACEOF @@ -99138,7 +102342,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi for i in $LOOK_DIRS ; do -@@ -94068,24 +41639,20 @@ +@@ -97853,24 +43303,20 @@ LIBS=-liconv @@ -99170,7 +102374,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -94098,33 +41665,10 @@ +@@ -97883,33 +43329,10 @@ } _ACEOF @@ -99207,7 +102411,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ICONV_FOUND=yes ICONV_CPPFLAGS="$CPPFLAGS" -@@ -94132,27 +41676,17 @@ +@@ -97917,27 +43340,17 @@ ICONV_LDFLAGS="$LDFLAGS" else @@ -99239,7 +102443,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -94165,33 +41699,10 @@ +@@ -97950,33 +43363,10 @@ } _ACEOF @@ -99276,7 +102480,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ICONV_FOUND=yes ICONV_CPPFLAGS="$CPPFLAGS" -@@ -94199,26 +41710,17 @@ +@@ -97984,26 +43374,17 @@ ICONV_LDFLAGS="$LDFLAGS" else @@ -99308,10 +102512,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include #include -@@ -94231,33 +41733,10 @@ +@@ -98015,304 +43396,92 @@ + return 0; } - _ACEOF +-_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -99335,77 +102540,85 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - { $as_echo "$as_me:$LINENO: result: yes" >&5 -+if ac_fn_c_try_run "$LINENO"; then : -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; }; +-$as_echo "yes" >&6; }; -cat >>confdefs.h <<\_ACEOF -#define HAVE_GICONV_H 1 -_ACEOF -+$as_echo "#define HAVE_GICONV_H 1" >>confdefs.h - - ICONV_FOUND=yes - ICONV_CPPFLAGS="$CPPFLAGS" -@@ -94265,29 +41744,22 @@ - ICONV_LDFLAGS="$LDFLAGS" - - else +- +- ICONV_FOUND=yes +- ICONV_CPPFLAGS="$CPPFLAGS" +- ICONV_LIBS="$LIBS" +- ICONV_LDFLAGS="$LDFLAGS" +- +-else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ $as_echo "$as_me:$LINENO: result: no" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; }; - fi +-$as_echo "no" >&6; }; +-fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - - - +-fi - - fi +- +- +- +-fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - - - +-fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" -@@ -94295,7 +41767,7 @@ - done - - if test x"$ICONV_FOUND" = x"no"; then +- +- +- +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- +-done +- +-if test x"$ICONV_FOUND" = x"no"; then - { $as_echo "$as_me:$LINENO: WARNING: Sufficient support for iconv function was not found. -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Sufficient support for iconv function was not found. - Install libiconv from http://www.gnu.org/software/libiconv/ for better charset compatibility!" >&5 - $as_echo "$as_me: WARNING: Sufficient support for iconv function was not found. - Install libiconv from http://www.gnu.org/software/libiconv/ for better charset compatibility!" >&2;} -@@ -94308,9 +41780,7 @@ - - else - +- Install libiconv from http://www.gnu.org/software/libiconv/ for better charset compatibility!" >&5 +-$as_echo "$as_me: WARNING: Sufficient support for iconv function was not found. +- Install libiconv from http://www.gnu.org/software/libiconv/ for better charset compatibility!" >&2;} +- +- MAKE_SETTINGS="$MAKE_SETTINGS +-ICONV_ENABLE = NO +-" +-SMB_INFO_ENABLES="$SMB_INFO_ENABLES +-\$enabled{\"ICONV\"} = \"NO\";" +- +-else +- -cat >>confdefs.h <<\_ACEOF -#define HAVE_NATIVE_ICONV 1 -_ACEOF -+$as_echo "#define HAVE_NATIVE_ICONV 1" >>confdefs.h - - - MAKE_SETTINGS="$MAKE_SETTINGS -@@ -94331,203 +41801,23 @@ - - - - - for ac_func in writev +- +- MAKE_SETTINGS="$MAKE_SETTINGS +-ICONV_ENABLE = YES +-" +-SMB_INFO_ENABLES="$SMB_INFO_ENABLES +-\$enabled{\"ICONV\"} = \"YES\";" +- +-fi +- +- +-MAKE_SETTINGS="$MAKE_SETTINGS +-ICONV_LIBS = ${ICONV_LIBS} +-ICONV_CFLAGS = ${ICONV_CFLAGS} +-ICONV_CPPFLAGS = ${ICONV_CPPFLAGS} +-ICONV_LDFLAGS = ${ICONV_LDFLAGS} +-" +- +- +- +- +-for ac_func in writev -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -99483,14 +102696,26 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++_ACEOF ++if ac_fn_c_try_run "$LINENO"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; }; ++$as_echo "#define HAVE_GICONV_H 1" >>confdefs.h + - eval "$as_ac_var=no" -fi -- ++ ICONV_FOUND=yes ++ ICONV_CPPFLAGS="$CPPFLAGS" ++ ICONV_LIBS="$LIBS" ++ ICONV_LDFLAGS="$LDFLAGS" + -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext --fi ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; }; + fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -99498,71 +102723,116 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi ++ ++ + + fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi ++ ++ ++ ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" ++ + done + ++if test x"$ICONV_FOUND" = x"no"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Sufficient support for iconv function was not found. ++ Install libiconv from http://www.gnu.org/software/libiconv/ for better charset compatibility!" >&5 ++$as_echo "$as_me: WARNING: Sufficient support for iconv function was not found. ++ Install libiconv from http://www.gnu.org/software/libiconv/ for better charset compatibility!" >&2;} ++ ++ MAKE_SETTINGS="$MAKE_SETTINGS ++ICONV_ENABLE = NO ++" ++SMB_INFO_ENABLES="$SMB_INFO_ENABLES ++\$enabled{\"ICONV\"} = \"NO\";" + +-for ac_func in readv +-do +-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +-$as_echo_n "checking for $ac_func... " >&6; } +-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define $ac_func to an innocuous variant, in case declares $ac_func. +- For example, HP-UX 11i declares gettimeofday. */ +-#define $ac_func innocuous_$ac_func + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++$as_echo "#define HAVE_NATIVE_ICONV 1" >>confdefs.h + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif + +-#undef $ac_func ++ MAKE_SETTINGS="$MAKE_SETTINGS ++ICONV_ENABLE = YES ++" ++SMB_INFO_ENABLES="$SMB_INFO_ENABLES ++\$enabled{\"ICONV\"} = \"YES\";" + +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char $ac_func (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined __stub_$ac_func || defined __stub___$ac_func +-choke me +-#endif ++fi + +-int +-main () +-{ +-return $ac_func (); +- ; +- return 0; +-} ++ ++MAKE_SETTINGS="$MAKE_SETTINGS ++ICONV_LIBS = ${ICONV_LIBS} ++ICONV_CFLAGS = ${ICONV_CFLAGS} ++ICONV_CPPFLAGS = ${ICONV_CPPFLAGS} ++ICONV_LDFLAGS = ${ICONV_LDFLAGS} ++" ++ ++ ++ ++for ac_func in writev +do : + ac_fn_c_check_func "$LINENO" "writev" "ac_cv_func_writev" +if test "x$ac_cv_func_writev" = x""yes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++ cat >>confdefs.h <<_ACEOF +#define HAVE_WRITEV 1 _ACEOF - - fi - done - -- - for ac_func in readv --do --as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 --$as_echo_n "checking for $ac_func... " >&6; } --if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -- $as_echo_n "(cached) " >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --/* Define $ac_func to an innocuous variant, in case declares $ac_func. -- For example, HP-UX 11i declares gettimeofday. */ --#define $ac_func innocuous_$ac_func -- --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. -- Prefer to if __STDC__ is defined, since -- exists even on freestanding compilers. */ -- --#ifdef __STDC__ --# include --#else --# include --#endif -- --#undef $ac_func -- --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char $ac_func (); --/* The GNU C library defines this for functions which it implements -- to always fail with ENOSYS. Some functions are actually named -- something starting with __ and the normal name is an alias. */ --#if defined __stub_$ac_func || defined __stub___$ac_func --choke me --#endif -- --int --main () --{ --return $ac_func (); -- ; -- return 0; --} --_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -99588,10 +102858,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- + - eval "$as_ac_var=no" --fi -- + fi ++done + -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext @@ -99603,6 +102874,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then ++for ac_func in readv +do : + ac_fn_c_check_func "$LINENO" "readv" "ac_cv_func_readv" +if test "x$ac_cv_func_readv" = x""yes; then : @@ -99612,7 +102884,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -94606,151 +41896,12 @@ +@@ -98391,151 +43560,12 @@ @@ -99768,7 +103040,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -94760,23 +41911,17 @@ +@@ -98545,23 +43575,17 @@ @@ -99795,7 +103067,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -94794,54 +41939,28 @@ +@@ -98579,54 +43603,28 @@ return 0; } _ACEOF @@ -99857,7 +103129,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBZ 1 _ACEOF -@@ -94857,18 +41976,13 @@ +@@ -98642,18 +43640,13 @@ fi @@ -99879,7 +103151,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -94886,40 +42000,19 @@ +@@ -98671,40 +43664,19 @@ return 0; } _ACEOF @@ -99922,7 +103194,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$samba_cv_zlib_1_2_3" >&6; } if test x"$ac_cv_header_zlib_h" = x"yes" -a \ -@@ -94978,9 +42071,9 @@ +@@ -98763,9 +43735,9 @@ if test -z "$PKG_CONFIG"; then # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 @@ -99934,7 +103206,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in -@@ -94993,14 +42086,14 @@ +@@ -98778,14 +43750,14 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -99952,7 +103224,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" -@@ -95009,10 +42102,10 @@ +@@ -98794,10 +43766,10 @@ fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then @@ -99965,20 +103237,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -95028,52 +42121,27 @@ +@@ -98813,52 +43785,27 @@ else SAMBA_PKG_CONFIG_MIN_VERSION="0.9.0" if $PKG_CONFIG --atleast-pkgconfig-version $SAMBA_PKG_CONFIG_MIN_VERSION; then -- { $as_echo "$as_me:$LINENO: checking for talloc >= $TALLOC_MIN_VERSION" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for talloc >= $TALLOC_MIN_VERSION" >&5 - $as_echo_n "checking for talloc >= $TALLOC_MIN_VERSION... " >&6; } +- { $as_echo "$as_me:$LINENO: checking for talloc >= 2.0.1" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for talloc >= 2.0.1" >&5 + $as_echo_n "checking for talloc >= 2.0.1... " >&6; } - if $PKG_CONFIG --exists 'talloc >= $TALLOC_MIN_VERSION' ; then + if $PKG_CONFIG --exists 'talloc >= 2.0.1' ; then - { $as_echo "$as_me:$LINENO: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - LIBTALLOC_CFLAGS="`$PKG_CONFIG --cflags 'talloc >= $TALLOC_MIN_VERSION'`" + LIBTALLOC_CFLAGS="`$PKG_CONFIG --cflags 'talloc >= 2.0.1'`" OLD_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $LIBTALLOC_CFLAGS" - { $as_echo "$as_me:$LINENO: checking that the C compiler can use the LIBTALLOC_CFLAGS" >&5 @@ -100025,9 +103297,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure MAKE_SETTINGS="$MAKE_SETTINGS LIBTALLOC_ENABLE = YES -@@ -95081,22 +42149,16 @@ +@@ -98866,22 +43813,16 @@ SMB_INFO_ENABLES="$SMB_INFO_ENABLES - \$enabled{LIBTALLOC} = \"YES\";" + \$enabled{\"LIBTALLOC\"} = \"YES\";" - { $as_echo "$as_me:$LINENO: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 @@ -100051,17 +103323,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - CFLAGS="$OLD_CFLAGS" - -@@ -95111,7 +42173,7 @@ + ac_cv_LIBTALLOC_libs_only_other="`$PKG_CONFIG --libs-only-other 'talloc >= 2.0.1'` `$PKG_CONFIG --libs-only-L 'talloc >= 2.0.1'`" +@@ -98942,7 +43883,7 @@ ac_cv_LIBTALLOC_found=yes else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - $PKG_CONFIG --errors-to-stdout --print-errors 'talloc >= $TALLOC_MIN_VERSION' + $PKG_CONFIG --errors-to-stdout --print-errors 'talloc >= 2.0.1' ac_cv_LIBTALLOC_found=no -@@ -95141,9 +42203,9 @@ +@@ -98976,9 +43917,9 @@ if test -z "$PKG_CONFIG"; then # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 @@ -100073,7 +103345,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in -@@ -95156,14 +42218,14 @@ +@@ -98991,14 +43932,14 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -100091,7 +103363,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" -@@ -95172,10 +42234,10 @@ +@@ -99007,10 +43948,10 @@ fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then @@ -100104,20 +103376,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -95191,52 +42253,27 @@ +@@ -99026,52 +43967,27 @@ else SAMBA_PKG_CONFIG_MIN_VERSION="0.9.0" if $PKG_CONFIG --atleast-pkgconfig-version $SAMBA_PKG_CONFIG_MIN_VERSION; then -- { $as_echo "$as_me:$LINENO: checking for tdb >= $TDB_MIN_VERSION" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tdb >= $TDB_MIN_VERSION" >&5 - $as_echo_n "checking for tdb >= $TDB_MIN_VERSION... " >&6; } +- { $as_echo "$as_me:$LINENO: checking for tdb >= 1.2.1" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tdb >= 1.2.1" >&5 + $as_echo_n "checking for tdb >= 1.2.1... " >&6; } - if $PKG_CONFIG --exists 'tdb >= $TDB_MIN_VERSION' ; then + if $PKG_CONFIG --exists 'tdb >= 1.2.1' ; then - { $as_echo "$as_me:$LINENO: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - LIBTDB_CFLAGS="`$PKG_CONFIG --cflags 'tdb >= $TDB_MIN_VERSION'`" + LIBTDB_CFLAGS="`$PKG_CONFIG --cflags 'tdb >= 1.2.1'`" OLD_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $LIBTDB_CFLAGS" - { $as_echo "$as_me:$LINENO: checking that the C compiler can use the LIBTDB_CFLAGS" >&5 @@ -100164,9 +103436,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure MAKE_SETTINGS="$MAKE_SETTINGS LIBTDB_ENABLE = YES -@@ -95244,22 +42281,16 @@ +@@ -99079,22 +43995,16 @@ SMB_INFO_ENABLES="$SMB_INFO_ENABLES - \$enabled{LIBTDB} = \"YES\";" + \$enabled{\"LIBTDB\"} = \"YES\";" - { $as_echo "$as_me:$LINENO: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 @@ -100190,17 +103462,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - CFLAGS="$OLD_CFLAGS" - -@@ -95274,7 +42305,7 @@ + ac_cv_LIBTDB_libs_only_other="`$PKG_CONFIG --libs-only-other 'tdb >= 1.2.1'` `$PKG_CONFIG --libs-only-L 'tdb >= 1.2.1'`" +@@ -99155,7 +44065,7 @@ ac_cv_LIBTDB_found=yes else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - $PKG_CONFIG --errors-to-stdout --print-errors 'tdb >= $TDB_MIN_VERSION' + $PKG_CONFIG --errors-to-stdout --print-errors 'tdb >= 1.2.1' ac_cv_LIBTDB_found=no -@@ -95299,9 +42330,7 @@ +@@ -99180,9 +44090,7 @@ fi done if test x"$tdbdir" = "x"; then @@ -100210,8 +103482,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + as_fn_error "cannot find tdb source in $tdbpaths" "$LINENO" 5 fi TDB_OBJ="common/tdb.o common/dump.o common/transaction.o common/error.o common/traverse.o" - TDB_OBJ="$TDB_OBJ common/freelist.o common/freelistcheck.o common/io.o common/lock.o common/open.o" -@@ -95314,104 +42343,12 @@ + TDB_OBJ="$TDB_OBJ common/freelist.o common/freelistcheck.o common/io.o common/lock.o common/open.o common/check.o" +@@ -99195,104 +44103,12 @@ TDB_CFLAGS="-I$tdbdir/include" @@ -100321,7 +103593,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -@@ -95419,151 +42356,12 @@ +@@ -99300,151 +44116,12 @@ fi done @@ -100478,7 +103750,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -95574,17 +42372,13 @@ +@@ -99455,17 +44132,13 @@ @@ -100499,7 +103771,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -95595,56 +42389,29 @@ +@@ -99476,56 +44149,29 @@ return 0; } _ACEOF @@ -100563,7 +103835,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -95655,41 +42422,18 @@ +@@ -99536,41 +44182,18 @@ return 0; } _ACEOF @@ -100609,7 +103881,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -95715,9 +42459,9 @@ +@@ -99601,9 +44224,9 @@ if test -z "$PKG_CONFIG"; then # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 @@ -100621,7 +103893,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in -@@ -95730,14 +42474,14 @@ +@@ -99616,14 +44239,14 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -100639,7 +103911,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" -@@ -95746,10 +42490,10 @@ +@@ -99632,10 +44255,10 @@ fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then @@ -100652,20 +103924,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -95765,52 +42509,27 @@ +@@ -99651,52 +44274,27 @@ else SAMBA_PKG_CONFIG_MIN_VERSION="0.9.0" if $PKG_CONFIG --atleast-pkgconfig-version $SAMBA_PKG_CONFIG_MIN_VERSION; then -- { $as_echo "$as_me:$LINENO: checking for tevent = $TEVENT_REQUIRED_VERSION" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tevent = $TEVENT_REQUIRED_VERSION" >&5 - $as_echo_n "checking for tevent = $TEVENT_REQUIRED_VERSION... " >&6; } +- { $as_echo "$as_me:$LINENO: checking for tevent = 0.9.8" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tevent = 0.9.8" >&5 + $as_echo_n "checking for tevent = 0.9.8... " >&6; } - if $PKG_CONFIG --exists 'tevent = $TEVENT_REQUIRED_VERSION' ; then + if $PKG_CONFIG --exists 'tevent = 0.9.8' ; then - { $as_echo "$as_me:$LINENO: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - LIBTEVENT_CFLAGS="`$PKG_CONFIG --cflags 'tevent = $TEVENT_REQUIRED_VERSION'`" + LIBTEVENT_CFLAGS="`$PKG_CONFIG --cflags 'tevent = 0.9.8'`" OLD_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $LIBTEVENT_CFLAGS" - { $as_echo "$as_me:$LINENO: checking that the C compiler can use the LIBTEVENT_CFLAGS" >&5 @@ -100712,9 +103984,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure MAKE_SETTINGS="$MAKE_SETTINGS LIBTEVENT_ENABLE = YES -@@ -95818,22 +42537,16 @@ +@@ -99704,22 +44302,16 @@ SMB_INFO_ENABLES="$SMB_INFO_ENABLES - \$enabled{LIBTEVENT} = \"YES\";" + \$enabled{\"LIBTEVENT\"} = \"YES\";" - { $as_echo "$as_me:$LINENO: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 @@ -100738,33 +104010,50 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - CFLAGS="$OLD_CFLAGS" - -@@ -95848,7 +42561,7 @@ + ac_cv_LIBTEVENT_libs_only_other="`$PKG_CONFIG --libs-only-other 'tevent = 0.9.8'` `$PKG_CONFIG --libs-only-L 'tevent = 0.9.8'`" +@@ -99780,7 +44372,7 @@ ac_cv_LIBTEVENT_found=yes else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - $PKG_CONFIG --errors-to-stdout --print-errors 'tevent = $TEVENT_REQUIRED_VERSION' + $PKG_CONFIG --errors-to-stdout --print-errors 'tevent = 0.9.8' ac_cv_LIBTEVENT_found=no -@@ -95877,9 +42590,7 @@ - fi - done - if test x"$teventdir" = "x"; then +@@ -99801,281 +44393,50 @@ + + if test x"$teventdir" = "x"; then + teventdir="" +- teventpaths="$srcdir $srcdir/../lib/tevent $srcdir/tevent $srcdir/../tevent" +- for d in $teventpaths; do +- if test -f "$d/tevent.c"; then +- teventdir="$d" +- break; +- fi +- done +- if test x"$teventdir" = "x"; then - { { $as_echo "$as_me:$LINENO: error: cannot find libtevent source in $teventpaths" >&5 -$as_echo "$as_me: error: cannot find libtevent source in $teventpaths" >&2;} - { (exit 1); exit 1; }; } -+ as_fn_error "cannot find libtevent source in $teventpaths" "$LINENO" 5 - fi - fi - -@@ -95897,253 +42608,24 @@ - TEVENT_OBJ="$TEVENT_OBJ tevent_req.o tevent_wakeup.o tevent_queue.o" - TEVENT_OBJ="$TEVENT_OBJ tevent_standard.o tevent_select.o" - +- fi +-fi - - for ac_header in sys/epoll.h +-TEVENT_OBJ="" +-TEVENT_CFLAGS="" +-TEVENT_LIBS="" +- +- +- +- +-TEVENT_CFLAGS="-I$teventdir" +- +-TEVENT_OBJ="tevent.o tevent_debug.o tevent_util.o" +-TEVENT_OBJ="$TEVENT_OBJ tevent_fd.o tevent_timed.o tevent_immediate.o tevent_signal.o" +-TEVENT_OBJ="$TEVENT_OBJ tevent_req.o tevent_wakeup.o tevent_queue.o" +-TEVENT_OBJ="$TEVENT_OBJ tevent_standard.o tevent_select.o" +- +- +-for ac_header in sys/epoll.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -100906,20 +104195,29 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -+do : -+ ac_fn_c_check_header_mongrel "$LINENO" "sys/epoll.h" "ac_cv_header_sys_epoll_h" "$ac_includes_default" -+if test "x$ac_cv_header_sys_epoll_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF +- cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+#define HAVE_SYS_EPOLL_H 1 - _ACEOF - +-_ACEOF +- ++ teventpaths="$srcdir $srcdir/../lib/tevent $srcdir/tevent $srcdir/../tevent" ++ for d in $teventpaths; do ++ if test -f "$d/tevent.c"; then ++ teventdir="$d" ++ break; ++ fi ++ done ++ if test x"$teventdir" = "x"; then ++ as_fn_error "cannot find libtevent source in $teventpaths" "$LINENO" 5 ++ fi fi - done - +-done - - for ac_func in epoll_create ++TEVENT_OBJ="" ++TEVENT_CFLAGS="" ++TEVENT_LIBS="" + +-for ac_func in epoll_create -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -100936,20 +104234,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -- + -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -- + -#ifdef __STDC__ -# include -#else -# include -#endif -- + -#undef $ac_func -- ++TEVENT_CFLAGS="-I$teventdir" + -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ @@ -100963,7 +104262,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif -- ++TEVENT_OBJ="tevent.o tevent_debug.o tevent_util.o" ++TEVENT_OBJ="$TEVENT_OBJ tevent_fd.o tevent_timed.o tevent_immediate.o tevent_signal.o" ++TEVENT_OBJ="$TEVENT_OBJ tevent_req.o tevent_wakeup.o tevent_queue.o" ++TEVENT_OBJ="$TEVENT_OBJ tevent_standard.o tevent_select.o" + -int -main () -{ @@ -100971,7 +104274,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ; - return 0; -} --_ACEOF ++for ac_header in sys/epoll.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "sys/epoll.h" "ac_cv_header_sys_epoll_h" "$ac_includes_default" ++if test "x$ac_cv_header_sys_epoll_h" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_SYS_EPOLL_H 1 + _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -100997,10 +104306,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- + - eval "$as_ac_var=no" --fi -- + fi + -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext @@ -101012,6 +104321,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then ++done ++ ++for ac_func in epoll_create +do : + ac_fn_c_check_func "$LINENO" "epoll_create" "ac_cv_func_epoll_create" +if test "x$ac_cv_func_epoll_create" = x""yes; then : @@ -101021,7 +104333,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -96152,9 +42634,7 @@ +@@ -100084,9 +44445,7 @@ if test x"$ac_cv_header_sys_epoll_h" = x"yes" -a x"$ac_cv_func_epoll_create" = x"yes"; then TEVENT_OBJ="$TEVENT_OBJ tevent_epoll.o" @@ -101032,7 +104344,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -96216,9 +42696,9 @@ +@@ -100142,9 +44501,9 @@ if test -z "$PKG_CONFIG"; then # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 @@ -101044,7 +104356,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in -@@ -96231,14 +42711,14 @@ +@@ -100157,14 +44516,14 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -101062,7 +104374,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" -@@ -96247,10 +42727,10 @@ +@@ -100173,10 +44532,10 @@ fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then @@ -101075,20 +104387,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -96266,52 +42746,27 @@ +@@ -100192,52 +44551,27 @@ else SAMBA_PKG_CONFIG_MIN_VERSION="0.9.0" if $PKG_CONFIG --atleast-pkgconfig-version $SAMBA_PKG_CONFIG_MIN_VERSION; then -- { $as_echo "$as_me:$LINENO: checking for ldb = $LDB_REQUIRED_VERSION" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldb = $LDB_REQUIRED_VERSION" >&5 - $as_echo_n "checking for ldb = $LDB_REQUIRED_VERSION... " >&6; } +- { $as_echo "$as_me:$LINENO: checking for ldb = 0.9.10" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldb = 0.9.10" >&5 + $as_echo_n "checking for ldb = 0.9.10... " >&6; } - if $PKG_CONFIG --exists 'ldb = $LDB_REQUIRED_VERSION' ; then + if $PKG_CONFIG --exists 'ldb = 0.9.10' ; then - { $as_echo "$as_me:$LINENO: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - LIBLDB_CFLAGS="`$PKG_CONFIG --cflags 'ldb = $LDB_REQUIRED_VERSION'`" + LIBLDB_CFLAGS="`$PKG_CONFIG --cflags 'ldb = 0.9.10'`" OLD_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $LIBLDB_CFLAGS" - { $as_echo "$as_me:$LINENO: checking that the C compiler can use the LIBLDB_CFLAGS" >&5 @@ -101135,9 +104447,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure MAKE_SETTINGS="$MAKE_SETTINGS LIBLDB_ENABLE = YES -@@ -96319,22 +42774,16 @@ +@@ -100245,22 +44579,16 @@ SMB_INFO_ENABLES="$SMB_INFO_ENABLES - \$enabled{LIBLDB} = \"YES\";" + \$enabled{\"LIBLDB\"} = \"YES\";" - { $as_echo "$as_me:$LINENO: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 @@ -101161,17 +104473,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - CFLAGS="$OLD_CFLAGS" - -@@ -96349,7 +42798,7 @@ + ac_cv_LIBLDB_libs_only_other="`$PKG_CONFIG --libs-only-other 'ldb = 0.9.10'` `$PKG_CONFIG --libs-only-L 'ldb = 0.9.10'`" +@@ -100321,7 +44649,7 @@ ac_cv_LIBLDB_found=yes else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - $PKG_CONFIG --errors-to-stdout --print-errors 'ldb = $LDB_REQUIRED_VERSION' + $PKG_CONFIG --errors-to-stdout --print-errors 'ldb = 0.9.10' ac_cv_LIBLDB_found=no -@@ -96395,12 +42844,12 @@ +@@ -100367,12 +44695,12 @@ SQLITE3_LIBS="" with_sqlite3_support=no @@ -101186,7 +104498,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure withval=$with_sqlite3; case "$withval" in yes|no|auto) with_sqlite3_support=$withval -@@ -96409,157 +42858,18 @@ +@@ -100381,157 +44709,18 @@ fi @@ -101350,7 +104662,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -96569,11 +42879,9 @@ +@@ -100541,11 +44730,9 @@ if test x"$ac_cv_header_sqlite3_h" != x"yes"; then if test x"$with_sqlite3_support" = x"yes"; then @@ -101364,7 +104676,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: sqlite3.h is needed for SQLITE3 support" >&2;} fi -@@ -96588,23 +42896,17 @@ +@@ -100560,23 +44747,17 @@ # now see if we can find the sqlite3 libs in standard paths @@ -101391,7 +104703,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -96622,54 +42924,28 @@ +@@ -100594,54 +44775,28 @@ return 0; } _ACEOF @@ -101453,7 +104765,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBSQLITE3 1 _ACEOF -@@ -96685,21 +42961,16 @@ +@@ -100657,21 +44812,16 @@ fi @@ -101479,7 +104791,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "yes" >&6; } with_sqlite3_support=yes -@@ -96711,11 +42982,9 @@ +@@ -100683,11 +44833,9 @@ else if test x"$with_sqlite3_support" = x"yes"; then @@ -101493,7 +104805,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: libsqlite3 is needed for SQLITE3 support" >&2;} fi -@@ -96776,7 +43045,7 @@ +@@ -100757,7 +44905,7 @@ use_gnutls=auto # Check whether --enable-gnutls was given. @@ -101502,7 +104814,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure enableval=$enable_gnutls; if test x$enable_gnutls = xno; then use_gnutls=no fi -@@ -96790,9 +43059,9 @@ +@@ -100771,9 +44919,9 @@ if test -z "$PKG_CONFIG"; then # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 @@ -101514,7 +104826,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in -@@ -96805,14 +43074,14 @@ +@@ -100786,14 +44934,14 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -101532,7 +104844,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" -@@ -96821,10 +43090,10 @@ +@@ -100802,10 +44950,10 @@ fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then @@ -101545,20 +104857,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -96840,52 +43109,27 @@ +@@ -100821,52 +44969,27 @@ else SAMBA_PKG_CONFIG_MIN_VERSION="0.9.0" if $PKG_CONFIG --atleast-pkgconfig-version $SAMBA_PKG_CONFIG_MIN_VERSION; then -- { $as_echo "$as_me:$LINENO: checking for gnutls < 2.6.0" >&5 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gnutls < 2.6.0" >&5 - $as_echo_n "checking for gnutls < 2.6.0... " >&6; } +- { $as_echo "$as_me:$LINENO: checking for gnutls >= 1.4.0" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gnutls >= 1.4.0" >&5 + $as_echo_n "checking for gnutls >= 1.4.0... " >&6; } - if $PKG_CONFIG --exists 'gnutls < 2.6.0' ; then + if $PKG_CONFIG --exists 'gnutls >= 1.4.0' ; then - { $as_echo "$as_me:$LINENO: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - GNUTLS_CFLAGS="`$PKG_CONFIG --cflags 'gnutls < 2.6.0'`" + GNUTLS_CFLAGS="`$PKG_CONFIG --cflags 'gnutls >= 1.4.0'`" OLD_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $GNUTLS_CFLAGS" - { $as_echo "$as_me:$LINENO: checking that the C compiler can use the GNUTLS_CFLAGS" >&5 @@ -101605,9 +104917,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure MAKE_SETTINGS="$MAKE_SETTINGS GNUTLS_ENABLE = YES -@@ -96893,22 +43137,16 @@ +@@ -100874,22 +44997,16 @@ SMB_INFO_ENABLES="$SMB_INFO_ENABLES - \$enabled{GNUTLS} = \"YES\";" + \$enabled{\"GNUTLS\"} = \"YES\";" - { $as_echo "$as_me:$LINENO: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 @@ -101631,23 +104943,20 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - CFLAGS="$OLD_CFLAGS" - -@@ -96923,7 +43161,7 @@ + ac_cv_GNUTLS_libs_only_other="`$PKG_CONFIG --libs-only-other 'gnutls >= 1.4.0'` `$PKG_CONFIG --libs-only-L 'gnutls >= 1.4.0'`" +@@ -100950,7 +45067,7 @@ ac_cv_GNUTLS_found=yes else - { $as_echo "$as_me:$LINENO: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - $PKG_CONFIG --errors-to-stdout --print-errors 'gnutls < 2.6.0' + $PKG_CONFIG --errors-to-stdout --print-errors 'gnutls >= 1.4.0' ac_cv_GNUTLS_found=no -@@ -96940,770 +43178,161 @@ - use_gnutls=no - fi +@@ -100970,151 +45087,12 @@ + fi --fi -- --if test x$use_gnutls = xauto; then + if test x$use_gnutls = xauto; then - -for ac_header in gnutls/gnutls.h -do @@ -101791,50 +105100,47 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then -- cat >>confdefs.h <<_ACEOF ++ for ac_header in gnutls/gnutls.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "gnutls/gnutls.h" "ac_cv_header_gnutls_gnutls_h" "$ac_includes_default" ++if test "x$ac_cv_header_gnutls_gnutls_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 --_ACEOF -- --fi -- --done -- -- -- -- --ac_check_lib_ext_save_LIBS=$LIBS --LIBS="-lgnutls $GNUTLS_LIBS $LIBS" -- -- ++#define HAVE_GNUTLS_GNUTLS_H 1 + _ACEOF + + fi +@@ -101123,23 +45101,17 @@ + + + - + ac_check_lib_ext_save_LIBS=$LIBS + LIBS="-lgnutls $GNUTLS_LIBS $LIBS" + + + - - { $as_echo "$as_me:$LINENO: checking for gnutls_global_init in -lgnutls" >&5 --$as_echo_n "checking for gnutls_global_init in -lgnutls... " >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gnutls_global_init in -lgnutls" >&5 + $as_echo_n "checking for gnutls_global_init in -lgnutls... " >&6; } -if test "${ac_cv_lib_ext_gnutls_gnutls_global_init+set}" = set; then -- $as_echo_n "(cached) " >&6 --else ++if test "${ac_cv_lib_ext_gnutls_gnutls_global_init+set}" = set; then : + $as_echo_n "(cached) " >&6 + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ -- --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char gnutls_global_init (); --int --main () --{ --return gnutls_global_init (); -- ; -- return 0; --} --_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -101157,580 +45129,116 @@ + return 0; + } + _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -101856,7 +105162,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- ac_cv_lib_ext_gnutls_gnutls_global_init=yes; ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ext_gnutls_gnutls_global_init=yes; - ac_cv_lib_ext_gnutls=yes -else - $as_echo "$as_me: failed program was:" >&5 @@ -101969,7 +105276,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -GNUTLS_ENABLE = YES -" -SMB_INFO_ENABLES="$SMB_INFO_ENABLES --\$enabled{GNUTLS} = \"YES\";" +-\$enabled{\"GNUTLS\"} = \"YES\";" - - { $as_echo "$as_me:$LINENO: checking whether gnutls_x509_crt_set_subject_key_id is declared" >&5 -$as_echo_n "checking whether gnutls_x509_crt_set_subject_key_id is declared... " >&6; } @@ -101993,19 +105300,11 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#ifndef gnutls_x509_crt_set_subject_key_id - (void) gnutls_x509_crt_set_subject_key_id; -#endif -+fi - +- - ; - return 0; -} -+if test x$use_gnutls = xauto; then -+ for ac_header in gnutls/gnutls.h -+do : -+ ac_fn_c_check_header_mongrel "$LINENO" "gnutls/gnutls.h" "ac_cv_header_gnutls_gnutls_h" "$ac_includes_default" -+if test "x$ac_cv_header_gnutls_gnutls_h" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_GNUTLS_GNUTLS_H 1 - _ACEOF +-_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -102028,46 +105327,40 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +- - ac_cv_have_decl_gnutls_x509_crt_set_subject_key_id=no - fi - +-fi +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_gnutls_x509_crt_set_subject_key_id" >&5 -$as_echo "$ac_cv_have_decl_gnutls_x509_crt_set_subject_key_id" >&6; } -if test "x$ac_cv_have_decl_gnutls_x509_crt_set_subject_key_id" = x""yes; then -+done - +- -cat >>confdefs.h <<\_ACEOF -#define HAVE_GNUTLS_X509_CRT_SET_SUBJECT_KEY_ID 1 -_ACEOF - +- -fi - +- - fi -+ac_check_lib_ext_save_LIBS=$LIBS -+LIBS="-lgnutls $GNUTLS_LIBS $LIBS" - +- -MAKE_SETTINGS="$MAKE_SETTINGS -GNUTLS_LIBS = $GNUTLS_LIBS -GNUTLS_CFLAGS = -GNUTLS_CPPFLAGS = -GNUTLS_LDFLAGS = -" - - +- +- -fi -if test x$use_gnutls = xyes; then - #Some older versions have a different type name - { $as_echo "$as_me:$LINENO: checking for gnutls_datum" >&5 -$as_echo_n "checking for gnutls_datum... " >&6; } -if test "${ac_cv_type_gnutls_datum+set}" = set; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gnutls_global_init in -lgnutls" >&5 -+$as_echo_n "checking for gnutls_global_init in -lgnutls... " >&6; } -+if test "${ac_cv_lib_ext_gnutls_gnutls_global_init+set}" = set; then : - $as_echo_n "(cached) " >&6 - else +- $as_echo_n "(cached) " >&6 +-else - ac_cv_type_gnutls_datum=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ @@ -102109,27 +105402,18 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ +-/* end confdefs.h. */ -#include "gnutls/gnutls.h" - -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char gnutls_global_init (); - int - main () - { +- +-int +-main () +-{ -if (sizeof ((gnutls_datum))) - return 0; -+return gnutls_global_init (); - ; - return 0; - } - _ACEOF +- ; +- return 0; +-} +-_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -102157,39 +105441,26 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_ext_gnutls_gnutls_global_init=yes; -+ ac_cv_lib_ext_gnutls=yes - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -+ ac_cv_lib_ext_gnutls_gnutls_global_init=no; -+ ac_cv_lib_ext_gnutls=no - fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - +-fi +- -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi +-fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_gnutls_datum" >&5 -$as_echo "$ac_cv_type_gnutls_datum" >&6; } -if test "x$ac_cv_type_gnutls_datum" = x""yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_GNUTLS_DATUM 1 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_gnutls_gnutls_global_init" >&5 -+$as_echo "$ac_cv_lib_ext_gnutls_gnutls_global_init" >&6; } -+ if test $ac_cv_lib_ext_gnutls_gnutls_global_init = yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_GNUTLS_GLOBAL_INIT 1 - _ACEOF - +-_ACEOF +- +- +-fi - - fi -+LIBS=$ac_check_lib_ext_save_LIBS - - { $as_echo "$as_me:$LINENO: checking for gnutls_datum_t" >&5 -$as_echo_n "checking for gnutls_datum_t... " >&6; } -if test "${ac_cv_type_gnutls_datum_t+set}" = set; then @@ -102198,15 +105469,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - ac_cv_type_gnutls_datum_t=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -+if test $ac_cv_lib_ext_gnutls = yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_LIBGNUTLS 1 - _ACEOF +-_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "gnutls/gnutls.h" - +- -int -main () -{ @@ -102241,14 +105509,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "gnutls/gnutls.h" -+ case "$GNUTLS_LIBS" in -+ *-lgnutls*) -+ ;; -+ *) -+ GNUTLS_LIBS="-lgnutls $GNUTLS_LIBS" -+ ;; -+ esac - +- -int -main () -{ @@ -102277,42 +105538,72 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : ++ ac_cv_lib_ext_gnutls=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ ac_cv_lib_ext_gnutls_gnutls_global_init=no; ++ ac_cv_lib_ext_gnutls=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_gnutls_gnutls_global_init" >&5 ++$as_echo "$ac_cv_lib_ext_gnutls_gnutls_global_init" >&6; } ++ if test $ac_cv_lib_ext_gnutls_gnutls_global_init = yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_GNUTLS_GLOBAL_INIT 1 ++_ACEOF + +- ac_cv_type_gnutls_datum_t=yes + fi ++LIBS=$ac_check_lib_ext_save_LIBS + +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 ++if test $ac_cv_lib_ext_gnutls = yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_LIBGNUTLS 1 ++_ACEOF ++ ++ case "$GNUTLS_LIBS" in ++ *-lgnutls*) ++ ;; ++ *) ++ GNUTLS_LIBS="-lgnutls $GNUTLS_LIBS" ++ ;; ++ esac + -- ac_cv_type_gnutls_datum_t=yes fi + ac_fn_c_check_decl "$LINENO" "gnutls_x509_crt_set_version" "ac_cv_have_decl_gnutls_x509_crt_set_version" " + #include + #include - --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 ++ +" +if test "x$ac_cv_have_decl_gnutls_x509_crt_set_version" = x""yes; then : - ++ +$as_echo "#define HAVE_GNUTLS_X509_CRT_SET_VERSION 1" >>confdefs.h - fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_gnutls_datum_t" >&5 -$as_echo "$ac_cv_type_gnutls_datum_t" >&6; } -if test "x$ac_cv_type_gnutls_datum_t" = x""yes; then -+ if test x"$ac_cv_header_gnutls_gnutls_h" = x"yes" -a x"$ac_cv_lib_ext_gnutls_gnutls_global_init" = x"yes" -a x"$ac_cv_have_decl_gnutls_x509_crt_set_version" = x"yes";then -cat >>confdefs.h <<_ACEOF -#define HAVE_GNUTLS_DATUM_T 1 -_ACEOF ++ if test x"$ac_cv_header_gnutls_gnutls_h" = x"yes" -a x"$ac_cv_lib_ext_gnutls_gnutls_global_init" = x"yes" -a x"$ac_cv_have_decl_gnutls_x509_crt_set_version" = x"yes";then ++ + MAKE_SETTINGS="$MAKE_SETTINGS +GNUTLS_ENABLE = YES +" +SMB_INFO_ENABLES="$SMB_INFO_ENABLES -+\$enabled{GNUTLS} = \"YES\";" ++\$enabled{\"GNUTLS\"} = \"YES\";" + + ac_fn_c_check_decl "$LINENO" "gnutls_x509_crt_set_subject_key_id" "ac_cv_have_decl_gnutls_x509_crt_set_subject_key_id" " + #include @@ -102506,7 +105797,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -97712,23 +43341,17 @@ +@@ -101739,23 +45247,17 @@ @@ -102533,7 +105824,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -97746,54 +43369,28 @@ +@@ -101773,54 +45275,28 @@ return 0; } _ACEOF @@ -102595,7 +105886,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBGCRYPT 1 _ACEOF -@@ -97809,7 +43406,6 @@ +@@ -101836,7 +45312,6 @@ fi @@ -102603,7 +105894,647 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure MAKE_SETTINGS="$MAKE_SETTINGS GCRYPT_LIBS = $GCRYPT_LIBS GCRYPT_CFLAGS = -@@ -97847,19 +43443,17 @@ +@@ -101853,7 +45328,7 @@ + + use_netapi=auto + # Check whether --enable-netapi was given. +-if test "${enable_netapi+set}" = set; then ++if test "${enable_netapi+set}" = set; then : + enableval=$enable_netapi; if test x$enable_netapi = xno; then + use_netapi=no + fi +@@ -101875,151 +45350,12 @@ + \$enabled{\"TORTURE_LIBNETAPI\"} = \"NO\";" + + if test x$use_netapi != xno; then +- +-for ac_header in netapi.h +-do +-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-$as_echo_n "checking $ac_header usability... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- ac_header_compiler=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_compiler=no +-fi +- +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-$as_echo_n "checking $ac_header presence... " >&6; } +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- ac_header_preproc=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +- +-rm -f conftest.err conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( cat <<\_ASBOX +-## ---------------------------------------- ## +-## Report this to samba-technical@samba.org ## +-## ---------------------------------------- ## +-_ASBOX +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +-$as_echo_n "checking for $ac_header... " >&6; } +-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +- $as_echo_n "(cached) " >&6 +-else +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-ac_res=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +- +-fi +-as_val=`eval 'as_val=${'$as_ac_Header'} +- $as_echo "$as_val"'` +- if test "x$as_val" = x""yes; then ++ for ac_header in netapi.h ++do : ++ ac_fn_c_check_header_mongrel "$LINENO" "netapi.h" "ac_cv_header_netapi_h" "$ac_includes_default" ++if test "x$ac_cv_header_netapi_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++#define HAVE_NETAPI_H 1 + _ACEOF + + fi +@@ -102028,23 +45364,17 @@ + + + +- + ac_check_lib_ext_save_LIBS=$LIBS + LIBS="-lnetapi $NETAPI_LIBS $LIBS" + + + +- +- { $as_echo "$as_me:$LINENO: checking for libnetapi_init in -lnetapi" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libnetapi_init in -lnetapi" >&5 + $as_echo_n "checking for libnetapi_init in -lnetapi... " >&6; } +-if test "${ac_cv_lib_ext_netapi_libnetapi_init+set}" = set; then ++if test "${ac_cv_lib_ext_netapi_libnetapi_init+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -102062,54 +45392,28 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ext_netapi_libnetapi_init=yes; + ac_cv_lib_ext_netapi=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_ext_netapi_libnetapi_init=no; ++ ac_cv_lib_ext_netapi_libnetapi_init=no; + ac_cv_lib_ext_netapi=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ext_netapi_libnetapi_init" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_netapi_libnetapi_init" >&5 + $as_echo "$ac_cv_lib_ext_netapi_libnetapi_init" >&6; } +- if test $ac_cv_lib_ext_netapi_libnetapi_init = yes; then ++ if test $ac_cv_lib_ext_netapi_libnetapi_init = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBNETAPI_INIT 1 + _ACEOF + + fi +- + LIBS=$ac_check_lib_ext_save_LIBS + +-if test $ac_cv_lib_ext_netapi = yes; then ++if test $ac_cv_lib_ext_netapi = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBNETAPI 1 + _ACEOF +@@ -102126,24 +45430,17 @@ + fi + + +- +- + ac_check_lib_ext_save_LIBS=$LIBS + LIBS="-lnetapi $NETAPI_LIBS $LIBS" + + + +- +- { $as_echo "$as_me:$LINENO: checking for NetUserModalsGet in -lnetapi" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NetUserModalsGet in -lnetapi" >&5 + $as_echo_n "checking for NetUserModalsGet in -lnetapi... " >&6; } +-if test "${ac_cv_lib_ext_netapi_NetUserModalsGet+set}" = set; then ++if test "${ac_cv_lib_ext_netapi_NetUserModalsGet+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -102161,54 +45458,28 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ext_netapi_NetUserModalsGet=yes; + ac_cv_lib_ext_netapi=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_ext_netapi_NetUserModalsGet=no; ++ ac_cv_lib_ext_netapi_NetUserModalsGet=no; + ac_cv_lib_ext_netapi=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ext_netapi_NetUserModalsGet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_netapi_NetUserModalsGet" >&5 + $as_echo "$ac_cv_lib_ext_netapi_NetUserModalsGet" >&6; } +- if test $ac_cv_lib_ext_netapi_NetUserModalsGet = yes; then ++ if test $ac_cv_lib_ext_netapi_NetUserModalsGet = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_NETUSERMODALSGET 1 + _ACEOF + + fi +- + LIBS=$ac_check_lib_ext_save_LIBS + +-if test $ac_cv_lib_ext_netapi = yes; then ++if test $ac_cv_lib_ext_netapi = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBNETAPI 1 + _ACEOF +@@ -102225,24 +45496,17 @@ + fi + + +- +- + ac_check_lib_ext_save_LIBS=$LIBS + LIBS="-lnetapi $NETAPI_LIBS $LIBS" + + + +- +- { $as_echo "$as_me:$LINENO: checking for NetUserGetGroups in -lnetapi" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NetUserGetGroups in -lnetapi" >&5 + $as_echo_n "checking for NetUserGetGroups in -lnetapi... " >&6; } +-if test "${ac_cv_lib_ext_netapi_NetUserGetGroups+set}" = set; then ++if test "${ac_cv_lib_ext_netapi_NetUserGetGroups+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -102260,54 +45524,28 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ext_netapi_NetUserGetGroups=yes; + ac_cv_lib_ext_netapi=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_ext_netapi_NetUserGetGroups=no; ++ ac_cv_lib_ext_netapi_NetUserGetGroups=no; + ac_cv_lib_ext_netapi=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ext_netapi_NetUserGetGroups" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_netapi_NetUserGetGroups" >&5 + $as_echo "$ac_cv_lib_ext_netapi_NetUserGetGroups" >&6; } +- if test $ac_cv_lib_ext_netapi_NetUserGetGroups = yes; then ++ if test $ac_cv_lib_ext_netapi_NetUserGetGroups = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_NETUSERGETGROUPS 1 + _ACEOF + + fi +- + LIBS=$ac_check_lib_ext_save_LIBS + +-if test $ac_cv_lib_ext_netapi = yes; then ++if test $ac_cv_lib_ext_netapi = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBNETAPI 1 + _ACEOF +@@ -102324,24 +45562,17 @@ + fi + + +- +- + ac_check_lib_ext_save_LIBS=$LIBS + LIBS="-lnetapi $NETAPI_LIBS $LIBS" + + + +- +- { $as_echo "$as_me:$LINENO: checking for NetUserGetInfo in -lnetapi" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NetUserGetInfo in -lnetapi" >&5 + $as_echo_n "checking for NetUserGetInfo in -lnetapi... " >&6; } +-if test "${ac_cv_lib_ext_netapi_NetUserGetInfo+set}" = set; then ++if test "${ac_cv_lib_ext_netapi_NetUserGetInfo+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -102359,54 +45590,28 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ext_netapi_NetUserGetInfo=yes; + ac_cv_lib_ext_netapi=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_ext_netapi_NetUserGetInfo=no; ++ ac_cv_lib_ext_netapi_NetUserGetInfo=no; + ac_cv_lib_ext_netapi=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ext_netapi_NetUserGetInfo" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_netapi_NetUserGetInfo" >&5 + $as_echo "$ac_cv_lib_ext_netapi_NetUserGetInfo" >&6; } +- if test $ac_cv_lib_ext_netapi_NetUserGetInfo = yes; then ++ if test $ac_cv_lib_ext_netapi_NetUserGetInfo = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_NETUSERGETINFO 1 + _ACEOF + + fi +- + LIBS=$ac_check_lib_ext_save_LIBS + +-if test $ac_cv_lib_ext_netapi = yes; then ++if test $ac_cv_lib_ext_netapi = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBNETAPI 1 + _ACEOF +@@ -102423,24 +45628,17 @@ + fi + + +- +- + ac_check_lib_ext_save_LIBS=$LIBS + LIBS="-lnetapi $NETAPI_LIBS $LIBS" + + + +- +- { $as_echo "$as_me:$LINENO: checking for NetUserSetInfo in -lnetapi" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NetUserSetInfo in -lnetapi" >&5 + $as_echo_n "checking for NetUserSetInfo in -lnetapi... " >&6; } +-if test "${ac_cv_lib_ext_netapi_NetUserSetInfo+set}" = set; then ++if test "${ac_cv_lib_ext_netapi_NetUserSetInfo+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -102458,54 +45656,28 @@ + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ext_netapi_NetUserSetInfo=yes; + ac_cv_lib_ext_netapi=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_lib_ext_netapi_NetUserSetInfo=no; ++ ac_cv_lib_ext_netapi_NetUserSetInfo=no; + ac_cv_lib_ext_netapi=no + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ext_netapi_NetUserSetInfo" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_netapi_NetUserSetInfo" >&5 + $as_echo "$ac_cv_lib_ext_netapi_NetUserSetInfo" >&6; } +- if test $ac_cv_lib_ext_netapi_NetUserSetInfo = yes; then ++ if test $ac_cv_lib_ext_netapi_NetUserSetInfo = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_NETUSERSETINFO 1 + _ACEOF + + fi +- + LIBS=$ac_check_lib_ext_save_LIBS + +-if test $ac_cv_lib_ext_netapi = yes; then ++if test $ac_cv_lib_ext_netapi = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBNETAPI 1 + _ACEOF +@@ -102520,12 +45692,9 @@ + + + fi +- + if test x"$ac_cv_header_netapi_h" = x"yes" -a x"$ac_cv_lib_ext_netapi_libnetapi_init" = x"yes" -a x"$ac_cv_lib_ext_netapi_NetUserModalsGet" = x"yes" -a x"$ac_cv_lib_ext_netapi_NetUserGetGroups" = x"yes" -a x"$ac_cv_lib_ext_netapi_NetUserGetInfo" = x"yes" -a x"$ac_cv_lib_ext_netapi_NetUserSetInfo" = x"yes";then + +-cat >>confdefs.h <<\_ACEOF +-#define ENABLE_LIBNETAPI 1 +-_ACEOF ++$as_echo "#define ENABLE_LIBNETAPI 1" >>confdefs.h + + + MAKE_SETTINGS="$MAKE_SETTINGS +@@ -102543,9 +45712,7 @@ + + else + if test x$use_netapi != xauto; then +- { { $as_echo "$as_me:$LINENO: error: --enable-netapi: libnetapi not found" >&5 +-$as_echo "$as_me: error: --enable-netapi: libnetapi not found" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error "--enable-netapi: libnetapi not found" "$LINENO" 5 + fi + fi + +@@ -102586,19 +45753,17 @@ ################################################# # check for pthread support @@ -102627,7 +106558,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi MAKE_SETTINGS="$MAKE_SETTINGS -@@ -97877,12 +43471,12 @@ +@@ -102616,12 +45781,12 @@ ;; *) @@ -102642,7 +106573,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -97898,274 +43492,45 @@ +@@ -102637,274 +45802,45 @@ @@ -102930,7 +106861,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -98183,54 +43548,28 @@ +@@ -102922,54 +45858,28 @@ return 0; } _ACEOF @@ -102992,7 +106923,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBSETPROCTITLE 1 _ACEOF -@@ -98246,15 +43585,14 @@ +@@ -102985,15 +45895,14 @@ fi @@ -103010,8 +106941,8 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "yes" >&6; } MAKE_SETTINGS="$MAKE_SETTINGS -@@ -98264,22 +43602,20 @@ - \$enabled{SETPROCTITLE} = \"YES\";" +@@ -103003,22 +45912,20 @@ + \$enabled{\"SETPROCTITLE\"} = \"YES\";" -cat >>confdefs.h <<\_ACEOF @@ -103037,7 +106968,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "no" >&6; } fi -@@ -98297,17 +43633,13 @@ +@@ -103036,238 +45943,68 @@ @@ -103058,10 +106989,21 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -98326,209 +43658,43 @@ - return 0; - } - _ACEOF + #include + #include + +-int +-main () +-{ +-struct stat st; +- st.st_mtim.tv_nsec; +- st.st_atim.tv_nsec; +- st.st_ctim.tv_nsec; +- +- ; +- return 0; +-} +-_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in @@ -103080,33 +107022,29 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then -+if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_decl_have_stat_tv_nsec=yes - else +- ac_cv_decl_have_stat_tv_nsec=yes +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_decl_have_stat_tv_nsec=no -+ ac_cv_decl_have_stat_tv_nsec=no - fi +-fi - - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- +-fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_stat_tv_nsec" >&5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_stat_tv_nsec" >&5 - $as_echo "$ac_cv_have_stat_tv_nsec" >&6; } - if test x"$ac_cv_decl_have_stat_tv_nsec" = x"yes"; then - +-$as_echo "$ac_cv_have_stat_tv_nsec" >&6; } +-if test x"$ac_cv_decl_have_stat_tv_nsec" = x"yes"; then +- -cat >>confdefs.h <<\_ACEOF -#define HAVE_STAT_TV_NSEC 1 -_ACEOF -+$as_echo "#define HAVE_STAT_TV_NSEC 1" >>confdefs.h - - fi - - - for ac_header in blkid/blkid.h +-fi +- +- +-for ac_header in blkid/blkid.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -103161,7 +107099,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } -- ++int ++main () ++{ ++struct stat st; ++ st.st_mtim.tv_nsec; ++ st.st_atim.tv_nsec; ++ st.st_ctim.tv_nsec; + -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } @@ -103172,7 +107117,10 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> --_ACEOF ++ ; ++ return 0; ++} + _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; @@ -103191,17 +107139,26 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test ! -s conftest.err - }; then - ac_header_preproc=yes --else ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_decl_have_stat_tv_nsec=yes + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++ ac_cv_decl_have_stat_tv_nsec=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + - ac_header_preproc=no --fi -- + fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_stat_tv_nsec" >&5 ++$as_echo "$ac_cv_have_stat_tv_nsec" >&6; } ++if test x"$ac_cv_decl_have_stat_tv_nsec" = x"yes"; then + -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } -- ++$as_echo "#define HAVE_STAT_TV_NSEC 1" >>confdefs.h + -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) @@ -103238,16 +107195,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_echo_n "(cached) " >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" --fi + fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -- + -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then ++for ac_header in blkid/blkid.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "blkid/blkid.h" "ac_cv_header_blkid_blkid_h" "$ac_includes_default" +if test "x$ac_cv_header_blkid_blkid_h" = x""yes; then : @@ -103279,7 +107237,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -98546,46 +43712,15 @@ +@@ -103285,46 +46022,15 @@ return 0; } _ACEOF @@ -103330,7 +107288,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -98603,65 +43738,32 @@ +@@ -103342,65 +46048,32 @@ return 0; } _ACEOF @@ -103357,13 +107315,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - }; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_ext_blkid_get_cache="-l$ac_lib" --break + break -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -+break fi - -rm -rf conftest.dSYM @@ -103405,7 +107362,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Define blkid_get_cache to an innocuous variant, in case declares blkid_get_cache. For example, HP-UX 11i declares gettimeofday. */ -@@ -98702,50 +43804,24 @@ +@@ -103441,50 +46114,24 @@ return 0; } _ACEOF @@ -103462,7 +107419,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure MAKE_SETTINGS="$MAKE_SETTINGS BLKID_LIBS = ${BLKID_LIBS} BLKID_CFLAGS = ${BLKID_CFLAGS} -@@ -98756,9 +43832,7 @@ +@@ -103495,9 +46142,7 @@ if test x"$ac_cv_func_ext_blkid_get_cache" = x"yes"; then @@ -103473,7 +107430,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure MAKE_SETTINGS="$MAKE_SETTINGS -@@ -98786,102 +43860,12 @@ +@@ -103525,102 +46170,12 @@ fi @@ -103580,7 +107537,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -98891,151 +43875,12 @@ +@@ -103630,151 +46185,12 @@ ############################### # start SMB_EXT_LIB_PAM # check for security/pam_appl.h and -lpam @@ -103736,7 +107693,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -99044,23 +43889,17 @@ +@@ -103783,23 +46199,17 @@ @@ -103763,7 +107720,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -99078,54 +43917,28 @@ +@@ -103817,54 +46227,28 @@ return 0; } _ACEOF @@ -103825,7 +107782,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBPAM 1 _ACEOF -@@ -99140,7 +43953,6 @@ +@@ -103879,7 +46263,6 @@ fi @@ -103833,7 +107790,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure if test x"$ac_cv_header_security_pam_appl_h" = x"yes" -a x"$ac_cv_lib_ext_pam_pam_start" = x"yes";then MAKE_SETTINGS="$MAKE_SETTINGS -@@ -99166,23 +43978,17 @@ +@@ -103905,23 +46288,17 @@ # test for where we get crypt() from @@ -103860,7 +107817,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -99200,54 +44006,28 @@ +@@ -103939,54 +46316,28 @@ return 0; } _ACEOF @@ -103922,7 +107879,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBCRYPT 1 _ACEOF -@@ -99263,7 +44043,6 @@ +@@ -104002,7 +46353,6 @@ fi @@ -103930,7 +107887,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure MAKE_SETTINGS="$MAKE_SETTINGS CRYPT_ENABLE = YES " -@@ -99280,102 +44059,12 @@ +@@ -104019,102 +46369,12 @@ @@ -104038,7 +107995,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -@@ -99384,151 +44073,12 @@ +@@ -104123,151 +46383,12 @@ done @@ -104194,44 +108151,37 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -99537,330 +44087,18 @@ +@@ -104276,23 +46397,17 @@ - ac_check_lib_ext_save_LIBS=$LIBS --LIBS="-lsasl2 $SASL_LIBS $LIBS" -- -- -- + LIBS="-lsasl2 $SASL_LIBS $LIBS" + + + - - { $as_echo "$as_me:$LINENO: checking for sasl_client_init in -lsasl2" >&5 --$as_echo_n "checking for sasl_client_init in -lsasl2... " >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sasl_client_init in -lsasl2" >&5 + $as_echo_n "checking for sasl_client_init in -lsasl2... " >&6; } -if test "${ac_cv_lib_ext_sasl2_sasl_client_init+set}" = set; then -- $as_echo_n "(cached) " >&6 --else ++if test "${ac_cv_lib_ext_sasl2_sasl_client_init+set}" = set; then : + $as_echo_n "(cached) " >&6 + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ -- --/* Override any GCC internal prototype to avoid an error. -- Use char because int might match the return type of a GCC -- builtin and then its argument prototype would still apply. */ --#ifdef __cplusplus --extern "C" --#endif --char sasl_client_init (); --int --main () --{ --return sasl_client_init (); -- ; -- return 0; --} --_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + /* Override any GCC internal prototype to avoid an error. +@@ -104310,54 +46425,28 @@ + return 0; + } + _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in @@ -104253,74 +108203,89 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then -- ac_cv_lib_ext_sasl2_sasl_client_init=yes; -- ac_cv_lib_ext_sasl2=yes --else ++if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ext_sasl2_sasl_client_init=yes; + ac_cv_lib_ext_sasl2=yes + else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_ext_sasl2_sasl_client_init=no; -- ac_cv_lib_ext_sasl2=no --fi ++ ac_cv_lib_ext_sasl2_sasl_client_init=no; + ac_cv_lib_ext_sasl2=no + fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -- --fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + + fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ext_sasl2_sasl_client_init" >&5 --$as_echo "$ac_cv_lib_ext_sasl2_sasl_client_init" >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_sasl2_sasl_client_init" >&5 + $as_echo "$ac_cv_lib_ext_sasl2_sasl_client_init" >&6; } - if test $ac_cv_lib_ext_sasl2_sasl_client_init = yes; then -- cat >>confdefs.h <<_ACEOF --#define HAVE_SASL_CLIENT_INIT 1 --_ACEOF -- --fi -- --LIBS=$ac_check_lib_ext_save_LIBS ++ if test $ac_cv_lib_ext_sasl2_sasl_client_init = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_SASL_CLIENT_INIT 1 + _ACEOF + + fi - + LIBS=$ac_check_lib_ext_save_LIBS + -if test $ac_cv_lib_ext_sasl2 = yes; then -- cat >>confdefs.h <<_ACEOF --#define HAVE_LIBSASL2 1 --_ACEOF ++if test $ac_cv_lib_ext_sasl2 = yes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBSASL2 1 + _ACEOF +@@ -104373,7 +46462,6 @@ + + fi + - -- case "$SASL_LIBS" in -- *-lsasl2*) -- ;; -- *) -- SASL_LIBS="-lsasl2 $SASL_LIBS" -- ;; -- esac + if test x"$ac_cv_header_sasl_sasl_h" = x"yes" -a x"$ac_cv_lib_ext_sasl2_sasl_client_init" = x"yes";then + + MAKE_SETTINGS="$MAKE_SETTINGS +@@ -104419,312 +46507,88 @@ + ac_new_flags="$ac_new_flags$s$i"; + else + ac_new_flags="$ac_new_flags$s$l $i"; +- fi +- l="" +- ;; +- esac +- done +- SASL_LDFLAGS=$ac_new_flags - - --fi +- ac_new_flags="" +- for i in $SASL_CPPFLAGS; do +- case $i in +- -I/usr/include|-I/usr/include/) ;; +- *) ac_new_flags="$ac_new_flags $i" ;; +- esac +- done +- SASL_CPPFLAGS=$ac_new_flags - - --if test x"$ac_cv_header_sasl_sasl_h" = x"yes" -a x"$ac_cv_lib_ext_sasl2_sasl_client_init" = x"yes";then +- ac_new_flags="" +- for i in $SASL_CFLAGS; do +- case $i in +- -I/usr/include|-I/usr/include/) ;; +- *) ac_new_flags="$ac_new_flags $i" ;; +- esac +- done +- SASL_CFLAGS=$ac_new_flags - -- MAKE_SETTINGS="$MAKE_SETTINGS --SASL_ENABLE = YES --" --SMB_INFO_ENABLES="$SMB_INFO_ENABLES --\$enabled{SASL} = \"YES\";" -- -- -- MAKE_SETTINGS="$MAKE_SETTINGS --cyrus_sasl_ENABLE = YES --" --SMB_INFO_ENABLES="$SMB_INFO_ENABLES --\$enabled{cyrus_sasl} = \"YES\";" -- -- SASL_CFLAGS="$CFLAGS" -- SASL_CPPFLAGS="$CPPFLAGS" -- SASL_LDFLAGS="$LDFLAGS" -else - - MAKE_SETTINGS="$MAKE_SETTINGS -cyrus_sasl_ENABLE = NO -" -SMB_INFO_ENABLES="$SMB_INFO_ENABLES --\$enabled{cyrus_sasl} = \"NO\";" +-\$enabled{\"cyrus_sasl\"} = \"NO\";" - -fi - @@ -104339,7 +108304,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -server_service_kdc_ENABLE = $HAVE_KRB5 -" -SMB_INFO_ENABLES="$SMB_INFO_ENABLES --\$enabled{server_service_kdc} = \"$HAVE_KRB5\";" +-\$enabled{\"server_service_kdc\"} = \"$HAVE_KRB5\";" - - - @@ -104433,14 +108398,38 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -- ++ fi ++ l="" ++ ;; ++ esac ++ done ++ SASL_LDFLAGS=$ac_new_flags + - ac_header_preproc=no -fi -- + -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } -- ++ ac_new_flags="" ++ for i in $SASL_CPPFLAGS; do ++ case $i in ++ -I/usr/include|-I/usr/include/) ;; ++ *) ac_new_flags="$ac_new_flags $i" ;; ++ esac ++ done ++ SASL_CPPFLAGS=$ac_new_flags ++ ++ ++ ac_new_flags="" ++ for i in $SASL_CFLAGS; do ++ case $i in ++ -I/usr/include|-I/usr/include/) ;; ++ *) ac_new_flags="$ac_new_flags $i" ;; ++ esac ++ done ++ SASL_CFLAGS=$ac_new_flags + -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) @@ -104475,14 +108464,14 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 --else + else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -- + -fi -as_val=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` @@ -104490,11 +108479,16 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF -- --fi -- ++ MAKE_SETTINGS="$MAKE_SETTINGS ++cyrus_sasl_ENABLE = NO ++" ++SMB_INFO_ENABLES="$SMB_INFO_ENABLES ++\$enabled{\"cyrus_sasl\"} = \"NO\";" + + fi + -done -- + -{ $as_echo "$as_me:$LINENO: checking for inotify_init" >&5 -$as_echo_n "checking for inotify_init... " >&6; } -if test "${ac_cv_func_inotify_init+set}" = set; then @@ -104509,7 +108503,12 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -/* Define inotify_init to an innocuous variant, in case declares inotify_init. - For example, HP-UX 11i declares gettimeofday. */ -#define inotify_init innocuous_inotify_init -+LIBS="-lsasl2 $SASL_LIBS $LIBS" ++MAKE_SETTINGS="$MAKE_SETTINGS ++SASL_LIBS = $SASL_LIBS ++SASL_CFLAGS = ${SASL_CFLAGS} ++SASL_CPPFLAGS = ${SASL_CPPFLAGS} ++SASL_LDFLAGS = ${SASL_LDFLAGS} ++" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char inotify_init (); below. @@ -104523,20 +108522,13 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#endif -#undef inotify_init -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sasl_client_init in -lsasl2" >&5 -+$as_echo_n "checking for sasl_client_init in -lsasl2... " >&6; } -+if test "${ac_cv_lib_ext_sasl2_sasl_client_init+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ - /* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC -@@ -99868,70 +44106,125 @@ - #ifdef __cplusplus - extern "C" - #endif +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif -char inotify_init (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named @@ -104544,16 +108536,28 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -#if defined __stub_inotify_init || defined __stub___inotify_init -choke me -#endif -- -+char sasl_client_init (); - int - main () - { ++ MAKE_SETTINGS="$MAKE_SETTINGS ++server_service_kdc_ENABLE = $HAVE_KRB5 ++" ++SMB_INFO_ENABLES="$SMB_INFO_ENABLES ++\$enabled{\"server_service_kdc\"} = \"$HAVE_KRB5\";" + +-int +-main () +-{ -return inotify_init (); -+return sasl_client_init (); - ; - return 0; - } +- ; +- return 0; +-} ++ ++for ac_header in linux/inotify.h asm/unistd.h sys/inotify.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" ++eval as_val=\$$as_ac_Header ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" @@ -104577,100 +108581,9 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure - $as_test_x conftest$ac_exeext - }; then - ac_cv_func_inotify_init=yes -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_ext_sasl2_sasl_client_init=yes; -+ ac_cv_lib_ext_sasl2=yes - else +-else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -+ ac_cv_lib_ext_sasl2_sasl_client_init=no; -+ ac_cv_lib_ext_sasl2=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext_sasl2_sasl_client_init" >&5 -+$as_echo "$ac_cv_lib_ext_sasl2_sasl_client_init" >&6; } -+ if test $ac_cv_lib_ext_sasl2_sasl_client_init = yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_SASL_CLIENT_INIT 1 -+_ACEOF -+ -+fi -+LIBS=$ac_check_lib_ext_save_LIBS -+ -+if test $ac_cv_lib_ext_sasl2 = yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_LIBSASL2 1 -+_ACEOF -+ -+ case "$SASL_LIBS" in -+ *-lsasl2*) -+ ;; -+ *) -+ SASL_LIBS="-lsasl2 $SASL_LIBS" -+ ;; -+ esac -+ -+ -+fi -+ -+if test x"$ac_cv_header_sasl_sasl_h" = x"yes" -a x"$ac_cv_lib_ext_sasl2_sasl_client_init" = x"yes";then -+ -+ MAKE_SETTINGS="$MAKE_SETTINGS -+SASL_ENABLE = YES -+" -+SMB_INFO_ENABLES="$SMB_INFO_ENABLES -+\$enabled{SASL} = \"YES\";" -+ -+ -+ MAKE_SETTINGS="$MAKE_SETTINGS -+cyrus_sasl_ENABLE = YES -+" -+SMB_INFO_ENABLES="$SMB_INFO_ENABLES -+\$enabled{cyrus_sasl} = \"YES\";" -+ -+ SASL_CFLAGS="$CFLAGS" -+ SASL_CPPFLAGS="$CPPFLAGS" -+ SASL_LDFLAGS="$LDFLAGS" -+else -+ -+ MAKE_SETTINGS="$MAKE_SETTINGS -+cyrus_sasl_ENABLE = NO -+" -+SMB_INFO_ENABLES="$SMB_INFO_ENABLES -+\$enabled{cyrus_sasl} = \"NO\";" -+ -+fi -+ -+ -+MAKE_SETTINGS="$MAKE_SETTINGS -+SASL_LIBS = $SASL_LIBS -+SASL_CFLAGS = ${SASL_CFLAGS} -+SASL_CPPFLAGS = ${SASL_CPPFLAGS} -+SASL_LDFLAGS = ${SASL_LDFLAGS} -+" -+ -+ -+ -+ -+ MAKE_SETTINGS="$MAKE_SETTINGS -+server_service_kdc_ENABLE = $HAVE_KRB5 -+" -+SMB_INFO_ENABLES="$SMB_INFO_ENABLES -+\$enabled{server_service_kdc} = \"$HAVE_KRB5\";" -+ -+ -+for ac_header in linux/inotify.h asm/unistd.h sys/inotify.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+eval as_val=\$$as_ac_Header -+ if test "x$as_val" = x""yes; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF - ac_cv_func_inotify_init=no fi @@ -104705,7 +108618,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -99942,41 +44235,18 @@ +@@ -104735,41 +46599,18 @@ return 0; } _ACEOF @@ -104751,7 +108664,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -100020,17 +44290,13 @@ +@@ -104813,17 +46654,13 @@ fi @@ -104772,7 +108685,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -100041,56 +44307,29 @@ +@@ -104834,56 +46671,29 @@ return 0; } _ACEOF @@ -104836,7 +108749,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include int -@@ -100101,41 +44340,18 @@ +@@ -104894,41 +46704,18 @@ return 0; } _ACEOF @@ -104882,7 +108795,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi -@@ -100159,151 +44375,12 @@ +@@ -104952,151 +46739,12 @@ fi @@ -105039,7 +108952,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -@@ -100617,151 +44694,12 @@ +@@ -105410,151 +47058,12 @@ @@ -105195,7 +109108,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF fi -@@ -100771,23 +44709,17 @@ +@@ -105564,23 +47073,17 @@ @@ -105222,7 +109135,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. -@@ -100805,54 +44737,28 @@ +@@ -105598,54 +47101,28 @@ return 0; } _ACEOF @@ -105284,7 +109197,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure cat >>confdefs.h <<_ACEOF #define HAVE_LIBZ 1 _ACEOF -@@ -100868,18 +44774,13 @@ +@@ -105661,18 +47138,13 @@ fi @@ -105306,7 +109219,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure /* end confdefs.h. */ #include -@@ -100897,40 +44798,19 @@ +@@ -105690,40 +47162,19 @@ return 0; } _ACEOF @@ -105349,7 +109262,33 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$samba_cv_zlib_1_2_3" >&6; } if test x"$ac_cv_header_zlib_h" = x"yes" -a \ -@@ -101044,87 +44924,54 @@ +@@ -105745,7 +47196,7 @@ + + + # Check whether --enable-dmalloc was given. +-if test "${enable_dmalloc+set}" = set; then ++if test "${enable_dmalloc+set}" = set; then : + enableval=$enable_dmalloc; + fi + +@@ -105753,14 +47204,10 @@ + if test "x$enable_dmalloc" = xyes + then + +-cat >>confdefs.h <<\_ACEOF +-#define ENABLE_DMALLOC 1 +-_ACEOF ++$as_echo "#define ENABLE_DMALLOC 1" >>confdefs.h + + +-cat >>confdefs.h <<\_ACEOF +-#define DMALLOC_FUNC_CHECK 1 +-_ACEOF ++$as_echo "#define DMALLOC_FUNC_CHECK 1" >>confdefs.h + + LIBS="$LIBS -ldmalloc" + fi +@@ -105858,87 +47305,54 @@ ################################################# # Display summary of libraries detected @@ -105453,7 +109392,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)" fi -@@ -101183,13 +45030,13 @@ +@@ -105997,13 +47411,13 @@ case $ac_val in #( *${as_nl}*) case $ac_var in #( @@ -105469,7 +109408,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure esac ;; esac done -@@ -101197,8 +45044,8 @@ +@@ -106011,8 +47425,8 @@ (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) @@ -105480,7 +109419,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" -@@ -101221,11 +45068,11 @@ +@@ -106035,11 +47449,11 @@ if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && @@ -105494,7 +109433,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi -@@ -101245,8 +45092,8 @@ +@@ -106059,8 +47473,8 @@ ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. @@ -105505,7 +109444,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure done LIBOBJS=$ac_libobjs -@@ -101270,9 +45117,10 @@ +@@ -106084,9 +47498,10 @@ ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" @@ -105518,7 +109457,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. -@@ -101282,17 +45130,18 @@ +@@ -106096,17 +47511,18 @@ debug=false ac_cs_recheck=false ac_cs_silent=false @@ -105544,7 +109483,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which -@@ -101300,23 +45149,15 @@ +@@ -106114,23 +47530,15 @@ alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else @@ -105573,7 +109512,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure as_nl=' ' export as_nl -@@ -101324,7 +45165,13 @@ +@@ -106138,7 +47546,13 @@ as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo @@ -105588,7 +109527,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure as_echo='printf %s\n' as_echo_n='printf %s' else -@@ -101335,7 +45182,7 @@ +@@ -106149,7 +47563,7 @@ as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; @@ -105597,7 +109536,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; -@@ -101358,13 +45205,6 @@ +@@ -106172,13 +47586,6 @@ } fi @@ -105611,7 +109550,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure # IFS # We need space, tab and new line, in precisely that order. Quoting is -@@ -101374,15 +45214,15 @@ +@@ -106188,15 +47595,15 @@ IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. @@ -105630,7 +109569,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure IFS=$as_save_IFS ;; -@@ -101394,12 +45234,16 @@ +@@ -106208,12 +47615,16 @@ fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 @@ -105651,7 +109590,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure done PS1='$ ' PS2='> ' -@@ -101411,7 +45255,89 @@ +@@ -106225,7 +47636,89 @@ LANGUAGE=C export LANGUAGE @@ -105742,7 +109681,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr -@@ -101425,8 +45351,12 @@ +@@ -106239,8 +47732,12 @@ as_basename=false fi @@ -105756,7 +109695,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ -@@ -101446,76 +45376,25 @@ +@@ -106260,76 +47757,25 @@ } s/.*/./; q'` @@ -105844,7 +109783,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then -@@ -101544,8 +45423,56 @@ +@@ -106358,8 +47804,56 @@ rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -105902,7 +109841,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else test -d ./-p && rmdir ./-p as_mkdir_p=false -@@ -101564,10 +45491,10 @@ +@@ -106378,10 +47872,10 @@ if test -d "$1"; then test -d "$1/."; else @@ -105915,7 +109854,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ???[sx]*):;;*)false;;esac;fi '\'' sh ' -@@ -101582,13 +45509,19 @@ +@@ -106396,13 +47890,19 @@ exec 6>&1 @@ -105937,7 +109876,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS -@@ -101620,13 +45553,15 @@ +@@ -106434,13 +47934,15 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ @@ -105956,7 +109895,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files -@@ -101645,16 +45580,17 @@ +@@ -106459,16 +47961,17 @@ Configuration commands: $config_commands @@ -105978,7 +109917,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -@@ -101689,6 +45625,8 @@ +@@ -106503,6 +48006,8 @@ ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; @@ -105987,7 +109926,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) -@@ -101696,20 +45634,19 @@ +@@ -106510,20 +48015,19 @@ case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac @@ -106012,7 +109951,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ -@@ -101717,11 +45654,10 @@ +@@ -106531,11 +48035,10 @@ ac_cs_silent=: ;; # This is an error. @@ -106027,7 +109966,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ac_need_defaults=false ;; esac -@@ -101814,9 +45750,7 @@ +@@ -106628,9 +48131,7 @@ "pkgconfig/smbsharemodes.pc") CONFIG_FILES="$CONFIG_FILES pkgconfig/smbsharemodes.pc" ;; "../examples/libsmbclient/Makefile.internal") CONFIG_FILES="$CONFIG_FILES ../examples/libsmbclient/Makefile.internal" ;; @@ -106038,7 +109977,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure esac done -@@ -101843,7 +45777,7 @@ +@@ -106657,7 +48158,7 @@ trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 @@ -106047,7 +109986,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure } # Create a (secure) tmp directory for tmp files. -@@ -101854,11 +45788,7 @@ +@@ -106668,11 +48169,7 @@ { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") @@ -106060,7 +109999,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. -@@ -101866,10 +45796,16 @@ +@@ -106680,10 +48177,16 @@ if test -n "$CONFIG_FILES"; then @@ -106079,7 +110018,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else ac_cs_awk_cr=$ac_cr fi -@@ -101883,24 +45819,18 @@ +@@ -106697,24 +48200,18 @@ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || @@ -106107,7 +110046,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi -@@ -101922,7 +45852,7 @@ +@@ -106736,7 +48233,7 @@ t delim :nl h @@ -106116,7 +110055,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p -@@ -101936,7 +45866,7 @@ +@@ -106750,7 +48247,7 @@ t nl :delim h @@ -106125,7 +110064,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p -@@ -101989,9 +45919,7 @@ +@@ -106803,9 +48300,7 @@ else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ @@ -106136,7 +110075,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), -@@ -102032,9 +45960,7 @@ +@@ -106846,9 +48341,7 @@ if test -z "$ac_t"; then break elif $ac_last_try; then @@ -106147,7 +110086,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi -@@ -102119,9 +46045,7 @@ +@@ -106933,9 +48426,7 @@ _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 @@ -106158,7 +110097,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure fi # test -n "$CONFIG_HEADERS" -@@ -102134,9 +46058,7 @@ +@@ -106948,9 +48439,7 @@ esac case $ac_mode$ac_tag in :[FHL]*:*);; @@ -106169,7 +110108,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac -@@ -102164,12 +46086,10 @@ +@@ -106978,12 +48467,10 @@ [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || @@ -106184,7 +110123,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure done # Let's still pretend it is `configure' which instantiates (i.e., don't -@@ -102180,7 +46100,7 @@ +@@ -106994,7 +48481,7 @@ `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" @@ -106193,7 +110132,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. -@@ -102193,9 +46113,7 @@ +@@ -107007,9 +48494,7 @@ case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ @@ -106204,7 +110143,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure esac ;; esac -@@ -102223,47 +46141,7 @@ +@@ -107037,47 +48522,7 @@ q } s/.*/./; q'` @@ -106253,7 +110192,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ac_builddir=. case "$ac_dir" in -@@ -102315,7 +46193,6 @@ +@@ -107129,7 +48574,6 @@ # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= @@ -106261,7 +110200,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ac_sed_dataroot=' /datarootdir/ { p -@@ -102325,12 +46202,11 @@ +@@ -107139,12 +48583,11 @@ /@docdir@/p /@infodir@/p /@localedir@/p @@ -106276,7 +110215,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -@@ -102340,7 +46216,7 @@ +@@ -107154,7 +48597,7 @@ s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g @@ -106285,7 +110224,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure esac _ACEOF -@@ -102368,14 +46244,12 @@ +@@ -107182,14 +48625,12 @@ $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ @@ -106302,7 +110241,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} -@@ -102385,9 +46259,7 @@ +@@ -107199,9 +48640,7 @@ -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ @@ -106313,7 +110252,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure ;; :H) # -@@ -102398,29 +46270,23 @@ +@@ -107212,29 +48651,23 @@ $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ @@ -106348,7 +110287,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac -@@ -102446,15 +46312,12 @@ +@@ -107260,15 +48693,12 @@ done # for ac_tag @@ -106366,7 +110305,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure # configure is writing to config.log, and then calls config.status. -@@ -102475,10 +46338,10 @@ +@@ -107289,10 +48719,10 @@ exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. @@ -106379,7 +110318,7 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi -@@ -102489,8 +46352,8 @@ +@@ -107303,8 +48733,8 @@ # Print very concise instructions on building/use if test "x$enable_dmalloc" = xyes then @@ -106390,17 +110329,17 @@ diff -Naur samba-3.4.5/source3/configure samba-3.4.5.patch/source3/configure + { $as_echo "$as_me:${as_lineno-$LINENO}: result: \$ eval \\`dmalloc samba\\`." >&5 $as_echo " \$ eval \\`dmalloc samba\\`." >&6; } fi -diff -Naur samba-3.4.5/source3/configure.in samba-3.4.5.patch/source3/configure.in ---- samba-3.4.5/source3/configure.in 2010-01-18 12:38:09.000000000 +0100 -+++ samba-3.4.5.patch/source3/configure.in 2010-02-18 09:19:10.615600853 +0100 -@@ -1224,34 +1224,7 @@ +diff -Naur samba-3.5.2/source3/configure.in samba-3.5.2.patch/source3/configure.in +--- samba-3.5.2/source3/configure.in 2010-04-01 15:26:22.000000000 +0200 ++++ samba-3.5.2.patch/source3/configure.in 2010-04-18 00:12:00.732273152 +0200 +@@ -1191,36 +1191,7 @@ # # # -case "$host_os" in - *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu) - # glibc <= 2.3.2 has a broken getgrouplist -- AC_TRY_RUN([ +- AC_CACHE_CHECK([for good getgrouplist],samba_cv_linux_getgrouplist_ok,[AC_TRY_RUN([ -#include -#include -main() { @@ -106416,8 +110355,10 @@ diff -Naur samba-3.4.5/source3/configure.in samba-3.4.5.patch/source3/configure. -#endif - exit(0); -} --], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no]) -- if test x"$linux_getgrouplist_ok" = x"yes"; then +-], [samba_cv_linux_getgrouplist_ok=yes], +- [samba_cv_linux_getgrouplist_ok=no], +- [samba_cv_linux_getgrouplist_ok=cross])]) +- if test x"$samba_cv_linux_getgrouplist_ok" = x"yes"; then - AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist]) - fi - ;; @@ -106429,10 +110370,10 @@ diff -Naur samba-3.4.5/source3/configure.in samba-3.4.5.patch/source3/configure. # # stat64 family may need on some systems, notably ReliantUNIX -diff -Naur samba-3.4.5/source3/include/config.h.in samba-3.4.5.patch/source3/include/config.h.in ---- samba-3.4.5/source3/include/config.h.in 2010-01-18 13:04:17.000000000 +0100 -+++ samba-3.4.5.patch/source3/include/config.h.in 2010-02-18 09:20:10.000000000 +0100 -@@ -2127,19 +2127,21 @@ +diff -Naur samba-3.5.2/source3/include/config.h.in samba-3.5.2.patch/source3/include/config.h.in +--- samba-3.5.2/source3/include/config.h.in 2010-04-06 09:43:13.000000000 +0200 ++++ samba-3.5.2.patch/source3/include/config.h.in 2010-04-18 00:12:16.000000000 +0200 +@@ -2222,19 +2222,21 @@ /* Whether struct ifaddrs is available */ #undef HAVE_STRUCT_IFADDRS @@ -106458,7 +110399,7 @@ diff -Naur samba-3.4.5/source3/include/config.h.in samba-3.4.5.patch/source3/inc #undef HAVE_STRUCT_SIGEVENT_SIGEV_VALUE_SIVAL_PTR /* Define to 1 if the system has the type `struct sockaddr'. */ -@@ -2148,37 +2150,37 @@ +@@ -2243,37 +2245,37 @@ /* Define to 1 if the system has the type `struct sockaddr_in6'. */ #undef HAVE_STRUCT_SOCKADDR_IN6 @@ -106506,7 +110447,7 @@ diff -Naur samba-3.4.5/source3/include/config.h.in samba-3.4.5.patch/source3/inc #undef HAVE_STRUCT_STAT_ST_UMTIME /* Whether we have struct timespec */ -@@ -2913,6 +2915,9 @@ +@@ -3026,6 +3028,9 @@ /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME diff --git a/packages/network/samba/url b/packages/network/samba/url index f42277542e..3de7229e21 100644 --- a/packages/network/samba/url +++ b/packages/network/samba/url @@ -1 +1 @@ -http://samba.org/samba/ftp/stable/samba-3.4.5.tar.gz \ No newline at end of file +http://samba.org/samba/ftp/stable/samba-3.5.2.tar.gz \ No newline at end of file From 94a46fb5a0dfe8c23c6efe98cd63e21a8672b9e5 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 18 Apr 2010 10:22:53 +0200 Subject: [PATCH 051/171] busybox: - add some upstream patches --- .../busybox/patches/busybox-1.16.1-dnsd.diff | 29 ++++ .../patches/busybox-1.16.1-hwclock.diff | 152 ++++++++++++++++++ .../patches/busybox-1.16.1-indexcgi.diff | 12 ++ 3 files changed, 193 insertions(+) create mode 100644 packages/sysutils/busybox/patches/busybox-1.16.1-dnsd.diff create mode 100644 packages/sysutils/busybox/patches/busybox-1.16.1-hwclock.diff create mode 100644 packages/sysutils/busybox/patches/busybox-1.16.1-indexcgi.diff diff --git a/packages/sysutils/busybox/patches/busybox-1.16.1-dnsd.diff b/packages/sysutils/busybox/patches/busybox-1.16.1-dnsd.diff new file mode 100644 index 0000000000..414ac33e3e --- /dev/null +++ b/packages/sysutils/busybox/patches/busybox-1.16.1-dnsd.diff @@ -0,0 +1,29 @@ +diff -urpN busybox-1.16.1/include/platform.h busybox-1.16.1-dnsd/include/platform.h +--- busybox-1.16.1/include/platform.h 2010-03-28 10:43:35.000000000 -0700 ++++ busybox-1.16.1-dnsd/include/platform.h 2010-04-14 10:06:10.888341149 -0700 +@@ -291,10 +291,12 @@ typedef unsigned smalluint; + #if 1 /* if needed: !defined(arch1) && !defined(arch2) */ + # define ALIGN1 __attribute__((aligned(1))) + # define ALIGN2 __attribute__((aligned(2))) ++# define ALIGN4 __attribute__((aligned(4))) + #else + /* Arches which MUST have 2 or 4 byte alignment for everything are here */ + # define ALIGN1 + # define ALIGN2 ++# define ALIGN4 + #endif + + +diff -urpN busybox-1.16.1/networking/dnsd.c busybox-1.16.1-dnsd/networking/dnsd.c +--- busybox-1.16.1/networking/dnsd.c 2010-03-28 10:43:36.000000000 -0700 ++++ busybox-1.16.1-dnsd/networking/dnsd.c 2010-04-14 10:06:10.922348571 -0700 +@@ -459,7 +459,8 @@ int dnsd_main(int argc UNUSED_PARAM, cha + unsigned lsa_size; + int udps, opts; + uint16_t port = 53; +- uint8_t buf[MAX_PACK_LEN + 1]; ++ /* Ensure buf is 32bit aligned (we need 16bit, but 32bit can't hurt) */ ++ uint8_t buf[MAX_PACK_LEN + 1] ALIGN4; + + opts = getopt32(argv, "vi:c:t:p:d", &listen_interface, &fileconf, &sttl, &sport); + //if (opts & 0x1) // -v diff --git a/packages/sysutils/busybox/patches/busybox-1.16.1-hwclock.diff b/packages/sysutils/busybox/patches/busybox-1.16.1-hwclock.diff new file mode 100644 index 0000000000..63350aeb3c --- /dev/null +++ b/packages/sysutils/busybox/patches/busybox-1.16.1-hwclock.diff @@ -0,0 +1,152 @@ +diff -urpN busybox-1.16.1/util-linux/hwclock.c busybox-1.16.1-hwclock/util-linux/hwclock.c +--- busybox-1.16.1/util-linux/hwclock.c 2010-03-19 19:58:07.000000000 -0700 ++++ busybox-1.16.1-hwclock/util-linux/hwclock.c 2010-04-14 09:29:37.889208237 -0700 +@@ -109,10 +109,53 @@ static void to_sys_clock(const char **pp + + static void from_sys_clock(const char **pp_rtcname, int utc) + { +-#define TWEAK_USEC 200 +- struct tm tm_time; ++#if 1 + struct timeval tv; ++ struct tm tm_time; ++ int rtc; ++ ++ rtc = rtc_xopen(pp_rtcname, O_WRONLY); ++ gettimeofday(&tv, NULL); ++ /* Prepare tm_time */ ++ if (sizeof(time_t) == sizeof(tv.tv_sec)) { ++ if (utc) ++ gmtime_r((time_t*)&tv.tv_sec, &tm_time); ++ else ++ localtime_r((time_t*)&tv.tv_sec, &tm_time); ++ } else { ++ time_t t = tv.tv_sec; ++ if (utc) ++ gmtime_r(&t, &tm_time); ++ else ++ localtime_r(&t, &tm_time); ++ } ++#else ++/* Bloated code which tries to set hw clock with better precision. ++ * On x86, even though code does set hw clock within <1ms of exact ++ * whole seconds, apparently hw clock (at least on some machines) ++ * doesn't reset internal fractional seconds to 0, ++ * making all this a pointless excercise. ++ */ ++ /* If we see that we are N usec away from whole second, ++ * we'll sleep for N-ADJ usecs. ADJ corrects for the fact ++ * that CPU is not infinitely fast. ++ * On infinitely fast CPU, next wakeup would be ++ * on (exactly_next_whole_second - ADJ). On real CPUs, ++ * this difference between current time and whole second ++ * is less than ADJ (assuming system isn't heavily loaded). ++ */ ++ /* Small value of 256us gives very precise sync for 2+ GHz CPUs. ++ * Slower CPUs will fail to sync and will go to bigger ++ * ADJ values. qemu-emulated armv4tl with ~100 MHz ++ * performance ends up using ADJ ~= 4*1024 and it takes ++ * 2+ secs (2 tries with successively larger ADJ) ++ * to sync. Even straced one on the same qemu (very slow) ++ * takes only 4 tries. ++ */ ++#define TWEAK_USEC 256 + unsigned adj = TWEAK_USEC; ++ struct tm tm_time; ++ struct timeval tv; + int rtc = rtc_xopen(pp_rtcname, O_WRONLY); + + /* Try to catch the moment when whole second is close */ +@@ -124,55 +167,64 @@ static void from_sys_clock(const char ** + + t = tv.tv_sec; + rem_usec = 1000000 - tv.tv_usec; +- if (rem_usec < 1024) { +- /* Less than 1ms to next second. Good enough */ ++ if (rem_usec < adj) { ++ /* Close enough */ + small_rem: + t++; + } + +- /* Prepare tm */ ++ /* Prepare tm_time from t */ + if (utc) + gmtime_r(&t, &tm_time); /* may read /etc/xxx (it takes time) */ + else + localtime_r(&t, &tm_time); /* same */ +- tm_time.tm_isdst = 0; ++ ++ if (adj >= 32*1024) { ++ break; /* 32 ms diff and still no luck?? give up trying to sync */ ++ } + + /* gmtime/localtime took some time, re-get cur time */ + gettimeofday(&tv, NULL); + +- if (tv.tv_sec < t /* may happen if rem_usec was < 1024 */ +- || (tv.tv_sec == t && tv.tv_usec < 1024) ++ if (tv.tv_sec < t /* we are still in old second */ ++ || (tv.tv_sec == t && tv.tv_usec < adj) /* not too far into next second */ + ) { +- /* We are not too far into next second. Good. */ +- break; +- } +- adj += 32; /* 2^(10-5) = 2^5 = 32 iterations max */ +- if (adj >= 1024) { +- /* Give up trying to sync */ +- break; ++ break; /* good, we are in sync! */ + } + +- /* Try to sync up by sleeping */ + rem_usec = 1000000 - tv.tv_usec; +- if (rem_usec < 1024) { +- goto small_rem; /* already close, don't sleep */ ++ if (rem_usec < adj) { ++ t = tv.tv_sec; ++ goto small_rem; /* already close to next sec, don't sleep */ + } +- /* Need to sleep. +- * Note that small adj on slow processors can make us +- * to always overshoot tv.tv_usec < 1024 check on next +- * iteration. That's why adj is increased on each iteration. +- * This also allows it to be reused as a loop limiter. +- */ +- usleep(rem_usec - adj); +- } + +- xioctl(rtc, RTC_SET_TIME, &tm_time); ++ /* Try to sync up by sleeping */ ++ usleep(rem_usec - adj); + +- /* Debug aid to find "good" TWEAK_USEC. ++ /* Jump to 1ms diff, then increase fast (x2): EVERY loop ++ * takes ~1 sec, people won't like slowly converging code here! ++ */ ++ //bb_error_msg("adj:%d tv.tv_usec:%d", adj, (int)tv.tv_usec); ++ if (adj < 512) ++ adj = 512; ++ /* ... and if last "overshoot" does not look insanely big, ++ * just use it as adj increment. This makes convergence faster. ++ */ ++ if (tv.tv_usec < adj * 8) { ++ adj += tv.tv_usec; ++ continue; ++ } ++ adj *= 2; ++ } ++ /* Debug aid to find "optimal" TWEAK_USEC with nearly exact sync. + * Look for a value which makes tv_usec close to 999999 or 0. +- * for 2.20GHz Intel Core 2: TWEAK_USEC ~= 200 ++ * For 2.20GHz Intel Core 2: optimal TWEAK_USEC ~= 200 + */ +- //bb_error_msg("tv.tv_usec:%d adj:%d", (int)tv.tv_usec, adj); ++ //bb_error_msg("tv.tv_usec:%d", (int)tv.tv_usec); ++#endif ++ ++ tm_time.tm_isdst = 0; ++ xioctl(rtc, RTC_SET_TIME, &tm_time); + + if (ENABLE_FEATURE_CLEAN_UP) + close(rtc); diff --git a/packages/sysutils/busybox/patches/busybox-1.16.1-indexcgi.diff b/packages/sysutils/busybox/patches/busybox-1.16.1-indexcgi.diff new file mode 100644 index 0000000000..b9e1d0899a --- /dev/null +++ b/packages/sysutils/busybox/patches/busybox-1.16.1-indexcgi.diff @@ -0,0 +1,12 @@ +diff -urpN busybox-1.16.1/networking/httpd_indexcgi.c busybox-1.16.1-indexcgi/networking/httpd_indexcgi.c +--- busybox-1.16.1/networking/httpd_indexcgi.c 2010-03-19 19:58:07.000000000 -0700 ++++ busybox-1.16.1-indexcgi/networking/httpd_indexcgi.c 2010-04-15 08:39:01.077063367 -0700 +@@ -315,7 +315,7 @@ int main(int argc, char *argv[]) + if (S_ISREG(cdir->dl_mode)) + fmt_ull(cdir->dl_size); + fmt_str(""); +- tm = gmtime(&cdir->dl_mtime); ++ ptm = gmtime(&cdir->dl_mtime); + fmt_04u(1900 + ptm->tm_year); *dst++ = '-'; + fmt_02u(ptm->tm_mon + 1); *dst++ = '-'; + fmt_02u(ptm->tm_mday); *dst++ = ' '; From b68314f6fc4aaec6d444edb887a43d491ee480ae Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 19 Apr 2010 11:43:08 +0200 Subject: [PATCH 052/171] config/options: - adding some firmware for radeon cards to kernel --- config/options | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/options b/config/options index e7c6926019..fef80e21d3 100644 --- a/config/options +++ b/config/options @@ -68,9 +68,10 @@ get_graphicdrivers() { DRM_DRIVERS="$DRM_DRIVERS intel" fi - if [ $drv = r200 -o $drv = r300 -o $drv = r600 -o $drv = radeon ]; then + if [ $drv = r200 -o $drv = r300 -o $drv = r600 -o $drv = radeon ]; then XORG_DRIVERS="$XORG_DRIVERS ati" DRM_DRIVERS="$DRM_DRIVERS radeon" + KERNEL_FIRMWARE="$KERNEL_FIRMWARE radeon" fi if [ $drv = nvidia ]; then From d5cc6dd6e76e00c8e2308c77900d8f092407a892 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 19 Apr 2010 11:43:49 +0200 Subject: [PATCH 053/171] config/path: - fix kernel path if we have other linux-* packages --- config/path | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/path b/config/path index 11f70592ee..a4c918e264 100644 --- a/config/path +++ b/config/path @@ -217,7 +217,7 @@ VERSION_SUFFIX=$TARGET_ARCH fi kernel_path() { - ls -d $ROOT/$BUILD/linux* + ls -d $ROOT/$BUILD/linux-[0-9]* } require_eglibc() { From afb02829e111bda60d41075685e1ef164f300b37 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 20 Apr 2010 01:05:48 +0200 Subject: [PATCH 054/171] config/options: - revert r2585 --- config/options | 1 - 1 file changed, 1 deletion(-) diff --git a/config/options b/config/options index fef80e21d3..60e29534c1 100644 --- a/config/options +++ b/config/options @@ -71,7 +71,6 @@ get_graphicdrivers() { if [ $drv = r200 -o $drv = r300 -o $drv = r600 -o $drv = radeon ]; then XORG_DRIVERS="$XORG_DRIVERS ati" DRM_DRIVERS="$DRM_DRIVERS radeon" - KERNEL_FIRMWARE="$KERNEL_FIRMWARE radeon" fi if [ $drv = nvidia ]; then From b6e906e41686902b2d29e58f098c0fca034d7847 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 20 Apr 2010 01:06:45 +0200 Subject: [PATCH 055/171] firmware: - syncing From 5bcf9ad865aa8bbf66d480029a85702d294b477c Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 20 Apr 2010 03:14:25 +0200 Subject: [PATCH 056/171] firmware: - rename to linux-firmware --- packages/{firmware => linux-firmware}/install | 0 packages/{firmware => linux-firmware}/ipw2100-fw/install | 0 packages/{firmware => linux-firmware}/ipw2100-fw/url | 0 packages/{firmware => linux-firmware}/ipw2200-fw/install | 0 packages/{firmware => linux-firmware}/ipw2200-fw/url | 0 packages/{firmware => linux-firmware}/iwlwifi-1000-ucode/install | 0 packages/{firmware => linux-firmware}/iwlwifi-1000-ucode/url | 0 packages/{firmware => linux-firmware}/iwlwifi-3945-ucode/install | 0 packages/{firmware => linux-firmware}/iwlwifi-3945-ucode/url | 0 packages/{firmware => linux-firmware}/iwlwifi-4965-ucode/install | 0 packages/{firmware => linux-firmware}/iwlwifi-4965-ucode/url | 0 packages/{firmware => linux-firmware}/iwlwifi-5000-ucode/install | 0 packages/{firmware => linux-firmware}/iwlwifi-5000-ucode/url | 0 packages/{firmware => linux-firmware}/iwlwifi-5150-ucode/install | 0 packages/{firmware => linux-firmware}/iwlwifi-5150-ucode/url | 0 packages/{firmware => linux-firmware}/iwlwifi-6000-ucode/install | 0 packages/{firmware => linux-firmware}/iwlwifi-6000-ucode/url | 0 17 files changed, 0 insertions(+), 0 deletions(-) rename packages/{firmware => linux-firmware}/install (100%) rename packages/{firmware => linux-firmware}/ipw2100-fw/install (100%) rename packages/{firmware => linux-firmware}/ipw2100-fw/url (100%) rename packages/{firmware => linux-firmware}/ipw2200-fw/install (100%) rename packages/{firmware => linux-firmware}/ipw2200-fw/url (100%) rename packages/{firmware => linux-firmware}/iwlwifi-1000-ucode/install (100%) rename packages/{firmware => linux-firmware}/iwlwifi-1000-ucode/url (100%) rename packages/{firmware => linux-firmware}/iwlwifi-3945-ucode/install (100%) rename packages/{firmware => linux-firmware}/iwlwifi-3945-ucode/url (100%) rename packages/{firmware => linux-firmware}/iwlwifi-4965-ucode/install (100%) rename packages/{firmware => linux-firmware}/iwlwifi-4965-ucode/url (100%) rename packages/{firmware => linux-firmware}/iwlwifi-5000-ucode/install (100%) rename packages/{firmware => linux-firmware}/iwlwifi-5000-ucode/url (100%) rename packages/{firmware => linux-firmware}/iwlwifi-5150-ucode/install (100%) rename packages/{firmware => linux-firmware}/iwlwifi-5150-ucode/url (100%) rename packages/{firmware => linux-firmware}/iwlwifi-6000-ucode/install (100%) rename packages/{firmware => linux-firmware}/iwlwifi-6000-ucode/url (100%) diff --git a/packages/firmware/install b/packages/linux-firmware/install similarity index 100% rename from packages/firmware/install rename to packages/linux-firmware/install diff --git a/packages/firmware/ipw2100-fw/install b/packages/linux-firmware/ipw2100-fw/install similarity index 100% rename from packages/firmware/ipw2100-fw/install rename to packages/linux-firmware/ipw2100-fw/install diff --git a/packages/firmware/ipw2100-fw/url b/packages/linux-firmware/ipw2100-fw/url similarity index 100% rename from packages/firmware/ipw2100-fw/url rename to packages/linux-firmware/ipw2100-fw/url diff --git a/packages/firmware/ipw2200-fw/install b/packages/linux-firmware/ipw2200-fw/install similarity index 100% rename from packages/firmware/ipw2200-fw/install rename to packages/linux-firmware/ipw2200-fw/install diff --git a/packages/firmware/ipw2200-fw/url b/packages/linux-firmware/ipw2200-fw/url similarity index 100% rename from packages/firmware/ipw2200-fw/url rename to packages/linux-firmware/ipw2200-fw/url diff --git a/packages/firmware/iwlwifi-1000-ucode/install b/packages/linux-firmware/iwlwifi-1000-ucode/install similarity index 100% rename from packages/firmware/iwlwifi-1000-ucode/install rename to packages/linux-firmware/iwlwifi-1000-ucode/install diff --git a/packages/firmware/iwlwifi-1000-ucode/url b/packages/linux-firmware/iwlwifi-1000-ucode/url similarity index 100% rename from packages/firmware/iwlwifi-1000-ucode/url rename to packages/linux-firmware/iwlwifi-1000-ucode/url diff --git a/packages/firmware/iwlwifi-3945-ucode/install b/packages/linux-firmware/iwlwifi-3945-ucode/install similarity index 100% rename from packages/firmware/iwlwifi-3945-ucode/install rename to packages/linux-firmware/iwlwifi-3945-ucode/install diff --git a/packages/firmware/iwlwifi-3945-ucode/url b/packages/linux-firmware/iwlwifi-3945-ucode/url similarity index 100% rename from packages/firmware/iwlwifi-3945-ucode/url rename to packages/linux-firmware/iwlwifi-3945-ucode/url diff --git a/packages/firmware/iwlwifi-4965-ucode/install b/packages/linux-firmware/iwlwifi-4965-ucode/install similarity index 100% rename from packages/firmware/iwlwifi-4965-ucode/install rename to packages/linux-firmware/iwlwifi-4965-ucode/install diff --git a/packages/firmware/iwlwifi-4965-ucode/url b/packages/linux-firmware/iwlwifi-4965-ucode/url similarity index 100% rename from packages/firmware/iwlwifi-4965-ucode/url rename to packages/linux-firmware/iwlwifi-4965-ucode/url diff --git a/packages/firmware/iwlwifi-5000-ucode/install b/packages/linux-firmware/iwlwifi-5000-ucode/install similarity index 100% rename from packages/firmware/iwlwifi-5000-ucode/install rename to packages/linux-firmware/iwlwifi-5000-ucode/install diff --git a/packages/firmware/iwlwifi-5000-ucode/url b/packages/linux-firmware/iwlwifi-5000-ucode/url similarity index 100% rename from packages/firmware/iwlwifi-5000-ucode/url rename to packages/linux-firmware/iwlwifi-5000-ucode/url diff --git a/packages/firmware/iwlwifi-5150-ucode/install b/packages/linux-firmware/iwlwifi-5150-ucode/install similarity index 100% rename from packages/firmware/iwlwifi-5150-ucode/install rename to packages/linux-firmware/iwlwifi-5150-ucode/install diff --git a/packages/firmware/iwlwifi-5150-ucode/url b/packages/linux-firmware/iwlwifi-5150-ucode/url similarity index 100% rename from packages/firmware/iwlwifi-5150-ucode/url rename to packages/linux-firmware/iwlwifi-5150-ucode/url diff --git a/packages/firmware/iwlwifi-6000-ucode/install b/packages/linux-firmware/iwlwifi-6000-ucode/install similarity index 100% rename from packages/firmware/iwlwifi-6000-ucode/install rename to packages/linux-firmware/iwlwifi-6000-ucode/install diff --git a/packages/firmware/iwlwifi-6000-ucode/url b/packages/linux-firmware/iwlwifi-6000-ucode/url similarity index 100% rename from packages/firmware/iwlwifi-6000-ucode/url rename to packages/linux-firmware/iwlwifi-6000-ucode/url From d5cc8ddbd6679f9065ce7e74a28dcc0bb3f1543e Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 20 Apr 2010 03:15:29 +0200 Subject: [PATCH 057/171] linux: - add some firmware bloops for radeon based graphic cards to build into the kernel --- licenses/Radeon_rlc.txt | 51 ++++++++++++++++++ .../linux/firmware/radeon/LICENSE.radeon_rlc | 51 ++++++++++++++++++ packages/linux/firmware/radeon/R600_rlc.bin | Bin 0 -> 3072 bytes packages/linux/firmware/radeon/R700_rlc.bin | Bin 0 -> 4096 bytes packages/linux/firmware/url.txt | 1 + packages/linux/unpack | 3 ++ 6 files changed, 106 insertions(+) create mode 100644 licenses/Radeon_rlc.txt create mode 100644 packages/linux/firmware/radeon/LICENSE.radeon_rlc create mode 100644 packages/linux/firmware/radeon/R600_rlc.bin create mode 100644 packages/linux/firmware/radeon/R700_rlc.bin create mode 100644 packages/linux/firmware/url.txt diff --git a/licenses/Radeon_rlc.txt b/licenses/Radeon_rlc.txt new file mode 100644 index 0000000000..4ece3404c9 --- /dev/null +++ b/licenses/Radeon_rlc.txt @@ -0,0 +1,51 @@ +Copyright (C) 2009, 2010 Advanced Micro Devices, Inc. All rights reserved. + +REDISTRIBUTION: Permission is hereby granted, free of any license fees, +to any person obtaining a copy of this microcode (the "Software"), to +install, reproduce, copy and distribute copies, in binary form only, of +the Software and to permit persons to whom the Software is provided to +do the same, provided that the following conditions are met: + +No reverse engineering, decompilation, or disassembly of this Software +is permitted. + +Redistributions must reproduce the above copyright notice, this +permission notice, and the following disclaimers and notices in the +Software documentation and/or other materials provided with the +Software. + +DISCLAIMER: THE USE OF THE SOFTWARE IS AT YOUR SOLE RISK. THE SOFTWARE +IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND AND COPYRIGHT +HOLDER AND ITS LICENSORS EXPRESSLY DISCLAIM ALL WARRANTIES, EXPRESS AND +IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +COPYRIGHT HOLDER AND ITS LICENSORS DO NOT WARRANT THAT THE SOFTWARE WILL +MEET YOUR REQUIREMENTS, OR THAT THE OPERATION OF THE SOFTWARE WILL BE +UNINTERRUPTED OR ERROR-FREE. THE ENTIRE RISK ASSOCIATED WITH THE USE OF +THE SOFTWARE IS ASSUMED BY YOU. FURTHERMORE, COPYRIGHT HOLDER AND ITS +LICENSORS DO NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE +OR THE RESULTS OF THE USE OF THE SOFTWARE IN TERMS OF ITS CORRECTNESS, +ACCURACY, RELIABILITY, CURRENTNESS, OR OTHERWISE. + +DISCLAIMER: UNDER NO CIRCUMSTANCES INCLUDING NEGLIGENCE, SHALL COPYRIGHT +HOLDER AND ITS LICENSORS OR ITS DIRECTORS, OFFICERS, EMPLOYEES OR AGENTS +("AUTHORIZED REPRESENTATIVES") BE LIABLE FOR ANY INCIDENTAL, INDIRECT, +SPECIAL OR CONSEQUENTIAL DAMAGES (INCLUDING DAMAGES FOR LOSS OF BUSINESS +PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, AND THE +LIKE) ARISING OUT OF THE USE, MISUSE OR INABILITY TO USE THE SOFTWARE, +BREACH OR DEFAULT, INCLUDING THOSE ARISING FROM INFRINGEMENT OR ALLEGED +INFRINGEMENT OF ANY PATENT, TRADEMARK, COPYRIGHT OR OTHER INTELLECTUAL +PROPERTY RIGHT EVEN IF COPYRIGHT HOLDER AND ITS AUTHORIZED +REPRESENTATIVES HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN +NO EVENT SHALL COPYRIGHT HOLDER OR ITS AUTHORIZED REPRESENTATIVES TOTAL +LIABILITY FOR ALL DAMAGES, LOSSES, AND CAUSES OF ACTION (WHETHER IN +CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE) EXCEED THE AMOUNT OF +US$10. + +Notice: The Software is subject to United States export laws and +regulations. You agree to comply with all domestic and international +export laws and regulations that apply to the Software, including but +not limited to the Export Administration Regulations administered by the +U.S. Department of Commerce and International Traffic in Arm Regulations +administered by the U.S. Department of State. These laws include +restrictions on destinations, end users and end use. diff --git a/packages/linux/firmware/radeon/LICENSE.radeon_rlc b/packages/linux/firmware/radeon/LICENSE.radeon_rlc new file mode 100644 index 0000000000..4ece3404c9 --- /dev/null +++ b/packages/linux/firmware/radeon/LICENSE.radeon_rlc @@ -0,0 +1,51 @@ +Copyright (C) 2009, 2010 Advanced Micro Devices, Inc. All rights reserved. + +REDISTRIBUTION: Permission is hereby granted, free of any license fees, +to any person obtaining a copy of this microcode (the "Software"), to +install, reproduce, copy and distribute copies, in binary form only, of +the Software and to permit persons to whom the Software is provided to +do the same, provided that the following conditions are met: + +No reverse engineering, decompilation, or disassembly of this Software +is permitted. + +Redistributions must reproduce the above copyright notice, this +permission notice, and the following disclaimers and notices in the +Software documentation and/or other materials provided with the +Software. + +DISCLAIMER: THE USE OF THE SOFTWARE IS AT YOUR SOLE RISK. THE SOFTWARE +IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND AND COPYRIGHT +HOLDER AND ITS LICENSORS EXPRESSLY DISCLAIM ALL WARRANTIES, EXPRESS AND +IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +COPYRIGHT HOLDER AND ITS LICENSORS DO NOT WARRANT THAT THE SOFTWARE WILL +MEET YOUR REQUIREMENTS, OR THAT THE OPERATION OF THE SOFTWARE WILL BE +UNINTERRUPTED OR ERROR-FREE. THE ENTIRE RISK ASSOCIATED WITH THE USE OF +THE SOFTWARE IS ASSUMED BY YOU. FURTHERMORE, COPYRIGHT HOLDER AND ITS +LICENSORS DO NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE +OR THE RESULTS OF THE USE OF THE SOFTWARE IN TERMS OF ITS CORRECTNESS, +ACCURACY, RELIABILITY, CURRENTNESS, OR OTHERWISE. + +DISCLAIMER: UNDER NO CIRCUMSTANCES INCLUDING NEGLIGENCE, SHALL COPYRIGHT +HOLDER AND ITS LICENSORS OR ITS DIRECTORS, OFFICERS, EMPLOYEES OR AGENTS +("AUTHORIZED REPRESENTATIVES") BE LIABLE FOR ANY INCIDENTAL, INDIRECT, +SPECIAL OR CONSEQUENTIAL DAMAGES (INCLUDING DAMAGES FOR LOSS OF BUSINESS +PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, AND THE +LIKE) ARISING OUT OF THE USE, MISUSE OR INABILITY TO USE THE SOFTWARE, +BREACH OR DEFAULT, INCLUDING THOSE ARISING FROM INFRINGEMENT OR ALLEGED +INFRINGEMENT OF ANY PATENT, TRADEMARK, COPYRIGHT OR OTHER INTELLECTUAL +PROPERTY RIGHT EVEN IF COPYRIGHT HOLDER AND ITS AUTHORIZED +REPRESENTATIVES HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN +NO EVENT SHALL COPYRIGHT HOLDER OR ITS AUTHORIZED REPRESENTATIVES TOTAL +LIABILITY FOR ALL DAMAGES, LOSSES, AND CAUSES OF ACTION (WHETHER IN +CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE) EXCEED THE AMOUNT OF +US$10. + +Notice: The Software is subject to United States export laws and +regulations. You agree to comply with all domestic and international +export laws and regulations that apply to the Software, including but +not limited to the Export Administration Regulations administered by the +U.S. Department of Commerce and International Traffic in Arm Regulations +administered by the U.S. Department of State. These laws include +restrictions on destinations, end users and end use. diff --git a/packages/linux/firmware/radeon/R600_rlc.bin b/packages/linux/firmware/radeon/R600_rlc.bin new file mode 100644 index 0000000000000000000000000000000000000000..4b023f3ec39e7187e1d097f3e142f8027409cfab GIT binary patch literal 3072 zcmb7GZ){Ul6#u=~+pXJ58F9gX39C5Rn*x@&phOIX_QPV9NTP`!CDFuhYWP3a!W%25 z6Hvg86ixhOA_-pz(U72+Hd)L|sd1VPF&SuxBuX%0ekF7M&b{|_W55S*(%y5=J@=e@ z&iUPQ9z4|vFAFr%%h13O)ME~&{QabN@wbz|4iwz;SYPPoycwQy$VRo5U33( zZ=HnKcb)VQ%IO$n1YSE%`B6=KeZRp+k$My4gZw^tG3xPw#Mn0|`E968I2gw)QrS2r z2NZcTwBf*ap3yoIW8b3ePm|Yzapx}2eMcFk_onR&?Mr6x~&F}$yMPIM_OAG?6^ z$Zf0`yU6*L)q9a={?hwi(rwxcJeT);)ZWvj&FffQaOht|pYxKy%CP`X9J_|x(Id2R zmFqIspV@VT>oZ)Rwd+ZJ&UYCAj=*!Mzr*UM@6PwU|DV(&^DWL3i{vAeZ$;wRO_VFM z_FM$>`V{xuEMHOIdFr`AJ?9tciQ?4gCsr;>xigeINjaHID2;q!b%>Ntqpz*g#3cK>TV3w8`{c*i1bj~Lt)+)ysKM{l5>qI`@oNE5>=F&-Jz z`%|D#*oz!0Q1v+4Ivt#j{HymSw*gaxcC7B8R53A7Sp`LVK5AN~$bWB5nmFHu+8-UL zO}n^~KFD7l8{Sr&JNR3RsmcNVa`dT3-=mQpw(;#mIn$?g72Fr}TZ=R1U>~E!$3>)Edztw#S`e z&6j-32z6a6+^?(Pexzjz?#ue@!g!U^w(juFdwnxnPVUmQ@4scwZYQ>*w7A#&@lbZ=iNEcI}WF8u~FgVDahGS&o8haA|yS z7_TJX*ev6kc8U zdV>Cb>OZb)a^f)SYx)tbugbWIp8jk%dCN2}@K`rk&rRK47_$fxhi{^k`CH5R&S^ah zPC{%H+?RL{7gtl_v*{u8c-rxR_?Y|!u>-6xXNeKY1TN!~_>S2N)DFg~ z+wj~GJ^x?4G+=DzFu2I3d0VB7(Q9m3`_@)%qJy#D!*koU?JItqm=Y}BA&&MCLwWQU z6=&k=VQ<7=s?P>p?HJF@86Q}SWk@Zo1+1k~3o|#l-ec(-djCGWjsBqd5=V*YLZ5u+ zvfeAW8Rn=3)#!5Oqg~g5YV<|YF-vbG-Dc@GNk=Tbnske$*O6|u^gE=LrQahR)wJNs z^a$dRc@up4ZjZi$U_|aALu#pv@NI^8S$$>>63=j7>XpGNzZop9!#&?kp_;f${hXJc zFf-qQUPn%#nlwI$yy(#U=n4d>B%V#V_yx(P9pUvpKYI_)>*~h(*Plc_I|#2UX6S*V zw8b|VXWY(7J#}o)P-snc(#9Lwukelyq?nUo1o1p_zt=GxFu(D2ocVnfe~xnuLDwqM zz3f#_voATw{nU!nh-p2l7$=T~(Wvxdx*`n8v%4x(sh>ok|sM_x|Y00U4JB~Z= zS{qW^=x@(K-rsx+NdH{iH*0m;W8bVX1}XOEMrAibTuAMcyNRtp?M8KOj^B}S_8*1Z zxy$U?ac!$U30zZ#-(T!xEjPWqe%$bV_kunX`dLkF(ciw>hfRkJp8IJhHQ%4^x7Cix zZE^fclVac4i5gx^a`f{(HUcGmVu-OfJzw7FLu*|o{5D$9b27(u&oTMiuKf((jl^_u L9CdHN29f&@pn9W8 literal 0 HcmV?d00001 diff --git a/packages/linux/firmware/radeon/R700_rlc.bin b/packages/linux/firmware/radeon/R700_rlc.bin new file mode 100644 index 0000000000000000000000000000000000000000..280568f9ea394dde42ee31be63ab86a3e46b6939 GIT binary patch literal 4096 zcmeHK-EUk+75~ld+Pn7NxCnz!bIzIbHRo%_vSL8Qjkr@Mj<#FVM$0fAlDI`nQoDrSyvGP8%LcCrcCC>fk`?%V? zfh%zVTh&GsEJXOY<1HYbv*rT_2dIPz#^)k@k+!!k?!&-K7Sn>8F*ceBn$_3_a~9){ zpZm1)d+LUT86@A3qfg;6(y!D0DcU!*SqW>@Yf+}Z(mP1K`vq(N7Tp7>?m_C<_P+P( zcV~&QypZ~F8ksN8W>IWS;lX)pN|Gmh@MHspav6Er+0$ZViqF6-RXRKQ26C$j`gxWN z&z=+iVuXIiGaIL8^7e>3KRixfn+vw{6Up#gj2&hiybn;U$_3`v0wLo*R5QQizSB?n zA5*^}?NTPF2Tb!Be>30a%Vp2 zbeUS}=Pww?toZn4c-F(IPZ`E!cN&w-r)uWf-n!YU)@_k~xIB{r{%F&>mZtg};EeNFVl`Y3HG)_? zqgYXmo`%^kJ*-7nGpCU~cvk~s?Azv&#ci^^dILDnU>#dLDZKet&W=&`W{gc&({-Df zuVnhQXOYdZ7FSkd)?*DN+I>`X@;7CJ>oCvsx$+e9>1q}u^P5z5LTgWNxqiAUMqjxG zTm4=XtY5>`RtXO>_V0;zZ4{TE8;MME4ecsq0QrFu%py8F+Hbu`9%iDDz|67VM4MqR z=4vp^@3iom{_w}MJDh$}0*JypUTm>q^3PEGH3VEIwbH-mwNLpcw0b$>o5CsIuYMrk z3&K5}_|JuNeY%%U-et*%Mw=JbUXcuL@8ac=UYzlrV7?0M+1Bd2=wJT|-sZRYnd8W< zS5TyGH<#AGi9?)6(|2y zN4?wPOXXCj6T*ESynXulJJE?dyYhjwKZ{1)oO7Lf(|tzH#cr9gbG^$rw&yMKq8Hge zjDNfTedN_6qWQC>=SpiT>;35CJQ!n+I5W)ODLYJ9I)>>h3anqspOzlggjU{_8?133 zzb}*n$MdA}OrPBRqKxSO&S4aqsP$RSH1b&HvrT2r4p-%c`^(yA?s7}E+f&S6EPIUI z-Z^`-!&=-DPTfyXHk0gkum>^N_RNl9oO7kG{fcV7??{SgQvC50&!+g- zQamSI{?ufUKk7cIwFjRTZc|(LvEJ4#0>2-H*%u@q6+1huiQ+_p((DgxAid(z-nj@_ z>BxuJ=jHq=KAveve4L3T#bw@hZi?UYaK=8axJBW(^WW>0Ty@k2JntvOqcg=JD))!T zw1JA37wtfpz1d4s-X-7M#>niH-Vohfco`oT)r_wX_R}!=Z=Xk})9W8=TyuDtKAhFO ziNf-T^eAspc;~UGU=Tgf0psK1qO&s2-)26uJX3-2cgjP#5BF7F+$d3&i|qgs)SbZ}}`-JJrj_T)DoD!tkJrU2&%~TZ@Xx2lQbV-}#KG?|fO@i;(Mcqq!h?Eu$!GTD*=P`kZ=Q~N#^=uYeFnK(d>rH(Cs<=G$nVs@ WK1XBE(8RN%d*5XH|G)p;2>c7cbHoM! literal 0 HcmV?d00001 diff --git a/packages/linux/firmware/url.txt b/packages/linux/firmware/url.txt new file mode 100644 index 0000000000..f2a7212a9a --- /dev/null +++ b/packages/linux/firmware/url.txt @@ -0,0 +1 @@ +http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=summary diff --git a/packages/linux/unpack b/packages/linux/unpack index fa7bc92146..ace32d60d4 100755 --- a/packages/linux/unpack +++ b/packages/linux/unpack @@ -24,6 +24,9 @@ cp $KERNEL_CFG_FILE $LINUX/.config sed -i -e "s|^CONFIG_INITRAMFS_SOURCE=.*$|CONFIG_INITRAMFS_SOURCE=\"$ROOT/$PKG_DIR/config/initramfs\"|" \ $LINUX/.config +# copy some extra firmware to linux tree + cp -R $PKG_DIR/firmware/* $LINUX/firmware + if [ "$DEVTOOLS" = yes ]; then echo "CONFIG_DEBUG_KERNEL=y" >> $LINUX/.config # needed for bootchart echo "CONFIG_SCHEDSTATS=y" >> $LINUX/.config # needed for bootchart From 93b15cd8194bfc4811c364e1a242cc306dd5b67b Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 20 Apr 2010 03:18:50 +0200 Subject: [PATCH 058/171] projects/generic/linux: - build some radeon based firmware into the kernel --- projects/generic/linux/linux.i386.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/generic/linux/linux.i386.conf b/projects/generic/linux/linux.i386.conf index baccfd3516..5cd598d125 100644 --- a/projects/generic/linux/linux.i386.conf +++ b/projects/generic/linux/linux.i386.conf @@ -629,7 +629,8 @@ CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y CONFIG_FIRMWARE_IN_KERNEL=y -CONFIG_EXTRA_FIRMWARE="" +CONFIG_EXTRA_FIRMWARE=" radeon/R600_rlc.bin radeon/R700_rlc.bin" +CONFIG_EXTRA_FIRMWARE_DIR="firmware" # CONFIG_SYS_HYPERVISOR is not set # CONFIG_CONNECTOR is not set # CONFIG_MTD is not set From 3edb8301390b6ccd3b37568ea0c5bb9806db9cf1 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 20 Apr 2010 03:19:24 +0200 Subject: [PATCH 059/171] linux: - install linux-firmware --- packages/linux/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/linux/install b/packages/linux/install index f9d900b822..c00b37e7ca 100755 --- a/packages/linux/install +++ b/packages/linux/install @@ -26,4 +26,4 @@ mkdir -p $INSTALL/lib/firmware mkdir -p $INSTALL/etc/modprobe.d -$SCRIPTS/install firmware +$SCRIPTS/install linux-firmware From 8e35da4343b0894e851a62d5620979dd88684611 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 21 Apr 2010 19:05:40 +0200 Subject: [PATCH 060/171] udev: - update to udev-153 --- packages/sysutils/udev/init.d/03_udev-trigger | 2 +- packages/sysutils/udev/install | 2 +- ...0_udev-153_remove_keymap_and_acl-0.1.diff} | 33 ++++++++----------- .../udev/patches/udev-118-sysconf.diff | 24 -------------- packages/sysutils/udev/url | 2 +- 5 files changed, 16 insertions(+), 47 deletions(-) rename packages/sysutils/udev/patches/{10_udev-151_remove_keymap_and_acl-0.1.diff => 10_udev-153_remove_keymap_and_acl-0.1.diff} (84%) delete mode 100644 packages/sysutils/udev/patches/udev-118-sysconf.diff diff --git a/packages/sysutils/udev/init.d/03_udev-trigger b/packages/sysutils/udev/init.d/03_udev-trigger index 366fb4a315..b2e4dd7506 100755 --- a/packages/sysutils/udev/init.d/03_udev-trigger +++ b/packages/sysutils/udev/init.d/03_udev-trigger @@ -6,6 +6,6 @@ progress "request udev events from the kernel" ( - $NICE_20 udevadm trigger + $NICE_20 udevadm trigger --action=add $NICE_20 udevadm settle )& diff --git a/packages/sysutils/udev/install b/packages/sysutils/udev/install index 4762bba424..c10d153357 100755 --- a/packages/sysutils/udev/install +++ b/packages/sysutils/udev/install @@ -39,7 +39,7 @@ mkdir -p $INSTALL/lib/udev for i in ata_id cdrom_id collect edd_id fstab_import path_id scsi_id usb_id v4l_id; do cp $PKG_BUILD/extras/$i/$i $INSTALL/lib/udev done - cp $PKG_BUILD/extras/input_id/.libs/input_id $INSTALL/lib/udev + cp $PKG_BUILD/extras/input_id/input_id $INSTALL/lib/udev cp $PKG_BUILD/extras/usb-db/usb-db $INSTALL/lib/udev cp $PKG_BUILD/extras/usb-db/pci-db $INSTALL/lib/udev diff --git a/packages/sysutils/udev/patches/10_udev-151_remove_keymap_and_acl-0.1.diff b/packages/sysutils/udev/patches/10_udev-153_remove_keymap_and_acl-0.1.diff similarity index 84% rename from packages/sysutils/udev/patches/10_udev-151_remove_keymap_and_acl-0.1.diff rename to packages/sysutils/udev/patches/10_udev-153_remove_keymap_and_acl-0.1.diff index d1a3612799..5988819b13 100644 --- a/packages/sysutils/udev/patches/10_udev-151_remove_keymap_and_acl-0.1.diff +++ b/packages/sysutils/udev/patches/10_udev-153_remove_keymap_and_acl-0.1.diff @@ -1,6 +1,6 @@ -diff -Naur udev-151/configure.ac udev-151.patch/configure.ac ---- udev-151/configure.ac 2010-01-25 08:21:07.000000000 +0100 -+++ udev-151.patch/configure.ac 2010-01-28 11:28:53.751387076 +0100 +diff -Naur udev-153/configure.ac udev-153.patch/configure.ac +--- udev-153/configure.ac 2010-04-21 08:30:43.000000000 +0200 ++++ udev-153.patch/configure.ac 2010-04-21 17:47:39.531454320 +0200 @@ -59,9 +59,6 @@ AC_SUBST([GLIB_CFLAGS]) AC_SUBST([GLIB_LIBS]) @@ -11,20 +11,10 @@ diff -Naur udev-151/configure.ac udev-151.patch/configure.ac PKG_CHECK_MODULES(LIBUSB, libusb >= 0.1.12) AC_SUBST(LIBUSB_CFLAGS) AC_SUBST(LIBUSB_LIBS) -@@ -69,9 +66,6 @@ - PKG_CHECK_MODULES(USBUTILS, usbutils >= 0.82) - AC_SUBST([USB_DATABASE], [$($PKG_CONFIG --variable=usbids usbutils)]) - -- AC_CHECK_FILES([/usr/share/pci.ids], [pciids=/usr/share/pci.ids]) -- AC_CHECK_FILES([/usr/share/hwdata/pci.ids], [pciids=/usr/share/hwdata/pci.ids]) -- AC_CHECK_FILES([/usr/share/misc/pci.ids], [pciids=/usr/share/misc/pci.ids]) - AC_ARG_WITH(pci-ids-path, - AS_HELP_STRING([--pci-ids-path=DIR], [Path to pci.ids file]), - [PCI_DATABASE=${withval}], -diff -Naur udev-151/Makefile.am udev-151.patch/Makefile.am ---- udev-151/Makefile.am 2010-01-25 10:47:41.000000000 +0100 -+++ udev-151.patch/Makefile.am 2010-01-28 11:28:04.497252400 +0100 -@@ -417,21 +417,6 @@ +diff -Naur udev-153/Makefile.am udev-153.patch/Makefile.am +--- udev-153/Makefile.am 2010-04-20 07:02:58.000000000 +0200 ++++ udev-153.patch/Makefile.am 2010-04-21 17:47:06.705490633 +0200 +@@ -418,21 +418,6 @@ libexec_PROGRAMS += extras/hid2hci/hid2hci # ------------------------------------------------------------------------------ @@ -46,9 +36,9 @@ diff -Naur udev-151/Makefile.am udev-151.patch/Makefile.am # usb-db - read USB vendor/device string database # ------------------------------------------------------------------------------ extras_usb_db_usb_db_SOURCES = extras/usb-db/usb-db.c -@@ -467,98 +452,6 @@ +@@ -465,101 +450,6 @@ - libexec_PROGRAMS += extras/modem-modeswitch/modem-modeswitch + libexec_PROGRAMS += extras/mobile-action-modeswitch/mobile-action-modeswitch -# ------------------------------------------------------------------------------ -# keymap - map custom hardware's multimedia keys @@ -101,6 +91,7 @@ diff -Naur udev-151/Makefile.am udev-151.patch/Makefile.am - extras/keymap/keymaps/lenovo-thinkpad-usb-keyboard-trackpoint \ - extras/keymap/keymaps/lenovo-thinkpad_x6_tablet \ - extras/keymap/keymaps/lenovo-thinkpad_x200_tablet \ +- extras/keymap/keymaps/lg-x110 \ - extras/keymap/keymaps/logitech-wave \ - extras/keymap/keymaps/logitech-wave-cordless \ - extras/keymap/keymaps/maxdata-pro_7000 \ @@ -119,11 +110,13 @@ diff -Naur udev-151/Makefile.am udev-151.patch/Makefile.am - extras/keymap/keymaps/samsung-sx20s \ - extras/keymap/keymaps/toshiba-satellite_a100 \ - extras/keymap/keymaps/toshiba-satellite_a110 \ +- extras/keymap/keymaps/toshiba-satellite_m30x \ - extras/keymap/keymaps/zepto-znote - -udevkeymapforcereldir = $(libexecdir)/keymaps/force-release -dist_udevkeymapforcerel_DATA = \ -- extras/keymap/force-release-maps/samsung-other +- extras/keymap/force-release-maps/samsung-other \ +- extras/keymap/force-release-maps/common-volume-keys - -extras/keymap/keys.txt: $(INCLUDE_PREFIX)/linux/input.h - mkdir -p extras/keymap diff --git a/packages/sysutils/udev/patches/udev-118-sysconf.diff b/packages/sysutils/udev/patches/udev-118-sysconf.diff deleted file mode 100644 index f515646caa..0000000000 --- a/packages/sysutils/udev/patches/udev-118-sysconf.diff +++ /dev/null @@ -1,24 +0,0 @@ -diff -urN udev-150/rules/rules.d/60-persistent-storage.rules udev-150-new/rules/rules.d/60-persistent-storage.rules ---- udev-150/rules/rules.d/60-persistent-storage.rules 2009-12-09 01:43:09.000000000 +0800 -+++ udev-150-new/rules/rules.d/60-persistent-storage.rules 2010-01-09 21:53:59.000000000 +0800 -@@ -3,6 +3,8 @@ - # persistent storage links: /dev/disk/{by-id,by-uuid,by-label,by-path} - # scheme based on "Linux persistent device names", 2004, Hannes Reinecke - -+ENV{UDEV_NO_PERSISTENT_STORAGE}=="1", GOTO="persistent_storage_end" -+ - # forward scsi device event to corresponding block device - ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST=="block", ATTR{block/*/uevent}="change" - -diff -urN udev-150/rules/rules.d/60-persistent-storage-tape.rules udev-150-new/rules/rules.d/60-persistent-storage-tape.rules ---- udev-150/rules/rules.d/60-persistent-storage-tape.rules 2009-12-03 20:45:03.000000000 +0800 -+++ udev-150-new/rules/rules.d/60-persistent-storage-tape.rules 2010-01-09 21:54:26.000000000 +0800 -@@ -2,6 +2,8 @@ - - # persistent storage links: /dev/tape/{by-id,by-path} - -+ENV{UDEV_NO_PERSISTENT_STORAGE}=="1", GOTO="persistent_storage_tape_end" -+ - ACTION!="add|change", GOTO="persistent_storage_tape_end" - - # type 8 devices are "Medium Changers" diff --git a/packages/sysutils/udev/url b/packages/sysutils/udev/url index 9d48b20f95..f453e20758 100644 --- a/packages/sysutils/udev/url +++ b/packages/sysutils/udev/url @@ -1 +1 @@ -http://www.eu.kernel.org/pub/linux/utils/kernel/hotplug/udev-151.tar.bz2 +http://www.eu.kernel.org/pub/linux/utils/kernel/hotplug/udev-153.tar.bz2 From 701c9aadb15c4b3a8d8837d173fd2c59f4de31e3 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 21 Apr 2010 19:05:59 +0200 Subject: [PATCH 061/171] xorg-server: - update to xorg-server-1.7.6.902 --- packages/x11/xserver/xorg-server/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x11/xserver/xorg-server/url b/packages/x11/xserver/xorg-server/url index 9345a0cb5a..44f6c589ee 100644 --- a/packages/x11/xserver/xorg-server/url +++ b/packages/x11/xserver/xorg-server/url @@ -1 +1 @@ -http://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.7.6.901.tar.bz2 \ No newline at end of file +http://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.7.6.902.tar.bz2 \ No newline at end of file From 1fd85e592cd46066d90b62bac645e3ee71e492ee Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 23 Apr 2010 08:41:59 +0200 Subject: [PATCH 062/171] zlib: - update to zlib-1.2.5 --- packages/compress/zlib/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/compress/zlib/url b/packages/compress/zlib/url index 7ef9d2fc51..2257bee025 100644 --- a/packages/compress/zlib/url +++ b/packages/compress/zlib/url @@ -1 +1 @@ -http://www.zlib.net/zlib-1.2.4.tar.bz2 +http://www.zlib.net/zlib-1.2.5.tar.bz2 From 04aba781e2379a265539ce5bd51d6a5af212f68f Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 23 Apr 2010 08:43:21 +0200 Subject: [PATCH 063/171] new package: - add initial lcdproc support --- packages/mediacenter/xbmc/install | 1 + packages/sysutils/lcdproc/build | 19 ++++++++++++++++ packages/sysutils/lcdproc/init.d/33_lcdproc | 20 +++++++++++++++++ packages/sysutils/lcdproc/install | 24 +++++++++++++++++++++ packages/sysutils/lcdproc/url | 1 + projects/ION/options | 12 +++++++++++ projects/generic/options | 12 +++++++++++ projects/intel/options | 12 +++++++++++ 8 files changed, 101 insertions(+) create mode 100755 packages/sysutils/lcdproc/build create mode 100755 packages/sysutils/lcdproc/init.d/33_lcdproc create mode 100755 packages/sysutils/lcdproc/install create mode 100644 packages/sysutils/lcdproc/url diff --git a/packages/mediacenter/xbmc/install b/packages/mediacenter/xbmc/install index 4c249431f4..d19a6f1c03 100755 --- a/packages/mediacenter/xbmc/install +++ b/packages/mediacenter/xbmc/install @@ -129,5 +129,6 @@ mkdir -p $INSTALL/usr/share/xbmc/addons # other programs needed to run $SCRIPTS/install alsa $SCRIPTS/install lirc + [ ! "$LCD_DRIVER" = none ] && $SCRIPTS/install lcdproc $SCRIPTS/install autoupdate diff --git a/packages/sysutils/lcdproc/build b/packages/sysutils/lcdproc/build new file mode 100755 index 0000000000..b5824fbaf2 --- /dev/null +++ b/packages/sysutils/lcdproc/build @@ -0,0 +1,19 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/build toolchain +$SCRIPTS/build libusb + +cd $PKG_BUILD +./configure --host=$TARGET_NAME \ + --build=$HOST_NAME \ + --prefix=/usr \ + --sysconfdir=/etc \ + --enable-libusb \ + --enable-drivers="$LCD_DRIVER,!curses,!svga" + +make + +sed -i -e "s|^DriverPath=.*$|DriverPath=/usr/lib/lcdproc/|" LCDd.conf +sed -i -e "s|^Driver=.*$|Driver=lirc|" LCDd.conf diff --git a/packages/sysutils/lcdproc/init.d/33_lcdproc b/packages/sysutils/lcdproc/init.d/33_lcdproc new file mode 100755 index 0000000000..d29efb58dd --- /dev/null +++ b/packages/sysutils/lcdproc/init.d/33_lcdproc @@ -0,0 +1,20 @@ +# start the LCD daemon +# +# runlevels: openelec, textmode + +( + progress "Starting LCD daemon" + + LCD_USERCONF="/storage/.config/LCDd.conf" + LCD_DEFCONF="/etc/LCDd.conf" + LCD_ARG="" + + if [ -f $LCD_USERCONF ]; then + LCD_ARG="$LCD_ARG -c $LCD_USERCONF" + else + LCD_ARG="$LCD_ARG -c $LCD_DEFCONF" + fi + + LCDd $LCD_ARG > /dev/null 2>&1 + +)& diff --git a/packages/sysutils/lcdproc/install b/packages/sysutils/lcdproc/install new file mode 100755 index 0000000000..bbc407f50a --- /dev/null +++ b/packages/sysutils/lcdproc/install @@ -0,0 +1,24 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/install libusb + +PKG_DIR=`find $PACKAGES -type d -name $1` + +mkdir -p $INSTALL/usr/sbin + cp $PKG_BUILD/server/LCDd $INSTALL/usr/sbin + +mkdir -p $INSTALL/usr/bin + cp $PKG_BUILD/clients/lcdproc/lcdproc $INSTALL/usr/bin + +mkdir -p $INSTALL/usr/lib/lcdproc + cp $PKG_BUILD/server/drivers/*.so $INSTALL/usr/lib/lcdproc + +mkdir -p $INSTALL/etc + cp $PKG_BUILD/LCDd.conf $INSTALL/etc + cp $PKG_BUILD/clients/lcdproc/lcdproc.conf $INSTALL/etc + +mkdir -p $INSTALL/usr/config + cp $PKG_BUILD/LCDd.conf $INSTALL/usr/config/LCDd.conf.sample + cp $PKG_BUILD/clients/lcdproc/lcdproc.conf $INSTALL/usr/config/lcdproc.conf.sample diff --git a/packages/sysutils/lcdproc/url b/packages/sysutils/lcdproc/url new file mode 100644 index 0000000000..c71ab7f949 --- /dev/null +++ b/packages/sysutils/lcdproc/url @@ -0,0 +1 @@ +http://sources.openelec.tv/svn/lcdproc-20100423.tar.bz2 \ No newline at end of file diff --git a/projects/ION/options b/projects/ION/options index d0e428679d..9b31482838 100644 --- a/projects/ION/options +++ b/projects/ION/options @@ -98,6 +98,18 @@ # tosh-vt76f/flytv-prime/Medion-X10/imonknob/ultrax/dvico/MCE-X10) REMOTE="mceusb" +# LCD driver to Use - Possible drivers are ( Comma seperated: +# bayrad,CFontz,CFontz633,CFontzPacket,CwLnx,ea65, +# EyeboxOne,g15,glcdlib,glk,hd44780,i2500vfd,icp_a106,imon,imonlcd, +# IOWarrior,irman,irtrans,joy,lb216,lcdm001,lcterm,lirc,lis, +# MD8800,ms6931,mtc_s16209x,MtxOrb,mx5000,NoritakeVFD,picolcd, +# pyramid,sed1330,sed1520,serialPOS,serialVFD,shuttleVFD,sli, +# stv5730,SureElec,t6963,text,tyan,ula200,xosd +# 'all' compiles all drivers; +# 'all,!xxx,!yyy' de-selects previously selected drivers +# "none" for disable LCD support + LCD_DRIVER="none" + # Firmware to use (iwl1000, iwl3945, iwl4965, iwl5000, iwl5150, iwl6000) # Space separated list is supported, # e.g. FIRMWARE="iwl3945 iwl5000" diff --git a/projects/generic/options b/projects/generic/options index a309c80c6a..6483253d69 100644 --- a/projects/generic/options +++ b/projects/generic/options @@ -98,6 +98,18 @@ # tosh-vt76f/flytv-prime/Medion-X10/imonknob/ultrax/dvico/MCE-X10) REMOTE="mceusb" +# LCD driver to Use - Possible drivers are ( Comma seperated: +# bayrad,CFontz,CFontz633,CFontzPacket,CwLnx,ea65, +# EyeboxOne,g15,glcdlib,glk,hd44780,i2500vfd,icp_a106,imon,imonlcd, +# IOWarrior,irman,irtrans,joy,lb216,lcdm001,lcterm,lirc,lis, +# MD8800,ms6931,mtc_s16209x,MtxOrb,mx5000,NoritakeVFD,picolcd, +# pyramid,sed1330,sed1520,serialPOS,serialVFD,shuttleVFD,sli, +# stv5730,SureElec,t6963,text,tyan,ula200,xosd +# 'all' compiles all drivers; +# 'all,!xxx,!yyy' de-selects previously selected drivers +# "none" for disable LCD support + LCD_DRIVER="all" + # Firmware to use (iwl1000, iwl3945, iwl4965, iwl5000, iwl5150, iwl6000) # Space separated list is supported, # e.g. FIRMWARE="iwl3945 iwl5000" diff --git a/projects/intel/options b/projects/intel/options index d32b19de99..ce8519f887 100644 --- a/projects/intel/options +++ b/projects/intel/options @@ -98,6 +98,18 @@ # tosh-vt76f/flytv-prime/Medion-X10/imonknob/ultrax/dvico/MCE-X10) REMOTE="mceusb" +# LCD driver to Use - Possible drivers are ( Comma seperated: +# bayrad,CFontz,CFontz633,CFontzPacket,CwLnx,ea65, +# EyeboxOne,g15,glcdlib,glk,hd44780,i2500vfd,icp_a106,imon,imonlcd, +# IOWarrior,irman,irtrans,joy,lb216,lcdm001,lcterm,lirc,lis, +# MD8800,ms6931,mtc_s16209x,MtxOrb,mx5000,NoritakeVFD,picolcd, +# pyramid,sed1330,sed1520,serialPOS,serialVFD,shuttleVFD,sli, +# stv5730,SureElec,t6963,text,tyan,ula200,xosd +# 'all' compiles all drivers; +# 'all,!xxx,!yyy' de-selects previously selected drivers +# "none" for disable LCD support + LCD_DRIVER="all" + # Firmware to use (iwl1000, iwl3945, iwl4965, iwl5000, iwl5150, iwl6000) # Space separated list is supported, # e.g. FIRMWARE="iwl3945 iwl5000" From f5a4a35024ba24bd9b0eb586f5993bd9aeef3eab Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 23 Apr 2010 22:23:54 +0200 Subject: [PATCH 064/171] new package: - add irtrans irserver --- packages/sysutils/irserver/build | 13 +++++++++++++ packages/sysutils/irserver/init.d/30_irserver | 10 ++++++++++ packages/sysutils/irserver/install | 15 +++++++++++++++ packages/sysutils/irserver/url | 1 + 4 files changed, 39 insertions(+) create mode 100755 packages/sysutils/irserver/build create mode 100755 packages/sysutils/irserver/init.d/30_irserver create mode 100755 packages/sysutils/irserver/install create mode 100644 packages/sysutils/irserver/url diff --git a/packages/sysutils/irserver/build b/packages/sysutils/irserver/build new file mode 100755 index 0000000000..e17de1798b --- /dev/null +++ b/packages/sysutils/irserver/build @@ -0,0 +1,13 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/build toolchain + +cd $PKG_BUILD + +[ $TARGET_ARCH = i386 ] && make CC=$TARGET_CC irserver +[ $TARGET_ARCH = x86_64 ] && make CC=$TARGET_CC irserver64 +[ $TARGET_ARCH = arm ] && make CC=$TARGET_CC irserver_arm + +$STRIP $1* \ No newline at end of file diff --git a/packages/sysutils/irserver/init.d/30_irserver b/packages/sysutils/irserver/init.d/30_irserver new file mode 100755 index 0000000000..d13973dc6b --- /dev/null +++ b/packages/sysutils/irserver/init.d/30_irserver @@ -0,0 +1,10 @@ +# start the IRtrans daemon +# +# runlevels: openelec, textmode + +( + progress "Starting IRtrans daemon" + + irtrans > /dev/null 2>&1 + +)& diff --git a/packages/sysutils/irserver/install b/packages/sysutils/irserver/install new file mode 100755 index 0000000000..f38e5ec61b --- /dev/null +++ b/packages/sysutils/irserver/install @@ -0,0 +1,15 @@ +#!/bin/sh + +. config/options + +PKG_DIR=`find $PACKAGES -type d -name $1` + +mkdir -p $INSTALL/usr/sbin + [ $TARGET_ARCH = i386 ] && cp -P $PKG_BUILD/irserver $INSTALL/usr/sbin/irserver + [ $TARGET_ARCH = x86_64 ] && cp -P $PKG_BUILD/irserver64 $INSTALL/usr/sbin/irserver + [ $TARGET_ARCH = arm ] && cp -P $PKG_BUILD/irserver_arm $INSTALL/usr/sbin/irserver + +mkdir -p $INSTALL/usr/share/irtrans/remotes + cp $PKG_BUILD/remotes/ccf.rem $INSTALL/usr/share/irtrans/remotes + cp $PKG_BUILD/remotes/irtrans.rem $INSTALL/usr/share/irtrans/remotes + cp $PKG_BUILD/remotes/mediacenter.rem $INSTALL/usr/share/irtrans/remotes diff --git a/packages/sysutils/irserver/url b/packages/sysutils/irserver/url new file mode 100644 index 0000000000..00bd63c8fc --- /dev/null +++ b/packages/sysutils/irserver/url @@ -0,0 +1 @@ +http://sources.openelec.tv/svn/irserver-05.02.10.tar.bz2 \ No newline at end of file From 4f80e290c8b8dfb06596506b1f7e420f83bdc0de Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 23 Apr 2010 22:24:31 +0200 Subject: [PATCH 065/171] lcdproc: - install also irserver --- packages/sysutils/lcdproc/install | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/sysutils/lcdproc/install b/packages/sysutils/lcdproc/install index bbc407f50a..1bd711dce1 100755 --- a/packages/sysutils/lcdproc/install +++ b/packages/sysutils/lcdproc/install @@ -3,6 +3,7 @@ . config/options $SCRIPTS/install libusb +$SCRIPTS/install irserver PKG_DIR=`find $PACKAGES -type d -name $1` From be3ac05e77d05a6d031b7686037da4ce2249fb34 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 23 Apr 2010 22:25:13 +0200 Subject: [PATCH 066/171] lcdproc: - load irtrans driver as default --- packages/sysutils/lcdproc/build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/lcdproc/build b/packages/sysutils/lcdproc/build index b5824fbaf2..a829357336 100755 --- a/packages/sysutils/lcdproc/build +++ b/packages/sysutils/lcdproc/build @@ -16,4 +16,4 @@ cd $PKG_BUILD make sed -i -e "s|^DriverPath=.*$|DriverPath=/usr/lib/lcdproc/|" LCDd.conf -sed -i -e "s|^Driver=.*$|Driver=lirc|" LCDd.conf +sed -i -e "s|^Driver=.*$|Driver=irtrans|" LCDd.conf From 23fc16520a5e5fe1535ae0a64bf45f7d5e923e28 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 23 Apr 2010 23:21:16 +0200 Subject: [PATCH 067/171] new package: - add package lm_sensors --- packages/sysutils/lm_sensors/build | 11 +++++++++++ packages/sysutils/lm_sensors/install | 14 ++++++++++++++ packages/sysutils/lm_sensors/url | 1 + 3 files changed, 26 insertions(+) create mode 100755 packages/sysutils/lm_sensors/build create mode 100755 packages/sysutils/lm_sensors/install create mode 100644 packages/sysutils/lm_sensors/url diff --git a/packages/sysutils/lm_sensors/build b/packages/sysutils/lm_sensors/build new file mode 100755 index 0000000000..5888ef506e --- /dev/null +++ b/packages/sysutils/lm_sensors/build @@ -0,0 +1,11 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/build toolchain + +cd $PKG_BUILD + +make PREFIX=/usr CC=$TARGET_CC + +$STRIP prog/sensors/sensors \ No newline at end of file diff --git a/packages/sysutils/lm_sensors/install b/packages/sysutils/lm_sensors/install new file mode 100755 index 0000000000..5a9e0a0a88 --- /dev/null +++ b/packages/sysutils/lm_sensors/install @@ -0,0 +1,14 @@ +#!/bin/sh + +. config/options + +PKG_DIR=`find $PACKAGES -type d -name $1` + +mkdir -p $INSTALL/usr/bin + cp $PKG_BUILD/prog/sensors/sensors $INSTALL/usr/bin + +mkdir -p $INSTALL/usr/lib + cp -P $PKG_BUILD/lib/libsensors.so* $INSTALL/usr/lib + +mkdir -p $INSTALL/etc + cp $PKG_BUILD/etc/sensors.conf.default $INSTALL/etc/sensors3.conf diff --git a/packages/sysutils/lm_sensors/url b/packages/sysutils/lm_sensors/url new file mode 100644 index 0000000000..39ee35f366 --- /dev/null +++ b/packages/sysutils/lm_sensors/url @@ -0,0 +1 @@ +http://dl.lm-sensors.org/lm-sensors/releases/lm_sensors-3.1.2.tar.bz2 \ No newline at end of file From 716a57f2cf96d66f37090b81dafca67c32367a6d Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 23 Apr 2010 23:21:39 +0200 Subject: [PATCH 068/171] xbmc: - install lm_sensors by default --- packages/mediacenter/xbmc/install | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mediacenter/xbmc/install b/packages/mediacenter/xbmc/install index d19a6f1c03..80641b0ee7 100755 --- a/packages/mediacenter/xbmc/install +++ b/packages/mediacenter/xbmc/install @@ -132,3 +132,4 @@ mkdir -p $INSTALL/usr/share/xbmc/addons [ ! "$LCD_DRIVER" = none ] && $SCRIPTS/install lcdproc $SCRIPTS/install autoupdate + $SCRIPTS/install lm_sensors From 5dd203b13b29728d80abc2c25805c80e8228de83 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 23 Apr 2010 23:22:17 +0200 Subject: [PATCH 069/171] projects/*/linux: - add some i2c drivers for hardware monitoring support --- projects/ION/linux/linux.i386.conf | 92 ++++++++++++++- projects/ION/linux/linux.x86_64.conf | 92 ++++++++++++++- projects/generic/linux/linux.i386.conf | 154 +++++++++++++------------ projects/intel/linux/linux.i386.conf | 8 +- projects/intel/linux/linux.x86_64.conf | 8 +- 5 files changed, 260 insertions(+), 94 deletions(-) diff --git a/projects/ION/linux/linux.i386.conf b/projects/ION/linux/linux.i386.conf index 2de2cd5473..f9ed6a26b3 100644 --- a/projects/ION/linux/linux.i386.conf +++ b/projects/ION/linux/linux.i386.conf @@ -381,6 +381,7 @@ CONFIG_PM=y CONFIG_ACPI=y # CONFIG_ACPI_PROCFS is not set # CONFIG_ACPI_PROCFS_POWER is not set +# CONFIG_ACPI_POWER_METER is not set CONFIG_ACPI_SYSFS_POWER=y CONFIG_ACPI_PROC_EVENT=y # CONFIG_ACPI_AC is not set @@ -1104,7 +1105,8 @@ CONFIG_I2C_HELPER_AUTO=y # CONFIG_I2C_I801 is not set # CONFIG_I2C_ISCH is not set # CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_NFORCE2 is not set +CONFIG_I2C_NFORCE2=m +# CONFIG_I2C_NFORCE2_S4985 is not set # CONFIG_I2C_SIS5595 is not set # CONFIG_I2C_SIS630 is not set # CONFIG_I2C_SIS96X is not set @@ -1161,7 +1163,93 @@ CONFIG_POWER_SUPPLY=y # CONFIG_BATTERY_DS2782 is not set # CONFIG_BATTERY_BQ27x00 is not set # CONFIG_BATTERY_MAX17040 is not set -# CONFIG_HWMON is not set +CONFIG_HWMON=m +# CONFIG_HWMON_VID is not set +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_ABITUGURU is not set +# CONFIG_SENSORS_ABITUGURU3 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7473 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_K8TEMP is not set +# CONFIG_SENSORS_K10TEMP is not set +# CONFIG_SENSORS_ASB100 is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FSCHMD is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_CORETEMP is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_VIA_CPUTEMP is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_SENSORS_HDAPS is not set +# CONFIG_SENSORS_LIS3_I2C is not set +# CONFIG_SENSORS_APPLESMC is not set + +# +# ACPI drivers +# +# CONFIG_SENSORS_ATK0110 is not set +# CONFIG_SENSORS_LIS3LV02D is not set CONFIG_THERMAL=y # CONFIG_WATCHDOG is not set CONFIG_SSB_POSSIBLE=y diff --git a/projects/ION/linux/linux.x86_64.conf b/projects/ION/linux/linux.x86_64.conf index 319efaa6aa..875b5b2d68 100644 --- a/projects/ION/linux/linux.x86_64.conf +++ b/projects/ION/linux/linux.x86_64.conf @@ -365,6 +365,7 @@ CONFIG_PM=y CONFIG_ACPI=y # CONFIG_ACPI_PROCFS is not set # CONFIG_ACPI_PROCFS_POWER is not set +# CONFIG_ACPI_POWER_METER is not set CONFIG_ACPI_SYSFS_POWER=y CONFIG_ACPI_PROC_EVENT=y # CONFIG_ACPI_AC is not set @@ -1070,7 +1071,8 @@ CONFIG_I2C_HELPER_AUTO=y # CONFIG_I2C_I801 is not set # CONFIG_I2C_ISCH is not set # CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_NFORCE2 is not set +CONFIG_I2C_NFORCE2=m +# CONFIG_I2C_NFORCE2_S4985 is not set # CONFIG_I2C_SIS5595 is not set # CONFIG_I2C_SIS630 is not set # CONFIG_I2C_SIS96X is not set @@ -1126,7 +1128,93 @@ CONFIG_POWER_SUPPLY=y # CONFIG_BATTERY_DS2782 is not set # CONFIG_BATTERY_BQ27x00 is not set # CONFIG_BATTERY_MAX17040 is not set -# CONFIG_HWMON is not set +CONFIG_HWMON=m +# CONFIG_HWMON_VID is not set +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_ABITUGURU is not set +# CONFIG_SENSORS_ABITUGURU3 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7473 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_K8TEMP is not set +# CONFIG_SENSORS_K10TEMP is not set +# CONFIG_SENSORS_ASB100 is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FSCHMD is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_CORETEMP is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_VIA_CPUTEMP is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_SENSORS_HDAPS is not set +# CONFIG_SENSORS_LIS3_I2C is not set +# CONFIG_SENSORS_APPLESMC is not set + +# +# ACPI drivers +# +# CONFIG_SENSORS_ATK0110 is not set +# CONFIG_SENSORS_LIS3LV02D is not set CONFIG_THERMAL=y # CONFIG_WATCHDOG is not set CONFIG_SSB_POSSIBLE=y diff --git a/projects/generic/linux/linux.i386.conf b/projects/generic/linux/linux.i386.conf index 5cd598d125..020742caab 100644 --- a/projects/generic/linux/linux.i386.conf +++ b/projects/generic/linux/linux.i386.conf @@ -1213,12 +1213,14 @@ CONFIG_I2C_ALGOBIT=y # CONFIG_I2C_ALI1535 is not set # CONFIG_I2C_ALI1563 is not set # CONFIG_I2C_ALI15X3 is not set -# CONFIG_I2C_AMD756 is not set -# CONFIG_I2C_AMD8111 is not set +CONFIG_I2C_AMD756=m +# CONFIG_I2C_AMD756_S4882 is not set +CONFIG_I2C_AMD8111=m CONFIG_I2C_I801=m -# CONFIG_I2C_ISCH is not set -# CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_NFORCE2 is not set +CONFIG_I2C_ISCH=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_NFORCE2=m +# CONFIG_I2C_NFORCE2_S4985 is not set # CONFIG_I2C_SIS5595 is not set # CONFIG_I2C_SIS630 is not set # CONFIG_I2C_SIS96X is not set @@ -1228,13 +1230,13 @@ CONFIG_I2C_I801=m # # ACPI drivers # -# CONFIG_I2C_SCMI is not set +CONFIG_I2C_SCMI=m # # I2C system bus drivers (mostly embedded / system-on-chip) # -# CONFIG_I2C_OCORES is not set -# CONFIG_I2C_SIMTEC is not set +CONFIG_I2C_OCORES=m +CONFIG_I2C_SIMTEC=m # # External I2C/SMBus adapter drivers @@ -1276,83 +1278,83 @@ CONFIG_POWER_SUPPLY=y # CONFIG_BATTERY_BQ27x00 is not set # CONFIG_BATTERY_MAX17040 is not set CONFIG_HWMON=m -# CONFIG_HWMON_VID is not set +CONFIG_HWMON_VID=m # CONFIG_HWMON_DEBUG_CHIP is not set # # Native drivers # # CONFIG_SENSORS_ABITUGURU is not set -# CONFIG_SENSORS_ABITUGURU3 is not set -# CONFIG_SENSORS_AD7414 is not set -# CONFIG_SENSORS_AD7418 is not set -# CONFIG_SENSORS_ADM1021 is not set -# CONFIG_SENSORS_ADM1025 is not set -# CONFIG_SENSORS_ADM1026 is not set -# CONFIG_SENSORS_ADM1029 is not set -# CONFIG_SENSORS_ADM1031 is not set -# CONFIG_SENSORS_ADM9240 is not set -# CONFIG_SENSORS_ADT7462 is not set -# CONFIG_SENSORS_ADT7470 is not set +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m # CONFIG_SENSORS_ADT7473 is not set -# CONFIG_SENSORS_ADT7475 is not set -# CONFIG_SENSORS_K8TEMP is not set -# CONFIG_SENSORS_K10TEMP is not set -# CONFIG_SENSORS_ASB100 is not set -# CONFIG_SENSORS_ATXP1 is not set -# CONFIG_SENSORS_DS1621 is not set -# CONFIG_SENSORS_I5K_AMB is not set -# CONFIG_SENSORS_F71805F is not set -# CONFIG_SENSORS_F71882FG is not set -# CONFIG_SENSORS_F75375S is not set -# CONFIG_SENSORS_FSCHMD is not set -# CONFIG_SENSORS_G760A is not set -# CONFIG_SENSORS_GL518SM is not set -# CONFIG_SENSORS_GL520SM is not set +CONFIG_SENSORS_ADT7475=m +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_K10TEMP=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_FSCHMD=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m CONFIG_SENSORS_CORETEMP=m -# CONFIG_SENSORS_IT87 is not set -# CONFIG_SENSORS_LM63 is not set -# CONFIG_SENSORS_LM73 is not set -# CONFIG_SENSORS_LM75 is not set -# CONFIG_SENSORS_LM77 is not set -# CONFIG_SENSORS_LM78 is not set -# CONFIG_SENSORS_LM80 is not set -# CONFIG_SENSORS_LM83 is not set -# CONFIG_SENSORS_LM85 is not set -# CONFIG_SENSORS_LM87 is not set -# CONFIG_SENSORS_LM90 is not set -# CONFIG_SENSORS_LM92 is not set -# CONFIG_SENSORS_LM93 is not set -# CONFIG_SENSORS_LTC4215 is not set -# CONFIG_SENSORS_LTC4245 is not set -# CONFIG_SENSORS_LM95241 is not set -# CONFIG_SENSORS_MAX1619 is not set -# CONFIG_SENSORS_MAX6650 is not set -# CONFIG_SENSORS_PC87360 is not set -# CONFIG_SENSORS_PC87427 is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_SENSORS_SIS5595 is not set -# CONFIG_SENSORS_DME1737 is not set -# CONFIG_SENSORS_SMSC47M1 is not set -# CONFIG_SENSORS_SMSC47M192 is not set -# CONFIG_SENSORS_SMSC47B397 is not set -# CONFIG_SENSORS_ADS7828 is not set -# CONFIG_SENSORS_AMC6821 is not set -# CONFIG_SENSORS_THMC50 is not set -# CONFIG_SENSORS_TMP401 is not set -# CONFIG_SENSORS_TMP421 is not set -# CONFIG_SENSORS_VIA_CPUTEMP is not set +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM73=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_AMC6821=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_VIA_CPUTEMP=m # CONFIG_SENSORS_VIA686A is not set -# CONFIG_SENSORS_VT1211 is not set -# CONFIG_SENSORS_VT8231 is not set -# CONFIG_SENSORS_W83781D is not set -# CONFIG_SENSORS_W83791D is not set -# CONFIG_SENSORS_W83792D is not set -# CONFIG_SENSORS_W83793 is not set -# CONFIG_SENSORS_W83L785TS is not set -# CONFIG_SENSORS_W83L786NG is not set -# CONFIG_SENSORS_W83627HF is not set -# CONFIG_SENSORS_W83627EHF is not set +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83627EHF=m # CONFIG_SENSORS_HDAPS is not set # CONFIG_SENSORS_LIS3_I2C is not set # CONFIG_SENSORS_APPLESMC is not set diff --git a/projects/intel/linux/linux.i386.conf b/projects/intel/linux/linux.i386.conf index 7249944643..aaba2eec0b 100644 --- a/projects/intel/linux/linux.i386.conf +++ b/projects/intel/linux/linux.i386.conf @@ -1076,14 +1076,8 @@ CONFIG_I2C=y CONFIG_I2C_BOARDINFO=y # CONFIG_I2C_COMPAT is not set CONFIG_I2C_CHARDEV=m -# CONFIG_I2C_HELPER_AUTO is not set - -# -# I2C Algorithms -# +CONFIG_I2C_HELPER_AUTO=y CONFIG_I2C_ALGOBIT=y -# CONFIG_I2C_ALGOPCF is not set -# CONFIG_I2C_ALGOPCA is not set # # I2C Hardware Bus support diff --git a/projects/intel/linux/linux.x86_64.conf b/projects/intel/linux/linux.x86_64.conf index 8655e4fda2..abfd9a63f2 100644 --- a/projects/intel/linux/linux.x86_64.conf +++ b/projects/intel/linux/linux.x86_64.conf @@ -1042,14 +1042,8 @@ CONFIG_I2C=y CONFIG_I2C_BOARDINFO=y # CONFIG_I2C_COMPAT is not set CONFIG_I2C_CHARDEV=m -# CONFIG_I2C_HELPER_AUTO is not set - -# -# I2C Algorithms -# +CONFIG_I2C_HELPER_AUTO=y CONFIG_I2C_ALGOBIT=y -# CONFIG_I2C_ALGOPCF is not set -# CONFIG_I2C_ALGOPCA is not set # # I2C Hardware Bus support From 222bdafa173dab066d4ee236107a9b4483feffc7 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 23 Apr 2010 23:26:06 +0200 Subject: [PATCH 070/171] projects/*/options: - add option to install sensor support --- packages/mediacenter/xbmc/install | 2 +- projects/ION/options | 3 +++ projects/generic/options | 3 +++ projects/intel/options | 3 +++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/mediacenter/xbmc/install b/packages/mediacenter/xbmc/install index 80641b0ee7..347b08cfa8 100755 --- a/packages/mediacenter/xbmc/install +++ b/packages/mediacenter/xbmc/install @@ -130,6 +130,6 @@ mkdir -p $INSTALL/usr/share/xbmc/addons $SCRIPTS/install alsa $SCRIPTS/install lirc [ ! "$LCD_DRIVER" = none ] && $SCRIPTS/install lcdproc + [ "$SENSOR_SUPPORT" = yes ] && $SCRIPTS/install lm_sensors $SCRIPTS/install autoupdate - $SCRIPTS/install lm_sensors diff --git a/projects/ION/options b/projects/ION/options index 9b31482838..63e5c3d9e1 100644 --- a/projects/ION/options +++ b/projects/ION/options @@ -115,6 +115,9 @@ # e.g. FIRMWARE="iwl3945 iwl5000" FIRMWARE="" +# build with lm_sensors hardware monitoring support (yes / no) + SENSOR_SUPPORT="yes" + # build with games support (yes / no) GAMES="no" diff --git a/projects/generic/options b/projects/generic/options index 6483253d69..a356da41db 100644 --- a/projects/generic/options +++ b/projects/generic/options @@ -115,6 +115,9 @@ # e.g. FIRMWARE="iwl3945 iwl5000" FIRMWARE="ipw2100 ipw2200 iwl1000 iwl3945 iwl4965 iwl5000 iwl5150 iwl6000" +# build with lm_sensors hardware monitoring support (yes / no) + SENSOR_SUPPORT="yes" + # build with games support (yes / no) GAMES="no" diff --git a/projects/intel/options b/projects/intel/options index ce8519f887..2f0aaa15d9 100644 --- a/projects/intel/options +++ b/projects/intel/options @@ -115,6 +115,9 @@ # e.g. FIRMWARE="iwl3945 iwl5000" FIRMWARE="iwl5000" +# build with lm_sensors hardware monitoring support (yes / no) + SENSOR_SUPPORT="yes" + # build with games support (yes / no) GAMES="no" From c7f6be5430a92d265b1cc1953a445d707161216f Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 23 Apr 2010 23:28:25 +0200 Subject: [PATCH 071/171] projects/*/options: - add option to build with automatic update support --- packages/mediacenter/xbmc/install | 3 +-- projects/ION/options | 3 +++ projects/generic/options | 3 +++ projects/intel/options | 3 +++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/mediacenter/xbmc/install b/packages/mediacenter/xbmc/install index 347b08cfa8..1b4baa796e 100755 --- a/packages/mediacenter/xbmc/install +++ b/packages/mediacenter/xbmc/install @@ -131,5 +131,4 @@ mkdir -p $INSTALL/usr/share/xbmc/addons $SCRIPTS/install lirc [ ! "$LCD_DRIVER" = none ] && $SCRIPTS/install lcdproc [ "$SENSOR_SUPPORT" = yes ] && $SCRIPTS/install lm_sensors - - $SCRIPTS/install autoupdate + [ "$UPDATE_SUPPORT" = yes ] && $SCRIPTS/install autoupdate diff --git a/projects/ION/options b/projects/ION/options index 63e5c3d9e1..ec811693d9 100644 --- a/projects/ION/options +++ b/projects/ION/options @@ -118,6 +118,9 @@ # build with lm_sensors hardware monitoring support (yes / no) SENSOR_SUPPORT="yes" +# build with automatic update support (yes / no) + UPDATE_SUPPORT="yes" + # build with games support (yes / no) GAMES="no" diff --git a/projects/generic/options b/projects/generic/options index a356da41db..ad58ad9a87 100644 --- a/projects/generic/options +++ b/projects/generic/options @@ -118,6 +118,9 @@ # build with lm_sensors hardware monitoring support (yes / no) SENSOR_SUPPORT="yes" +# build with automatic update support (yes / no) + UPDATE_SUPPORT="yes" + # build with games support (yes / no) GAMES="no" diff --git a/projects/intel/options b/projects/intel/options index 2f0aaa15d9..11f8491a1f 100644 --- a/projects/intel/options +++ b/projects/intel/options @@ -118,6 +118,9 @@ # build with lm_sensors hardware monitoring support (yes / no) SENSOR_SUPPORT="yes" +# build with automatic update support (yes / no) + UPDATE_SUPPORT="yes" + # build with games support (yes / no) GAMES="no" From bcbbdbf51aa3ad6a34066ad6c0919c35737d627e Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 23 Apr 2010 23:54:40 +0200 Subject: [PATCH 072/171] linux: - add init script to load modules --- packages/linux/init.d/05_modules | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100755 packages/linux/init.d/05_modules diff --git a/packages/linux/init.d/05_modules b/packages/linux/init.d/05_modules new file mode 100755 index 0000000000..7f739c2fdd --- /dev/null +++ b/packages/linux/init.d/05_modules @@ -0,0 +1,16 @@ +# +# load modules +# +# runlevels: openelec, textmode + +progress "loading kernel modules" + + ( + IFS=' +' + for module in `cat /etc/modules|grep "^[^#]"`; do + eval "modprobe $module" >/dev/null 2>&1 + done + + exit 0 + )& From 3c94d55cf1cb656417e78f54694ac04e6ba9e9cc Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 23 Apr 2010 23:56:37 +0200 Subject: [PATCH 073/171] linux: - install /etc/modules --- packages/linux/install | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/linux/install b/packages/linux/install index c00b37e7ca..1758b24704 100755 --- a/packages/linux/install +++ b/packages/linux/install @@ -24,6 +24,9 @@ mkdir -p $INSTALL/lib/firmware [ -d $PKG_BUILD/modules/lib/firmware ] && \ cp -rf $PKG_BUILD/modules/lib/firmware/* $INSTALL/lib/firmware || true +mkdir -p $INSTALL/etc + cp $PKG_DIR/config/modules $INSTALL/etc + mkdir -p $INSTALL/etc/modprobe.d $SCRIPTS/install linux-firmware From d1cd4ad3a4eb2e146490f45f6868612b5c184ef7 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 23 Apr 2010 23:57:07 +0200 Subject: [PATCH 074/171] linux: - add module coretemp to /etc/modules --- packages/linux/config/modules | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/linux/config/modules b/packages/linux/config/modules index 36b7731525..84792563ee 100644 --- a/packages/linux/config/modules +++ b/packages/linux/config/modules @@ -2,3 +2,5 @@ # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. + +coretemp \ No newline at end of file From b4eb5599203dab530747cd4028d86dc57f83323c Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 24 Apr 2010 21:31:28 +0200 Subject: [PATCH 075/171] projects/*/linux: - add usbserial and ftdi_sio driver for some USB VFDs --- projects/ION/linux/linux.i386.conf | 48 ++++++++++++++++++++++++- projects/ION/linux/linux.x86_64.conf | 48 ++++++++++++++++++++++++- projects/generic/linux/linux.i386.conf | 50 +++++++++++++++++++++++++- projects/intel/linux/linux.i386.conf | 50 +++++++++++++++++++++++++- projects/intel/linux/linux.x86_64.conf | 50 +++++++++++++++++++++++++- 5 files changed, 241 insertions(+), 5 deletions(-) diff --git a/projects/ION/linux/linux.i386.conf b/projects/ION/linux/linux.i386.conf index f9ed6a26b3..cf1932b77a 100644 --- a/projects/ION/linux/linux.i386.conf +++ b/projects/ION/linux/linux.i386.conf @@ -1607,7 +1607,53 @@ CONFIG_USB_STORAGE_CYPRESS_ATACB=m # # USB port drivers # -# CONFIG_USB_SERIAL is not set +CONFIG_USB_SERIAL=m +# CONFIG_USB_EZUSB is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_CH341 is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_CP210X is not set +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_EMPEG is not set +CONFIG_USB_SERIAL_FTDI_SIO=m +# CONFIG_USB_SERIAL_FUNSOFT is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_GARMIN is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_MOS7720 is not set +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MOTOROLA is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_OTI6858 is not set +# CONFIG_USB_SERIAL_QUALCOMM is not set +# CONFIG_USB_SERIAL_SPCP8X5 is not set +# CONFIG_USB_SERIAL_HP4X is not set +# CONFIG_USB_SERIAL_SAFE is not set +# CONFIG_USB_SERIAL_SIEMENS_MPI is not set +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set +# CONFIG_USB_SERIAL_SYMBOL is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OPTION is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_OPTICON is not set +# CONFIG_USB_SERIAL_DEBUG is not set # # USB Miscellaneous drivers diff --git a/projects/ION/linux/linux.x86_64.conf b/projects/ION/linux/linux.x86_64.conf index 875b5b2d68..3cbc4f2752 100644 --- a/projects/ION/linux/linux.x86_64.conf +++ b/projects/ION/linux/linux.x86_64.conf @@ -1561,7 +1561,53 @@ CONFIG_USB_STORAGE_CYPRESS_ATACB=m # # USB port drivers # -# CONFIG_USB_SERIAL is not set +CONFIG_USB_SERIAL=m +# CONFIG_USB_EZUSB is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_CH341 is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_CP210X is not set +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_EMPEG is not set +CONFIG_USB_SERIAL_FTDI_SIO=m +# CONFIG_USB_SERIAL_FUNSOFT is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_GARMIN is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_MOS7720 is not set +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MOTOROLA is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_OTI6858 is not set +# CONFIG_USB_SERIAL_QUALCOMM is not set +# CONFIG_USB_SERIAL_SPCP8X5 is not set +# CONFIG_USB_SERIAL_HP4X is not set +# CONFIG_USB_SERIAL_SAFE is not set +# CONFIG_USB_SERIAL_SIEMENS_MPI is not set +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set +# CONFIG_USB_SERIAL_SYMBOL is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OPTION is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_OPTICON is not set +# CONFIG_USB_SERIAL_DEBUG is not set # # USB Miscellaneous drivers diff --git a/projects/generic/linux/linux.i386.conf b/projects/generic/linux/linux.i386.conf index 020742caab..abcdb5d6cb 100644 --- a/projects/generic/linux/linux.i386.conf +++ b/projects/generic/linux/linux.i386.conf @@ -1760,7 +1760,53 @@ CONFIG_USB_STORAGE_CYPRESS_ATACB=m # # USB port drivers # -# CONFIG_USB_SERIAL is not set +CONFIG_USB_SERIAL=m +# CONFIG_USB_EZUSB is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_CH341 is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_CP210X is not set +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_EMPEG is not set +CONFIG_USB_SERIAL_FTDI_SIO=m +# CONFIG_USB_SERIAL_FUNSOFT is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_GARMIN is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_MOS7720 is not set +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MOTOROLA is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_OTI6858 is not set +# CONFIG_USB_SERIAL_QUALCOMM is not set +# CONFIG_USB_SERIAL_SPCP8X5 is not set +# CONFIG_USB_SERIAL_HP4X is not set +# CONFIG_USB_SERIAL_SAFE is not set +# CONFIG_USB_SERIAL_SIEMENS_MPI is not set +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set +# CONFIG_USB_SERIAL_SYMBOL is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OPTION is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_OPTICON is not set +# CONFIG_USB_SERIAL_DEBUG is not set # # USB Miscellaneous drivers @@ -1974,6 +2020,8 @@ CONFIG_RT2870=m # I2C encoder or helper chips # # CONFIG_DRM_I2C_CH7006 is not set +# CONFIG_USB_SERIAL_QUATECH2 is not set +# CONFIG_USB_SERIAL_QUATECH_USB2 is not set # CONFIG_VT6655 is not set # CONFIG_VT6656 is not set # CONFIG_FB_UDL is not set diff --git a/projects/intel/linux/linux.i386.conf b/projects/intel/linux/linux.i386.conf index aaba2eec0b..6473ae01ce 100644 --- a/projects/intel/linux/linux.i386.conf +++ b/projects/intel/linux/linux.i386.conf @@ -1740,7 +1740,53 @@ CONFIG_USB_STORAGE_CYPRESS_ATACB=m # # USB port drivers # -# CONFIG_USB_SERIAL is not set +CONFIG_USB_SERIAL=m +# CONFIG_USB_EZUSB is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_CH341 is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_CP210X is not set +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_EMPEG is not set +CONFIG_USB_SERIAL_FTDI_SIO=m +# CONFIG_USB_SERIAL_FUNSOFT is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_GARMIN is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_MOS7720 is not set +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MOTOROLA is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_OTI6858 is not set +# CONFIG_USB_SERIAL_QUALCOMM is not set +# CONFIG_USB_SERIAL_SPCP8X5 is not set +# CONFIG_USB_SERIAL_HP4X is not set +# CONFIG_USB_SERIAL_SAFE is not set +# CONFIG_USB_SERIAL_SIEMENS_MPI is not set +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set +# CONFIG_USB_SERIAL_SYMBOL is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OPTION is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_OPTICON is not set +# CONFIG_USB_SERIAL_DEBUG is not set # # USB Miscellaneous drivers @@ -1921,6 +1967,8 @@ CONFIG_STAGING=y # I2C encoder or helper chips # # CONFIG_DRM_I2C_CH7006 is not set +# CONFIG_USB_SERIAL_QUATECH2 is not set +# CONFIG_USB_SERIAL_QUATECH_USB2 is not set # CONFIG_VT6655 is not set # CONFIG_VT6656 is not set # CONFIG_FB_UDL is not set diff --git a/projects/intel/linux/linux.x86_64.conf b/projects/intel/linux/linux.x86_64.conf index abfd9a63f2..e5b0f9c048 100644 --- a/projects/intel/linux/linux.x86_64.conf +++ b/projects/intel/linux/linux.x86_64.conf @@ -1697,7 +1697,53 @@ CONFIG_USB_STORAGE_CYPRESS_ATACB=m # # USB port drivers # -# CONFIG_USB_SERIAL is not set +CONFIG_USB_SERIAL=m +# CONFIG_USB_EZUSB is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_CH341 is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_CP210X is not set +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_EMPEG is not set +CONFIG_USB_SERIAL_FTDI_SIO=m +# CONFIG_USB_SERIAL_FUNSOFT is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_GARMIN is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_MOS7720 is not set +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MOTOROLA is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_OTI6858 is not set +# CONFIG_USB_SERIAL_QUALCOMM is not set +# CONFIG_USB_SERIAL_SPCP8X5 is not set +# CONFIG_USB_SERIAL_HP4X is not set +# CONFIG_USB_SERIAL_SAFE is not set +# CONFIG_USB_SERIAL_SIEMENS_MPI is not set +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set +# CONFIG_USB_SERIAL_SYMBOL is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OPTION is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_OPTICON is not set +# CONFIG_USB_SERIAL_DEBUG is not set # # USB Miscellaneous drivers @@ -1878,6 +1924,8 @@ CONFIG_STAGING=y # I2C encoder or helper chips # # CONFIG_DRM_I2C_CH7006 is not set +# CONFIG_USB_SERIAL_QUATECH2 is not set +# CONFIG_USB_SERIAL_QUATECH_USB2 is not set # CONFIG_VT6655 is not set # CONFIG_VT6656 is not set # CONFIG_FB_UDL is not set From 91623605d89f5fc262c03d24c20ada23f841cb6d Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 24 Apr 2010 23:17:18 +0200 Subject: [PATCH 076/171] xbmc: - update to xbmc-29490 --- .../001-xbmc-fix_libcurl.so_detection.diff | 12 +++ ...ariable_GCC_instead_hardcoded_gcc-0.1.diff | 84 +++++++++++++++++++ packages/mediacenter/xbmc/url | 2 +- 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 packages/mediacenter/xbmc/patches/001-xbmc-fix_libcurl.so_detection.diff create mode 100644 packages/mediacenter/xbmc/patches/303-xbmc-use_variable_GCC_instead_hardcoded_gcc-0.1.diff diff --git a/packages/mediacenter/xbmc/patches/001-xbmc-fix_libcurl.so_detection.diff b/packages/mediacenter/xbmc/patches/001-xbmc-fix_libcurl.so_detection.diff new file mode 100644 index 0000000000..57772d9445 --- /dev/null +++ b/packages/mediacenter/xbmc/patches/001-xbmc-fix_libcurl.so_detection.diff @@ -0,0 +1,12 @@ +diff -Naur xbmc-29428/configure.in xbmc-29428.patch/configure.in +--- xbmc-29428/configure.in 2010-04-22 00:56:44.000000000 +0200 ++++ xbmc-29428.patch/configure.in 2010-04-22 19:06:31.906738563 +0200 +@@ -478,7 +478,7 @@ + while read output; do objdump -p $output | \ + grep SONAME | \ + awk 'BEGIN { FS = " " } ; { print $2 }'; done) +- if [ -z "$LIBCURL_BASENAME" ]; then ++ if [[ -z "$LIBCURL_BASENAME" ]]; then + echo "Unable to determine basename of libcurl library" + fi + diff --git a/packages/mediacenter/xbmc/patches/303-xbmc-use_variable_GCC_instead_hardcoded_gcc-0.1.diff b/packages/mediacenter/xbmc/patches/303-xbmc-use_variable_GCC_instead_hardcoded_gcc-0.1.diff new file mode 100644 index 0000000000..182c72f5ed --- /dev/null +++ b/packages/mediacenter/xbmc/patches/303-xbmc-use_variable_GCC_instead_hardcoded_gcc-0.1.diff @@ -0,0 +1,84 @@ +diff -Naur xbmc-29428/configure.in xbmc-29428.patch/configure.in +--- xbmc-29428/configure.in 2010-04-22 00:56:44.000000000 +0200 ++++ xbmc-29428.patch/configure.in 2010-04-22 02:22:21.771774020 +0200 +@@ -474,7 +474,7 @@ + # check for library basenames + if test "$host_vendor" != "apple"; then + # libcurl +- LIBCURL_BASENAME=$(gcc $CFLAGS -print-file-name=libcurl.so | \ ++ LIBCURL_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libcurl.so | \ + while read output; do objdump -p $output | \ + grep SONAME | \ + awk 'BEGIN { FS = " " } ; { print $2 }'; done) +@@ -483,7 +483,7 @@ + fi + + # libFLAC +- LIBFLAC_BASENAME=$(gcc $CFLAGS -print-file-name=libFLAC.so | \ ++ LIBFLAC_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libFLAC.so | \ + while read output; do objdump -p $output | \ + grep SONAME | \ + awk 'BEGIN { FS = " " } ; { print $2 }'; done) +@@ -492,7 +492,7 @@ + fi + + # libvorbisfile +- LIBVORBISFILE_BASENAME=$(gcc $CFLAGS -print-file-name=libvorbisfile.so | \ ++ LIBVORBISFILE_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libvorbisfile.so | \ + while read output; do objdump -p $output | \ + grep SONAME | \ + awk 'BEGIN { FS = " " } ; { print $2 }'; done) +@@ -501,7 +501,7 @@ + fi + + # libmodplug +- LIBMODPLUG_BASENAME=$(gcc $CFLAGS -print-file-name=libmodplug.so | \ ++ LIBMODPLUG_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libmodplug.so | \ + while read output; do objdump -p $output | \ + grep SONAME | \ + awk 'BEGIN { FS = " " } ; { print $2 }'; done) +@@ -510,7 +510,7 @@ + fi + + # libfaad +- LIBFAAD_BASENAME=$(gcc $CFLAGS -print-file-name=libfaad.so | \ ++ LIBFAAD_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libfaad.so | \ + while read output; do objdump -p $output | \ + grep SONAME | \ + awk 'BEGIN { FS = " " } ; { print $2 }'; done) +@@ -519,7 +519,7 @@ + fi + + # libmad +- LIBMAD_BASENAME=$(gcc $CFLAGS -print-file-name=libmad.so | \ ++ LIBMAD_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libmad.so | \ + while read output; do objdump -p $output | \ + grep SONAME | \ + awk 'BEGIN { FS = " " } ; { print $2 }'; done) +@@ -528,7 +528,7 @@ + fi + + # libogg +- LIBOGG_BASENAME=$(gcc $CFLAGS -print-file-name=libogg.so | \ ++ LIBOGG_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libogg.so | \ + while read output; do objdump -p $output | \ + grep SONAME | \ + awk 'BEGIN { FS = " " } ; { print $2 }'; done) +@@ -537,7 +537,7 @@ + fi + + # libvorbisenc +- LIBVORBISENC_BASENAME=$(gcc $CFLAGS -print-file-name=libvorbisenc.so | \ ++ LIBVORBISENC_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libvorbisenc.so | \ + while read output; do objdump -p $output | \ + grep SONAME | \ + awk 'BEGIN { FS = " " } ; { print $2 }'; done) +@@ -546,7 +546,7 @@ + fi + + # libvorbis +- LIBVORBIS_BASENAME=$(gcc $CFLAGS -print-file-name=libvorbis.so | \ ++ LIBVORBIS_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libvorbis.so | \ + while read output; do objdump -p $output | \ + grep SONAME | \ + awk 'BEGIN { FS = " " } ; { print $2 }'; done) diff --git a/packages/mediacenter/xbmc/url b/packages/mediacenter/xbmc/url index 1b2ad8d941..f995ab9a88 100644 --- a/packages/mediacenter/xbmc/url +++ b/packages/mediacenter/xbmc/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xbmc-29203.tar.bz2 +http://sources.openelec.tv/svn/xbmc-29490.tar.bz2 From cbe7f06cbc6108d673c308d3472639000b5acca6 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 24 Apr 2010 23:17:39 +0200 Subject: [PATCH 077/171] xbmc-theme-Confluence: - update to xbmc-theme-Confluence-29490 --- packages/mediacenter/xbmc-theme-Confluence/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mediacenter/xbmc-theme-Confluence/url b/packages/mediacenter/xbmc-theme-Confluence/url index 7df3aced22..537ae45965 100644 --- a/packages/mediacenter/xbmc-theme-Confluence/url +++ b/packages/mediacenter/xbmc-theme-Confluence/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xbmc-theme-Confluence-29203.tar.bz2 +http://sources.openelec.tv/svn/xbmc-theme-Confluence-29490.tar.bz2 From 04511100d85d7655c5b0abc6d94c2a9673d10ba6 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 25 Apr 2010 15:49:03 +0200 Subject: [PATCH 078/171] udisks: - speedup a bit automounting of internally disks --- packages/sysutils/udisks/init.d/14_mount-disks | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/sysutils/udisks/init.d/14_mount-disks b/packages/sysutils/udisks/init.d/14_mount-disks index 509a971541..a85d9b8850 100755 --- a/packages/sysutils/udisks/init.d/14_mount-disks +++ b/packages/sysutils/udisks/init.d/14_mount-disks @@ -3,7 +3,8 @@ # # runlevels: openelec, textmode -progress "automount internal disks" +( + progress "automount internal disks" drive_dump () { udisks --dump | tr -d ' ' | grep 'device-file:' | cut -d ':' -f2 @@ -22,4 +23,5 @@ progress "automount internal disks" udisks --mount "$DEVICE" >/dev/null fi - done \ No newline at end of file + done +)& From 8265c228d61e62d11bc9d2165aa8543d63b94e73 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 25 Apr 2010 16:46:17 +0200 Subject: [PATCH 079/171] autoupdate: - use usleep instead sleep --- packages/sysutils/autoupdate/scripts/autoupdate.devel | 2 +- packages/sysutils/autoupdate/scripts/autoupdate.release | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sysutils/autoupdate/scripts/autoupdate.devel b/packages/sysutils/autoupdate/scripts/autoupdate.devel index a44b5c6e8a..e5a128b163 100755 --- a/packages/sysutils/autoupdate/scripts/autoupdate.devel +++ b/packages/sysutils/autoupdate/scripts/autoupdate.devel @@ -10,7 +10,7 @@ if [ ! -f /var/lock/update.lock ]; then touch /var/lock/update.lock # sleep a bit, maybe we have a lot of work ;-) - sleep 30 + usleep 30000000 send_message () { xbmc-send --host=127.0.0.1 -a "Notification(Automatic update service:,$1,20000)" diff --git a/packages/sysutils/autoupdate/scripts/autoupdate.release b/packages/sysutils/autoupdate/scripts/autoupdate.release index 58c11b9714..3d1f5cdfdf 100755 --- a/packages/sysutils/autoupdate/scripts/autoupdate.release +++ b/packages/sysutils/autoupdate/scripts/autoupdate.release @@ -10,7 +10,7 @@ if [ ! -f /var/lock/update.lock ]; then touch /var/lock/update.lock # sleep a bit, maybe we have a lot of work ;-) - sleep 30 + usleep 30000000 send_message () { xbmc-send --host=127.0.0.1 -a "Notification(Automatic Update Service:,$1,20000)" From 7f877e3fd209cf44d38f1417090c8f25cbfa726f Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 25 Apr 2010 19:06:17 +0200 Subject: [PATCH 080/171] projects/*/options: - build only irtrans lcddriver for the moment --- projects/ION/options | 2 +- projects/generic/options | 2 +- projects/intel/options | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/ION/options b/projects/ION/options index ec811693d9..53ff6e3e0a 100644 --- a/projects/ION/options +++ b/projects/ION/options @@ -108,7 +108,7 @@ # 'all' compiles all drivers; # 'all,!xxx,!yyy' de-selects previously selected drivers # "none" for disable LCD support - LCD_DRIVER="none" + LCD_DRIVER="irtrans" # Firmware to use (iwl1000, iwl3945, iwl4965, iwl5000, iwl5150, iwl6000) # Space separated list is supported, diff --git a/projects/generic/options b/projects/generic/options index ad58ad9a87..ed806f3546 100644 --- a/projects/generic/options +++ b/projects/generic/options @@ -108,7 +108,7 @@ # 'all' compiles all drivers; # 'all,!xxx,!yyy' de-selects previously selected drivers # "none" for disable LCD support - LCD_DRIVER="all" + LCD_DRIVER="irtrans" # Firmware to use (iwl1000, iwl3945, iwl4965, iwl5000, iwl5150, iwl6000) # Space separated list is supported, diff --git a/projects/intel/options b/projects/intel/options index 11f8491a1f..6600a199cb 100644 --- a/projects/intel/options +++ b/projects/intel/options @@ -108,7 +108,7 @@ # 'all' compiles all drivers; # 'all,!xxx,!yyy' de-selects previously selected drivers # "none" for disable LCD support - LCD_DRIVER="all" + LCD_DRIVER="irtrans" # Firmware to use (iwl1000, iwl3945, iwl4965, iwl5000, iwl5150, iwl6000) # Space separated list is supported, From 25d60e75cc9b49ae35dfd903cf69ef4d38a72d22 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 25 Apr 2010 19:06:47 +0200 Subject: [PATCH 081/171] lcdproc: - dont run in foreground --- packages/sysutils/lcdproc/build | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/sysutils/lcdproc/build b/packages/sysutils/lcdproc/build index a829357336..ef99e42eea 100755 --- a/packages/sysutils/lcdproc/build +++ b/packages/sysutils/lcdproc/build @@ -17,3 +17,4 @@ make sed -i -e "s|^DriverPath=.*$|DriverPath=/usr/lib/lcdproc/|" LCDd.conf sed -i -e "s|^Driver=.*$|Driver=irtrans|" LCDd.conf +sed -i -e "s|^Foreground=.*$|Foreground=no|" LCDd.conf \ No newline at end of file From 68ce1f83c9451179da0d0f451196a4876964c147 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 25 Apr 2010 19:07:35 +0200 Subject: [PATCH 082/171] linux: - add upstream fixes for ftdi_sio driver from 2.6.34 --- .../linux-2.6.33.2-ftdi_sio_upstream-0.1.diff | 703 ++++++++++++++++++ 1 file changed, 703 insertions(+) create mode 100644 packages/linux/patches/linux-2.6.33.2-ftdi_sio_upstream-0.1.diff diff --git a/packages/linux/patches/linux-2.6.33.2-ftdi_sio_upstream-0.1.diff b/packages/linux/patches/linux-2.6.33.2-ftdi_sio_upstream-0.1.diff new file mode 100644 index 0000000000..4467a044c7 --- /dev/null +++ b/packages/linux/patches/linux-2.6.33.2-ftdi_sio_upstream-0.1.diff @@ -0,0 +1,703 @@ +diff -Naur linux-2.6.33.2/drivers/usb/serial/ftdi_sio.c linux-2.6.33.2.patch/drivers/usb/serial/ftdi_sio.c +--- linux-2.6.33.2/drivers/usb/serial/ftdi_sio.c 2010-04-02 01:02:33.000000000 +0200 ++++ linux-2.6.33.2.patch/drivers/usb/serial/ftdi_sio.c 2010-04-25 18:42:20.184548098 +0200 +@@ -33,12 +33,12 @@ + #include + #include + #include +-#include + #include + #include + #include + #include + #include ++#include + #include + #include + #include +@@ -88,10 +88,10 @@ + + unsigned int latency; /* latency setting in use */ + spinlock_t tx_lock; /* spinlock for transmit state */ +- unsigned long tx_bytes; + unsigned long tx_outstanding_bytes; + unsigned long tx_outstanding_urbs; + unsigned short max_packet_size; ++ struct mutex cfg_lock; /* Avoid mess by parallel calls of config ioctl() and change_speed() */ + }; + + /* struct ftdi_sio_quirk is used by devices requiring special attention. */ +@@ -818,7 +818,7 @@ + .name = "ftdi_sio", + }, + .description = "FTDI USB Serial Device", +- .usb_driver = &ftdi_driver , ++ .usb_driver = &ftdi_driver, + .id_table = id_table_combined, + .num_ports = 1, + .probe = ftdi_sio_probe, +@@ -834,8 +834,8 @@ + .chars_in_buffer = ftdi_chars_in_buffer, + .read_bulk_callback = ftdi_read_bulk_callback, + .write_bulk_callback = ftdi_write_bulk_callback, +- .tiocmget = ftdi_tiocmget, +- .tiocmset = ftdi_tiocmset, ++ .tiocmget = ftdi_tiocmget, ++ .tiocmset = ftdi_tiocmset, + .ioctl = ftdi_ioctl, + .set_termios = ftdi_set_termios, + .break_ctl = ftdi_break_ctl, +@@ -941,7 +941,6 @@ + unsigned int clear) + { + struct ftdi_private *priv = usb_get_serial_port_data(port); +- char *buf; + unsigned urb_value; + int rv; + +@@ -950,10 +949,6 @@ + return 0; /* no change */ + } + +- buf = kmalloc(1, GFP_NOIO); +- if (!buf) +- return -ENOMEM; +- + clear &= ~set; /* 'set' takes precedence over 'clear' */ + urb_value = 0; + if (clear & TIOCM_DTR) +@@ -969,9 +964,7 @@ + FTDI_SIO_SET_MODEM_CTRL_REQUEST, + FTDI_SIO_SET_MODEM_CTRL_REQUEST_TYPE, + urb_value, priv->interface, +- buf, 0, WDR_TIMEOUT); +- +- kfree(buf); ++ NULL, 0, WDR_TIMEOUT); + if (rv < 0) { + dbg("%s Error from MODEM_CTRL urb: DTR %s, RTS %s", + __func__, +@@ -1130,16 +1123,11 @@ + static int change_speed(struct tty_struct *tty, struct usb_serial_port *port) + { + struct ftdi_private *priv = usb_get_serial_port_data(port); +- char *buf; + __u16 urb_value; + __u16 urb_index; + __u32 urb_index_value; + int rv; + +- buf = kmalloc(1, GFP_NOIO); +- if (!buf) +- return -ENOMEM; +- + urb_index_value = get_ftdi_divisor(tty, port); + urb_value = (__u16)urb_index_value; + urb_index = (__u16)(urb_index_value >> 16); +@@ -1152,9 +1140,7 @@ + FTDI_SIO_SET_BAUDRATE_REQUEST, + FTDI_SIO_SET_BAUDRATE_REQUEST_TYPE, + urb_value, urb_index, +- buf, 0, WDR_SHORT_TIMEOUT); +- +- kfree(buf); ++ NULL, 0, WDR_SHORT_TIMEOUT); + return rv; + } + +@@ -1162,8 +1148,7 @@ + { + struct ftdi_private *priv = usb_get_serial_port_data(port); + struct usb_device *udev = port->serial->dev; +- char buf[1]; +- int rv = 0; ++ int rv; + int l = priv->latency; + + if (priv->flags & ASYNC_LOW_LATENCY) +@@ -1176,8 +1161,7 @@ + FTDI_SIO_SET_LATENCY_TIMER_REQUEST, + FTDI_SIO_SET_LATENCY_TIMER_REQUEST_TYPE, + l, priv->interface, +- buf, 0, WDR_TIMEOUT); +- ++ NULL, 0, WDR_TIMEOUT); + if (rv < 0) + dev_err(&port->dev, "Unable to write latency timer: %i\n", rv); + return rv; +@@ -1187,24 +1171,29 @@ + { + struct ftdi_private *priv = usb_get_serial_port_data(port); + struct usb_device *udev = port->serial->dev; +- unsigned short latency = 0; +- int rv = 0; +- ++ unsigned char *buf; ++ int rv; + + dbg("%s", __func__); + ++ buf = kmalloc(1, GFP_KERNEL); ++ if (!buf) ++ return -ENOMEM; ++ + rv = usb_control_msg(udev, + usb_rcvctrlpipe(udev, 0), + FTDI_SIO_GET_LATENCY_TIMER_REQUEST, + FTDI_SIO_GET_LATENCY_TIMER_REQUEST_TYPE, + 0, priv->interface, +- (char *) &latency, 1, WDR_TIMEOUT); +- +- if (rv < 0) { ++ buf, 1, WDR_TIMEOUT); ++ if (rv < 0) + dev_err(&port->dev, "Unable to read latency timer: %i\n", rv); +- return -EIO; +- } +- return latency; ++ else ++ priv->latency = buf[0]; ++ ++ kfree(buf); ++ ++ return rv; + } + + static int get_serial_info(struct usb_serial_port *port, +@@ -1235,7 +1224,7 @@ + if (copy_from_user(&new_serial, newinfo, sizeof(new_serial))) + return -EFAULT; + +- lock_kernel(); ++ mutex_lock(&priv->cfg_lock); + old_priv = *priv; + + /* Do error checking and permission checking */ +@@ -1243,7 +1232,7 @@ + if (!capable(CAP_SYS_ADMIN)) { + if (((new_serial.flags & ~ASYNC_USR_MASK) != + (priv->flags & ~ASYNC_USR_MASK))) { +- unlock_kernel(); ++ mutex_unlock(&priv->cfg_lock); + return -EPERM; + } + priv->flags = ((priv->flags & ~ASYNC_USR_MASK) | +@@ -1254,7 +1243,7 @@ + + if ((new_serial.baud_base != priv->baud_base) && + (new_serial.baud_base < 9600)) { +- unlock_kernel(); ++ mutex_unlock(&priv->cfg_lock); + return -EINVAL; + } + +@@ -1284,11 +1273,11 @@ + (priv->flags & ASYNC_SPD_MASK)) || + (((priv->flags & ASYNC_SPD_MASK) == ASYNC_SPD_CUST) && + (old_priv.custom_divisor != priv->custom_divisor))) { +- unlock_kernel(); + change_speed(tty, port); ++ mutex_unlock(&priv->cfg_lock); + } + else +- unlock_kernel(); ++ mutex_unlock(&priv->cfg_lock); + return 0; + + } /* set_serial_info */ +@@ -1344,20 +1333,20 @@ + __func__); + } + } else if (version < 0x200) { +- /* Old device. Assume its the original SIO. */ ++ /* Old device. Assume it's the original SIO. */ + priv->chip_type = SIO; + priv->baud_base = 12000000 / 16; + priv->write_offset = 1; + } else if (version < 0x400) { +- /* Assume its an FT8U232AM (or FT8U245AM) */ ++ /* Assume it's an FT8U232AM (or FT8U245AM) */ + /* (It might be a BM because of the iSerialNumber bug, + * but it will still work as an AM device.) */ + priv->chip_type = FT8U232AM; + } else if (version < 0x600) { +- /* Assume its an FT232BM (or FT245BM) */ ++ /* Assume it's an FT232BM (or FT245BM) */ + priv->chip_type = FT232BM; + } else { +- /* Assume its an FT232R */ ++ /* Assume it's an FT232R */ + priv->chip_type = FT232RL; + } + dev_info(&udev->dev, "Detected %s\n", ftdi_chip_name[priv->chip_type]); +@@ -1377,7 +1366,7 @@ + struct usb_endpoint_descriptor *ep_desc = &interface->cur_altsetting->endpoint[1].desc; + + unsigned num_endpoints; +- int i = 0; ++ int i; + + num_endpoints = interface->cur_altsetting->desc.bNumEndpoints; + dev_info(&udev->dev, "Number of endpoints %d\n", num_endpoints); +@@ -1429,7 +1418,7 @@ + struct usb_serial_port *port = to_usb_serial_port(dev); + struct ftdi_private *priv = usb_get_serial_port_data(port); + int v = simple_strtoul(valbuf, NULL, 10); +- int rv = 0; ++ int rv; + + priv->latency = v; + rv = write_latency_timer(port); +@@ -1446,9 +1435,8 @@ + struct usb_serial_port *port = to_usb_serial_port(dev); + struct ftdi_private *priv = usb_get_serial_port_data(port); + struct usb_device *udev = port->serial->dev; +- char buf[1]; + int v = simple_strtoul(valbuf, NULL, 10); +- int rv = 0; ++ int rv; + + dbg("%s: setting event char = %i", __func__, v); + +@@ -1457,8 +1445,7 @@ + FTDI_SIO_SET_EVENT_CHAR_REQUEST, + FTDI_SIO_SET_EVENT_CHAR_REQUEST_TYPE, + v, priv->interface, +- buf, 0, WDR_TIMEOUT); +- ++ NULL, 0, WDR_TIMEOUT); + if (rv < 0) { + dbg("Unable to write event character: %i", rv); + return -EIO; +@@ -1557,9 +1544,9 @@ + + kref_init(&priv->kref); + spin_lock_init(&priv->tx_lock); ++ mutex_init(&priv->cfg_lock); + init_waitqueue_head(&priv->delta_msr_wait); +- /* This will push the characters through immediately rather +- than queue a task to deliver them */ ++ + priv->flags = ASYNC_LOW_LATENCY; + + if (quirk && quirk->port_probe) +@@ -1591,7 +1578,8 @@ + + ftdi_determine_type(port); + ftdi_set_max_packet_size(port); +- read_latency_timer(port); ++ if (read_latency_timer(port) < 0) ++ priv->latency = 16; + create_sysfs_attrs(port); + return 0; + } +@@ -1636,8 +1624,6 @@ + { + struct usb_device *udev = serial->dev; + int latency = ndi_latency_timer; +- int rv = 0; +- char buf[1]; + + if (latency == 0) + latency = 1; +@@ -1647,10 +1633,11 @@ + dbg("%s setting NDI device latency to %d", __func__, latency); + dev_info(&udev->dev, "NDI device with a latency value of %d", latency); + +- rv = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), ++ /* FIXME: errors are not returned */ ++ usb_control_msg(udev, usb_sndctrlpipe(udev, 0), + FTDI_SIO_SET_LATENCY_TIMER_REQUEST, + FTDI_SIO_SET_LATENCY_TIMER_REQUEST_TYPE, +- latency, 0, buf, 0, WDR_TIMEOUT); ++ latency, 0, NULL, 0, WDR_TIMEOUT); + return 0; + } + +@@ -1726,7 +1713,7 @@ + urb->transfer_buffer_length, + ftdi_read_bulk_callback, port); + result = usb_submit_urb(urb, mem_flags); +- if (result) ++ if (result && result != -EPERM) + dev_err(&port->dev, + "%s - failed submitting read urb, error %d\n", + __func__, result); +@@ -1738,16 +1725,10 @@ + struct usb_device *dev = port->serial->dev; + struct ftdi_private *priv = usb_get_serial_port_data(port); + unsigned long flags; +- +- int result = 0; +- char buf[1]; /* Needed for the usb_control_msg I think */ ++ int result; + + dbg("%s", __func__); + +- spin_lock_irqsave(&priv->tx_lock, flags); +- priv->tx_bytes = 0; +- spin_unlock_irqrestore(&priv->tx_lock, flags); +- + write_latency_timer(port); + + /* No error checking for this (will get errors later anyway) */ +@@ -1755,7 +1736,7 @@ + usb_control_msg(dev, usb_sndctrlpipe(dev, 0), + FTDI_SIO_RESET_REQUEST, FTDI_SIO_RESET_REQUEST_TYPE, + FTDI_SIO_RESET_SIO, +- priv->interface, buf, 0, WDR_TIMEOUT); ++ priv->interface, NULL, 0, WDR_TIMEOUT); + + /* Termios defaults are set by usb_serial_init. We don't change + port->tty->termios - this would lose speed settings, etc. +@@ -1783,7 +1764,6 @@ + static void ftdi_dtr_rts(struct usb_serial_port *port, int on) + { + struct ftdi_private *priv = usb_get_serial_port_data(port); +- char buf[1]; + + mutex_lock(&port->serial->disc_mutex); + if (!port->serial->disconnected) { +@@ -1792,7 +1772,7 @@ + usb_sndctrlpipe(port->serial->dev, 0), + FTDI_SIO_SET_FLOW_CTRL_REQUEST, + FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE, +- 0, priv->interface, buf, 0, ++ 0, priv->interface, NULL, 0, + WDR_TIMEOUT) < 0) { + dev_err(&port->dev, "error from flowcontrol urb\n"); + } +@@ -1853,7 +1833,7 @@ + spin_lock_irqsave(&priv->tx_lock, flags); + if (priv->tx_outstanding_urbs > URB_UPPER_LIMIT) { + spin_unlock_irqrestore(&priv->tx_lock, flags); +- dbg("%s - write limit hit\n", __func__); ++ dbg("%s - write limit hit", __func__); + return 0; + } + priv->tx_outstanding_urbs++; +@@ -1933,7 +1913,6 @@ + } else { + spin_lock_irqsave(&priv->tx_lock, flags); + priv->tx_outstanding_bytes += count; +- priv->tx_bytes += count; + spin_unlock_irqrestore(&priv->tx_lock, flags); + } + +@@ -2160,8 +2139,7 @@ + { + struct usb_serial_port *port = tty->driver_data; + struct ftdi_private *priv = usb_get_serial_port_data(port); +- __u16 urb_value = 0; +- char buf[1]; ++ __u16 urb_value; + + /* break_state = -1 to turn on break, and 0 to turn off break */ + /* see drivers/char/tty_io.c to see it used */ +@@ -2177,7 +2155,7 @@ + FTDI_SIO_SET_DATA_REQUEST, + FTDI_SIO_SET_DATA_REQUEST_TYPE, + urb_value , priv->interface, +- buf, 0, WDR_TIMEOUT) < 0) { ++ NULL, 0, WDR_TIMEOUT) < 0) { + dev_err(&port->dev, "%s FAILED to enable/disable break state " + "(state was %d)\n", __func__, break_state); + } +@@ -2201,7 +2179,6 @@ + struct ktermios *termios = tty->termios; + unsigned int cflag = termios->c_cflag; + __u16 urb_value; /* will hold the new flags */ +- char buf[1]; /* Perhaps I should dynamically alloc this? */ + + /* Added for xon/xoff support */ + unsigned int iflag = termios->c_iflag; +@@ -2252,12 +2229,10 @@ + } + if (cflag & CSIZE) { + switch (cflag & CSIZE) { +- case CS5: urb_value |= 5; dbg("Setting CS5"); break; +- case CS6: urb_value |= 6; dbg("Setting CS6"); break; + case CS7: urb_value |= 7; dbg("Setting CS7"); break; + case CS8: urb_value |= 8; dbg("Setting CS8"); break; + default: +- dev_err(&port->dev, "CSIZE was set but not CS5-CS8\n"); ++ dev_err(&port->dev, "CSIZE was set but not CS7-CS8\n"); + } + } + +@@ -2269,7 +2244,7 @@ + FTDI_SIO_SET_DATA_REQUEST, + FTDI_SIO_SET_DATA_REQUEST_TYPE, + urb_value , priv->interface, +- buf, 0, WDR_SHORT_TIMEOUT) < 0) { ++ NULL, 0, WDR_SHORT_TIMEOUT) < 0) { + dev_err(&port->dev, "%s FAILED to set " + "databits/stopbits/parity\n", __func__); + } +@@ -2281,7 +2256,7 @@ + FTDI_SIO_SET_FLOW_CTRL_REQUEST, + FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE, + 0, priv->interface, +- buf, 0, WDR_TIMEOUT) < 0) { ++ NULL, 0, WDR_TIMEOUT) < 0) { + dev_err(&port->dev, + "%s error from disable flowcontrol urb\n", + __func__); +@@ -2290,9 +2265,11 @@ + clear_mctrl(port, TIOCM_DTR | TIOCM_RTS); + } else { + /* set the baudrate determined before */ ++ mutex_lock(&priv->cfg_lock); + if (change_speed(tty, port)) + dev_err(&port->dev, "%s urb failed to set baudrate\n", + __func__); ++ mutex_unlock(&priv->cfg_lock); + /* Ensure RTS and DTR are raised when baudrate changed from 0 */ + if (!old_termios || (old_termios->c_cflag & CBAUD) == B0) + set_mctrl(port, TIOCM_DTR | TIOCM_RTS); +@@ -2307,7 +2284,7 @@ + FTDI_SIO_SET_FLOW_CTRL_REQUEST, + FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE, + 0 , (FTDI_SIO_RTS_CTS_HS | priv->interface), +- buf, 0, WDR_TIMEOUT) < 0) { ++ NULL, 0, WDR_TIMEOUT) < 0) { + dev_err(&port->dev, + "urb failed to set to rts/cts flow control\n"); + } +@@ -2339,7 +2316,7 @@ + FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE, + urb_value , (FTDI_SIO_XON_XOFF_HS + | priv->interface), +- buf, 0, WDR_TIMEOUT) < 0) { ++ NULL, 0, WDR_TIMEOUT) < 0) { + dev_err(&port->dev, "urb failed to set to " + "xon/xoff flow control\n"); + } +@@ -2353,7 +2330,7 @@ + FTDI_SIO_SET_FLOW_CTRL_REQUEST, + FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE, + 0, priv->interface, +- buf, 0, WDR_TIMEOUT) < 0) { ++ NULL, 0, WDR_TIMEOUT) < 0) { + dev_err(&port->dev, + "urb failed to clear flow control\n"); + } +@@ -2367,21 +2344,22 @@ + { + struct usb_serial_port *port = tty->driver_data; + struct ftdi_private *priv = usb_get_serial_port_data(port); +- unsigned char buf[2]; ++ unsigned char *buf; ++ int len; + int ret; + + dbg("%s TIOCMGET", __func__); ++ ++ buf = kmalloc(2, GFP_KERNEL); ++ if (!buf) ++ return -ENOMEM; ++ /* ++ * The 8U232AM returns a two byte value (the SIO a 1 byte value) in ++ * the same format as the data returned from the in point. ++ */ + switch (priv->chip_type) { + case SIO: +- /* Request the status from the device */ +- ret = usb_control_msg(port->serial->dev, +- usb_rcvctrlpipe(port->serial->dev, 0), +- FTDI_SIO_GET_MODEM_STATUS_REQUEST, +- FTDI_SIO_GET_MODEM_STATUS_REQUEST_TYPE, +- 0, 0, +- buf, 1, WDR_TIMEOUT); +- if (ret < 0) +- return ret; ++ len = 1; + break; + case FT8U232AM: + case FT232BM: +@@ -2389,27 +2367,30 @@ + case FT232RL: + case FT2232H: + case FT4232H: +- /* the 8U232AM returns a two byte value (the sio is a 1 byte +- value) - in the same format as the data returned from the in +- point */ +- ret = usb_control_msg(port->serial->dev, +- usb_rcvctrlpipe(port->serial->dev, 0), +- FTDI_SIO_GET_MODEM_STATUS_REQUEST, +- FTDI_SIO_GET_MODEM_STATUS_REQUEST_TYPE, +- 0, priv->interface, +- buf, 2, WDR_TIMEOUT); +- if (ret < 0) +- return ret; ++ len = 2; + break; + default: +- return -EFAULT; ++ ret = -EFAULT; ++ goto out; + } + +- return (buf[0] & FTDI_SIO_DSR_MASK ? TIOCM_DSR : 0) | ++ ret = usb_control_msg(port->serial->dev, ++ usb_rcvctrlpipe(port->serial->dev, 0), ++ FTDI_SIO_GET_MODEM_STATUS_REQUEST, ++ FTDI_SIO_GET_MODEM_STATUS_REQUEST_TYPE, ++ 0, priv->interface, ++ buf, len, WDR_TIMEOUT); ++ if (ret < 0) ++ goto out; ++ ++ ret = (buf[0] & FTDI_SIO_DSR_MASK ? TIOCM_DSR : 0) | + (buf[0] & FTDI_SIO_CTS_MASK ? TIOCM_CTS : 0) | + (buf[0] & FTDI_SIO_RI_MASK ? TIOCM_RI : 0) | + (buf[0] & FTDI_SIO_RLSD_MASK ? TIOCM_CD : 0) | + priv->last_dtr_rts; ++out: ++ kfree(buf); ++ return ret; + } + + static int ftdi_tiocmset(struct tty_struct *tty, struct file *file, +@@ -2514,8 +2495,7 @@ + port->throttled = port->throttle_req = 0; + spin_unlock_irqrestore(&port->lock, flags); + +- /* Resubmit urb if throttled and open. */ +- if (was_throttled && test_bit(ASYNCB_INITIALIZED, &port->port.flags)) ++ if (was_throttled) + ftdi_submit_read_urb(port, GFP_KERNEL); + } + +diff -Naur linux-2.6.33.2/drivers/usb/serial/ftdi_sio.h linux-2.6.33.2.patch/drivers/usb/serial/ftdi_sio.h +--- linux-2.6.33.2/drivers/usb/serial/ftdi_sio.h 2010-04-02 01:02:33.000000000 +0200 ++++ linux-2.6.33.2.patch/drivers/usb/serial/ftdi_sio.h 2010-04-25 18:40:02.713423244 +0200 +@@ -28,13 +28,13 @@ + #define FTDI_SIO_SET_FLOW_CTRL 2 /* Set flow control register */ + #define FTDI_SIO_SET_BAUD_RATE 3 /* Set baud rate */ + #define FTDI_SIO_SET_DATA 4 /* Set the data characteristics of the port */ +-#define FTDI_SIO_GET_MODEM_STATUS 5 /* Retrieve current value of modern status register */ ++#define FTDI_SIO_GET_MODEM_STATUS 5 /* Retrieve current value of modem status register */ + #define FTDI_SIO_SET_EVENT_CHAR 6 /* Set the event character */ + #define FTDI_SIO_SET_ERROR_CHAR 7 /* Set the error character */ + #define FTDI_SIO_SET_LATENCY_TIMER 9 /* Set the latency timer */ + #define FTDI_SIO_GET_LATENCY_TIMER 10 /* Get the latency timer */ + +-/* Interface indicies for FT2232, FT2232H and FT4232H devices*/ ++/* Interface indices for FT2232, FT2232H and FT4232H devices */ + #define INTERFACE_A 1 + #define INTERFACE_B 2 + #define INTERFACE_C 3 +@@ -270,7 +270,7 @@ + * BmRequestType: 0100 0000b + * bRequest: FTDI_SIO_SET_FLOW_CTRL + * wValue: Xoff/Xon +- * wIndex: Protocol/Port - hIndex is protocl / lIndex is port ++ * wIndex: Protocol/Port - hIndex is protocol / lIndex is port + * wLength: 0 + * Data: None + * +diff -Naur linux-2.6.33.2/drivers/usb/serial/ftdi_sio_ids.h linux-2.6.33.2.patch/drivers/usb/serial/ftdi_sio_ids.h +--- linux-2.6.33.2/drivers/usb/serial/ftdi_sio_ids.h 2010-04-02 01:02:33.000000000 +0200 ++++ linux-2.6.33.2.patch/drivers/usb/serial/ftdi_sio_ids.h 2010-04-25 18:40:09.930546335 +0200 +@@ -22,7 +22,7 @@ + #define FTDI_8U232AM_ALT_PID 0x6006 /* FTDI's alternate PID for above */ + #define FTDI_8U2232C_PID 0x6010 /* Dual channel device */ + #define FTDI_4232H_PID 0x6011 /* Quad channel hi-speed device */ +-#define FTDI_SIO_PID 0x8372 /* Product Id SIO application of 8U100AX */ ++#define FTDI_SIO_PID 0x8372 /* Product Id SIO application of 8U100AX */ + #define FTDI_232RL_PID 0xFBFA /* Product ID for FT232RL */ + + +@@ -49,7 +49,7 @@ + #define LMI_LM3S_DEVEL_BOARD_PID 0xbcd8 + #define LMI_LM3S_EVAL_BOARD_PID 0xbcd9 + +-#define FTDI_TURTELIZER_PID 0xBDC8 /* JTAG/RS-232 adapter by egnite GmBH */ ++#define FTDI_TURTELIZER_PID 0xBDC8 /* JTAG/RS-232 adapter by egnite GmbH */ + + /* OpenDCC (www.opendcc.de) product id */ + #define FTDI_OPENDCC_PID 0xBFD8 +@@ -185,7 +185,7 @@ + #define FTDI_ELV_TFD128_PID 0xE0EC /* ELV Temperatur-Feuchte-Datenlogger TFD 128 */ + #define FTDI_ELV_FM3RX_PID 0xE0ED /* ELV Messwertuebertragung FM3 RX */ + #define FTDI_ELV_WS777_PID 0xE0EE /* Conrad WS 777 */ +-#define FTDI_ELV_EM1010PC_PID 0xE0EF /* Engery monitor EM 1010 PC */ ++#define FTDI_ELV_EM1010PC_PID 0xE0EF /* Energy monitor EM 1010 PC */ + #define FTDI_ELV_CSI8_PID 0xE0F0 /* Computer-Schalt-Interface (CSI 8) */ + #define FTDI_ELV_EM1000DL_PID 0xE0F1 /* PC-Datenlogger fuer Energiemonitor (EM 1000 DL) */ + #define FTDI_ELV_PCK100_PID 0xE0F2 /* PC-Kabeltester (PCK 100) */ +@@ -212,8 +212,8 @@ + * drivers, or possibly the Comedi drivers in some cases. */ + #define FTDI_ELV_CLI7000_PID 0xFB59 /* Computer-Light-Interface (CLI 7000) */ + #define FTDI_ELV_PPS7330_PID 0xFB5C /* Processor-Power-Supply (PPS 7330) */ +-#define FTDI_ELV_TFM100_PID 0xFB5D /* Temperartur-Feuchte Messgeraet (TFM 100) */ +-#define FTDI_ELV_UDF77_PID 0xFB5E /* USB DCF Funkurh (UDF 77) */ ++#define FTDI_ELV_TFM100_PID 0xFB5D /* Temperatur-Feuchte-Messgeraet (TFM 100) */ ++#define FTDI_ELV_UDF77_PID 0xFB5E /* USB DCF Funkuhr (UDF 77) */ + #define FTDI_ELV_UIO88_PID 0xFB5F /* USB-I/O Interface (UIO 88) */ + + /* +@@ -320,7 +320,7 @@ + + /* + * 4N-GALAXY.DE PIDs for CAN-USB, USB-RS232, USB-RS422, USB-RS485, +- * USB-TTY activ, USB-TTY passiv. Some PIDs are used by several devices ++ * USB-TTY aktiv, USB-TTY passiv. Some PIDs are used by several devices + * and I'm not entirely sure which are used by which. + */ + #define FTDI_4N_GALAXY_DE_1_PID 0xF3C0 +@@ -330,10 +330,10 @@ + * Linx Technologies product ids + */ + #define LINX_SDMUSBQSS_PID 0xF448 /* Linx SDM-USB-QS-S */ +-#define LINX_MASTERDEVEL2_PID 0xF449 /* Linx Master Development 2.0 */ +-#define LINX_FUTURE_0_PID 0xF44A /* Linx future device */ +-#define LINX_FUTURE_1_PID 0xF44B /* Linx future device */ +-#define LINX_FUTURE_2_PID 0xF44C /* Linx future device */ ++#define LINX_MASTERDEVEL2_PID 0xF449 /* Linx Master Development 2.0 */ ++#define LINX_FUTURE_0_PID 0xF44A /* Linx future device */ ++#define LINX_FUTURE_1_PID 0xF44B /* Linx future device */ ++#define LINX_FUTURE_2_PID 0xF44C /* Linx future device */ + + /* + * Oceanic product ids +@@ -508,6 +508,20 @@ + #define CONTEC_COM1USBH_PID 0x8311 /* COM-1(USB)H */ + + /* ++ * Contec products (http://www.contec.com) ++ * Submitted by Daniel Sangorrin ++ */ ++#define CONTEC_VID 0x06CE /* Vendor ID */ ++#define CONTEC_COM1USBH_PID 0x8311 /* COM-1(USB)H */ ++ ++/* ++ * Contec products (http://www.contec.com) ++ * Submitted by Daniel Sangorrin ++ */ ++#define CONTEC_VID 0x06CE /* Vendor ID */ ++#define CONTEC_COM1USBH_PID 0x8311 /* COM-1(USB)H */ ++ ++/* + * Definitions for B&B Electronics products. + */ + #define BANDB_VID 0x0856 /* B&B Electronics Vendor ID */ +@@ -656,7 +670,7 @@ + #define FALCOM_TWIST_PID 0x0001 /* Falcom Twist USB GPRS modem */ + #define FALCOM_SAMBA_PID 0x0005 /* Falcom Samba USB GPRS modem */ + +-/* Larsen and Brusgaard AltiTrack/USBtrack */ ++/* Larsen and Brusgaard AltiTrack/USBtrack */ + #define LARSENBRUSGAARD_VID 0x0FD8 + #define LB_ALTITRACK_PID 0x0001 + +@@ -985,7 +999,7 @@ + #define ALTI2_N3_PID 0x6001 /* Neptune 3 */ + + /* +- * Dresden Elektronic Sensor Terminal Board ++ * Dresden Elektronik Sensor Terminal Board + */ + #define DE_VID 0x1cf1 /* Vendor ID */ + #define STB_PID 0x0001 /* Sensor Terminal Board */ From dd706d38d566bc579ea8658c09ad5188f87f31f4 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 25 Apr 2010 19:08:07 +0200 Subject: [PATCH 083/171] busybox: - build usleep applet --- packages/sysutils/busybox/config/busybox.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/busybox/config/busybox.conf b/packages/sysutils/busybox/config/busybox.conf index a64a5a7f81..55d1bd1358 100644 --- a/packages/sysutils/busybox/config/busybox.conf +++ b/packages/sysutils/busybox/config/busybox.conf @@ -253,7 +253,7 @@ CONFIG_UNAME=y # CONFIG_UNEXPAND is not set # CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set # CONFIG_UNIQ is not set -# CONFIG_USLEEP is not set +CONFIG_USLEEP=y # CONFIG_UUDECODE is not set # CONFIG_UUENCODE is not set CONFIG_WC=y From 53ab2743f687e088f3aac6224f166ac5ca5d396c Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 25 Apr 2010 19:08:23 +0200 Subject: [PATCH 084/171] busybox-initramfs: - build usleep applet --- .../sysutils/busybox-initramfs/config/busybox-initramfs.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/busybox-initramfs/config/busybox-initramfs.conf b/packages/sysutils/busybox-initramfs/config/busybox-initramfs.conf index 97cb999e7f..c22aca4a05 100644 --- a/packages/sysutils/busybox-initramfs/config/busybox-initramfs.conf +++ b/packages/sysutils/busybox-initramfs/config/busybox-initramfs.conf @@ -253,7 +253,7 @@ CONFIG_FEATURE_TEST_64=y # CONFIG_UNEXPAND is not set # CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set # CONFIG_UNIQ is not set -# CONFIG_USLEEP is not set +CONFIG_USLEEP=y # CONFIG_UUDECODE is not set # CONFIG_UUENCODE is not set # CONFIG_WC is not set From 60de910d273cfed956e5e24ebd49bd19650f4a1d Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 25 Apr 2010 19:08:51 +0200 Subject: [PATCH 085/171] busybox-initramfs: - use usleep instead sleep --- packages/sysutils/busybox-initramfs/scripts/init | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/busybox-initramfs/scripts/init b/packages/sysutils/busybox-initramfs/scripts/init index 52d7dbd17b..8841f5f52f 100755 --- a/packages/sysutils/busybox-initramfs/scripts/init +++ b/packages/sysutils/busybox-initramfs/scripts/init @@ -56,7 +56,7 @@ /bin/busybox ionice -c 1 -n 0 \ /bin/busybox mount -o $3 $1 $2 > /dev/null 2>&1 [ $? -eq 0 ] && ERR_ENV=0 && break - sleep 1 + /bin/busybox usleep 200000 done [ $ERR_ENV -ne 0 ] && error "INIT_4" "Could not mount $1" && debug_shell } From 7eb68d83823f13ddfb477216851d4fff49c0a105 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 25 Apr 2010 21:59:05 +0200 Subject: [PATCH 086/171] busybox-initramfs: - change usleep to 1 sec. --- packages/sysutils/busybox-initramfs/scripts/init | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/busybox-initramfs/scripts/init b/packages/sysutils/busybox-initramfs/scripts/init index 8841f5f52f..e54c56d4aa 100755 --- a/packages/sysutils/busybox-initramfs/scripts/init +++ b/packages/sysutils/busybox-initramfs/scripts/init @@ -56,7 +56,7 @@ /bin/busybox ionice -c 1 -n 0 \ /bin/busybox mount -o $3 $1 $2 > /dev/null 2>&1 [ $? -eq 0 ] && ERR_ENV=0 && break - /bin/busybox usleep 200000 + /bin/busybox usleep 1000000 done [ $ERR_ENV -ne 0 ] && error "INIT_4" "Could not mount $1" && debug_shell } From 9c373610a644b18790b48001b8eff7c118f6c3a8 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 00:08:33 +0200 Subject: [PATCH 087/171] xbmc: - add patch for udisks and upower support (goes to upstream) --- ...bmc-add_udisks_and_upower_support-0.1.diff | 734 ++++++++++++++++++ 1 file changed, 734 insertions(+) create mode 100644 packages/mediacenter/xbmc/patches/404-xbmc-add_udisks_and_upower_support-0.1.diff diff --git a/packages/mediacenter/xbmc/patches/404-xbmc-add_udisks_and_upower_support-0.1.diff b/packages/mediacenter/xbmc/patches/404-xbmc-add_udisks_and_upower_support-0.1.diff new file mode 100644 index 0000000000..b13b23d56d --- /dev/null +++ b/packages/mediacenter/xbmc/patches/404-xbmc-add_udisks_and_upower_support-0.1.diff @@ -0,0 +1,734 @@ +diff -Naur xbmc-29490/xbmc/linux/ConsoleUPowerSyscall.cpp xbmc-29490.patch/xbmc/linux/ConsoleUPowerSyscall.cpp +--- xbmc-29490/xbmc/linux/ConsoleUPowerSyscall.cpp 1970-01-01 01:00:00.000000000 +0100 ++++ xbmc-29490.patch/xbmc/linux/ConsoleUPowerSyscall.cpp 2010-04-25 23:12:52.124485047 +0200 +@@ -0,0 +1,143 @@ ++/* ++ * Copyright (C) 2005-2009 Team XBMC ++ * http://www.xbmc.org ++ * ++ * This Program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2, or (at your option) ++ * any later version. ++ * ++ * This Program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with XBMC; see the file COPYING. If not, write to ++ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ++ * http://www.gnu.org/copyleft/gpl.html ++ * ++ */ ++ ++#include "system.h" ++#include "ConsoleUPowerSyscall.h" ++#include "utils/log.h" ++ ++#ifdef HAS_DBUS ++#include "Application.h" ++#include "LocalizeStrings.h" ++#include "DBusUtil.h" ++ ++CConsoleUPowerSyscall::CConsoleUPowerSyscall() ++{ ++ m_CanPowerdown = ConsoleKitMethodCall("CanStop"); ++ ++ // If "the name org.freedesktop.UPower was not provided by any .service files", ++ // GetVariant() would return NULL, and asBoolean() would crash. ++ CVariant canSuspend = CDBusUtil::GetVariant("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "can_suspend"); ++ ++ if ( !canSuspend.isNull() ) ++ m_CanSuspend = canSuspend.asBoolean(); ++ else ++ m_CanSuspend = false; ++ ++ CVariant canHibernate = CDBusUtil::GetVariant("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "can_hibernate"); ++ ++ if ( !canHibernate.isNull() ) ++ m_CanHibernate = canHibernate.asBoolean(); ++ else ++ m_CanHibernate = false; ++ ++ m_CanReboot = ConsoleKitMethodCall("CanRestart"); ++} ++ ++bool CConsoleUPowerSyscall::Powerdown() ++{ ++ CDBusMessage message("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", "Stop"); ++ return message.SendSystem() != NULL; ++} ++ ++bool CConsoleUPowerSyscall::Suspend() ++{ ++ CDBusMessage message("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "Suspend"); ++ return message.SendSystem() != NULL; ++} ++ ++bool CConsoleUPowerSyscall::Hibernate() ++{ ++ CDBusMessage message("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "Hibernate"); ++ return message.SendSystem() != NULL; ++} ++ ++bool CConsoleUPowerSyscall::Reboot() ++{ ++ CDBusMessage message("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", "Restart"); ++ return message.SendSystem() != NULL; ++} ++ ++bool CConsoleUPowerSyscall::CanPowerdown() ++{ ++ return m_CanPowerdown; ++} ++bool CConsoleUPowerSyscall::CanSuspend() ++{ ++ return m_CanSuspend; ++} ++bool CConsoleUPowerSyscall::CanHibernate() ++{ ++ return m_CanHibernate; ++} ++bool CConsoleUPowerSyscall::CanReboot() ++{ ++ return m_CanReboot; ++} ++ ++bool CConsoleUPowerSyscall::HasDeviceConsoleKit() ++{ ++ bool hasConsoleKitManager = false; ++ CDBusMessage consoleKitMessage("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", "CanStop"); ++ ++ DBusError error; ++ dbus_error_init (&error); ++ DBusConnection *con = dbus_bus_get(DBUS_BUS_SYSTEM, &error); ++ ++ consoleKitMessage.Send(con, &error); ++ ++ if (!dbus_error_is_set(&error)) ++ hasConsoleKitManager = true; ++ else ++ CLog::Log(LOGDEBUG, "ConsoleKit.Manager: %s - %s", error.name, error.message); ++ ++ dbus_error_free (&error); ++ ++ bool hasUPower = false; ++ CDBusMessage deviceKitMessage("org.freedesktop.UDisks", "/org/freedesktop/UDisks", "org.freedesktop.UDisks", "EnumerateDevices"); ++ ++ deviceKitMessage.Send(con, &error); ++ ++ if (!dbus_error_is_set(&error)) ++ hasUPower = true; ++ else ++ CLog::Log(LOGDEBUG, "UPower: %s - %s", error.name, error.message); ++ ++ dbus_error_free (&error); ++ dbus_connection_unref(con); ++ ++ return hasUPower && hasConsoleKitManager; ++} ++ ++bool CConsoleUPowerSyscall::ConsoleKitMethodCall(const char *method) ++{ ++ CDBusMessage message("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", method); ++ DBusMessage *reply = message.SendSystem(); ++ if (reply) ++ { ++ dbus_bool_t boolean = FALSE; ++ ++ if (dbus_message_get_args (reply, NULL, DBUS_TYPE_BOOLEAN, &boolean, DBUS_TYPE_INVALID)) ++ return boolean; ++ } ++ ++ return false; ++} ++#endif +diff -Naur xbmc-29490/xbmc/linux/ConsoleUPowerSyscall.h xbmc-29490.patch/xbmc/linux/ConsoleUPowerSyscall.h +--- xbmc-29490/xbmc/linux/ConsoleUPowerSyscall.h 1970-01-01 01:00:00.000000000 +0100 ++++ xbmc-29490.patch/xbmc/linux/ConsoleUPowerSyscall.h 2010-04-25 23:12:52.125484748 +0200 +@@ -0,0 +1,50 @@ ++/* ++ * Copyright (C) 2005-2009 Team XBMC ++ * http://www.xbmc.org ++ * ++ * This Program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2, or (at your option) ++ * any later version. ++ * ++ * This Program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with XBMC; see the file COPYING. If not, write to ++ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ++ * http://www.gnu.org/copyleft/gpl.html ++ * ++ */ ++ ++#ifdef HAS_DBUS ++#include "IPowerSyscall.h" ++ ++class CConsoleUPowerSyscall : public IPowerSyscall ++{ ++public: ++ CConsoleUPowerSyscall(); ++ virtual ~CConsoleUPowerSyscall() { } ++ ++ virtual bool Powerdown(); ++ virtual bool Suspend(); ++ virtual bool Hibernate(); ++ virtual bool Reboot(); ++ ++ virtual bool CanPowerdown(); ++ virtual bool CanSuspend(); ++ virtual bool CanHibernate(); ++ virtual bool CanReboot(); ++ ++ static bool HasDeviceConsoleKit(); ++private: ++ static bool ConsoleKitMethodCall(const char *method); ++ ++ bool m_CanPowerdown; ++ bool m_CanSuspend; ++ bool m_CanHibernate; ++ bool m_CanReboot; ++}; ++#endif +diff -Naur xbmc-29490/xbmc/linux/LinuxStorageProvider.h xbmc-29490.patch/xbmc/linux/LinuxStorageProvider.h +--- xbmc-29490/xbmc/linux/LinuxStorageProvider.h 2010-04-24 22:43:12.000000000 +0200 ++++ xbmc-29490.patch/xbmc/linux/LinuxStorageProvider.h 2010-04-25 23:12:52.126484868 +0200 +@@ -22,6 +22,7 @@ + #include "IStorageProvider.h" + #include "HALProvider.h" + #include "DeviceKitDisksProvider.h" ++#include "UDisksProvider.h" + #include "PosixMountProvider.h" + + class CLinuxStorageProvider : public IStorageProvider +@@ -32,7 +33,9 @@ + m_instance = NULL; + + #ifdef HAS_DBUS +- if (CDeviceKitDisksProvider::HasDeviceKitDisks()) ++ if (CUDisksProvider::HasUDisks() ) { ++ m_instance = new CUDisksProvider(); ++ } else if (CDeviceKitDisksProvider::HasDeviceKitDisks()) + m_instance = new CDeviceKitDisksProvider(); + #endif + #ifdef HAS_HAL +diff -Naur xbmc-29490/xbmc/linux/Makefile.in xbmc-29490.patch/xbmc/linux/Makefile.in +--- xbmc-29490/xbmc/linux/Makefile.in 2010-04-24 22:43:12.000000000 +0200 ++++ xbmc-29490.patch/xbmc/linux/Makefile.in 2010-04-25 23:12:52.127484639 +0200 +@@ -7,7 +7,7 @@ + + CXXFLAGS+=-fPIC #-DHAS_SDL + +-SRCS=ConvUtils.cpp XEventUtils.cpp XFileUtils.cpp XHandle.cpp XSyncUtils.cpp XTimeUtils.cpp XMemUtils.cpp XThreadUtils.cpp NetworkLinux.cpp LinuxResourceCounter.cpp LinuxTimezone.cpp XRandR.cpp XCriticalSection.cpp XLCDproc.cpp HALManager.cpp HALPowerSyscall.cpp ConsoleDeviceKitPowerSyscall.cpp DBusUtil.cpp DBusMessage.cpp ZeroconfAvahi.cpp ZeroconfBrowserAvahi.cpp HALProvider.cpp PosixMountProvider.cpp DeviceKitDisksProvider.cpp ++SRCS=ConvUtils.cpp XEventUtils.cpp XFileUtils.cpp XHandle.cpp XSyncUtils.cpp XTimeUtils.cpp XMemUtils.cpp XThreadUtils.cpp NetworkLinux.cpp LinuxResourceCounter.cpp LinuxTimezone.cpp XRandR.cpp XCriticalSection.cpp XLCDproc.cpp HALManager.cpp HALPowerSyscall.cpp ConsoleDeviceKitPowerSyscall.cpp DBusUtil.cpp DBusMessage.cpp ZeroconfAvahi.cpp ZeroconfBrowserAvahi.cpp HALProvider.cpp PosixMountProvider.cpp DeviceKitDisksProvider.cpp UDisksProvider.cpp ConsoleUPowerSyscall.cpp + + LIB=linux.a + +diff -Naur xbmc-29490/xbmc/linux/UDisksProvider.cpp xbmc-29490.patch/xbmc/linux/UDisksProvider.cpp +--- xbmc-29490/xbmc/linux/UDisksProvider.cpp 1970-01-01 01:00:00.000000000 +0100 ++++ xbmc-29490.patch/xbmc/linux/UDisksProvider.cpp 2010-04-25 23:12:52.129484321 +0200 +@@ -0,0 +1,385 @@ ++/* ++ * Copyright (C) 2005-2009 Team XBMC ++ * http://www.xbmc.org ++ * ++ * This Program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2, or (at your option) ++ * any later version. ++ * ++ * This Program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with XBMC; see the file COPYING. If not, write to ++ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ++ * http://www.gnu.org/copyleft/gpl.html ++ * ++ */ ++#include "UDisksProvider.h" ++#ifdef HAS_DBUS ++#include "Util.h" ++#include "AdvancedSettings.h" ++#include "LocalizeStrings.h" ++#include "log.h" ++ ++CUDiskDevice::CUDiskDevice(const char *DeviceKitUDI) ++{ ++ m_DeviceKitUDI = DeviceKitUDI; ++ m_UDI = ""; ++ m_MountPath = ""; ++ m_FileSystem = ""; ++ m_isMounted = false; ++ m_isMountedByUs = false; ++ m_isRemovable = false; ++ m_isPartition = false; ++ m_isFileSystem = false; ++ m_isSystemInternal = false; ++ m_PartitionSizeGiB = 0.0f; ++ Update(); ++} ++ ++void CUDiskDevice::Update() ++{ ++ CStdString str = CDBusUtil::GetVariant("org.freedesktop.UDisks", m_DeviceKitUDI.c_str(), "org.freedesktop.UDisks.Device", "IdUsage").asString(); ++ m_isFileSystem = str.Equals("filesystem"); ++ if (m_isFileSystem) ++ { ++ CVariant properties = CDBusUtil::GetAll("org.freedesktop.UDisks", m_DeviceKitUDI.c_str(), "org.freedesktop.UDisks.Device"); ++ ++ m_UDI = properties["IdUuid"].asString(); ++ m_Label = properties["IdLabel"].asString(); ++ m_FileSystem = properties["IdType"].asString(); ++ if (properties["DeviceMountPaths"].size() > 0) ++ m_MountPath = properties["DeviceMountPaths"][0].asString(); ++ m_isMounted = properties["DeviceIsMounted"].asBoolean(); ++ ++ m_PartitionSizeGiB = properties["PartitionSize"].asUnsignedInteger() / 1024.0 / 1024.0 / 1024.0; ++ m_isPartition = properties["DeviceIsPartition"].asBoolean(); ++ m_isSystemInternal = properties["DeviceIsSystemInternal"].asBoolean(); ++ if (m_isPartition) ++ { ++ CVariant isRemovable = CDBusUtil::GetVariant("org.freedesktop.UDisks", properties["PartitionSlave"].asString(), "org.freedesktop.UDisks.Device", "DeviceIsRemovable"); ++ ++ if ( !isRemovable.isNull() ) ++ m_isRemovable = isRemovable.asBoolean(); ++ else ++ m_isRemovable = false; ++ } ++ else ++ m_isRemovable = properties["DeviceIsRemovable"].asBoolean(); ++ } ++} ++ ++bool CUDiskDevice::Mount() ++{ ++ if (!m_isMounted && !m_isSystemInternal && m_isFileSystem) ++ { ++ CLog::Log(LOGDEBUG, "UDisks: Mounting %s", m_DeviceKitUDI.c_str()); ++ CDBusMessage message("org.freedesktop.UDisks", m_DeviceKitUDI.c_str(), "org.freedesktop.UDisks.Device", "FilesystemMount"); ++ message.AppendArgument(""); ++ const char *array[] = {}; ++ message.AppendArgument(array, 0); ++ ++ DBusMessage *reply = message.SendSystem(); ++ if (reply) ++ { ++ char *mountPoint; ++ if (dbus_message_get_args (reply, NULL, DBUS_TYPE_STRING, &mountPoint, DBUS_TYPE_INVALID)) ++ { ++ m_MountPath = mountPoint; ++ CLog::Log(LOGDEBUG, "UDisks: Sucessfully mounted %s on %s", m_DeviceKitUDI.c_str(), mountPoint); ++ m_isMountedByUs = m_isMounted = true; ++ } ++ } ++ ++ return m_isMounted; ++ } ++ else ++ CLog::Log(LOGDEBUG, "UDisks: Is not able to mount %s", toString().c_str()); ++ ++ return false; ++} ++ ++bool CUDiskDevice::UnMount() ++{ ++ if (m_isMounted && !m_isSystemInternal && m_isFileSystem) ++ { ++ CDBusMessage message("org.freedesktop.UDisks", m_DeviceKitUDI.c_str(), "org.freedesktop.UDisks.Device", "FilesystemUnmount"); ++ ++ const char *array[1]; ++ message.AppendArgument(array, 0); ++ ++ DBusMessage *reply = message.SendSystem(); ++ if (reply) ++ m_isMountedByUs = m_isMounted = false; ++ ++ return !m_isMounted; ++ } ++ else ++ CLog::Log(LOGDEBUG, "UDisks: Is not able to unmount %s", toString().c_str()); ++ ++ return false; ++} ++ ++CMediaSource CUDiskDevice::ToMediaShare() ++{ ++ CMediaSource source; ++ source.strPath = m_MountPath; ++ if (m_Label.empty()) ++ source.strName.Format("%.1f GB %s", m_PartitionSizeGiB, g_localizeStrings.Get(155).c_str()); ++ else ++ source.strName = m_Label; ++ source.m_iDriveType = !m_isSystemInternal ? CMediaSource::SOURCE_TYPE_REMOVABLE : CMediaSource::SOURCE_TYPE_LOCAL; ++ source.m_ignore = true; ++ return source; ++} ++ ++bool CUDiskDevice::IsApproved() ++{ ++ return (m_isFileSystem && m_isMounted && m_UDI.length() > 0 && (m_FileSystem.length() > 0 && !m_FileSystem.Equals("swap")) && !m_MountPath.Equals("/")); ++} ++ ++#define BOOL2SZ(b) ((b) ? "true" : "false") ++ ++CStdString CUDiskDevice::toString() ++{ ++ CStdString str; ++ str.Format("DeviceUDI %s: IsFileSystem %s HasFileSystem %s " ++ "IsSystemInternal %s IsMounted %s IsRemovable %s IsPartition %s", ++ m_DeviceKitUDI.c_str(), BOOL2SZ(m_isFileSystem), m_FileSystem, ++ BOOL2SZ(m_isSystemInternal), BOOL2SZ(m_isMounted), ++ BOOL2SZ(m_isRemovable), BOOL2SZ(m_isPartition)); ++ ++ return str; ++} ++ ++CUDisksProvider::CUDisksProvider() ++{ ++ dbus_error_init (&m_error); ++ m_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &m_error); ++ ++ dbus_bus_add_match(m_connection, "type='signal',interface='org.freedesktop.UDisks'", &m_error); ++ dbus_connection_flush(m_connection); ++ if (dbus_error_is_set(&m_error)) ++ { ++ CLog::Log(LOGERROR, "UDisks: Failed to attach to signal %s", m_error.message); ++ dbus_connection_unref(m_connection); ++ m_connection = NULL; ++ } ++} ++ ++CUDisksProvider::~CUDisksProvider() ++{ ++ DeviceMap::iterator itr; ++ ++ for (itr = m_AvailableDevices.begin(); itr != m_AvailableDevices.end(); ++itr) ++ delete m_AvailableDevices[itr->first]; ++ ++ m_AvailableDevices.clear(); ++ ++ if (m_connection) ++ { ++ dbus_connection_unref(m_connection); ++ m_connection = NULL; ++ } ++ ++ dbus_error_free (&m_error); ++} ++ ++void CUDisksProvider::Initialize() ++{ ++ CLog::Log(LOGDEBUG, "Selected UDisks as storage provider"); ++ m_DaemonVersion = atoi(CDBusUtil::GetVariant("org.freedesktop.UDisks", "/org/freedesktop/UDisks", "org.freedesktop.UDisks", "DaemonVersion").asString()); ++ CLog::Log(LOGDEBUG, "UDisks: DaemonVersion %i", m_DaemonVersion); ++ ++ CLog::Log(LOGDEBUG, "UDisks: Querying available devices"); ++ std::vector devices = EnumerateDisks(); ++ for (unsigned int i = 0; i < devices.size(); i++) ++ DeviceAdded(devices[i].c_str(), NULL); ++} ++ ++bool CUDisksProvider::Eject(CStdString mountpath) ++{ ++ DeviceMap::iterator itr; ++ CStdString path(mountpath); ++ CUtil::RemoveSlashAtEnd(path); ++ ++ for (itr = m_AvailableDevices.begin(); itr != m_AvailableDevices.end(); ++itr) ++ { ++ CUDiskDevice *device = itr->second; ++ if (device->m_MountPath.Equals(path)) ++ return device->UnMount(); ++ } ++ ++ return false; ++} ++ ++std::vector CUDisksProvider::GetDiskUsage() ++{ ++ std::vector devices; ++ DeviceMap::iterator itr; ++ ++ for(itr = m_AvailableDevices.begin(); itr != m_AvailableDevices.end(); ++itr) ++ { ++ CUDiskDevice *device = itr->second; ++ if (device->IsApproved()) ++ { ++ CStdString str; ++ str.Format("%s %.1f GiB", device->m_MountPath.c_str(), device->m_PartitionSizeGiB); ++ devices.push_back(str); ++ } ++ } ++ ++ return devices; ++} ++ ++bool CUDisksProvider::PumpDriveChangeEvents(IStorageEventsCallback *callback) ++{ ++ bool result = false; ++ if (m_connection) ++ { ++ dbus_connection_read_write(m_connection, 0); ++ DBusMessage *msg = dbus_connection_pop_message(m_connection); ++ ++ if (msg) ++ { ++ char *object; ++ if (dbus_message_get_args (msg, NULL, DBUS_TYPE_OBJECT_PATH, &object, DBUS_TYPE_INVALID)) ++ { ++ result = true; ++ if (dbus_message_is_signal(msg, "org.freedesktop.UDisks", "DeviceAdded")) ++ DeviceAdded(object, callback); ++ else if (dbus_message_is_signal(msg, "org.freedesktop.UDisks", "DeviceRemoved")) ++ DeviceRemoved(object, callback); ++ else if (dbus_message_is_signal(msg, "org.freedesktop.UDisks", "DeviceChanged")) ++ DeviceChanged(object, callback); ++ } ++ dbus_message_unref(msg); ++ } ++ } ++ return result; ++} ++ ++bool CUDisksProvider::HasUDisks() ++{ ++ bool hasUDisks = false; ++ CDBusMessage message("org.freedesktop.UDisks", "/org/freedesktop/UDisks", "org.freedesktop.UDisks", "EnumerateDevices"); ++ ++ DBusError error; ++ dbus_error_init (&error); ++ DBusConnection *con = dbus_bus_get(DBUS_BUS_SYSTEM, &error); ++ ++ message.Send(con, &error); ++ ++ if (!dbus_error_is_set(&error)) ++ hasUDisks = true; ++ else ++ CLog::Log(LOGDEBUG, "UDisks: %s - %s", error.name, error.message); ++ ++ dbus_error_free (&error); ++ dbus_connection_unref(con); ++ ++ return hasUDisks; ++} ++ ++void CUDisksProvider::DeviceAdded(const char *object, IStorageEventsCallback *callback) ++{ ++ CLog::Log(LOGDEBUG, "UDisks: DeviceAdded (%s)", object); ++ ++ if (m_AvailableDevices[object]) ++ { ++ CLog::Log(LOGWARNING, "UDisks: Inconsistency found! DeviceAdded on an indexed disk"); ++ delete m_AvailableDevices[object]; ++ } ++ ++ CUDiskDevice *device = NULL; ++ device = new CUDiskDevice(object); ++ m_AvailableDevices[object] = device; ++ ++ if (g_advancedSettings.m_handleMounting) ++ device->Mount(); ++ ++ CLog::Log(LOGDEBUG, "UDisks: DeviceAdded - %s", device->toString().c_str()); ++ if (device->m_isMounted && device->IsApproved()) ++ { ++ CLog::Log(LOGNOTICE, "UDisks: Added %s", device->m_MountPath.c_str()); ++ if (callback) ++ callback->OnStorageAdded(device->m_Label, device->m_MountPath); ++ } ++} ++ ++void CUDisksProvider::DeviceRemoved(const char *object, IStorageEventsCallback *callback) ++{ ++ CLog::Log(LOGDEBUG, "UDisks: DeviceRemoved (%s)", object); ++ ++ CUDiskDevice *device = m_AvailableDevices[object]; ++ if (device) ++ { ++ if (device->m_isMounted && callback) ++ callback->OnStorageUnsafelyRemoved(device->m_Label); ++ ++ delete m_AvailableDevices[object]; ++ m_AvailableDevices.erase(object); ++ } ++} ++ ++void CUDisksProvider::DeviceChanged(const char *object, IStorageEventsCallback *callback) ++{ ++ CLog::Log(LOGDEBUG, "UDisks: DeviceChanged (%s)", object); ++ ++ CUDiskDevice *device = m_AvailableDevices[object]; ++ if (device == NULL) ++ { ++ CLog::Log(LOGWARNING, "UDisks: Inconsistency found! DeviceChanged on an unindexed disk"); ++ DeviceAdded(object, callback); ++ } ++ else ++ { ++ bool mounted = device->m_isMounted; ++ device->Update(); ++ if (!mounted && device->m_isMounted && callback) ++ callback->OnStorageAdded(device->m_MountPath, device->m_Label); ++ else if (mounted && !device->m_isMounted && callback) ++ callback->OnStorageSafelyRemoved(device->m_Label); ++ ++ CLog::Log(LOGDEBUG, "UDisks: DeviceChanged - %s", device->toString().c_str()); ++ } ++} ++ ++std::vector CUDisksProvider::EnumerateDisks() ++{ ++ std::vector devices; ++ CDBusMessage message("org.freedesktop.UDisks", "/org/freedesktop/UDisks", "org.freedesktop.UDisks", "EnumerateDevices"); ++ DBusMessage *reply = message.SendSystem(); ++ if (reply) ++ { ++ char** disks = NULL; ++ int length = 0; ++ ++ if (dbus_message_get_args (reply, NULL, DBUS_TYPE_ARRAY, DBUS_TYPE_OBJECT_PATH, &disks, &length, DBUS_TYPE_INVALID)) ++ { ++ for (int i = 0; i < length; i++) ++ devices.push_back(disks[i]); ++ ++ dbus_free_string_array(disks); ++ } ++ } ++ ++ return devices; ++} ++ ++void CUDisksProvider::GetDisks(VECSOURCES& devices, bool EnumerateRemovable) ++{ ++ DeviceMap::iterator itr; ++ ++ for (itr = m_AvailableDevices.begin(); itr != m_AvailableDevices.end(); ++itr) ++ { ++ CUDiskDevice *device = itr->second; ++ if (device && device->IsApproved() && device->m_isSystemInternal != EnumerateRemovable) ++ devices.push_back(device->ToMediaShare()); ++ } ++} ++#endif +diff -Naur xbmc-29490/xbmc/linux/UDisksProvider.h xbmc-29490.patch/xbmc/linux/UDisksProvider.h +--- xbmc-29490/xbmc/linux/UDisksProvider.h 1970-01-01 01:00:00.000000000 +0100 ++++ xbmc-29490.patch/xbmc/linux/UDisksProvider.h 2010-04-25 23:12:52.130485628 +0200 +@@ -0,0 +1,86 @@ ++#pragma once ++/* ++ * Copyright (C) 2005-2009 Team XBMC ++ * http://www.xbmc.org ++ * ++ * This Program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2, or (at your option) ++ * any later version. ++ * ++ * This Program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with XBMC; see the file COPYING. If not, write to ++ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ++ * http://www.gnu.org/copyleft/gpl.html ++ * ++ */ ++#include "IStorageProvider.h" ++#ifdef HAS_DBUS ++#include "DBusUtil.h" ++ ++class CUDiskDevice ++{ ++public: ++ CUDiskDevice(const char *DeviceKitUDI); ++ ~CUDiskDevice() { } ++ ++ void Update(); ++ ++ bool Mount(); ++ bool UnMount(); ++ ++ bool IsApproved(); ++ ++ CStdString toString(); ++ ++ CMediaSource ToMediaShare(); ++ ++ CStdString m_UDI, m_DeviceKitUDI, m_MountPath, m_FileSystem, m_Label; ++ bool m_isMounted, m_isMountedByUs, m_isRemovable, m_isPartition, m_isFileSystem, m_isSystemInternal; ++ float m_PartitionSizeGiB; ++}; ++ ++class CUDisksProvider : public IStorageProvider ++{ ++public: ++ CUDisksProvider(); ++ virtual ~CUDisksProvider(); ++ ++ virtual void Initialize(); ++ virtual void Stop() { } ++ ++ virtual void GetLocalDrives(VECSOURCES &localDrives) { GetDisks(localDrives, false); } ++ virtual void GetRemovableDrives(VECSOURCES &removableDrives) { GetDisks(removableDrives, true); } ++ ++ virtual bool Eject(CStdString mountpath); ++ ++ virtual std::vector GetDiskUsage(); ++ ++ virtual bool PumpDriveChangeEvents(IStorageEventsCallback *callback); ++ ++ static bool HasUDisks(); ++private: ++ typedef std::map DeviceMap; ++ typedef std::pair DevicePair; ++ ++ void DeviceAdded(const char *object, IStorageEventsCallback *callback); ++ void DeviceRemoved(const char *object, IStorageEventsCallback *callback); ++ void DeviceChanged(const char *object, IStorageEventsCallback *callback); ++ ++ std::vector EnumerateDisks(); ++ ++ void GetDisks(VECSOURCES& devices, bool EnumerateRemovable); ++ ++ int m_DaemonVersion; ++ ++ DeviceMap m_AvailableDevices; ++ ++ DBusConnection *m_connection; ++ DBusError m_error; ++}; ++#endif +diff -Naur xbmc-29490/xbmc/PowerManager.cpp xbmc-29490.patch/xbmc/PowerManager.cpp +--- xbmc-29490/xbmc/PowerManager.cpp 2010-04-24 22:43:14.000000000 +0200 ++++ xbmc-29490.patch/xbmc/PowerManager.cpp 2010-04-25 23:12:52.132484681 +0200 +@@ -35,6 +35,7 @@ + #ifdef __APPLE__ + #include "osx/CocoaPowerSyscall.h" + #elif defined(_LINUX) && defined(HAS_DBUS) ++#include "linux/ConsoleUPowerSyscall.h" + #include "linux/ConsoleDeviceKitPowerSyscall.h" + #ifdef HAS_HAL + #include "linux/HALPowerSyscall.h" +@@ -74,6 +75,8 @@ + #elif defined(_LINUX) && defined(HAS_DBUS) + if (CConsoleDeviceKitPowerSyscall::HasDeviceConsoleKit()) + m_instance = new CConsoleDeviceKitPowerSyscall(); ++ else if (CConsoleUPowerSyscall::HasDeviceConsoleKit()) ++ m_instance = new CConsoleUPowerSyscall(); + #ifdef HAS_HAL + else + m_instance = new CHALPowerSyscall(); From ebd95ee08784e3f02f4714d88e10ddc95f68df72 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 00:09:26 +0200 Subject: [PATCH 088/171] busybox: - add /etc/mtab (needed for udisks/xbmc) - symlink to /proc/mounts --- packages/sysutils/busybox/install | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/sysutils/busybox/install b/packages/sysutils/busybox/install index e1cbedebc0..b34ad0e903 100755 --- a/packages/sysutils/busybox/install +++ b/packages/sysutils/busybox/install @@ -30,6 +30,7 @@ USER_PWD="`$ROOT/$TOOLCHAIN/bin/cryptpw $USER_PASSWORD`" cp $PKG_DIR/config/profile $INSTALL/etc touch $INSTALL/etc/fstab ln -sf /var/run/resolv.conf $INSTALL/etc/resolv.conf + ln -sf /proc/mounts $INSTALL/etc/mtab # create /etc/hostname echo $HOSTNAME > $INSTALL/etc/hostname From f5ac422264b7690facc64c96c4caa389397a8252 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 02:11:09 +0200 Subject: [PATCH 089/171] linux-headers: - cosmetics --- packages/toolchain/devel/linux-headers/install | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/toolchain/devel/linux-headers/install b/packages/toolchain/devel/linux-headers/install index 9c5509d113..2eaeff0e48 100755 --- a/packages/toolchain/devel/linux-headers/install +++ b/packages/toolchain/devel/linux-headers/install @@ -10,3 +10,4 @@ make ARCH=$TARGET_ARCH INSTALL_HDR_PATH=dest headers_install mkdir -p $SYSROOT_PREFIX/usr/include cp -PR dest/include/* $SYSROOT_PREFIX/usr/include + From 03418f007c6b251e6c9fe37f6e577be564cb7381 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 18:21:25 +0200 Subject: [PATCH 090/171] wicd: - remove package --- packages/network/wicd/build | 20 -------------------- packages/network/wicd/install | 7 ------- packages/network/wicd/url | 1 - 3 files changed, 28 deletions(-) delete mode 100755 packages/network/wicd/build delete mode 100755 packages/network/wicd/install delete mode 100644 packages/network/wicd/url diff --git a/packages/network/wicd/build b/packages/network/wicd/build deleted file mode 100755 index 9a6977e625..0000000000 --- a/packages/network/wicd/build +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -. config/options - -$SCRIPTS/build toolchain -$SCRIPTS/build Python - -. config/options.python - -cd $PKG_BUILD - -$PYTHON setup.py configure -$PYTHON setup.py build - -$PYTHON setup.py install -O1 --skip-build --prefix /usr --root .install - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -rm -rf .install/usr/bin diff --git a/packages/network/wicd/install b/packages/network/wicd/install deleted file mode 100755 index 2c60f5dd1d..0000000000 --- a/packages/network/wicd/install +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. config/options - -$SCRIPTS/install Python - -cp -PR $PKG_BUILD/.install/* $INSTALL diff --git a/packages/network/wicd/url b/packages/network/wicd/url deleted file mode 100644 index 60f7a88d45..0000000000 --- a/packages/network/wicd/url +++ /dev/null @@ -1 +0,0 @@ -http://downloads.sourceforge.net/project/wicd/wicd-stable/wicd-1.7.0/wicd-1.7.0.tar.bz2 \ No newline at end of file From f6a2919a6ba0af54faf4f2814557cb12f6e8ab38 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 18:21:49 +0200 Subject: [PATCH 091/171] busybox: - add group "users" --- packages/sysutils/busybox/install | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/sysutils/busybox/install b/packages/sysutils/busybox/install index b34ad0e903..3fdc1919e3 100755 --- a/packages/sysutils/busybox/install +++ b/packages/sysutils/busybox/install @@ -12,6 +12,7 @@ USER_PWD="`$ROOT/$TOOLCHAIN/bin/cryptpw $USER_PASSWORD`" add_user root "$ROOT_PWD" 0 0 "Root User" "/storage" "/bin/sh" add_group root 0 + add_group users 100 add_user $USER_NAME "$USER_PWD" 1000 1000 "User" "/storage" "/bin/sh" add_group $USER_GROUP 1000 From 2e0d15096da5e4343da83be984692be0f6a2042a Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 23:52:25 +0200 Subject: [PATCH 092/171] new package: - add package mpc for upcoming gcc-4.5 --- packages/toolchain/math/mpc/build | 24 ++++++++++++++++++++++++ packages/toolchain/math/mpc/url | 1 + 2 files changed, 25 insertions(+) create mode 100755 packages/toolchain/math/mpc/build create mode 100644 packages/toolchain/math/mpc/url diff --git a/packages/toolchain/math/mpc/build b/packages/toolchain/math/mpc/build new file mode 100755 index 0000000000..2e7fd960dc --- /dev/null +++ b/packages/toolchain/math/mpc/build @@ -0,0 +1,24 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/install ccache +$SCRIPTS/build gmp +$SCRIPTS/build mpfr + +setup_toolchain host + +cd $PKG_BUILD +mkdir -p objdir +cd objdir +../configure --host=$HOST_NAME \ + --build=$HOST_NAME \ + --target=$TARGET_NAME \ + --prefix=$ROOT/$TOOLCHAIN \ + --enable-shared \ + --disable-static \ + --with-gmp="$ROOT/$TOOLCHAIN" \ + --with-mpfr="$ROOT/$TOOLCHAIN" \ + +make +make install diff --git a/packages/toolchain/math/mpc/url b/packages/toolchain/math/mpc/url new file mode 100644 index 0000000000..77841ceee1 --- /dev/null +++ b/packages/toolchain/math/mpc/url @@ -0,0 +1 @@ +http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz From 075d3246afc4530bc2cf17a7af3c900d635ae38b Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 23:52:50 +0200 Subject: [PATCH 093/171] new package: - add package libelf for upcoming gcc-4.5 --- packages/toolchain/devel/libelf/build | 20 ++++++++++++++++++++ packages/toolchain/devel/libelf/url | 1 + 2 files changed, 21 insertions(+) create mode 100755 packages/toolchain/devel/libelf/build create mode 100644 packages/toolchain/devel/libelf/url diff --git a/packages/toolchain/devel/libelf/build b/packages/toolchain/devel/libelf/build new file mode 100755 index 0000000000..1eac186143 --- /dev/null +++ b/packages/toolchain/devel/libelf/build @@ -0,0 +1,20 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/install ccache + +setup_toolchain host + +cd $PKG_BUILD +mkdir -p objdir +cd objdir +../configure --host=$HOST_NAME \ + --build=$HOST_NAME \ + --target=$TARGET_NAME \ + --prefix=$ROOT/$TOOLCHAIN \ + --enable-shared \ + --disable-static \ + +make +make install \ No newline at end of file diff --git a/packages/toolchain/devel/libelf/url b/packages/toolchain/devel/libelf/url new file mode 100644 index 0000000000..5cb7685551 --- /dev/null +++ b/packages/toolchain/devel/libelf/url @@ -0,0 +1 @@ +http://www.mr511.de/software/libelf-0.8.12.tar.gz From 8db03726161b69b92fb5e412286daa23bebce7fe Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 23:53:45 +0200 Subject: [PATCH 094/171] gcc: - update to gcc-4.5 --- .../lang/gcc/patches/300_libstdc++-pic.diff | 23 +++++++++---------- .../patches/904_flatten-switch-stmt-00.diff | 6 ++--- packages/toolchain/lang/gcc/url | 2 +- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/packages/toolchain/lang/gcc/patches/300_libstdc++-pic.diff b/packages/toolchain/lang/gcc/patches/300_libstdc++-pic.diff index 560bcb237b..fabee8ed09 100644 --- a/packages/toolchain/lang/gcc/patches/300_libstdc++-pic.diff +++ b/packages/toolchain/lang/gcc/patches/300_libstdc++-pic.diff @@ -17,28 +17,27 @@ all-local: build_debug --- gcc/libstdc++-v3/src/Makefile.in +++ gcc/libstdc++-v3/src/Makefile.in -@@ -627,7 +627,7 @@ +@@ -739,7 +739,7 @@ - install-data-am: install-data-local + install-dvi-am: -install-exec-am: install-toolexeclibLTLIBRARIES +install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local - install-info: install-info-am + install-html: install-html-am -@@ -660,6 +660,7 @@ - distclean-libtool distclean-tags distdir dvi dvi-am html \ +@@ -789,6 +789,7 @@ html-am info info-am install install-am install-data \ - install-data-am install-data-local install-exec \ + install-data-am install-data-local install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-exec-local \ - install-exec-am install-info install-info-am install-man \ - install-strip install-toolexeclibLTLIBRARIES installcheck \ - installcheck-am installdirs maintainer-clean \ -@@ -743,6 +743,13 @@ - install_debug: + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + install-toolexeclibLTLIBRARIES installcheck installcheck-am \ +@@ -993,6 +994,12 @@ (cd ${debugdir} && $(MAKE) \ toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) -+ + +install-exec-local: +ifeq ($(enable_shared),yes) + $(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o diff --git a/packages/toolchain/lang/gcc/patches/904_flatten-switch-stmt-00.diff b/packages/toolchain/lang/gcc/patches/904_flatten-switch-stmt-00.diff index 8fac37c4df..e399214cdf 100644 --- a/packages/toolchain/lang/gcc/patches/904_flatten-switch-stmt-00.diff +++ b/packages/toolchain/lang/gcc/patches/904_flatten-switch-stmt-00.diff @@ -51,10 +51,8 @@ Index: gcc-4.2.0/gcc/stmt.c =================================================================== --- gcc-4.2.0.orig/gcc/stmt.c (revision 123843) +++ gcc-4.2.0/gcc/stmt.c (working copy) -@@ -2517,7 +2517,11 @@ expand_case (tree exp) - use_cost_table - = (TREE_CODE (orig_type) != ENUMERAL_TYPE - && estimate_case_costs (case_list)); +@@ -2517,5 +2517,9 @@ expand_case (tree exp) + use_cost_table = estimate_case_costs (case_list); - balance_case_nodes (&case_list, NULL); + /* When optimizing for size, we want a straight list to avoid + jumps as much as possible. This basically creates an if-else diff --git a/packages/toolchain/lang/gcc/url b/packages/toolchain/lang/gcc/url index 16e6a07128..3f7362b52a 100644 --- a/packages/toolchain/lang/gcc/url +++ b/packages/toolchain/lang/gcc/url @@ -1 +1 @@ -ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-4.4.3/gcc-4.4.3.tar.bz2 \ No newline at end of file +ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-4.5.0/gcc-4.5.0.tar.bz2 \ No newline at end of file From 96bc4c17e0e8cbd5f26b8a01ac0dba9ded140db5 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 23:54:15 +0200 Subject: [PATCH 095/171] gcc-core: - build with mpc and libelf support --- packages/toolchain/lang/gcc-core/build | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/toolchain/lang/gcc-core/build b/packages/toolchain/lang/gcc-core/build index a6c794b405..da60628777 100755 --- a/packages/toolchain/lang/gcc-core/build +++ b/packages/toolchain/lang/gcc-core/build @@ -6,8 +6,10 @@ $SCRIPTS/install ccache $SCRIPTS/install binutils $SCRIPTS/build gmp $SCRIPTS/build mpfr +$SCRIPTS/build mpc $SCRIPTS/build ppl $SCRIPTS/build cloog-ppl +$SCRIPTS/build libelf $SCRIPTS/unpack gcc setup_toolchain host @@ -23,8 +25,10 @@ LDFLAGS="-Wl,-rpath,$ROOT/$TOOLCHAIN/lib" \ --with-sysroot=$SYSROOT_PREFIX \ --with-gmp=$ROOT/$TOOLCHAIN \ --with-mpfr=$ROOT/$TOOLCHAIN \ + --with-mpc=$ROOT/$TOOLCHAIN \ --with-ppl=$ROOT/$TOOLCHAIN \ --with-cloog=$ROOT/$TOOLCHAIN \ + --with-libelf=$ROOT/$TOOLCHAIN \ --enable-languages=c \ --disable-libmudflap \ --disable-libssp \ From 048b69dccab8f1ed221c9f688b32d21b70ba4386 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 23:54:33 +0200 Subject: [PATCH 096/171] gcc-final: - build with mpc and libelf support --- packages/toolchain/lang/gcc-final/build | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/toolchain/lang/gcc-final/build b/packages/toolchain/lang/gcc-final/build index 5ae9eba616..d629628b2b 100755 --- a/packages/toolchain/lang/gcc-final/build +++ b/packages/toolchain/lang/gcc-final/build @@ -6,8 +6,10 @@ $SCRIPTS/install ccache toolchain $SCRIPTS/install binutils $SCRIPTS/build gmp $SCRIPTS/build mpfr +$SCRIPTS/build mpc $SCRIPTS/build ppl $SCRIPTS/build cloog-ppl +$SCRIPTS/build libelf $SCRIPTS/install eglibc toolchain $SCRIPTS/unpack gcc @@ -24,8 +26,10 @@ LDFLAGS="-Wl,-rpath,$ROOT/$TOOLCHAIN/lib" \ --with-sysroot=$SYSROOT_PREFIX \ --with-gmp=$ROOT/$TOOLCHAIN \ --with-mpfr=$ROOT/$TOOLCHAIN \ + --with-mpc=$ROOT/$TOOLCHAIN \ --with-ppl=$ROOT/$TOOLCHAIN \ --with-cloog=$ROOT/$TOOLCHAIN \ + --with-libelf=$ROOT/$TOOLCHAIN \ --enable-languages=${TOOLCHAIN_LANGUAGES} \ --disable-__cxa_atexit \ --disable-libmudflap \ From 5ebd56a9eaf87303110019a4f40be5152408faf9 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 23:55:04 +0200 Subject: [PATCH 097/171] ppl: - enable optimizations --- packages/toolchain/math/ppl/build | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/toolchain/math/ppl/build b/packages/toolchain/math/ppl/build index ba6d2f6fa7..1c9c2b859c 100755 --- a/packages/toolchain/math/ppl/build +++ b/packages/toolchain/math/ppl/build @@ -20,9 +20,8 @@ LDFLAGS="-Wl,-rpath,$ROOT/$TOOLCHAIN/lib" \ --enable-shared \ --disable-static \ --enable-interfaces="c,cxx" \ - --disable-optimization \ --with-libgmp-prefix="$ROOT/$TOOLCHAIN" \ --with-libgmpxx-prefix="$ROOT/$TOOLCHAIN" \ make -make install \ No newline at end of file +make install From 9ffb9a5a1941ade75e3d9f46b2bef4687b26ba82 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 23:55:25 +0200 Subject: [PATCH 098/171] cloog-ppl: - cosmetics --- packages/toolchain/math/cloog-ppl/build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/toolchain/math/cloog-ppl/build b/packages/toolchain/math/cloog-ppl/build index b4099f742a..c134b7f4d4 100755 --- a/packages/toolchain/math/cloog-ppl/build +++ b/packages/toolchain/math/cloog-ppl/build @@ -26,4 +26,4 @@ LDFLAGS="-Wl,-rpath,$ROOT/$TOOLCHAIN/lib" \ make make check -make install \ No newline at end of file +make install From 227f59ab48837a9e102dc87c2f52052bfe48085e Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 23:55:49 +0200 Subject: [PATCH 099/171] tiff: - change downloadurl --- packages/graphics/tiff/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/graphics/tiff/url b/packages/graphics/tiff/url index 818f739513..28a5077100 100644 --- a/packages/graphics/tiff/url +++ b/packages/graphics/tiff/url @@ -1 +1 @@ -ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.0beta5.tar.gz \ No newline at end of file +http://download.osgeo.org/libtiff/tiff-4.0.0beta5.tar.gz From 15cd7b8c3873e5a54263b02ce2e65b30abca5f87 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 23:56:33 +0200 Subject: [PATCH 100/171] config/path: - add some new optimazions for gcc-4.5 --- config/path | 1 + 1 file changed, 1 insertion(+) diff --git a/config/path b/config/path index a4c918e264..6b0a878b86 100644 --- a/config/path +++ b/config/path @@ -80,6 +80,7 @@ TOOLCHAIN_LANGUAGES=c [ "$TOOLCHAIN_CXX" = yes ] && TOOLCHAIN_LANGUAGES=${TOOLCHAIN_LANGUAGES},c++ [ "$OPTIMIZATIONS" = speed ] && GCC_OPTIM="-O4 $PROJECT_CFLAGS" || GCC_OPTIM="-Os" +[ "$TARGET_ARCH" = i386 -o "$TARGET_ARCH" = x86_64 ] && GCC_OPTIM="$GCC_OPTIM -fexcess-precision=fast" TARGET_CC=${TARGET_PREFIX}gcc TARGET_CXX=${TARGET_PREFIX}g++ From 7f13e861093c45b2e1372ffcdb1291f1039870b7 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 23:56:50 +0200 Subject: [PATCH 101/171] linux: - update to linux-2.6.33.3 --- packages/linux/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/linux/url b/packages/linux/url index 7d3ed70e39..e9f76e1d7c 100644 --- a/packages/linux/url +++ b/packages/linux/url @@ -1 +1 @@ -http://eu.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.2.tar.bz2 \ No newline at end of file +http://eu.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.3.tar.bz2 \ No newline at end of file From c217b2d0848f132a47cc50643522ffa5bd433b95 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 26 Apr 2010 23:57:40 +0200 Subject: [PATCH 102/171] lcdproc: - enable Foreground option --- packages/sysutils/lcdproc/build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/lcdproc/build b/packages/sysutils/lcdproc/build index ef99e42eea..da38b67505 100755 --- a/packages/sysutils/lcdproc/build +++ b/packages/sysutils/lcdproc/build @@ -17,4 +17,4 @@ make sed -i -e "s|^DriverPath=.*$|DriverPath=/usr/lib/lcdproc/|" LCDd.conf sed -i -e "s|^Driver=.*$|Driver=irtrans|" LCDd.conf -sed -i -e "s|^Foreground=.*$|Foreground=no|" LCDd.conf \ No newline at end of file +sed -i -e "s|^#Foreground=.*$|Foreground=no|" LCDd.conf \ No newline at end of file From 5e719021c860c36d790377e8aa1d6be5b9a92498 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 27 Apr 2010 13:25:13 +0200 Subject: [PATCH 103/171] projects/ION/options: - update cpu list for gcc-4.5 - set TARGET_CPU to atom --- projects/ION/options | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/projects/ION/options b/projects/ION/options index 53ff6e3e0a..90aa5c90fb 100644 --- a/projects/ION/options +++ b/projects/ION/options @@ -27,20 +27,20 @@ # (AMD CPUs) k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 # athlon-fx athlon-mp athlon-xp athlon-4 # athlon-tbird athlon k6-3 k6-2 k6 geode - # (Intel CPUs) core2 nocona prescott pentium4[m] pentium3[m] pentium-m - # pentium2 pentiumpro pentium-mmx pentium + # (Intel CPUs) atom core2 nocona prescott pentium4[m] pentium3[m] + # pentium-m pentium2 pentiumpro pentium-mmx pentium # i686 i586 i486 i386 # (VIA CPUs) c3 c3-2 # - #TARGET_CPU="i686" + TARGET_CPU="atom" ;; x86_64) # (AMD CPUs) k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 # athlon-fx amdfam10 barcelona - # (Intel CPUs) core2 nocona + # (Intel CPUs) atom core2 nocona # - #TARGET_CPU="generic" + TARGET_CPU="atom" ;; esac @@ -48,7 +48,7 @@ OPTIMIZATIONS="speed" # Project CFLAGS - PROJECT_CFLAGS="-mmmx -msse -msse2 -msse3 -mssse3 -mfpmath=sse" + PROJECT_CFLAGS="" # Timezone to use (empty disables timezone support) # use a TZ environment string From 4bc934d14da774c2cff2fc8cb61648615e2b9249 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 27 Apr 2010 13:25:35 +0200 Subject: [PATCH 104/171] projects/generic/options: - update cpu list for gcc-4.5 --- projects/generic/options | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/generic/options b/projects/generic/options index ed806f3546..5c1d29f96d 100644 --- a/projects/generic/options +++ b/projects/generic/options @@ -27,8 +27,8 @@ # (AMD CPUs) k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 # athlon-fx athlon-mp athlon-xp athlon-4 # athlon-tbird athlon k6-3 k6-2 k6 geode - # (Intel CPUs) core2 nocona prescott pentium4[m] pentium3[m] pentium-m - # pentium2 pentiumpro pentium-mmx pentium + # (Intel CPUs) atom core2 nocona prescott pentium4[m] pentium3[m] + # pentium-m pentium2 pentiumpro pentium-mmx pentium # i686 i586 i486 i386 # (VIA CPUs) c3 c3-2 # @@ -38,7 +38,7 @@ x86_64) # (AMD CPUs) k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 # athlon-fx amdfam10 barcelona - # (Intel CPUs) core2 nocona + # (Intel CPUs) atom core2 nocona # #TARGET_CPU="generic" ;; From 7e8dc31715202c72e0948290fc02f2c6529c1e32 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 27 Apr 2010 13:26:37 +0200 Subject: [PATCH 105/171] projects/intel/options: - update cpu list for gcc-4.5 - remove PROJECT_CFLAGS --- projects/intel/options | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/intel/options b/projects/intel/options index 6600a199cb..a2f9a43a21 100644 --- a/projects/intel/options +++ b/projects/intel/options @@ -27,8 +27,8 @@ # (AMD CPUs) k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 # athlon-fx athlon-mp athlon-xp athlon-4 # athlon-tbird athlon k6-3 k6-2 k6 geode - # (Intel CPUs) core2 nocona prescott pentium4[m] pentium3[m] pentium-m - # pentium2 pentiumpro pentium-mmx pentium + # (Intel CPUs) atom core2 nocona prescott pentium4[m] pentium3[m] + # pentium-m pentium2 pentiumpro pentium-mmx pentium # i686 i586 i486 i386 # (VIA CPUs) c3 c3-2 # @@ -38,7 +38,7 @@ x86_64) # (AMD CPUs) k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 # athlon-fx amdfam10 barcelona - # (Intel CPUs) core2 nocona + # (Intel CPUs) atom core2 nocona # TARGET_CPU="core2" ;; @@ -48,7 +48,7 @@ OPTIMIZATIONS="speed" # Project CFLAGS - PROJECT_CFLAGS="-mmmx -msse -msse2 -msse3 -mssse3 -mfpmath=sse" + PROJECT_CFLAGS="" # Timezone to use (empty disables timezone support) # use a TZ environment string From 3a19d449ca08bb7aedd721a708cc653d4060a363 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 00:12:23 +0200 Subject: [PATCH 106/171] plymouth-lite: - remove package plymouth-lite --- packages/image/install | 1 - packages/sysutils/plymouth-lite/build | 10 -- .../sysutils/plymouth-lite/init.d/00_plymouth | 11 -- packages/sysutils/plymouth-lite/install | 13 --- .../plymouth-lite/patches/cursor.diff | 11 -- .../patches/plymouth-fix-build.diff | 10 -- .../plymouth-lite-0.6.0_libpng-1.4.0.diff | 12 -- .../patches/plymouth-resize.diff | 110 ------------------ .../sysutils/plymouth-lite/splash/Splash.png | Bin 298487 -> 0 bytes packages/sysutils/plymouth-lite/url | 1 - 10 files changed, 179 deletions(-) delete mode 100755 packages/sysutils/plymouth-lite/build delete mode 100755 packages/sysutils/plymouth-lite/init.d/00_plymouth delete mode 100755 packages/sysutils/plymouth-lite/install delete mode 100644 packages/sysutils/plymouth-lite/patches/cursor.diff delete mode 100644 packages/sysutils/plymouth-lite/patches/plymouth-fix-build.diff delete mode 100644 packages/sysutils/plymouth-lite/patches/plymouth-lite-0.6.0_libpng-1.4.0.diff delete mode 100644 packages/sysutils/plymouth-lite/patches/plymouth-resize.diff delete mode 100644 packages/sysutils/plymouth-lite/splash/Splash.png delete mode 100644 packages/sysutils/plymouth-lite/url diff --git a/packages/image/install b/packages/image/install index 2233f49e9f..12d0bece25 100755 --- a/packages/image/install +++ b/packages/image/install @@ -54,7 +54,6 @@ case "$2" in $SCRIPTS/install gcc-final $SCRIPTS/install linux $2 $SCRIPTS/install busybox - $SCRIPTS/install plymouth-lite $SCRIPTS/install util-linux-ng echo "OpenELEC" > $INSTALL/etc/distribution diff --git a/packages/sysutils/plymouth-lite/build b/packages/sysutils/plymouth-lite/build deleted file mode 100755 index 80dbd20387..0000000000 --- a/packages/sysutils/plymouth-lite/build +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -. config/options - -$SCRIPTS/build toolchain -$SCRIPTS/build libpng - -cd $PKG_BUILD - -make \ No newline at end of file diff --git a/packages/sysutils/plymouth-lite/init.d/00_plymouth b/packages/sysutils/plymouth-lite/init.d/00_plymouth deleted file mode 100755 index 29d0e7e828..0000000000 --- a/packages/sysutils/plymouth-lite/init.d/00_plymouth +++ /dev/null @@ -1,11 +0,0 @@ -# -# starting splash -# -# runlevels: openelec, textmode - -( - [ "$DEBUG" != "yes" -a "$TEXTMODE" != "yes" \ - -a -f /usr/bin/ply-image -a -f /usr/share/splash/Splash.png \ - ] && ply-image /usr/share/splash/Splash.png -)& - diff --git a/packages/sysutils/plymouth-lite/install b/packages/sysutils/plymouth-lite/install deleted file mode 100755 index a901b44026..0000000000 --- a/packages/sysutils/plymouth-lite/install +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -. config/options - -$SCRIPTS/install libpng - -PKG_DIR=`find $PACKAGES -type d -name $1` - -mkdir -p $INSTALL/usr/bin - cp $PKG_BUILD/ply-image $INSTALL/usr/bin - -mkdir -p $INSTALL/usr/share/splash - cp -PR $PKG_DIR/splash/Splash.png $INSTALL/usr/share/splash diff --git a/packages/sysutils/plymouth-lite/patches/cursor.diff b/packages/sysutils/plymouth-lite/patches/cursor.diff deleted file mode 100644 index fc69b27811..0000000000 --- a/packages/sysutils/plymouth-lite/patches/cursor.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- plymouth-lite-0.6.0/ply-image.c~ 2009-03-06 16:20:52.000000000 -0800 -+++ plymouth-lite-0.6.0/ply-image.c 2009-03-06 16:20:52.000000000 -0800 -@@ -439,7 +439,7 @@ - - exit_code = 0; - --// hide_cursor (); -+ hide_cursor (); - - if (argc == 1) - image = ply_image_new ("/usr/share/plymouth/splash.png"); diff --git a/packages/sysutils/plymouth-lite/patches/plymouth-fix-build.diff b/packages/sysutils/plymouth-lite/patches/plymouth-fix-build.diff deleted file mode 100644 index 5c27e29e46..0000000000 --- a/packages/sysutils/plymouth-lite/patches/plymouth-fix-build.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- plymouth-lite-0.6.0/Makefile~ 2009-07-22 11:22:32.000000000 -0700 -+++ plymouth-lite-0.6.0/Makefile 2009-07-22 11:22:32.000000000 -0700 -@@ -1,6 +1,6 @@ - - ply-image: ply-image.c ply-frame-buffer.c Makefile -- gcc -O2 -march=core2 -mtune=generic -lm `pkg-config --cflags libpng12` `pkg-config --libs libpng12` ply-image.c ply-frame-buffer.c -o ply-image -+ $(CC) $(CFLAGS) `pkg-config --cflags libpng` ply-image.c ply-frame-buffer.c -o ply-image -lm `pkg-config --libs libpng` - - clean: - rm -f ply-image *~ gmon.out diff --git a/packages/sysutils/plymouth-lite/patches/plymouth-lite-0.6.0_libpng-1.4.0.diff b/packages/sysutils/plymouth-lite/patches/plymouth-lite-0.6.0_libpng-1.4.0.diff deleted file mode 100644 index cf5a08ac95..0000000000 --- a/packages/sysutils/plymouth-lite/patches/plymouth-lite-0.6.0_libpng-1.4.0.diff +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naur plymouth-lite-0.6.0/ply-image.c plymouth-lite-0.6.0.patch/ply-image.c ---- plymouth-lite-0.6.0/ply-image.c 2009-02-19 12:16:36.000000000 +0100 -+++ plymouth-lite-0.6.0.patch/ply-image.c 2010-02-08 01:30:05.336856616 +0100 -@@ -220,7 +220,7 @@ - png_set_palette_to_rgb (png); - - if ((color_type == PNG_COLOR_TYPE_GRAY) && (bits_per_pixel < 8)) -- png_set_gray_1_2_4_to_8 (png); -+ png_set_expand_gray_1_2_4_to_8 (png); - - if (png_get_valid (png, info, PNG_INFO_tRNS)) - png_set_tRNS_to_alpha (png); diff --git a/packages/sysutils/plymouth-lite/patches/plymouth-resize.diff b/packages/sysutils/plymouth-lite/patches/plymouth-resize.diff deleted file mode 100644 index 4bebf11213..0000000000 --- a/packages/sysutils/plymouth-lite/patches/plymouth-resize.diff +++ /dev/null @@ -1,110 +0,0 @@ -diff -urN plymouth-lite-0.6.0/ply-frame-buffer.c plymouth-lite-0.6.0.change/ply-frame-buffer.c ---- plymouth-lite-0.6.0/ply-frame-buffer.c 2009-02-19 19:14:24.000000000 +0800 -+++ plymouth-lite-0.6.0.change/ply-frame-buffer.c 2009-06-13 17:44:05.000000000 +0800 -@@ -47,41 +47,6 @@ - #define PLY_FRAME_BUFFER_DEFAULT_FB_DEVICE_NAME "/dev/fb0" - #endif - --struct _ply_frame_buffer --{ -- char *device_name; -- int device_fd; -- -- char *map_address; -- size_t size; -- -- uint32_t *shadow_buffer; -- -- uint32_t red_bit_position; -- uint32_t green_bit_position; -- uint32_t blue_bit_position; -- uint32_t alpha_bit_position; -- -- uint32_t bits_for_red; -- uint32_t bits_for_green; -- uint32_t bits_for_blue; -- uint32_t bits_for_alpha; -- -- int32_t dither_red; -- int32_t dither_green; -- int32_t dither_blue; -- -- unsigned int bytes_per_pixel; -- unsigned int row_stride; -- -- ply_frame_buffer_area_t area; -- ply_frame_buffer_area_t area_to_flush; -- -- void (*flush)(ply_frame_buffer_t *buffer); -- -- int pause_count; --}; -- - static bool ply_frame_buffer_open_device (ply_frame_buffer_t *buffer); - static void ply_frame_buffer_close_device (ply_frame_buffer_t *buffer); - static bool ply_frame_buffer_query_device (ply_frame_buffer_t *buffer); -diff -urN plymouth-lite-0.6.0/ply-frame-buffer.h plymouth-lite-0.6.0.change/ply-frame-buffer.h ---- plymouth-lite-0.6.0/ply-frame-buffer.h 2009-02-19 17:35:54.000000000 +0800 -+++ plymouth-lite-0.6.0.change/ply-frame-buffer.h 2009-06-13 17:31:42.000000000 +0800 -@@ -38,6 +38,41 @@ - unsigned long height; - }; - -+struct _ply_frame_buffer -+{ -+ char *device_name; -+ int device_fd; -+ -+ char *map_address; -+ size_t size; -+ -+ uint32_t *shadow_buffer; -+ -+ uint32_t red_bit_position; -+ uint32_t green_bit_position; -+ uint32_t blue_bit_position; -+ uint32_t alpha_bit_position; -+ -+ uint32_t bits_for_red; -+ uint32_t bits_for_green; -+ uint32_t bits_for_blue; -+ uint32_t bits_for_alpha; -+ -+ int32_t dither_red; -+ int32_t dither_green; -+ int32_t dither_blue; -+ -+ unsigned int bytes_per_pixel; -+ unsigned int row_stride; -+ -+ ply_frame_buffer_area_t area; -+ ply_frame_buffer_area_t area_to_flush; -+ -+ void (*flush)(ply_frame_buffer_t *buffer); -+ -+ int pause_count; -+}; -+ - #define PLY_FRAME_BUFFER_COLOR_TO_PIXEL_VALUE(r,g,b,a) \ - (((uint8_t) (CLAMP (a * 255.0, 0.0, 255.0)) << 24) \ - | ((uint8_t) (CLAMP (r * 255.0, 0.0, 255.0)) << 16) \ -diff -urN plymouth-lite-0.6.0/ply-image.c plymouth-lite-0.6.0.change/ply-image.c ---- plymouth-lite-0.6.0/ply-image.c 2009-02-19 19:16:36.000000000 +0800 -+++ plymouth-lite-0.6.0.change/ply-image.c 2009-06-13 17:42:52.000000000 +0800 -@@ -43,6 +43,7 @@ - #include - - #include -+#include "ply-frame-buffer.h" - - #define MIN(a,b) ((a) <= (b)? (a) : (b)) - #define MAX(a,b) ((a) >= (b)? (a) : (b)) -@@ -464,6 +465,8 @@ - return exit_code; - } - -+ image = ply_image_resize(image, buffer->area.width, buffer->area.height); -+ - animate_at_time (buffer, image); - - ply_frame_buffer_close (buffer); diff --git a/packages/sysutils/plymouth-lite/splash/Splash.png b/packages/sysutils/plymouth-lite/splash/Splash.png deleted file mode 100644 index 8c86ae06a7e156780ad0ada07b71fd661fd3fc0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 298487 zcmeFYX;@Ni)CQ_$S!UYcRBASvnNw;x51I8^S!$Y7IHaUzia6weC^V^=Q)SKynVF>_ zngdQq=0J{=r6?#kV0^($6)Vn~bQ^r#Y}8WD#l5ftGQoNl4Y z6_@LK6sd=jC{UF9@9{?Ce_l9dX{(EF|L*^HTlQ^NMw&vK|L=$eabD~Hc8zxLy7#}k zkDob+{QDobH={lO4T^~TXORD#;Xfd3`@nxd_zwvG0pUL&{8t|QR~r3KB>XQU{I41Q z|E`laR^^tViEjrNLI0lbvC75GDMGfi*kk+HL8u;UpVbF{@qZ5xj#w;T?BmTPxs`63gBr$p_2t&Z++6A@Xdal6wTmUc6v?jWh3 z%?k&2`CD%Cm9d{2vqVHX2)_1=ACceVOX2@03W#vrD3$?>z=~MB%NbG>@T~hUEsTgF z0Fok?B)6P&XTEH0{vaxznh*?HHZwD**;^sFXxv7TAkDyNbCAzGx0O@wDDPn?DlT$7QBb77Lw6B=r*nX?)oHly zuo7%J!pld{MiAYq5xASeKvc`kHoC6hHFRF5wk&#PX%0S*Q1ptkeAzDIHB_-M*|KiO3I%zJ z`(pcQ7hB=+rm*!!U16KSro4+D0X{)7=$?+R9x*3Kg(-Y9J^6SPzGt(mHm>^#rd_*j8tmqgY=Y2BxS2y*L2%;YrUK#y*$TpIfFpx6%>$78rSmN-@pEdV zADiM#95S`jYsiwG@dR$_%M*v9UH89O58kKWGBId&=mU%d<;&N{Hm;kFE6OY?Z<-$t z-D4v1*gmBMu94VU*RybVn)Y{q>PNucG6nVrxL%68K_>nFNYOpkOv5%CXm6wt_ioQ7 zmr6%kmhQJ4OvjK$mS?bQ$;7GOuG(-qiVTdnQyC z8Y$HYBPG(cK^if5dGBF+Xoh8Vo_SNzZ*wXk_};eZ(@Wr{iGtbH% zpNuS*kM*gL(!CC*jPn;`45SL8I{bLR3F?dYQj{QblYLRlVcGU{oTWZLG-gs&Fc}TI z7AP2TVL$j8S@Eiw6BM#b8LsOlCerZ>P~C_6@KXagZ=a52-a6UuI@QVTA+EQEjI1U`~%UV<+l3O@_x5qP(1dB5MR5&E2#W%1Od@mfuzhB7@rk^pZSZ(zY9YM1 zXn%C-uX+g_==-`ez?vD4{8&VtM)>{&d#L?;ad0$TAWvG+2XPI_3u)0yJLzr6n)5RV z{yYZx*D?~0J0;h=9*yO?{MM|ASn(o|) ze=^y^+G?hW!kJ$vQ1Lg=`jgz}j}M9*uwjl07{8u=M+`kc%3Gr0>n%XZH^6T`Hhsp? zzFm#1c+0T5(a-=zGGHSOC)~KN82d;eUgL8^B+5Iis6+67U?Y%LmXNxXQ3I9ueoH<= z3V#3K@*5@}wa)945MmQLZBkz1vVQZE-GT`;%Ltu*X%F!*g=KKsA*nyMTf>j%5h(5T zI7-V(BN8XO7J6!-kcO+`MN{@DtcUFUN+V

}i#Y+w}jrM`W`gY%MO}=H|7_4@S80 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

Qb=N5=mE47H;> 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

t|}f?~zm{)D4A^)SSUdG#yhx zT?sRkpbx9H>Wu4_|9&7Xiz?wfEk5)ZF0v!)F+|@O*j-k+u{5L9St{gIL@B1nGJV8! z*OfH2W-Qy=5%Y(3voIHq3yS~F;0S+QuKfc4CI)CY<<6Fxj;emoqjSASXpPT!X!yS| z+{Tx=Q=ftlq?h96&v083$PmsYb{5aLw6kWGlTsD{3GLba7vlX(!Ci~Q4Dlhq7aEuv zqf-ln;Y+)1;n>!Xhy3V5u-HTi$pi@1%IT%xb!YzkHmq+GZ*327eQQ8oz(1;O(j|YY z>2%4V%#)}@e)p{{?w!Kd6}TZu#UO-)zHCYm4k)%fM&3JXGtWvG@$75p^Lm&a(w&22 znSL#{{zM!W=gnw-_`wLkY zevcatYa*6_!l&BPHFYBY)h}*2#veensEx&zGE;Ax0bOW200}9AzdqkKE&7vGXTO~S zkdYNPRyr|zj2#wQ6G7~>1(5gRBIb{G|9GjZ9(oD$55>Z}92i*nZ9kCPW|BLcT0*4E zD7nK|ya%?qnxeJSw!QnswF*=lvmB?NtcYz2NC($B=eG*seqlUSpg(&i`FrKYkU#m~ zh|R$zFwxl;n0#wYsEP-gu={@iWvWcBJ4mfPx^&-AIs#K)1_cm-UOT48q6eyd<2#uj zQr2h62Fa$gKov!MHT@MKd84HEQ%fJxMUfz|U6Cn41N$@16_<0C-eAfBBKN|`Rjq~< z&u`r~C#`oFXwS%Zn2Y*&t3uIcK4d~B+~Me=Xysu45G<*3z8q-Xq6d0bQ}M?!PRLoG z)kTf7R|VxDtT3RD2Jvw-$~!@Y-37aA@J#UTM9+>(=^g-fXeE}(@hfYVkij*f9H54g z=nnAoT(j45x?z=UOm^qImX7>v1Rn$QZNeT{*fI+x+Vkzl9SA0ARIntP1k9)!YgX{t zO2gXLf5s%pM_cCF|P0s1Z_z{sDwYy9(P&TDd zdd^ZKZ3sW)COFfd7&7=RUAB;%Et&P>^bWuetrozgv}CJZ#7jia-59F~7@x3dUgaNj zW3*+potQ{ezO?_W!SFPsJS)ZY0e)$K1W!<9hKaTOUxnQ=PwFwa4Nu=TS2XJ=xHd&o7|;eJ6N7$0sFxuLU_&&=G$6 zZ|7z7(zEQwmAxW)>{4(;I-oBIdsYnLFbDxc1Al>cP$X0Ep)*P118>;f{@3;EN2_85 z>&NC(-JI2m_m`Hr(`L=k#x3Iu64P?BOrt4N^UAjgDES^p8>k*$0=D2fPb3ERT1BF8VVbl z2D$vT*Y(93P8a=XK`hp9IM&$Hj`T^eznL#ScJLaVNRc1(mex_(R|z_3`4gx)duOZ_ zNta8?fhdZRwWSiE>P=OgS?-^@>wa=$ba3gLZLACQZl^3QzaKL0JMo@=1?r^DPm1GW zmbi#?mhvo|p!b4`3azkXv8q@gvId+rbxfxwuzBxP$3H7ERWEaPv(K<#iCEs-V|;}G z)_kpTig}xi0!JK=B4^H%p9RJ|0NqAho8A!0u&yUz|r zX@2Jr^!oYYQF<~;G=kFRx?(t;8f9kPV$;M*9ihQNDEQ)4-{*~6W~K$e!PmiUo=un? z*0k;Ei_aV8)k~t~@!)NZUsKEemo-Cz48iJ7s&p)<*zuOj7Dqb;beoN{3aM4(uX{tw zL}3}%dT`4sbu1%_Rj3?7M7jc_BmTH4K-?r`QU)1>c8g{`k*6HXYRjuO<2!BrPbxi) zVJ)>siIRPnq>=oEYhKN7p+?9rmvB~#?;-kNQQ zu#Qg#fbwk*w@KM0J4>R(VMPJP(q1RN3UPh2|Tls~S#c%^HePuVm>C$-014g3V5^cdhIODSPOtiPJk z5S@Z6ZuUjioBJUJPsYRTBFY`a#gDfapvUzk1a7u#RW~huIlgjBDeRHpIyxc#=hWX}9g#F!lTzuKz%9>PJslzFT_oLa+8E5Pz3 zF7JZ^&K0`P*WGtX>%;fGB)=>Y>J@41cOyO$;qY5`Om7d$Ut}}#O&Op(8QFon2y*>2 z?}YUjQ`T#kVW*&iyE-aWtlPh*8^0s?^nR_)%+CnkUy9hRdI11V=btSlY0D=(Kn4r% zSqV8{KCrYH1jsL;jBJ7N?LGS7*n1pi=f%-4ra=DF`e|-zwb+IIIt=^!*Th1uQ_t)* z$+QZWi(I9=`=HpTF&JNmc>(3n{@Zd!e0W+F5M6oUALz!k(?4Z3-V2J)tIV<^PRc@q?B%hqPEQ%uzIl{vJgi_cxMT#SS}sj}*7OqE7INFp_HPCv>+)A4N{Uy!_XoE(#?R95<_=)4}yd= z5<@pLz!2~K{IBc%JRj#iXYaH3TEC@y3A-l)3Xh|xhoY3!-?Sz3DtPJ`*zrP{7j_AIb9dD(aMCbpf~{QJCrqECw;wM&fsHRf%OI`sOZ=V%Od3{a|A zkCuD^@)0FKK8ktnY@z&gnneM7v6p()s7LeXq?=0*BN@T z^evZc*9dMdEtxS&S5<9%hkNOLNq>yUbg`J&e8dIgw6DV^x(3g8zNpiItx8D#d{v?S z_x0Us@j=6%0HHi?b-82iY?mIpkW7ErK-OsU=xSmMtQw1ctOttK(NNrM_QJ0jRrl^a z+W27Z`JjOTSYU4f8g{CnZ*6Y5W`sq5D8QE`h1TM6T(8bGY`(C%6K+ zcB!BP1IP99e|=UqjMwz1GLGgl7xz`v4IT1S^JUx!$8q_$wJAdl9scl_zu47LC9CUn zCLp73^HoS^E^fBGJlwxLwBs!EM}ZAzj;$;8cO%q_(yup|7bdUbn6941xmq#=N4W>o zt{~7I{~do|#QX{$4r($uA5``KW%?}D4HVQGk*%VlNW?o15M+ zEIRSzK*R#QQu$1-c{$El{o!l2xe4WdAm0bxC-G{OHRKpZsQlX>waQIBJ{) zY+Q+#WMD35j%l3+2pQTuH#jH|7S?&bQ2Ru$_OB~vXI-%PAQdv+Msa0Dz6JYc0V8os z209k_w}z{NtV-;K@q%d-xy3xdl}=(RHKG1W_=9wJv}&YxCTzMFJxVhe4*-ln9nUN~ zhU90?<$4JGh3xAm{FNsUWq0JaodoYWUR?R&1e-%V4e8{%=S-!wm5rQdsCuRWIR?T1 z#EX&Hoqa*i*NE4s2TniUw@itTnZFZ>?HZNK9 zMF(;2t6#F4xpw3-lCphooD69iT$yie$&KU#|C&4pYUNHDjAGyzgb_n@)tVX9F!Uj6 zpvbahkC6~RP4fK7w+&ZdnaEtyNe4={OtSPT9D({{x>r0d=G6OzDKvUgmKeo2ITdJz z4AVsBx(Ev#%T_uo9=*qPBfF{@WTn*=$j^^1(9+*}Q@r9Att!r_!v$dBCelr1m0VGPs##gcp{@|!ctvoe#Xy0)$#@kmu^FXUPr2`4;>3AZtR#gljh}S zhI2?qYjY_zr8tfFw^iSz*280+vfOs+sUJ20?mf5aF1;x+{EsZlx+#WF%qCWs!X)Q) z05R*W)dGzlnE&%vdwL@%T;@Y7mE20w?&n&YA1UtyrUwCDexnm5Qx@6)6un5Uc-k96 zLHi${ikThZ>exfADtV;%KXvlD(81Y$`1aM``wlz`Og?*BYzG7 z=1toA5|!ljv;F$7RInK~+gsj&)7X}Q0YN7)Xd|9qX*RU$2_r)s04o6KK#xK3x<4)a z-C5p$cniKd4@rJv8e5GqVOFM$W2jT)%seR4_8}m0oAS%wP4YXR)>2Dfa5b{P{d3xU zEAP>nb1Zz`qD`OWTylEazORQ5}u_Qz1AW{F}vyxWeFEY zrPK`7xw|rZlRTTB%a^x>Iv&w<*I4ac?r@UmBsjUT0&3gJwK-u)=lZHO zCa&(Y+m6yBVv65zrw%0LKXkbJdyc_{b8tU|^>hrA^pR^A?TW$xqV_BNW2(8(AX_7= zivNvyhD{5?Ph`We!~PSF{(F4!leqz#xYa%HA*uK1*-cojCWO zm~(_GVx9;#s9UXS!Y`h_@WGuhTb=aWz4S=yJX(A!)PI$<;+c<>g1*KF9AnU~=6xIc z?;2)&)I^_EyL+4ed%qLViqQ@#GJvqDw>lN)JU6OM+VK&US`Zkgki)@cP&!R!f6rSy z$#4qiVK62#PDdx1_H0ZlPIXu>zE_iwV-GK8nBS)nYzB+`6#FRxCzSS9(7)g({P4|@ zF<#k-FTp2rCmhRjLLF12eqi~95gulsA@)5kT~8uPRdtuB?+WkRMiw4Uuwhx6DDi_$ z0aX7Chy`O$9Zs$$wJUU3-Nv9Fq>gSkOMWE2(--Gu7nKGmU|<9bjh=v8>a_QZ6t04nwePct#? z3t%Sl6QnHI)$t~Z;K$%#fMKEVZI;p5Z^_BhsDHSd_doE0#^cgXKifjW_|yw)+aNSYUnP#?zhQDD4-41dDfAB#TNkUGV_WjfCYf zoRz?xej~1(dX+8Qa4*wpTjg07OPDIu;6x8(t+NCq`zhpGM#SLazupX>7Y+KB-0>XW zL9Jdur-k?9>hpdXRRH|_`;wo3|W{H>m{|-ZQVdS{QG$$Pp*b<{5}$R zxIf}u?hyekJ~#KGlSbdPc}}{KiWv!WriRW2h`xPGw!v8{Tg6Tt0S>;T`WN~5X>$#G zyyTqR>I(YuNL4Dz#rnYmYXlR=wq>z{`613X*V?=cGQ#C%W2l1na5xsZe{JdOX?A%} zn8H}DR3-6RjY>Hrj4imKkI+sjy*rX3%DR?0exo{h`ezCLUtSaHcgHnNE zb3d}EFL0M{t!e)}_e{~#C2`FY$0vRFpO$IH#U{s0r;4iCA71Fc=Lx$~FJC+J8}&+L z4WU3cw5+qbr*zv+LINSv*et4ArkSG|^S#lLbOQ5E`65S&YV$Lgir(v- z*V#?XldFZE4S;cs@$3hun@lfhXcOZEB2m&PbD1oaBDd6a&jBB=${;Lyw&|xNiLUG; z5t%7a{Oz%(`ABma{yM;ts}T!5R+=&Oa?@62bX?_@Qgz)JWPT9tyIPh-vS0zHpG^KD zm?iuP|Ki(>-wS#gIV}zCC?gXoZ@<1B9{FquJE9ZsW~4ll>BZWwXE?Jp&_P3+R0sj=5)g7YhBM;{qH zm}@H@6W}xL`F2G7Z(7cdQ1%HRx+hEAx;>UIdWBJzoRop4Mv(dvMKhM zr?`>@adN2uv>)X1lnF~FYj~)Z&*%O1<5tTC%F*13tgJ-9&ZS@U+~&vV!s)nO?zcMS z-@jd@oi#}hP)NzA6~14vWu?a*v=sdGB9Z89K;Ci#IfEa#pQ_sCo556$dz9$cmU{oE z{>lhd#B+STkD-Z~Mn_KKwY-46>?Z>qd>I(bmqu%oLC0J9hVA8E#B-ulEe7(QPbW4l zTvv+!{Y{_~VE$P_h#MS6qlm#mS%)_1EDeRgtZ9M>5KQ7sjEnG}cqi5=!S^LxJiDNM z!>{@Iq(X8yh|2Ef$8Eucy(jA7Cj|~{DUtysta1)UhpGC12dHu<5d^-`^8DFaXV(Se z1G9q$iCa-?cjF|TgVN*C#}qxIL)Q%nXkMIrNH4%tk*tmoreqPAx`zJgTo=2BUM9WB z`524sajfV2oG>yAK%Z5c-07LY09NM)i0Pw}zx^4WLmMIa82ZOe=_bi(YK95p-kbPEcPz!qF~ZU(oNjKFec;LdiKgY~;FXZ>%?EfGKdmebqnuZI zApq9cJaA9jwP@6p%kh#*vT~axtkTf(v#-f24$pVHP_^WUOqH#zMVtf&4y!uLvraS29=435pAb@ByAXpXWm?I%}9CL zY|z}v-TX^MCi`W?{Qbi8yytYu0L@$TRUC1YE@Si#iy z2QyCe3kQZW8s<*QfE0+bab{tkT(o7bc2rZ3HmR;47o~bh{9w9=%xa2yH|tig%Io{t zQBDLA9-A7-aXHQK;c4r+cl!OTFKR+cezp}VJu~M3P=PD4l6}_|>fxRNla{o@W#wdU z(XhB#YE-Lk#rs6dwix2N?^f8@c55$hpg14=Xu2-_U@&6(YSoFGNEe!-g}LSj_X$)h zfKCPGpH?)$^qtA^s9s_@*fYTjM`?AMwkGqCK8QG2By{TjjGcncVkZz3*z$Kx6n! zUqae5XXA<2G;+A1T&Zpo*5mY;mcl)b%zNjau#wCK45$y!ei);y=&)&8K!PAOauq>@pH_Rnc zmAV@9_D~)ux$|0Bh!*%k-a$wZ2(^Vx2NJ5)5wGV1a?G|)>|@vr{0_LiEiu^%!;spK zzsx^j*EC9ozT+}|@ywyq_o);BnB`B>QmPAF2~Jd!*DcIuevS`+*M;KcVKG$#w=&s$ zuoPL@_oQvs40=(@uATz-Wp<*+jE?*)M~E+vBAE$!1fDajGFeW4+$swUz8E9d(?0Ro zmP1aUd=^h&7`Z~0G)$$wODLMiC&1(1qWvBvj}|NB>wF-HT&MO3^5JVk$8xnk zIegZc%GG(pax+}}1|yu>rYrf$uReq9OpDA1Sx1(W@6f3F7wfwotGq|$ONh^%ZI<~E zVtV>SsfUk5>aD>Gs87p*Kj3nUEA#V=U3;Tn_C?+}xvYQT96;sVWbDcpvV_{+o4^G| zUv7j{uwz~Mm|j>aduRq#vr5;Y3>=S8!YRp1{ z`3WlcND}vx_YZieTca)eu;kACCepmj=e@sy69dQfI%6~1Gog;!6;(rhF`2aOH=YZ% z){;tNw?Sz}k)CUS!$84dLkK<=C=W~4K3U>w_K7+Koq1>}#G|r<8wISi=L~~{^cW(2 zgM?V&Vv|4yqJ=>xD#Ga9UZ%zwJe5{J)HJ;t=L^;B`Uph3M@XRBie=3)!a)BZ;3jse z))&94kk2J2cFtW^SkUMZ_mA(SO8!`M<5Bt23EB|b7*Knzn42}4zO-6tEo4N3;>A3k zNu;A1aR=C+zcFD7NN)aoczt+o#6F-c5(n%Tu!Lt;HkGh;9IPDFh0C)?LqKx%U#iaF z&O{l%oG<7`@@4|7HhB}uc|%LNeU&P*JD12$AmhDKA(3XER^OeZ;SC$VWru8)eM*1P z78rPE-X8c#$D+h}O<&&JfY8LaqrzlL2UU%EUpd#=E7K9jHr{cpse~`lIUpiu9)(^0 zui~HOZzG=h{4&)%kqw)ko2@`vakemh%6g3rTh}$s)1XeosR9n z#Y9D#T%Xv})zws4rg*6ZzxvS4hBnF(B+=(N=jtG{l&(#m95Zw&B@LN;wj&C7bFL45 zKO_*X6eWQ%*yEKzFIU*Zhv2P}!kAMu#|lMNAYAu2jQky9KVApXlFw>h)e;!}6$S}d z^l6j#c>c!*?Wuh%)9Sq0C&8*dZ6~jITutyNfwF{?H_afioqIaz^NF5`$>K-l)8$Zd zLX{JE%FB3L%B^$k7Bbx=rJ;p1Y^!WaLd`1RWK_<1-nif_!K@ippQ{Bgva`FC6K}>- zgjVr*JNZ3E-XLfO=TP`RhV4yeJdx*wMR$ZN57;ZK<&a}ZD`zzARoSZm?b(>_Ri={| z!5|BJMwqm^0fAdla18Wue}zWEeQa9MAdSVywTCTL8v0rIdlHsgf`L;qn!!$%LNYRJ z?3nCIRT->VF^k0&RG{tJv9fQz>Mn7wE3o?OH0Zp5f|^W-B37`y3c{bhkk=Q}G+*#3 zd*j}d_$W2Dv9)hu+6)f9tskc(!!cc)UmTg{N~|HiXl8u3C#H8Q=tMVT&XdTz@~dVG zW?k=Rl^Df5_^?2Q&yX-R2)HP$>Te|5g6nvx{Cu&hf|0^@xuYf!S7g?oo@LFjAdmY| z5LTXYsDSW@a)R6~!rr}QiT)gImabduB8Q}P*lB}L%1MpU&1LOVc!6SCVM*mCWONR1 z+l8?$cx3CvAe@Nm#Gkq8mLZv7;#`TQ$?+Gfuu`}J6n!eglM?Mt8uBmted(ulzy3p6Tmq-&kO7%HDBeK1~97FB% zpl4?UN2LwY1Y@>8(t_+4P6Gn~Ck~6AIj%|Y0O`&^^z&b*bCMQrj*g0@z5?APf4&5< zZQz#($aC9nUl$qJD9+rGy2kXCK|0TGq(b#2jQ_PWMmBtcVRn!4ZKLZMBR@JZwi~kd z=gj}HG7v1Ts`KUf`#dVK5Ip`8mq7n?{}}juQL>Sn*SchS zFo-_$=r#S0X~kaEiw9F`f&+>Pl1s_T1aG^3%7*nXj9elJp`}qrSh16zwR8JURtOpx zkxwe{)=X^K6UOB`gDX63gw1~EMUaB=l>n$j@gU7@JAf(%IKWUcuDgRJKrRIBMcZST zvb#y?KJZE%tX2;+HmCeLX#VB#-OebJ5=8a4(qzn8=pmpQ)rU8Lb=6ZyCH||atY3Rn z%K5L@um(-CL$@lu=SL|Xojhmg1_}M2B^P^vW)!{ja zt1VYOXncCRM2~|>o&cIUTtKpK+P%T4xF(+}K$>IzqCh#9v>lv$)1~*iYNd z9@(AD-5($cYJIKz&WgThx}_4C5@Dl_ml`?*?i}oJas#FT1MI|d_Sc`5SERisY*qny zfLKqTIt~0Y63CZd=2Xnfe_svv#Sd$*-J-x`6F<%^o$ZdA(^OjlM+#tsWkc4>xhHLXdNqjR6w&QEEW;!-%*%49Fk zEQoE|DW5t>8K`Cp}YqXK7=sPB_uBor$MwTbqbBjrXWn7}y6Cp0iJ*nu=*GG)bnp z-@3AB-goSw_*p1FNg@3W-T)pq6}2=)1b{KqXz={9!N^agq|Qc{i6WZc;Kka%r-!L=pahMu0ydK#lGq`GoM?L*>V~g)2mm& z=}o@O)m_-Qu{wE5mH)Ea+?Gt`DRcP{?Xc^tSj6G+ae{U#3JNxx;SRGI%jg_Ct3QLY zy)VBk8G4}@J+mi0bZwyju$YFKGMg_O918#wzs7`#jP^1GR=m-4SCcrD;$; ze8L-9#e|)CL$h;EgY-oIUTsveNT@GxhOpR+0bL&$pN)HMfw(hcEUK z9L(J7OJNz_1QaP4WS1ho{>nj0p9yf+qdqLSKd8zSJP5nRV{~P@Nx8I9Awr^rj_OY{ zD8-!@tRk{5ql+{X33U8|1Z>TuPu@{!6M+^ri*bTIi)mZmr2cE8uHKh$@hoPs{Qgby z8UuHPCS2#KVqTu;sM2EAOs>B~w5}K^?zXa*sgjqvg8At7rv4l7uYiQtj{mD_50QZ6 z9&k;>%GzW4W^BJ*dv2TbDDV3^es1baAK+8w)apA}uY6FA?z z9``|xEY9(g1YIcAUF(867>6ye>Fh%PhxF*JYV{!Ak{f_QV#NYMH8KteS=G3eGNRRIvW7mpWG}5PBiOQSKG87@6D|75R|8nYr z8LC(kz3&$HtrkJE98z?l6M*@4hzCx%}NfB<9Jx z4hbE2)!l_j;3tnI%GvbWgJ*cD(DcMdPWAO7;`{voQem(yzbW{8xmoY6FXbDlk&{;k zefHWKQ@{qU>}m-;w&?$8(Yo$FcZ;TC%v_q+U8KY*;~yX{ITu2bDf9(K7ugRw4Q~HR zl`ROv5bMgj>-b};j>Py_Xr0s?xiGkMc?i)A>$49oK+EyDI{vZGHl6Y$xEOyHK#E6% z>1u_6!0iGu#@e(Vzr^Ad_L+tn=#qr}AnifU_=j{?O~Gmf)?_fc9apE2+0&_>{<)|Y zoM2j-8a1Pzw2|AHM*b=8vuXCvp2|MhvOJYUA-C5t{~i;aPiF*$4IMba-{Wxro|}@! z(!F;p<~S#W24!cy1E=x&*RIgJwcn5~S^sha;hyHQ0Vd7A`z>)X;Z4X**^h)uvy=WhHj2CqsD>lN<5J$%x>bjNqOXN2~+`j3YiXC(zN%p!$xHy%d6 znfu0y1f-nqKl`?-#I!`nh5%Z$Ctpq_0l%LAyAWr8eQ98cqtVg%iXu7cr&as$=0gHx zMP?m$^uRnd-j0EX?pr1CcwThuUy%^Bf3GjUSnebDW|3F$;TUkRO8vOySC^;`;g^nd zm!J2#xT5k@oY=Lo zX_9v$kSGyiX+H8>Hh}F4Tp^4=)n-G$s};$8-st{u`Fo6{ z@@^0IOXN+9K4Lm=yyCCrewQn6cb;H$P99B>z-51)tcuzYBx?hD90{n;q#CNt_j!@# z*fk^r(iO43I5O2zx?3)wC;fPSue~GkYLADW<`bN5@0fo5PKmhWziBW4k59gjr0HDN z>lK9mb9q=%2=LU3dhMrCOKmgMCy|63>v~%tBH3x<;;1k*y#Qg1tMh=5=0PeqlC_v( z1R>Rr6sO|)?dEAkWS+TwkX^lf`0L;L(KvDAsk6P^CFC53SmY`XJ62;X2jeAiJqK1$ z!qyYCx4-YT83(fsghd2oixK{&2NUCi2$ppV-!z%=+iG^PvR1g^C#ZkfY|DQ3VzD;# z=vVpBm-%XxffP*{6apkh;@T~yVUrQ==c)XtXK+x`vi&KEN7VGP&{7d;9iuQfijj-m zGWgC|UG8$>$`pCk_B=r0lCs#tAny0)6G$i5ne!%wtsN0Jm1o7Eu=+W-k*{9r@Y1c& z(VrL2yjvAL;RhJph;P7MksI;ZqDH3chu0&tm;epFPiW7yWEK{fg#4-!aq^D1N!xsq zpUIDWey-m#`f*K=*9rCLU25%xqWG5Ka8=kRi{}r~*mX6Ke*QGhq`^WdU8HjXU4n7f zO}qK=A_JfKVMeFH=~pM~)CeXsc)|?3G49jW5Yn>H{!O7WK8js$9~OJBQxRHT*F~&9 z3{5zplFXG-FCXlD#{m-{?jmL|yV|wjz^Qfk$y41MF{=Q^ADNtzbsfQR6}`Hn2)T6s zqR{%k7Y^#Obeyq%P-5&^V5q>jOy2*p{ZYzEV_<0mcfqmvMBvef$PIz3tP)oi&><)# z%HYH>y_JxXXd|sX2#1D=n)ZWlpsx!~Xg>;-mR@9T`UWWr@^P}e48GSz_FMo77y_ z%Ns1wD2yDrBkm<#rH`FsejNdYwfEXMB`!uEX2QLDljnh0>64+Z(YnC}C5>WA5;w)fl%?=?TM zm5+_}TE;!W8ctJ9q4yh?PQrH*}F^@lHE5TG25Ugkl%sUjW{lspXLIijY9HpLJpn2257_S|0)i^ zj^WjyZq_#7{DmiXh^i0cF~kQqcR#Xrrg2W&;sA~A%G)kg9IPrTs~xk3OXr0NIjtS5 z_LrqaOyFMGayi7ViX^3&T!hMvdC5CHU-Bzkmd-z_{RKSAt=o(o1e;XsjBcZCD8U&o zdT!+>+#4~w>xX(w+va*|29{q$_-4@ayRwD@py5VoCqKt?WTL5s6B4F@jsx9);QCn6 zqFE#_4^yqF9{VwlbtP(BcTV@}HElummuo~D-Fd`5%@ZH}RI1L0$v2y=NA$&iHw?zZ zT};XkS|qB<1#!vD@k_oVaJQB27Ys<@V!_YXJWO#Dkk*R1ubDSyR}z+bp+A!qpFWP) z(A48kbJ!3^iyWO^J8YaQTY2%5R8Xd;VoZ#??DywVD}m`2m~Qozpn+?!-+Jp@u5RtM zlcoJ)6;Vo^L?x@Pte+B6xdV6xg@qIDI72(&qFMDcTZPKgu zkY^}88u$~ds$;f>gdy5T#{ z*9&I6@Dnc5C^FW(zo%EyB_qM_&Er=sGlN1LZa81~*c)&@T6;2zp7VFgGqp??JQ+D4 z%g)Mv^N0G8FopKo@S4Eo{abP)|DB|_X}=PuU0`E#qnEzU(d78wF4tg3S^Al>q0isf z=TJ_fKsdp8C6xJ~4&r+*d_5zZ!U$Wl?p0vGb`P4q;CFtVT_r!8+!4~d&Q9FhXs7rA zVRJ2L&u@Pb&vjWX|keig_oRQaaZDQdr`S}+7lL5sV2mW{qcZ0RaC*^W_CPmW3EF18-~ z&ypLs=L?UcBs2r$&h}GZ$AzWM`sVsh{NlL>YhH*8j00)IFTa^*MR9?{ZtgG-DB1?t zR^soP+7({={6pWJT4}_>gQW)%SkF0U@7kuH)X_`bwtls_$SP zp4c>>Wd>%%1w04qF|9LH{^hG)Sa%=?Z=F)j%zti5rTvs>ZydkIMAU>d`Bn477GsWS z=jEEK=zXU=b(Jl)>)&VfC^B&$!E^6$%mrdOQUBE&?0q<44wW6s9!tqF-tW+4uVpA> znCVqZ&qVh>VSy#jnrnL!cmx2!L&s6fmz zifdtS-&J*)xfN7eveK#wJifL|`OHM1N0A3b>k(s)%Fpn{8+%we@iprtW+VP>O>A7ThIV(QB`RF?*`(Zw$WYMbyFTon&3xqrYb(2}6-($!j2-Ywf7VYNVs zWXqy8*NK11vXv0>W`2TYTrc6(3a3bzE!4OMDRh`~Yg|z02W8iju;REQw75If7CAR!y{i?AB>oXg@nF(Ql zwXG%X{7c+9Kx+L>`t5Rnv_336*z;gRF7P_Oe`jyf=)ifjcP<(HWulnp1q2-3Du^%l z_NUzU+bw$4-LmweMk&+AVy0FuRVk~?dyL@QjfW7p;=?HE`{r^fx48}D-SSfB%GE93 zrRDRYD6)1r6qj?;j=h5UmLswI8=L8R`%h$naOt& z2ZN094sq}YZiRcV;M%xx0ZfHfGz!`K_rap#t>toc`sN8sd|+7> z*bMk@MbeV-Vnjfw<-4sWvijND4F$c??-$CC0u&FJy0rZjq>@T|Vg?rYE!>%%V5CZtUL z6TWZnFG(5ztP5z10UvwfL)1v%F;2mUgiLuY+dKeaVDWL8pBg+T!ifmO`U8{;oQ;@>dh`N$FN~T|B-KNHNi?E853ZGb~2KJ>G z*7&A0t?}^pA8k&01V<9n2E*lqp3L+WiDr!eiCIcVRn4S8>rW;u7C3GyXFVmOK=D5~ zJKoJ<(zLpq-s0w0`Pp3LPW7bNe3@ZbAQ&h3y@A{3E@AYZM&DQHHazRM)-H1M^IRr{ zcLvh<{DCCrM~~LiGVQM%VKrK>zt|^^{ID^a&EPl#!Y?ht)so_Hu`6r1EfuswzUt+Q zE&9nT7Q8u~A07s7wkN8){c^(!UWCWzS$7W6JD)SJ+5j)bNu!*ubHjf9K+DQI52&qW zJHaytg8$b71Wi0?l)_y__>l14sWXrUhq&Jk;}Rpm6yy^FeJ-i+j4F z@Dnp#uVl_3e*A-|>#8gFh!b1DP+@hu%QZrDCrQu5tD>mVdzzHd&&*8Tn)|e~v%u23 zVqt?it7N@zuC)#P65ka#cKng+?`0V7xruvUe>okEkv1Z`U6w)x3Q6t-IeU|}2@ER# z^Ze`P5=9bxEW7I6uAtM5pgZbE99z>UV4gg7wDL!~aey)c*IZdu{2p_R>!*yD)y(Jm ztQT_D+s~0|B4+^EG;+F^%HK5j23_Y&UMn}>%9Q1mr;pBRJ9-x)M!w5AcGplP0+A;& z!WdUK?z+Y%YD!mFZg5Jmoh{x9qJFG&_*yJXC-6n#>QG`0VfsGet({x`-1+_bg0=&U z9hGFuW9+CGora04Em0*9{=Iw1SKXO%8-~OzmR;8QBGREl`B6RCEnb+_OuQP(vKde-S#KL9PN5h@nD?821D-K zu*At9?}LKEFF_x>%@h19ZK&#XOCCsx_>JU(^fCQJzL_Va8LXN&AJuy&oWn#lg8{0p z4{q>atTnJoS{)DxVCHQHo#2RnSkLHq>Soyu9>ruzYp=gistxxF!AbTtA0HKoG~BJC z=2oza$XfO^rvP11$M7SsfDptkJ$`UcA%cWTV?zg`l|#oznum>3U`1CcC3~O=uF%~5 z__pd~^;?de%k$AkwE`Bxi{;PL14Y!ZiqN~Uv&U)1bM1Zp`@9WNtL$ktQOq01ku3L- zBQMTFjBN}AuKW)|$yc(J$JQnP{(h;ksd{;zxwCRU?c{lRniMrL0`^VoZ#Y5ZHlv~D00wYd5_yfvsIFAx}z z;k#O*F(O;#gq?lv2>S;P5}lvj2@uq1HyLY1J*M@+Y>92A9YG%UFD)4(Iz&2%&@A9b z{_>+Q@mxi;-&kY#f9lEPUSscz`7>ZVd7^2QDIjYtG}VS3%%YztZ3o&XaUP~rB-umS z#TsW4R~8bJ*6~?9N#v8AAaFpL6O>ZX1{J* zZ}EtSqut*G+>bLrJEaB@b8C0uf-C_Q7&)mC4u6%v6a)jViCbgFjIV7~M!%{h*}|cN zZT?}K`ZC%<`4rZS$kYJ**EE-!wpQS=Tnp&BWkcg(m_>d3+A3~=g9Z7 zrawP^1@KDlSN&MM+KgWWh-?&I}Km$)5a*dlVth0A>l79(`KoD6mXhFI{+H%XRN+9F8;h$S70)0L!XBD!tI6=wGlw7*e`KMIeihsAJ)0rEfN5XD=hAaqlFQM5Qn6qM&$$2+zq99)u>G!v#bzsr6+^2)A zCwhL=-P^?KSISc2fJ*vml7!*Zl7P-bfeAjBct$xQeG6)9VV~VjdACL)ZbsQa?l^@)V~mY7c>H7AE12LJSoni3IDX`pk$CD{b!hqC>*8jSCq z3^2lJy-c|CjQRyGd2E%8+C#3zwRCC{E5amkPb>nw;vED{jA71r+!_`J9So`o{J$Tr z?R$IDD}s*&ff5Jyuejg(-%yU!FP3Mk5pdd2^z5tdj($14e08mZ&YHrqE!5ieG=Q5Q z$>KLHjvT~)5oJeoL%J4}RqMc#D>bmH`@o050!uE-E%jKq$Hda0=J}oEn0fz$VPW2u z=qZuiU;E1kM*KBq>LQ;Bs72;I>Bg0^#x(4tu6?;a9YqZ^o-zy_@yRRDyIj##&!ko| zZu`4=tU#QTobTr{>PqoM*5=13jj6+of2^aw-+x+BKznNjZhYQ^hL~aA5Jn)ciB>~r z_J=v7#RPk2?gd?ij;W?b;{&!L!*d*44+7qw7`aa6);Wq2T<@M&1<5ZK++`y8O`Eny zA0Oc&m5kU_(_5OMDBG93ctgqd zfdQZsT&vqX6@{+$bZVxmZRX>ZsW&aT-<*#Fk8=IAsh<5~wEj1HDxDo&Kj$C+bn{>P zZ(ICg#+J9ikMCDTj?XvFS|qnqxwieJ!c#U}V=h*%TbZ#Gbh;ULvp>8&EUsuSNj-k$ z@H}cba_gZU-|1ZVl7`ZF7c2StSwf$e(ga27UG?SKvgA?D-F*Du&=ZB%6Axe9Z-Gi8 zZk1uY4b!J3FnsrCJ|6h>&PV^>xqCFc_e2n6p7~b;aDj=<^GX>IC!_D++c4>$F=_g0?&*)Ke|Wp=h|$orGD zj8?w8@`qoE^C28LWWc&nP{0BsvLD?X`VR^`yuWUo!t7HoxedRZ;uT!P{yj$lP!<== zU>EaJq-J`G;zYH|DTx10j&|4Hmg>E%H>U<6+K|9njHTuXhuBoXO~0}QdIUPze%)ko z-Yk$|>K`kWQ3orfdOvG;b<1JdG4Fvm%H0kwVpJ*hZz_FD$vYW*KzVy*)Sr^m8{( zr-8p>L3Tky{xm$faU9*usk=ToQxk?CzR0bnw=kpgMUOg#1!|L5l=02evy`*nzZ{9G zT%QZLUVSD>d|P$r$gH#Y--o*2hX9iLYSnt7GV$hdzuhFyDlSBBd|PM1hvxwd!M~b1 zm>d7>x4@4h#N$y$UG3uVKW(Mb(?hQcLwV?*Rz- z>j@xac11grpymbd-;(f#*n0Z|e~E=>{9E`yvn-#F($8bPS-UO2+sDOPnmgXGQr8O% zngiNp2(|0#0+eybJMtBwiCl>Ok*^WN79*OU=f+=S8g6%j8mzrIpQUCZU=1MPZI_;N z=(%MSKDpb1#)|Lwhg*TB;{UDcGbqV-h>L#tTO`nW*ZjT3+4u8-xdk4C*&!@wXqCvm z170>CMwXv8-yL-nK2@e<;NBHAy!?A%ZxqTYmB->lq(j z`;-tNZL17o|Ian8IleQndRw{u(&bEn_T3K+e+e1j7oKuVl3#$2rTe zc78p1>gID>x$6M4JrV|k%#R(XG{h%{Ne32*QGP-_a_h;d;Xi_4dfAe1-oeOHbAAO; zvsFt90OP2snxxQe-pv|!Qw1`Rp;SJH-}@DFC$Z9gj=+jwht6iFIh6;=J49^ul}}*;Aw=F)_Xq z)d|Dd7vLj(|BP$%_CNJvzes?;9R}7I-+q5Y+Bv>NMaSwKx|$j7PIP+B zjJUc5CIS2;S7o2xHko|;=+x+8sqHLie_r#ue@K1bq9wTEz>m!L@-nx>zL9-)5vg>f zi#mDQ`iy8E>7R^KPQ0qY)Nz25JvK+ER{hkBb=Fk$Q_|3@eG!wtS91Oy_-IfJn`H=N zXfB`{GD(l3uHxe$6SR;iBc`_E*{k0G=ZSc4@e*r2k?pa~YY~pcanBg^- zan$tL5Mj>2M`U6z>WqYBvWI(r?h2|h8=$MZeXf3eioJQ@OV6SnfDJvZy{N?rj@r7u zJP!Wqek%+BM}ixHd|L9JG!bHEw!&k!0hmBLBKMztef;)ganZf-*vhXtI@Q)a%ZRj#hzOGVG#z8NS+*>O+-9S;iCkcM5;b9teZz-}!u-FBxu zX(GUY5i}9;OsN=0%YT5v{5n(5d;M0O(gW_Lo?#JgHybK6LSD9|3NJB+-1>W4M;P&HAKwGU|18o-QZ7uK z@M!fp_S_!M-NDG4)r)Q#yxRJJ)I-jM@cv5!kl#ubNjQ5C<5`_4n;7JR7KjpR*xA*0 z{coR5Dd825+8QU%aTg5j?zVXQne2g%T)!H%t>-nulp&_~L7g3#WwiW1Ylrp-6Tv`? zhetxf$kSIvNYmiMh{y7+(4z>>-kWqDhRi5wo}}@MdP1z&>Ch~ECJRhK-7+($VcbL< z6K&mAB0p517)eK?)FHwRZD60^3+Uj?RKQ4sIhjaV0PGg68}g3gdU>9pVPIBVc%>P$ zcp3GKeoVqk{n>aeQE56;=$Gl{;31oP91OD2Mu+1yHF@=m;M|K<|iq= zuj9C#lA?(+9L0I26=Q)J`OOp82bQ1F`mr#O$y?spKZfPFHF$*+aG-jj4339Ntq!5`(coS3gQL`NVdj zlgpJy$?)tWKbT&)m1>}%<6V9k-pDPFP_RSMw+gvuB{#1^?`)3Mc-FxxekBwOApc)u zva`ClT1i%rl*gDgTh(5(K5>+9-j<`NnSQ3XqHt+FnVatruNY}i7?R5&kFWxryuiP2 zxK{LHYymGteYVtx4z2iWTzC8>s24cQQAl9!4 zLi$qx)*iP(=Ks4f_+RP)*ZP43Rp$Mg6C*J%Q@>Rej33Ek1X>)6+7p7%wRT{7HEI~1 zMI~LJ=zkv%Hy^oQA{y@n4SeiU15ScFULTtV`v<6Xf&idHrUQG7cBatqfZ%JEyz+^7_3tefI%X+kk{c&{v{hsei!}J9iTWcG0TC@7 zcA{#oRm4tI0B4BAOC19eab;?iQulwJWdbAFc0s)WVK4vTH=zYV#rc}?SP$+Vw-~7CHGR!;WdmVK8h#7c;@I%5n(p6?3B$*?i z6+Vc7wyfsip1GVIjFAU|H!kecI_$lunC?|h%H?~#kF5@AIBD%4QB5E-?-%5}M73>7 zv8o9fT#Py>P|ag55%oP|iwU&pPleN6%h{x;Dj4awk9h!AA5&Q9Y!CF%z&3AN2|Coo zuBV((4Ic0M>%hhImInfSjyJFz(IU>6Q-c%4pYxzFaGzF&bar$#$XH_pm+Vs@ftS}| z--x>@URl~d(z;Q-{Wnhgeb6WvrY*;!Pc^|mJ8l-dB@kNj8X!5rCzlaP^U`cw4&~Re zDEk>r+EYkK6V7W`8{rc@qnafglU&)}78j4vpYfWP90qfH02J>V{O-Xs8K`UI$7dKD zfl;78(L4OLE<_|C?r{&UL4nP?5Kb>tZj=382cuKk@j@7I(}eZz z4vDGDWn*kE3}-&6lx}w9eG=s*34kPVRZ%XsG+Bbsqozv7nd~-oUj{%4)FDWzUVcsK zro8Tfr*3MYn<{u?aLSMI-2@`Vg;B|Pwg^l1>}qeN$KSCbm``Anu2m1y;2=c5cp?}b ze*jI`*{^IruPbaE6mbG*6k$c)QN>DI4wk8_6YsO0P{!QiC6mHxaX;|)C6!5#qFpzr zt!)^d^;OvUy%~-wUSHhu=Q}sp$nQ0zb5-&HQ10G<_oSjfaRfzJjklW=g|R%Te0+Uq zisf>@YPfAX83UbYMpiJP0Z?J63sP(_paTg-L~$SS`$>aUpFdfYBMV#tNh_klijI^* z%!0m&tQn5;i_-uh@AHb9-O=DPr4RS0b_)=*hfi9u@Fz*zY2}l&i17G6xYveZQZ-iL z*TSsL!l1MXW?fAfn@#$s$o$NY6(Ehuf%i54ezrcVT4?K{LQ|^Qbr;&TptJDPzjt(| zj}jS+3yb7;r{%q_7{M0Y5D$qb?9Nk>6BpY5onwe!wGqm6_S$!z;6@Ma>ZQ421eDW? z&Yk5L7+Ah#3}c#hA76|f64S~28u+X*#}+$GEO*S~J^Kc&3-_s}1R{|DumGtA>RUYX z5z+cbJKR&n4|IS*Dbmfd(g#5)?eSK(cvw%yyv}Lb2CV~$74!)n2^N0Om8ZODaEw?Y z_I$@ED{=Jh$??ykJ1mz=U~{4eC_3Bx&OEZ-&L?CmPk-5dG#$ok{nwkXo|NI%uj9R8 zz(Eso^Rq%GEUVWVBjV@yqgj-(mUp{D^qYmR z#s|&8EFY$qJ``V1kH5qVdbP$YxOuQCu+V_1z^+y2-17%(BgedCi8Jv6!IgXJX($6Q zU=TFME2(AT$nbq^DGJ8;rs4qm+kyb`Mi4Q)B3N=f;AUJj?PqjN!9M9a{z>c zH;iEO&2LJcVkO`VhWd~vwejW&dhS1oth`d*nEtP6y&Hxm&l+tqniM;ve71_*We?<9Yz7O81G?Nn~$om3E!}D_ZosO~ntF z7_A@9&@6u@bA^qW&-;O&+931Dc(&)UW2*mN(LW5DnKY3at6sxvXY@2To8%|iZQ7@w zey5A1iL2Z^$e?Y6`x1pu$KrBq>S?Y~QemgI*k^Tdr3I%!dPb~)fyR&r3dmP!jvh^; zfMkHT=XWDzHg2(UaG@lyLblU&|2IuEuCdh8Ts3E~69L8k^OTcO3WeoI$9ahxLauy6 zU?SO78MI&Rk?Jd89T&BOU=5UVfppMDUTgnngkF(C8o!76x-c;Ii&C6gtjXlP_rqTF zpdn{iBfq-F_n~^Zwv6QB3>{AM?UtxYF{7qC)MIGB(iJOdY#4RI&;ZbjK&xltAVVd| z?!`CTHV#R>bhpWUv4%_XPYo6 zg!j37pK|S06t}1qlI#bW(LQ!rjrQWo+#g~cnZuAZF$RvdnAvOwTyq+n;r7^{)X}hxzVwrITTx|%)k+`Afqq5%B^YR)_n4igx0LsrF}cDxK!oIvfSwu!&jEo@Q*`hq=@SN5$;3bP7MZ7iv6 z;58q`5^6El6#M!*@jHhWQL6u50Jfclh&@l(Fc7hS|1Z^!QjOvP`tPVu9DPbh2m6i1 z`;zq+^f@HbJqO!cyZU!svd!4P?L`36=kO_hue?GkkAF@jGq$>{;%C_UWSWhlI%U1;!>$w}A&pldO3 z@nD&Q#%MgW(x}<1GCu{SYva+6**#kCwQiB@VP3_Djx_&Yk5qXH^0lX2-t5pGJ~WVo zF73W?iTt0kYr@pNp~(jLdDj*NIl8`HxeB8X2?vOT;}IEwlx>9Tt17+baEB=#Oz>6P$Lq#ek-C^#xP;JItC4ZJa$y61mAc(p!^-Ztfe2 z5lCvjnl&JBfGYo)CU#TP?(Ez0TMdHR)6+<$eWu=9GVNyCI3dB>AhI^#vju!{><&9M zEbUcn;=RsMkJ%0&t#sd!A7OAj-gb4Fm9)vRzq@4hjQS46pJ~91rK1~--Y-@TzOCFT z`L?Qa1T=P;<^S>UrkSB6iTCvVUG~BaPes#6KxmB(M2~NyFBr6R*IvUxPhH6p)4vlIoF69f3D6&&r+h+L- z`;VGG4ppRUW6u}I8`FZXk6=j7Y+y&I8la;ZXUo0QhHx>;b=OUL6G1t^#G5~ z9XCPG`#%=o661=hFI@nN@x5oT+W_hHf=D-g4Zo6l0T_nc@M`Vgtl^{)i0}-$X)X@+ zn}NMf1cMx{&C|AwF@3kP8o-BM)KCUAX7ffg7pZ|7umNg-(yQT6K8YOkJ!WU2{I4Jj z+HXA%3&WFtAujJmuQ4)W#H4i#&S$yaEXO~eu2w83>>An4L@4=VI^G7XE|n?iEI%eRd{~Ma`N0&55Y61hOW~ z8~{ugiWa;VBltdcMEm*mK@(~|nxmBQ@XwXJI09AZyCvH^FM@xmj5JKvAE|ymPAFu> zoYk#9;H$aDvDSrIQ1OxMf58Bi04^)$D1 z@+u5JQ^xt?rQ1MkA|LzrYL;}qYf`j=ATr`z4`j%2iKJe=Thcs3IwBZB zec=IGku&dfuSEZy9@vA5ZgM92MlzC;NGsnUK#JS(J!LOk@V{4{rFfsh05h;d5b+e? z*e(LJg3m$}@6Atg3-)<&%G0TC%20fnH|DcWUEJC`D)lmNw%SeaeTElz+6^{XMH@;a z-)1148O@URz^Lq2xUNgL+;K+~Xo*K9B?Q5$Nh>DjI&DYB=jg&{tki$k3-#`9?vtmF zg|S6jR(k|nHIa4FeiCS8&rOpxik`q)M3UK6{!n|5a*F~9NWX7!C%QXDMs`y(^zg7QTj-G*exPo84`pM&V>!BppJvlqo)}HfeN>$4e3mi9v4F%^exZ1Qa6%m zz>c3?r#ww^EpaO#=~UJ0(WNh(@WK$VKRgXz+ItfS(RH>GSUr+DF(!W7GjzDORjhKX zsfx-Ipm_8=92a%(LFJD#>~{)y24T8t3Nvc2)9jA(Of^kiK!a+M*k-J=S+aGXn%ncN z;ybL;RuVjNQh(8^=2Y^()xIpu$S}c^NE>UHhr$0_SxUc@^(NsD@cbgOSDiMC)mRow zsxd7wnQzw03mW}4XLGndL#K6?v_d4k5r8-ysErz*(VSdG6H&0>#d4Ur?G7LRkQ}(G zSD#?BxedP|9FwZudtM9ZH4b#B40J?fK8cn2mPoRdMourysZiQ&rk8@=mD-?RW!cXD z!V2CNoBQo)=;`olaUKDvMb1g0czz$H%b!I>Ou}3&DckG4sV$K63FWJ{_>}e#%IC0* zYTAO!iwr&q`0~7Wl^;>wjSMKHI!ASQ>x2OK{Yr4BgJQ?=1*4id(3v5BwH+R% z_HS-5*N^`l$Ms-P>vAIyPX8`8Q04y4l*i){>SKojQ}b|iUThg)CF@uDI>@I<3pt-T+w4{qa8Q)O$$FUM)o zIGd^em9Lmla`wr(lGr1*Xj_4u*fcp`9D@~ybpY=if=w)~iou?w{P!`eSdI8geJ~tv z-<8QxWE|&=;ay)d#-HiUv?3G}2p!^`)QfShaY+`JWs^uvP%j=OboFvh(A02eFGcRF z(PJ~lAVw#Gwvz$pVfjtFr2mTaw%=u_=mADy_=|jVQTW}qWHkAV5M#V5+e8Htu zpcl%u`A4EPkKL=6(!ejpU8L6=iB)LQE&WIT)Qxe&wH12V0}fw)E4hPe4A)iTub-hq z`%Tl7W0<*sERkNS(a7((^;8i_KKGot5N{e-J#M$*UwMA1_Q(&G;x$KkIhTz+GhDxfJqT*Mdz-0+Whx@Ef@oH;`N@WEHNMWOa`Vx-vR zb$zaP)hq;<1_S={=GyqkCC&4wz#8`(gRVAcApDgRfECE1?_+$ZS=RH9N=4)24&;i# z`3u%>)4F-G@a6zga)%6?Bmvc9M+aCn*m0C3{B9^;5V78nK({l_gC^c1(ROcS{R%JKt%hGd?hy_q+*AB%A((~o~zHryV@uEsVg0%tV0;V92jy;*0+iTuV^BBZW1SB zjIwBY^BHKG?VyoJi}D1)+hJ*veK;=pAqW^{k$(F$3pG8_Y`&R`2s>qZ^rsmhL~*g$ zfmwx0?>aQiqP&%SZyNf6D0X8oW!Y#=Qma`)R@)=5*G_%ole)QT$Z_+|ATX~0R&kCq zdnth4v6}c!Ih|QX$1X&x#4{t@Hq-WK?$uyM+nCb$t}?x{MsfV^FDGJrSwq${5DLwg zX^z&6mGkWCbzEDg)jD^T z(SgB(RE`Gh69Dd>12tCJ=8|@ZC~|fQR^?@;lrEAi#Lq`6R%KDd{b)GK4cK_aq%Kpu zMRaCg29lkHqebwFX%;P%@EXP7UVY9nP_}O#(5}5%QrJ=o6xDhEW^(a}MQ}7c8~gzy z&<90v%o zA}S4psw#u=puv`T77`IyXGMT2i7v<0`ZOXodfqC1BK3B=oArN3!^^JXeG*rQWrvuQ z|7w5CI1ayxe*npHVaE}8>EgScuh*e=tN7aSsfi3v<`^8{cRo9OfdHHFzLDZ~P=v}K|$e<`Hn~fA31HBh3iBi&FlqFeP zs2ct}*as)8w__5E_@Q?z87*rS>rxQX39qI7UmC!VP7%qJAR87rYzP{0e`%7Pu7IDt zf4ndjq!WS>?0i(!-hsidA$T_C$i&S_`0MRX6#mc?9kGq6jOFzya2!V2cQ}W5?l)o; zf0HzqdWZP$(?^Qa2bU39BJozp%fBZQ>r~nYp#~~m+>hdYFJFV`o!2p=HM|-o78Yai ziBpI+L+F2lKZ2Z)EjGIVa;171<1WRKl)n`?Ak`nIDr62Y{VI@Oh%XCrCS2W3##67p@F}|^0&riOGxx@ zg<7%Ni$8a*U)V_&aq^>>b+1lc&kQnkui+9bblxrV2ZOiKh2PCeIC-=;Q3QRK)D;VD zbmQ$p?zM0Ch47T-mD#Kc_KVrt$^3#vU+)HXGCbdQYatf3^a|(M^Bx8UNUj__ zT~m$*%~BwyJ(fzRt6MaOpdZ;jJTo{ksea8vcU83&uwRRyYNXYv<=SCO0?o>rbW*5Sg%fAp@&GQZ53a*X6DZaBSmHSF5Ir;qfR z$NZ`RlzBx-?#grB-&d~O!8$)UrO$#qMj^j;cin|QDNm&Q0WXf8i|))K2c(H-EK!I3Mpr7Ji%l-EYL3c}OXl71q8Bzk&^m!i}%jBA0O^;o*RN zmD#M#6^kMfdcbn~Xn>O$m&vI)bgX3d061q6g?%qt0XH(DFLxB-VXUrDuVmW3*{%nf z^?<5ndm0v|^_S?Jy3o9dO?+L!vA^IIZFVdLduLx+@mMN@55)#`zj-`jF*Q3?RvZ|7 z#H}NDBT;@9pv>HPzZD!{!2P3p(nimV4V2GC!}Msg@tl_wqx~wTaevX5Sbfnv^FMP zu#uml9;$Jt<@uweEX&VrF`KEIxhJXG8{YFry%2SVhvOOUM&3v60WLHY7`S7KN96QLp0k@A7fK2wT#C@(0nt>8!r48^u-)()Lva=GhK%7?Y|H!>B&C^W%87etf3%m z7n-uk$z4HTWVuMjFXk3VpDNRDkzZUu4wu`9TLI)fal`eN;l<|M9vI$!h|gyV`NQLx z=S&Sh0M`evDXmr63H^3jY2n`Ia735hA~(~ynq1uAcWMZFz7N%h_89#I_N!8nW z972_MhMv%Dv{1mWTj=&y5|$E>0GAn3;z`c|%8gjt$fSgNzUggt=T(684cAjjf@3Eh zZ%6p=brXJ8TpgXEOSYP!`eq08FIvuvDctYF*~KCuMY@1NLf-i-%}1cKWO`}DAbLJ) zl0O|errYrE*8cWBMo06AY&~aU^fmW{3htm}LV3ZpVQ`Uo@DE@fTOIk=zAa3zdC82! z!k!?Xk5y%ly>fG#=EuTO1iBX7 z;?Hw1ruu%wblq2JUg0Ijn7Z9${_xZgLh7b0cVMTxAf?EX%4$3?o=n?Ad*)^}DZR9gjWXZnqYuV)}61RI7?T*~bxRQ7Pd z?5$4hWKeGJNneitFAnXoUeximjrArq{1FP)3Wv#^H1*J^Duz&{J~I^?;37<`D?eocRd=HMqRJY;&!NsQ&=oYkQ;rG)rG{ zv+2{fJ7MGMHl{h{O zmHi)&y-v`33+%nc9Aq{bw}^sO z{4%zAm^Y17X;7VJD2=r=7v*_k?Bu0AZJ!8Z^ej34 zgAk(}?h*fkgRh?x%IQ&ueGx02(Q^-8sK`;d$gG zLLd0!5v@2#imm|i3b4Y-yVr?NadcE7K=nhLvU6ki^;)%>tYgl0(_suu%}uy<-=jih z8$Pz=K(wajgF?|Qp>CGeZIHR?7N8mRgh|n5%bTT)$JQ|zhh}+*~aD%@Ua!QuZ;&_N=vxETMNN2 zkuxa3v`$Hz3ATKOdj^wWUo8Z)%9EI020Ok_8EnT6#p1b@h? zBvy6OXDKtMe-Y(Y%gWZ;u4t+Va84Naiju(vLHJei0wzNyL_Hr#$aS34)G-pDg9xpahGuC}V zM^UW;QaW}OA~7mlE&m+eXGQ`&;T+7tp|DI!&UxNS!Nl!*Jp%4}qTZz{M0c0U`uYAG zy`h=?lnf0}jI;<|wOG9o{%;l)E8agv`iNc1*fYlfs8AS8r5UxJQAx+;YkaaG!4*+* z(Ut*{cxW`1YO=vw==D)$6|feInsJxzmLrdxxly)^V&s7)Fv#Ja4P{`|LmKZX`q^Cu zd!SjfFrecIqaxNKEocW(R1?;>Yw&)v?JtC@e08Y07B%_(_8dLCfy6KECE^I5P5hY2rFZ{+y-tYf5HMIbjx5v-(}8W1;9`D{Y)Im7kizJ9fo?v60Z+!f5DlRvXM{mPeR^CJ1iHWCqvIL>ThIM zmEo?eRG`E>?X#vQ4GY|sC+IRtyXkLu_G0D*ZT!R^6PY<{vDU%QbZO-(ctwL$*0C{q zC=?Sflj}3ykh%;@q!Q@3o>gn}m~+z@+T5I=E$?I_Q&9r>DK07s-9F!6rvz#mjjDcK zsW8g(?pL3O7~D{Yk&F(zZumfH_JcXmT}8*B)K`4M|N`r%=s`V-iY zg&)aOLv-%Zx?bxIxWh+eb^H>+Uw?PdOOUpCO5XlhmGSRA3`-SmJees^s*-xPt7j;m zXA#km>@-9gDj^Pck6tWs&D5PQT=UOTlKACpVm#+}`qnXyu--BGYHjgAT5pDe#GI&k58%|>hVU!-WeT@fhDsw zm1MxjcN^I>YAcl);rJgIh&Pu|%(-`Kkf6rOTVApMQ+0czbs~cXM1o5cQLwC~Bjbev zOHIS5_Dn$#2r%%UNv zt@q~U<@KraPDYQjO9YXohVLpS^}KQD?jo4qnRow5?V21M#!maI1+h3+A?$r37`AnQ#67&pcW-^{ zRVkuD^C29dInO6#dzp9G&IVuL8K!Q$sYXSEyYWJQ5q!&SuMJ2RSz!M}3Q;ag{V=Ng zgN(EN0s}wM{d&2a_LY4L-^N%TT>O`a2i-e+F^rh21o&PpPHzMX9@A%Oq8~$ly<^3RpJFttH*{i_QWmG;iy+3j$3`lGS%SL zCz6_*njr~l0KZ;ij_jK<~3jm+8#kFXeY=IqZ4iA;W)Z%`zc3AF#KMq%A zVRlm=NVS>>N&PHwJywRbr_2x9h0JSyExryaDhn!O2F3D)3hB=_4T;QA3W-PXU(?o zzt9Ob2UK$nQsduuW5AM+#ID+>Ht@JF#y<0~f)|enxP#6<8FtDlX}u1qxp9O=BTh4Y zmy4#JuODxAcM*>7*vD_Z@locerCsvg9w4ymy3iN#ox27E1hPJnf7T~gVXvnu8-bP9 zI$))%L6nW*ge4^eXSoVL_Jt^scVeRgrsDiXqsvM)&0Rj92Wg1H(%$)x zJ=K>T_GXP8p2@gbqOvXY-RaljCpf#;w3YS8k*gULTO0XHEjBf$+ab}9^ySO?CMfrt zy?}a_o-Q^>_w07}i(kJ#t!oF%IbOUVH~9T-W+*QY(z0H z@T*Flo-I~A^l-)^@eOA<9X*yo6*Zha<;qKjMjvI&H}fLYI4Wagley~g)9SX4$V`6> zMBIUCDX4nVfVSKDjdm!FyRwH}^yRS&odU$PalklEiawTa6(2e$gE-Oq|FqQwxxXlp z`O`ptv_QRuHO;h6xO+qm|7YgUYjUl2xQ;bNdJ4FB2s{ZsGw(zEq;qOl`3l~=L?GjE zBZ&#GR=p`jL$`$<8B^gZZ7%)_1DZ(9DpAw~G~=sLETL*`O9&cHnO7hG;&bl4g3Z<9 zT`)j*kupvrb__3Q13)J2KV@+AZX0oka9EGpTrZc(c%R?|uT$Bc{ZY98zRIS*2u!YckKY=j`UUk`6k!hlm7lLQnsT4LyF;LF$vJ8$yE6gzu4mJ z;f~;Le#@b{BylGn+;zAE0Uw4ohw#%7GFX47Yhn>crZ;uql_HXNr?^k6Utl}7C~K;? zDZ9}6(~zC>gCoqR~58vc;99&hY) z5L9<#H)mYOr|>eAWOq>19okFmS0$&SJ5OO)=>59lv`kHFa0}UGiD?d8is@8qh<>Lm zz@zmexjDJ9d#iIqW=J(N>A-4io0Tgy(7ji`hN@v&TLM(ODdt*0n-USpkUR#-8p;xu zdfy1=E{2VX;K4RU<41i|+7a=0e4_qEf|U4|~G&+y6AS4<|1_ClHZZ_23%>6UjCB0}S#9kLh3ADC$#>N^FEN)(CCeJGo8=v32bndl> zVtvl;G5K^$iT^nb>p~A7@3u5w(Kvz?o`o(r?H@;LFR7qNQ6Nd;&7)92Qs8&s>GPBg zsKouC`Nu`Qi)c?ZDUGf5*{tNcXyiS^Y<3fos(9|5$@<8+VHe*-{(C-hFX2e+_zBHK z#)d!LL`)7Hq;y^m`wxdR{U*moX()Y9`Lm7lgzr^5%vkb#_^6Q!E08yRME~noNJBuD z-=Bu&W;e7W>P4?)T-_1bw{NhhHPYuz-pgSGzdy7VFpTlVN|?@zt%{_g;1Vy*bp$`L zYTvVJ`x1#gV-`IKHULZG3DM)Vh~H*G6)S&tKlpY1y)gKp4Gp5w`C};!qnW@5I8-sq zL4&Jt;3y3;u0m@rW){ft{=ZY(C0B4q&k@oT1R4Ly-`@J$1p6)5h(%g}zU|pwrzsJ3 zj8I)rEAA6#!JIFOqm>te44{0jz(JJTM zh4M3pKL7QZcKj(Xs(D#4sQD#xL}GxsB^^I6$(;R7bDbK)uvfj#Eoa~WiBC(sn2%mi z$U@CGtH+4i@k9=5<)n#~6^Bxa9y^*3js(HT1>*Hho4I$6_5877Yosp?){<`N zT;$F9V1=Xppk*L05w{^GKZGN&QeeB_?#LYRdCRBa=c1T7F{*BInpQteC3fs=kI7867YeCIvLF?`M;gbOzR6 zUn^J{UMP~+a*!co_yf{ zP@(y$!xOhvRXrB_+Xxoksu8sXJVg{MK&X*fBJ>vqzPV0uDP$8-C+yY#Uuw=9l{++L zG8Y^}WS~92tT!5e07fUx*iG9^aF^8ijZ?ViY4M|>BdJ8VZYFc$Q5-1U+wJ*vvS?hjmD9on z+)HE;x$58F!4lNdIQE?T5vY$t>tO3JVPd&WA~?9ZZ^KFEyj?-6w2fNBU123AJ=r!R z@tYEdg(eV$c6Rjxk7)P`Trlbocv5hlom}cb*D~nQRSZ5zB4KZR6KXX6x`Rckv$7FV zra3)_9f$u-(g0xv`3X#^O(A(!W81JQ4)Vl~&9o!oZmobnU)+=tYSiUJQ?rd@$kvP6 zH6Cquwy5>+-J?kPiHgcdiwQe`pL0|<1$aF5q5TeH$F&ZfcqAD-BEIf^OLM>bg!1aT zipk${?vB)(7TyzFwF#LlZOM-+jk{#d#MLB**jm1K9G00ZF!$W2{D#u5$>YI2wpgCI5#G@X-sIn*8M&kJV&ZpP@#HFIo z9`lt(-=4sYp+BsY`&>N=PyBZeIJ=Ro!0old0ILF5(`>(e6bbz1ayc@Zd3`8UH8BFu z#UZ!-DBmTZ`;z31H+N1GGGY5D@~?~}aLI1AjYEW!n;ackl=}!BUN08}rfEKOIJpLT ziYZ9EHJzD;gPF_2r6oFz2U4I=o?{}Ix{9b^rx zVCDN=4!=))ntjn3EYrZ08#)w$B;HN0KX$Rp@vCOkMk5Up?vd$~k3gs?5&9Dyl5#^r zLX7?2Q2e80++~0{ACgTDJ(F`(bt71NGyV~JEP>W~mv_sbI+FF+HY#?3q30D&d@ z1Gf*C9XXG2(hF}HGzlLbQTW@%EKWDu(q>N6p+VbjwwFk&Q;EQV1qSb&x#hRz&}#HL zl%A;#z;d$Q&9#<9#UH|_d&={NqP%TyWx$&M>n215jK{QsoSQU%;>(`%YX^{_w{J`d z8_D!daPqxn7)0Pa z{l@$-!wPe8IJUieMjC?^;HZngpRwuuO7F&1FDiUN$f$A1?ap1N}< z?EYd{uAvWPq#TmDZz3+^e3yZB=2@7w9z#*5|3p7&} z#Yzl$zq~pyxVbj4ozpyd`%|s9X5R07bX4aGTB|rZTmjdDnwnu&!7XD5|43&!@JW8& zDxGK3_3-EZ;rmA?$p{BS8BB~u!MpGLC?s)C(Ehq88Rb&4S}NQ$UoD6--(h>4`uYgU z*yf3eriCJUBSf$^dYcTSF*c4D)4_%&VUD^u`_r(KA#ut1{n{F-+*V6O{G)2q;^X+J z8~xZmm*CO)-K@=5$#0JNyyQ6caTD6GVwRmfW3XwcBngtc&JPdKHwnr87Byjo^crDR zFyLxz!pHv{I~I@r%P&i*u?D|R1Y(lLhk%;Q?Bij_rwb zvHO29r(`L)BNep9fe=`cq)qo{-M z9D%C&0LmW$Wutzv794LM0%v1on;0X>8Vd&{fmefK#d5Fy*JZrF#nSn3VZmrCZle3$UJ?j5v1y>l=-dnD zNA5YxBXb4@5^qNJ%gg)L=nvI(Zv0}zu0qg}MJ^>l?1wJ*_=Eulz%5;a-nZLNwqvYq z*T(NvV1Toon(K1WW5BCeA&IW`eu4Qy5Q#Zg<+CRrLK(wnJqT9)V9{xT8F|?Jh(C2T zg(OtZ{2gI1H0}SMC#J$Hso;*G3o@7mz=f;8U^{2#*#H!9=tHJ(+Qb)dxXKn(jgQMo zTmcV=KwVGP@!~A^+3@WsN=K8jIHPECL%E$K*ht!yNNqdXbbjb!$yilI|G^=n-is#8 z_mb?!O*v};5lsWg`k|3q>>-3_&Ke`^z^m#JZX{JntK7u+k&_EYgI8)#67!SguTDbel=xW0BOXRt$i|KJV`xYsQ=_~sUmPc$xmLpGH2(Fj z@M{UQ$`q|$vmm(h+}N1HY68v50-7JJi!8p`(zVRpk85|7i=r5ltl3EsbcnrIw-;0_;(MqUZYk-h+r7`<4A+qFk`jqO(p zK765BSUw4!n*{Ckoy7FnylE)Z3oq+6xkw zPK1$5vb5D8jDqk{v|CT=3h40Mdp&W9%WpXW%q*=l|J9UO;)g= zsG~?ommHo5y0x6DnnvxiaUtTn@|V zp388q#WYU|QH_yGR!F2?xg7EdFqdcppCt^U8}pGmznh7lFcvk@bc~-dz*#9KfAAA7Lt9*zYUV)6nOq? z>`1_@cmcSgMt~{pU83XEJYs|Y@>V>Mnx0ObAPold{ZiQ34(Q3>-F$3oatX`@seEpj z1Xxhj<^HQdYmV6NvO85=B>Z5&H!MKR!-dqEEY;>zm)TG|vQGJt5*r$I%D}(UWlI%} zy5Uw9F>On3Ug#+syPZ>!(-wd?0sQU%BN@ZmdT>;m`p-Z2>|V2$;S7d~V(v$P{Hd*en0Y`Z@h>hxT=ntRq>^i*`87YbS7{k5)^Ky4M3HPE^Umq)n#=zK zBthH0m3~g?J*4zagzzTR6IqzQBQbs_BLS`czXIN}1oUxvOc=lQ_ec7D27g&GMpa?h zhnw#=QH5&ry`JyyrBd|IYkzxbJ%C%lw_MmL+&YibCM|C)47xLwfoW?C$rq_&tOv)|aCOhQ=!Uv7G^&$X3Gvr?yl zULz7)tLMGNl1}-;#J-JDJUn2FN$#~3=%wo9H43cc&n4Gt zKlWoke4G_2(^~ii*E|z>q(DVLxtaIQGO7N4SLRJvVx%p2y!@4Z)i_(+G%|=$a@WSm zUE+~tt(|(FpWYSUUu%aUlfRLsf|L1N(v;(`-iNSNI=O2B@(SKz#d}qAG04LNlk<-f|w`eV)G>*WC#eBP${9p@W8uezGgNBX(s>t$x% zCpxd@HA&Iy4zE1Uz+!QEb#QCAUyo`n3G(4n;8#7F*@h?@K$r(VS@PQgyV1Q5 zUpK7Xi(BLoed%Y<=C$DO1nb{+-T3@6@4c7BXdw$^mj{NG7_DjnHbyfbkQZ`8y`Cd- z9$=Zky%?RJSi1OBUfGM$ejuG0zNcdJgc#vsG_TJ@ve`Tcn4Pq$jj@_%Ued4IGB!WA z`={Jvecbi6!-?Ud{%c!%Fu<~HqmlLX_c#x5u+^RJTLE?;iTh}Buk-(5`cLaUBCnwF zkbCec?{8oK6;tbSEiB*nR49~8qF`WK`|)0eW=~{!=rsm%Z;+V>ar`it%Ivowa0^%t ziwv~pr$@Kera3>svL-||(*nk9vscK5PjdD*k>t zdXEfHz%il)f+tu7MXuXDE4vsKQneUlm6%9Ft<3rzW)IxoV;p~hY5MsUypu7%k1t^u zK1532MU3x~#m-2~Un~9G`u{S>D}b;tgh$%%7(~v-_gC{oVFyn}ZLLaWGx(bw`0KA% zj}&lD`uX|ghA%AueA`Kh^#o!dhrJkDmLGpj^Tbe?lgCI#;dueDyg!r#u4+)u(q}c$ zN}(xDPM+9RztCVN!TU10(G*c@^4m6vPn|@km%s#9)W`X~a-j^+urkzVOp!c9=oWok{?yOchLm zVwnr&#^U#WU+u>&Hr4=Przo%xI!)<91!ci?lp?$jFd)8U{5<_x`x@+_X@~H7#cL0w zJC%s{rm^qqF~-cpyb_~5YfYZZjNpDDpr1Woc<%LkmdkveYkupso6&kgw$h??%Dy<6 z^4tLz7+7HMugOT?GQ+Gt@tuizwkBC#R$|7>bM(AnZDYg(F%di=ug&jlJb)#)=LV_{ zTVk=p5jKN*n?-oPMLX!i%#W?(Z=iZ3Qe!Bt`2Q-aOw^!i?HAGdj3pYtVKyG;tkKka zF%GnMsU)E`jeR}XtIvAP>*pHR;!4dDnq0pHefS!(UuuGSy|FD(G{c=zpK4<|xq66M zC8e{rt`S(gGKEuW5vd8BeiqR@_sWDpDwvW*PERU`>W64ORs~tvK02CXe z>z=K0{u$Sih1H&2KSm1yV5EN5+=#~)V$P!#LDc{ z`zWm1UTqhb%QL)(%A?LA{`KDvCv+UMy$ z#Nc8yf48+GSZAEClMb%gPbz1Jr?~dDge4ws)?7k!vCsg^mT7#>?xb*Oob?Kf&pUe{8L?;@q|qLe?(lEzyD zn*sv=1R=bE7{7{?-T-hgmYF>uSbD}@(pz#J?YDXY4l9*1@Eb@HI#7;Zkn<;)rk`OP z|1V6_KcWJrTOI=berNXmeIFsbKCc}CZO6sps|9!k_^m#_%=i_6SG<8m4qB|l>Ny?F zb9v}nyni*9VD*?n&nq3@-`;(7sqgReJDw!~Y}pt-dCeyZkz2WNI_+NNH-Z5i70gP| z$p=Xy6HS^(!aTuB&qQ}=HBg5zEYlMzp~8=!fXg7plvGU*KbauE<=0pSEI(NouN z9qfpPLBI*Qcv)-FnJ5|S{hhUheJjbR`!rGaV?S;yU(qC$lYRj*tXz{l@`m?MHlUdn zD|sa;w#}wC(FWLCvITizB%m!|S~`EP;Blugi+j!7G%ghUXjLLuPLKUHxd|-;d3p{q zedgTcQq0n`K2g_b;Fk-VBUf)RoOd!sqJ2wkC{siqW^| z0o=DJf*U#p*{=k{3bupCrv{OO8AO&LZn*~}$M=dvt&)!nK8Gvc`!KmcpZ$A2J`0nh z7oRP&V~@{I7o+pMW>3Xv?u`WU6lL2km>4aut4#1L^)tu-klHsDC&BM? ziqQE!k-xSjo2jI_40wKmar_C6$Nz+J{0V?hHoi9!fxq8FN-q$ju%wT~>>XDazoTLE zR`6Fmf5jiTK2JP;88lXvm#HJIJ~_ph49lqR`EK_V*6s@aK2JdS6=4A1=Ebp-lEL|g zfPN<6)Y?R0nknvOVF3#xwl5bEoTnU1;{{k&1zbajbm-SWB_aENcC~_p^>GO}+itkNt41VJgbK+^;GP_+nR? zx7%$N>%NU`oD+$C^;xxkQ#!l?D)`_Uu9{0QAliZu=r$tnp6i{Hj6UV#F5pS(HjK5w z7D%SBKgq89TV8E~`Mlw@mC5y+#n;WZ16p}eG}FDk|JU50I5seY3z>Ym7+9DLfX@u% zzN}P$GU;2{@80=)nLvj2BL-KCw9GO+UtU_Ym?5|jFatoE&$RIfU^VD^?M3w^ES_YV z-(+m-!yX!tfpawh6l7pg9^;x&ZGl7)ifa-%M+2>07^|Q9niH(=XIKDqwL)2|2YpSr zUJqWvu3lrQ-9o+Y>r-yJdl^leuXBB>gPJVsT$}F6_=(y+f&Cq6$XRtTyOw&au5Hg- zZ}7{4!I#A67X01g^YvmhIx!l=Tq;X{q+X{49f<42=r}id2dGzjGPSu%I!0L4kL_Z# zSK_k0J02oeztw(>4%Fj_OYcsGm-?;QurS{_m##5_hYt%4Q?2#u%Dv+9Lu0nR=C|Ao z3oid}KSy8TC*1MAi>q~*RXh|`#-0Vix{oj`!}5_CdR!R6 z{&8XZD(knH!Q~3v$sobF)WSKljUM*|0-eVLVtfn0i{-Oc5cs#)Ru1}zY5GTu<9|j7 zZ{cwG4nlZ~*tk5Xq!t$1f3~VQZQclHm%uFP1S<>81hY>ujz68j-ydD!yaWJmV;H_Y zGk;$o#4E6~aEU#smzkb-2{eAo3Z|kf5YJ$IO zS;mbtn0zojcL7S%fNa^pe&f7ma&gL2M47*>475%Z>cZElLXm&gCNi37l-dv|i{DdC zd3mX6001BWNklc)BUC>THG`h4*R*8eMT<|Vg67o=o%@cGaGsvc{JEH^%207?Bm(e#-%OKP$a z$x|~L`4J89(SX3UAOjVedjG^&sL_8(@ITE;?MXmu0?w>lnBfCWLj0tdCfhoV$?|b_ z;6a*4%ue8ae(VPy)zc=%ug}wwnow$?7fcM&IB+W}ivEGu}>Gn(hY3{L2KVm4+p-gWwTFat1JbH~-#&>MPM z&yQ~n2o5Vi0W)W!sc9@L60j;%Qdu;~jl5t%*bF9SZ z78GWQ{x(MQdQ5XX&-0*C?KRXv9v%+Q)C-*!PfBI?1&ZOt_3wPYu9ru}2glpXWA^RJ zK&veLT0G128Pkcp)bH{Ab;Pk+<4UCaB%J75hZRP!XBCGN?;{vbVV2~z7KI-CwSX@V zG<%O?QJ%AXBwt_lj$0xb*nS=lJji`jKVRS1pRnbD1Xid1ZGfI z<(Px{%EQRDR+SoNgvdgxEbnA$=L!PHCMVRsJjZ=mhtu3=e+$3|%V#(qe+1xn8^-+t z;1i7F#}Lv_O8*8ierbv676_IevsE;yxn1viwaSi~Lt2YJ#V?MSre9$k|1*K&Tl@YV zkkZ#N3?Ct-_YvdUB>Oy(@9#LTF=6xyaH|Yq1#?HJq;_Qt3*%Qkee=QwRu=F?IisvU z1%K`RJmp1BY#cXE<9Ztb4_V&cxUy&673BhH$kBG?rTB$zbtQP-d=7 zO=c+2o9E=ZKqO|gIAZp1ou;fe)37w1nMJEpoznt>sr+u9lTerjfB?!p0IZb(dq}Yv zR-_W_WSndqBEcg*rYv!0CukD+Rs@tH6Q}%@8Nckcs(^6)%JR`F^CgmC>Zj}{z+dKu z>_dvH(kZCWEwXqRf@Rf|{h;?$-9QpGpCmCFOhZx#`*91YRg8a% zVfZ#e_{uVDrEG!V8jOKFxVHlP$_4kBFM9Kd#!YY@lW3GMTKf*39u7uv;k>MS->d1e z#=ZaD-e3!Z8o^03TVTs7eZV#1{NFE)l|}!3-tzu^i|;LiWx4%zXrcI^vqZ@Fj!&%0OSsan64Zy9c(cUT@7{L0>fkbPd(%LX|&+f<%JbUY- zauWM!tu}%?_X+}AiFg5G1vi+M7^d}anAx2I?oP`9kM`dI1|@So(y-8Rd5?DJXIubh z%?}2|_%?v|QOX~X^RF>Yp8@!M!)raEl;2<+{}w>NYp*2$e~u8|MvP)bAh=5=lAOP% z&-Em1Uz;V_1zRYkNq>mTSZK3~M8d|NV zh&G1<0XOXJ)UtpzP+%$g^#&Q{8*Kpl&*|nr&A^Ulx#*M=7i4xqytriMT;g+yEN+`T z>g$DN%2ee^f}3=U;E6Ra7pIa6X(`4T^i`&>g1aiK&FtT3UPAz3*6Ww|7^6!5><3P4 zhJg|UX2kRKU~~<$1ZK|5AcQhpi%ClAT9W%=IuVm5*oiJHE6IgITL7GwvC*O|m}JN& z2D;{>18bSF%gh1!ejvtx0KNlSCVM1Ch(5Pn&*6sF^9};<$1TUPgb?1rFnkLs{SWgr zYj91PKrD&UB%`*ezGYFn_Vb<$j`!y+E5&QZI>Q&8-+_Bw|NI_f_&#}@XJcA%YU0wK58z-FKwSYw%6DN*k|X#ocX7m5QH3fNn+D((O+ z_&hoP>~f+R(38t8F9pkNO*WU;z8xqllwTL)5&8eK_pV)%9LKSsMMM^e!OY{E_NxY)&Z`j|x=kBh~-Mx~o_y#EgASjA2JO3JJIXCcg|B^P*m{ub76lPx z;8%Pi)0Fe7_i;qd!&IN?&yEIQ(8h?HD~Sb88=N4gy=n zIZIUNt5G=ew1xqO3(%O3vJNb$-qsd*)<@TCm7DvyYZ#ip)_jcXnU*o!ubt8Po}bl| zJrKBM0+-*5lf1KjM(&kHb4{$}ldfy^fA-UmfeZ)mP$&CC+u@(0q87r72;n89bPqY- z!}@-}_b`sXsETgSA%r`XJf!bcV>8!oY-zQ$_dN}5$R1$Any9pXiWvU`+wG4L;~!A~ z(={JM_5FPfA-oCipCNDQk(j?$`ni11g2M8g0>T3RjwIvEAaa_%R{7^l?BEDhSWES6 zZRMfo{eV9Bi-lgy!|C05jXZ#J*HdlYD09v4vWCG{+WStO-o zEz4R|@K<6>kEyPWBwp7l-!u0mvyxtZPZGM;x;_;|gs<;qJWjo_luzt^xJ&xE%V-XJ zIQKY);Y|#~Kf?RxpcA64^c6GPSVnWL2AA8p_F6z~Ui4~Cnn z+hdN+nYovfXXG9EM%x_8vj%}}NY1ZQxfY3jJ{dI|+mP$!Px)rApA%pxQe`>?tTNke z;b&!{*#?CH3Ck>FugN?WoBH}`Vn)i}(ZS7RSZ2#gMGwzI)r@%0#ipsAOv9sGmN+$$ z$~E>AE1~>bz6SycQq75Yzhwg?lxcGv#?kxdA=2T;S@+gnqg;p3tQpH5liE@3fHFj8 zSY@tDt}ALt<+_a(6f1S105lw%3gcHK{y-AYZ9SM58YYL-gZr;B%MV`k;r(UaquxE! z&#w(zZ@zAQ5+&cZ9&c(*#Eo_J7xneC1hN;>W?}0!+)8-r(55@W+Sd3hYf9qZ@#C|u z=dW6PzML2>an;iRwy!ZHkW}|DUGK66WY5GYPqHyvq`o~=wU0f@*9L<3#b~XUS>D~U zfO#;`%JCPqvY`Qi6U9N_fDMTn->ws%-H!O2o1F9Va=wej?BnN|ed_|PQQB*zlIQt> z)>KPyv46uE!ppoKvTL#(y0Y@oT(8W5X02^nB7&cu7Zteq8ReRus3R4Mc|S>6>xcLN zAH!x&Fm(HRtr}R`)Bnml`;YrTV3pr@1OmI++AOw-vGaQZ&Th#g zcqISeakeJen$NinsYOU{^BIKjCUX9=N*{lM^+DiI5aWA@@wf2)S$O}XS@%}bKf?~X zhP^R>b2U5Ek&)787{_1Y?Ck%mY~)W@-V*};zEORDUxjnGNcuU|Ycvud%mA+dzs2X* zGJa$I9g%__A^yLLfsL5^{>nffGq2MG0^7PT8}iniXwdGPhuinp-q{m<^e5EXMrG&# z!pTU0*@j(SXeJ)*Q#R6G*0Zz}dOG!8Kuz`y%9Kc|S8~oA~D@ctWc?#ToFvOYRFnw!QEj?~<`oNN3b zXa8w8Ntc)jmpzE`a88=8yM|LIW+hsq>=lfuNM!HemZ7HXeR-W|SZ11U0CQPWl{f1* zaMHrLaUDPhcdqYCyla66Z3?w=tU45;a+a=9Ww9(@z2=z)0kme(_%xS+KJ2`^%6gF1 z0}`n_@j$S$e~W@sAYar#*Cm`&$t@o5+ZGp0V^&mG<^l$af1igm` zWLf@H*Sp`7zk6z)2C8>LlT!~6MV?ZtXx`3wzm;2TDvX)C|Je-doqvxcJFntE? z4~2=L#FioUv&Cs>#QO*tU@Lz&QO%#A>R^##HO$ZsuY2v+?FP3VOiA(LF`LhbW7H6R zug<ttEJZo#Y9H~CQ8TV!C@g1W3S*V@(a-?Cnj}ehXlh|)X_r{V^$x2$s1gLnJSF;M>dTG<{*D!BzJ+0Ub-Jd<0fD!O z@ekN;e+1`lW3%~Q?e`6IeRz*9Ne#F7hGqHN0gJ-?9mltDcJ@Cpjz6yq=(ytN4i)@; z9h=P$5yH3O{q1^xw#4jB5YJv=0gIHgm4FtYR~Wxr2=FT&zYH3S(uI|iPE);Ntw6M& zuXzYC_x@c{lly9czreL%0Oy4!BPTJ3Hm45(eUAZrg{hIj6NNe*n9+j4;(x_Of0-JT z;J%%h5Y7$L6lKxvPi7NILSBM-uE0>58ZISpCnGJw*U|zN-uUHRED_6?`&YQxVQG_G zXTUO%AF&CBH*84-#rzEX^?sOqR3)*oQqR5tgu}#=RJNp*HFnM&c@Ld306m|s)#+Jg zKqU11b#xC&fiIx%c49#YP^^iAdN=3*L7seyl<}HOQf(9Fix*2Qv(CwP`P<&CduF%u zTIQr$)*%lr$k%o~xANxgq}sZ(gM|5Ka9>;_|18nSmD=7yQxll5&I>UuWJ&)C$F)tXPXF1;6hPi;f) zL6S1J-qabe`)zVm7c`&%AOI)q+;j9Z;a$R_a0pue{H-VcD)j)Mm^;L&2^N6_2Fq;%iRJ>@xO(+gA_HrEx`t z>AIf{)?d-qsahX6Q=6(ptF>)WTOwxpicO2wn=;60ReZD#wP0{Nc+8%|ww6BT*~sci z?Qp)bfp6mT8u9sJFCF2Tw%+I3>I zwP(}*oa|qg<+m}qe7;T7Q*cnrDv{7m)T_w#y5?qpN8)p6;`35$_9WAK3US%0=&Tpl zmjH3MP=jNSU-Is_Fb5D_(-WS9ymFtclyl!c%)UoIvt-b}>$~Tg_ETHGVNV{tE%SFU zJtH1^P?f9JPuO+*>369=UiI0uZe94`7(_m>*Lw&E>`abVa*IfLgbbQ6AuAfTe<7Gf zTC2Q2MjHN6khcKj+#k<|v{rs@QwQn4J;jJ|{8jbAjVs2cPce?anDX?^=1n;Fc+IKv zOl8FWu3tP;bf5A5NyzyNY`4F}+1dX~;P0BCw*zpug1`U0g1>j_S{Ns3=CUrf5RjIE zUttDY|6c)p2_nlA*pznylz+i9f1qynh7<4g`?R!7`E7Wq?fq zVPypiIL9(w>iu%;G4?~*O6vzXO*C7%CpWQiHAr*AB#^vcFo&@2^#cBugoQnGVqGsH zSCuGESTDzN(1h9b(J7#t|Kwg&=~2Lmk2 z>&^!n9F8;4z^V>zN1@o0__(TvpS&?Pn;*ituYrL|JN1c9Bcp9#@jkUcEd$6F6kYPN z=!3!~aho?(v=Ez15LsE?+)1qX`w=ZrJeO^odwQuPS+BvfYjXX3Ll_p|<-$96&mB(G z+evM^A0$2m2#ZI(CnGWI#d0A~gDV*c`{O5?>A$v#kMoY?{{ROzJlFnN;>}Za^e%P%)_B(DSlnspxtB(4M=;s0ZczNK_A| z#%pq*M%ggcYAJ=O22}9e`uNHeeep-uoLZT_X}UhlE)yU@WK0>Zo1{jf}K_?ydJ?k6pIb`O(ILywD)O ziO;7MquHO)fdP2+RQDuFEPWY2Q<_snE|5}#ynZr6DD#>xcZRu+5u?LGj4l>!TFZ-4 zgUa%AjFuRwy|)e7Ev3nKQ{zRdaa%pDS>d7IuS@1SwP3L9kKT1WMoi{&W6gW3HK(8D zCG&ny?)hMteQdYC0Px9*XK<{3z(1Sz$S`~l-akRT zA9Q*HOYhGu?n7WijPGL{e{>}97XUU@&F=dM;Z=Blmj(eM`TmX&i&6IdE#R;Gtor=Q zx{#k0#;l|wxczTw^61La9Vp1nJUxzj9R`RK zZ6=TuMK+8_%g9TV6aZEd?Bb0^_D$qzMR{IfY!cTp7kwT20iBNT5UM= z{zePTGWg5u-^%bY1BnMFWI9ipAo|%Nl#K-=@x~r+_HzgN>;XONf%7$T__aNO!o57e z`WWdT8K2j!ggqwNXDO6*!d3R#2$ljW`#ustf4m&bN>A--2yp{1nS02C_BTx^+P&OXN)yIHa@Hy(zdAtT+V>~YtNY3(&G(ppPr$|;}Y?r7`w^1kn8 zpo5jZ%rrIcVAT_Hr^(kZME5huu6xnBoX>MJ)mn3KES78DO5`)h>(R=&w)JCw=m!nB zaO~@(L%_=ZRfbu4-q*F}r_Ws!pbE3B{LDacm|s5a==2`vISP6Q55aM(0_KR;4PA(U?F?JIvS)BIE{8Xmhc{K#Wt2(K5uLVDM1;6oF!N zXli|FXb(i(2$Kx7g6Fxu#=d?X1AR6&+g@G2Pj}3iyk_mQ-^X{E(4xP4zBphncTfJ; zo7ls^ul6^y`8ll+ zO)sz)6Ry6$B%j-QSf|;~EPILe{C{_?6Yk~oevb#}S;qZ5s%II?AaEp-ji}J1MgkfW zTf6iqv=35ZkV-+z@K(VgGOg*c*0o!bklr?DOP+co^0%aClXHOgcLBVLoWDd$A0o#4 z0M1s7P9uT9B}Q*H-$%}mQ*S7D2VM7_zbcD9BBjp|c!Qe!DQL!vmfLZp> zZujDO?C>6*$B_YG_G)sA$pABc8I)Omqy^?xnoSqY5B9vmXXZf9ej>SH0ZTHelimUX z%e0jRe%*9v>F1Y%-Ue80NG9WXS`vvky+%qr-JNDrxqVO6ws3QM5~93Nj5y=3WHt6N zu_LvxM%M#afna9nI$}e*PO&{qtY2jTD|5KK&d_E5@-((iVGHn)Rt_c^*Mq_1sY&9d ziA6gtn9bKEAxO2r(lsY6cKZm1i6@|iPO8az7P+cK$!{`+)M3R+>LjxLB49qn2}-21 znT%|Q8dyTE3`i`k=U~>e`nE6&I1s~t*}tJF-UB6*$MR>%i}yjAJL?pZd6GhD0h@kt zcsTewZ&l}BWDov71`>bUN&l`vH z^W!{?2A=wEEeCAVhnX~LLBWG6D(hIjmuT2X?Hw#@B23p>Z3Qr0t2J_wc8{dwuofrirQY*Xy(j)!od0T#nHn$7yrU+} zJ8HrFK(h1U01!7e%HrGaUE4jm0}1{x#_4fs1ihc^dURVphRt;5K6sJtCO zwgYg-j>r4Xcz5FQ`C*UIc_9brNhfj)bxnNE3w3dBe(sPsoR2UdX@^6XVsy#z6%ZG- zh9Zw@RbN_WT~Y6gP#JS&R+m19s8?VbxKvheGW|Ns{@pdWz7&`9(cS2X zNPXPf2;oJ9@DftGcLa8y)cS=qr6YE2^quvQ+r&GYh(Ug@FI&kyJ0k^tac0Fyh%YxD#0a)Zr!Tj=yf z&j{Vh39@9^x{{%ordPbbkCcW<>O&`m-IPd{?+e(Or-ZX4d!-pIvd?lbv&>W}?zO=n zMZVDKB~eu13lJYDO(dQ9x1Cl?I~$)%iO{aZum3&Y^|sIglK;)gQy?!IS3yGo*9Kxe zs$YeAq;4jFto)u7;{yJMDw{h@Q`Hd)lxKsB5W~M0@g&FGMmSCrA z!?b^eg`ghTpdkQho(b!BqysIJk$kQ)PP)!jPN_FNz7+TJ-uT!0hw(&Yo80T(b(Ea3 zUz{g~ZZPXvK;F3=^gzBXVH#@Cgp1j~-bl@9G2)J}jt}|Xng@77&YvNrKOyJOkn^LB z9L(i5Ar39d=Y?HbEIzp@pyy#L&uk@}<#_>d6&Q~6Jq3NOEK4*^e3_hAiOIG|N?@t$ zxeV7u?zuE-W7FJaR=GFLA1%fMHPaKFGg7?ySwl-E{u#)yY~XlcL-ewnTA1SI9Aum` zw6A_IU$@5Sd55d=x$cIy(=@;;YztktBAbWKP%x|DIMXCiRxmTk(xhl0O}Sn@xUVLhv#is( z>cidn&Ed7=<y%juKwq`&>D$57G)^6pjrJp_ThfSTYeRD?j)p7K5Ir1%65Ln4H zC0~?2L0^u4m@GrohA|O%yQMzEI9<;I{7}^+Di| zF^=zG7=8=qoq=as=7~>W7~a5U^G^uj zRXBI6=10QL6`(hD0A2xp3scxKeih7B_HSw=!$-`0f78^1)P8>=HPB4TotgSoJ>Os6 zUtdk%Uw#~20($pE=e~fN7bcka087o}P3}ku;g(O`L+aW&Xx#3S5ogwb`o->qLpjdBCuIa51i)&FH)a8>Q<()`Dc3 zsCbh=34^qJRw=N(0k{MpW5y%{zNL|(9>B`v3MT21X>65JbCbMJnHc&ta{dtO%Q^HW zcbA%@#|U~>K2-~-Y`*4jC4iC0AxrWr$w_%c2yj|F1u!vX6=aT+2e1IY>H*9$zU^Ug z83QBUG(Wf@YMT+hBZcnCzc`TBSg4<`Cn4tz_$y5#m5`Q3Qp<2>fU9K@Tz#cDmng;w zG;4K@<@`Rz@n_W!IV79&HAf~MHjy&hcu+vi~bmKPIIzM@4@ZN4{RQH ztOhMJAz5Ow&2Kz07+oW8>8Z&vPI+mOUTncimOytCV5U-L2`qD}jX7Y>eC)9v9u|;c zcZ{Al-sE~%z)=~NdEpxMuGcZyy@%|z)ad(3KDWo=%fzjoD z9b57AV)MSZoK}vh^XJydBhORsq!|;~?uonrsO)-O%gpT$|65f!m0q{tu9a`L$`tl} zAL?c9X7#bP;_!6dai7SWz9?H0s8R(;Rjbzngi$a#?Z;*8m3+y6n}OinATZZUiUlZ} zQtv~e`<*B*+BL&+(5ygNUN_R9y=$1{*{IVnBUr&-QMb8;VfglxdyeBTt5kAa@xG6U z@eepV`!@i$;oRTD`==@c9@wQ0VB=oNLsI&@GJpRcjN?x#vw6+W;{e>nFuaD%=7$xZ zx>MJ{me{!o%I+1JX7%wcKeMgiuK>DZ^#LwFCmz2H8ml5;BxZ4%z+NS4B|4AW^REZ~ z=1#xx2K)t91As5;-O-vkt5mTv-mK4>os!c8zSr>PMPv`5t8KLA`~_0_2*7zU-HQny{fs+T-NWarNt% z{a5#~KG$TTMPdMd{(yfwU&{BE@)jew`Zm_f@PR!&InHC-wGtTy6ZRCE9*44jPwL8b{++>6z{>XGrdGmy5QJGx5zJCjS$FG$*yb6QX_gzg zulev!UpCNP<8_=D^B$YK1I(6W>A<;!ZKm8B1{i8p8#sqrW&*n-4xwb^Txx?5?gMz7 zYL20F-xz&-XZ$5RiMcD47cWdi$7j^TE$rQ^itF9B?*w$5bXqGSz`;8!Ao z)+iDKbTGry*~O|1ags+>i?~uB71{r#eqDkchD)>BZ%N|z*zuTsSFc`z+M#EgWb0%0 z7@ybGJ)nAtY2B(t%#|~&^_T9m+)*~dwq)_nm11KHTc>0TAK?|_sd zsTcA-8tcz&=`~%G&vOnx)-^IB=MB8S1K>N;XWedpfpr+!! zFnP{sSPM8v)Z}d^pF&gg57j7r=&)<}Yc*=Oh5u-P;4)2EivPkMX4Cdalidoc>9x*g zn$d2OR(kt9Y|_5hgZ_;raLlqIbsF1~w!UwGGM0e0Y)O^V(n4FC^dkQ}G@zNQ_sACG z>@{rfds=yKrh)v-Kn*08 zgf24nF@A)czg%Ih^nB)a0TJuU+?9l9i=6*Tli9o0LXSPSe{kTCB50}K+6TLG%&$sf>iJngc5GMons;?DGM!Uub5}iW6w+7q}zj@tv76fJ) zz;OZ|*hgIb`*LMdc{<0HDNy$1IGr&n&E^|V`(w-LesvS#t7)h{439%pM2`8n+r6Bq zxtbQ5%Dw>;w2>=~HW}O~=VT=2LYgG&tWAV4a02Db0d|;`rA}>wuD5o00Q2;lPVK`t zIemK$TF}?VZ%_G=r$$sDfK8c>)<>?_NVFb~^Yio=49O8We~5AXHA46{hT$$LN3a^y zVE(TX!f7Tcs%)}Y&z8}!EY)jko(GF9Qfc<4Sv@Fz@5}WdF!uwtdGqera$Vy4TtS2f zIa>fzu0?CFqO4!G3<~6rsESmQua^Pip#g=5sSefQO&!?OxOS{->^u3aGm@WeEM7N0 zCvy)Uj`+M*jCRKFlYt?v)3gtxgV`Lj+a7@L^v8}R)4vp>dFVQmeUc9 zM5}(rKyaAUk+k00-LF#;%)VaTF2C#bV}-S$$qPQUSJxYxv(bUwOup3A`g56hJ{uXl zRiN3;B$^da11#{%&$|X7!>mVYW9a$z&hk;gJt}8xDx?-})#*yTt7lg0Pj6Lw9L0>| zC?K`>{<89h%UR29?_*yd>~IiRVuLb)3#L+l+Dz(Zyq?nJBP_3D2P0e~^BYayvfvPN z*1PstKz&C5*i1~|0s?=#S}cBu81Dl(TXB6v-`N$Q#s8`#_2*X8-2A zsfSH&VuVLZ0Wv)%2Z>C6Th{M)tib%WIB^@gv0eYvlaF3du^o(DUo{y2JoIe%^xp+xOwt_n5Orc0>T zYJ_te=%BEh2A?#K8)+ywktAfUjg??jJ8~8^C=loXQjc=*ez_i;=UqMj#Pj4qr}${s zXl|PEwn^R_;w*6jdk2!WiQWz*x5LIQ`!`??MxV;VQ;yDZrN@lVp8o$;iqGeX(LB)L znsXP;TGKVDY%*tt5H$a0A5aGScMa(rJ4V|QGc_2H1POx_xo^G=>^l$>q!IzwTELvmkjkfUWHd0j!GH_Q3n^pZ!yLAkEgI z3XEBxw?}xfgGl{;(u1FS8n^j9DFKGhAyum==NS83d-^^8U56z?(8F9$&3oYa0b@Al zDf>WR%zB+FFV6sRqBR-~22pxBx`sW}ZNM+7)` z8zH=i5MDw`_m04x9g*`#*lvG32tgRkegbV(hMA?AnGG!dzXIOMbIktT)_R2jWyVD!0lrKYiL?%_N}!TTdgs+H zi@bgN>#NfT8%`|{TCWOB&EocJVe-vEVNH6hS5Zq1cY7AeRVS2%K{pIv0(b-}qcPNg zQvRYl4Rj#04GsBxzUyhd{_?BWB&SC zgRdk~x;QRC#ChxmLh;G@W%&l;8XJX^@s~ zFldnOR8TskySuw%k&>2HY7M%(Q@W8_N|r`gV1Wge=D9!LXMQvM=P<*JbMAAUcf2l# zuw*1iT{62Bu^XSZ=ce&C$mOZ@bH*cZ&9KL83I#l2>`C`#OMMJ|ENfclRW!y%PO0F{ z+T~1H1M7==#!iwhO!AIsY_>FzuN+XX@eko&NuI;Vj6Qvf-qi)uB4 zmD)Zwb$>}-;>1V0E_-&^wPMB=tY754Kr!@f-v*?%05bC9CAwNdc$ogQ$)TbCou@Ra zA=ekAmqZWx0qUJ4(_Xgxm}^1HRQ5D9s#Tgd-iQB|g7~ZVhU)CkuMz!0Zp}_F5kVe| z#^>T(2x+!Kzc;Rkzv*y#ktxHRZ<&4p0RpNwG5BuHdh$jU&Fejq_$xs|)#lJL`y-RF z8?UVf{?sW_u;EyUf5;xygU7&rSmNGVZPK4^+F#6%@nBz>4|nWY&O9-1e=L&bK;Grn zwEr4%I36dMmm8Vyk$a_mfa>z1pmy-5Q(;(Yn|lI^!bzD_h8#oB z%c4IzSepqi8IbNRIHlM7qIhbS>Dn2N^&*5(EZpz`B-7_9y8-^)CgE`s=pvkge!Y@> zUH^UxY|-(+J~j2|4%9!BH>|lf;Is=!q_M||Ue^_1?HJ!0Nro!Cc8NrKrhr1&dWwMyjSu;0%6M_E_VNMuz_ujbHW#Eq(5( zsfkw3ZN+cmlMzg`NR1-2z-q3q-Gy;m-2*FZI14ZO;$zc{QB;BkwKZ~Vs-9`WkTYY2 z?5DrEEcA&OWdfbDE=e3wUM^sybxjXwv#JsN^@3MTQ)}!R`W4#JGwRhIS)p{G<9XR{ z{i;`?XZ~oJlbntA2P~@)$rH)<*FV7r7;1W9P28C6(q+;!Jy-uO}cmc z+BtC>5aDxmv({vK?WMwbP2b2OB7!^eeLkSymg9db_`!WmTW0wqJ#wXT#!<%A?zPqH zzSjXqH>=nYcO;AZ2`N>v)NnbskoS%J`W)!o>tg79hLZUoqq}yyN+}b4V#ah}vWZ`t zVrB_1xq2+I!-W`c^4dJjZo2BYq;kCf)Q`xg77c)931W1-M`T^PWeEsxg1*Xb6c|N} zoz^pcT*VOen}0+N4fhD*T-+ng&6$v(D-CO^b0dZlEAus&v)O< zS}({)t!G}oDMG;Or&sq9s%3Th&|%XMfB$v{lB0A3w$g%cA?A-cGE=Nl;3QxDe6L*d z0f_B4%2|DI_VlUe)^FjFX-Go)ebHXh#+?-}ms&-&(vZtBa?kSR{kmqhP>E*5%oN(y zG@Y!dtWt0yB;X@8sEj#0%?R#~2BN-yP0s>HIfcxFQ^o@Gnzh!(`Py~IQpJUcjdNqu zZ58`C^y~6`@NQeg4$dUAUuDFxh;`$Kye@s$kAj-8&|QUpn8A<_?lq6QtFi)r;<>x? zr2|vn9}n-zZF@29-%hdGic6eh6g2!`3}ZR9g`6HEvt=#T?Zf<7 zKJ(P>1$VDRTl}VomlVwTVQdKPFLbeU6&HeJKzTfC@6F=U348r$%JqpwX@8p^H2wX} z8{$mUF2;ZpLbQEN81vswO36;3LVD2{9G;LT0|>l0_V)h^-G4zS7*O655M1BU2ZVQ+ z!H!=abII~V_7v5;S?{^eyFBMcMn+g>p)v9yA2K6YPViWQxSciZgD<3J2a@3M>S2#O z3+A^>baeBTDW5KzYt5qLSX5_K-=uvTJj~C~b2r(&r?$E$u)3#z7r-zj^@ogKa&s~o zk7fGHxs;_$yOE}n$E9|IitYSMsS>4f^~--c(Ix`i-$l#nHe?w=tqyWwH+NZ8?{}Lm z8@J(h=A7~Py!Pu)Kmj}6Ta;}@RdJ1O`@;ug=`3NN@m?I3n4fC#w_2SKamyj6 zD|*!SKDqdM=VG}BA`b=Jgz|b*LE!|ALvjKW#ER>IgpXbV%FE};@tZ;si$$V;5erf= zg&P#?50pb^!&EW)n-8W-2Qo+y_yI6uJK|x@rNXWo?k$p0np%EqTCa8W7JEL<|9l*5 zZB=kpG$d)4P;c~!uyJK`u9@onWS{mvzQp{i#~{hQz(P#QN*83vgMqmcL*hcGLT<|X zn)_q0-}ian$8fHLzQnwquVlIdoEoxZy2%!xzP&!DyI1z*0!`m*g?&(7Y6yL=Wfg+! zNfZfVXDNlye=w=WzH1wPlUo8SsAy7$_L|7g|;fNIcO z?N*i#$i;GJ$+r&$$krhvAlsg}Uegu>j(Mh2ZEn>#6wRL)Nuy8h^85pN!)YP5CHY;@ zL%Sjd)k)tO%H5By_ApiH%zzMIV@}45^y$ovTS##ds?=)j`Z6Chynw2n*M5lZANd9u zOV)~jJw!85^~hTS z9|=4fMo)J?9q=yGy&-goaL!Hjb8kwtfL8jCE6!hXm~r;u3)fC~w{Ersli7R=6 zwO-!r3o%cw2G5uw{c=2y`z3*G6cy$D;Y?AK8xIJUv*0g?-M4Qu*WuHK4PBOHHifl1 zd#T@g{)|X-R`?4(%g47W1$(@9e{M&~dF^bt$90@$rzXp}+ypn`BF|Y&PqbY$d}nOH z@>9nuH-Y+an+@#WFf+hd+|ZJDeB|y$lhhX){V&P)R9EO%R<0Io^aRX$Rhcix3IGC| zS6en7fS+v?;aaYSMU`1#Smw}TFkEh3{x952zna(-oK=1QWE2styJ9ut(n`zsGh{IC?FbM3415a%OW!o z7kYA$?+?&q*mS0x!3AhTk1N4b9`L%ryRjHVj&HSt?+C*IyT8p?_W64EC&hD4T2Vpt zxpl>oanP#Q$)Hppj7)*2N5lK(dYlAjVp_m&Yt$^lI)30<@qvWe!M=m*7=pX1Kkq~~ z|BL)93cMu>wMm$-vXW(baEzCdxV3Y`?+y)F=a^hH~f`CWSH_d_*; z$)|0ML9=WIwpm0^bAd&yVEV=5KQr4hu$Dsul0@L|TNe~i(Q~}7u+Nv{YO@hBjPC^Q zH)x0MfeZE-Uwq+>uEw*HV$^TyI3Nc`<7|ZI zVqwL@0sFzd6Hv)~Aua^hvwZb-RG|u{Bug}piw*o@0i4UIY>A~ zj{+y%WpX_lHC^rve08>!g;H|vfc<`7EmSZ``sx;K+0dc8UsVB>YHy)5kLoT7SGL*AZtDtP5RY(bQ1cDBBrF?o#Ikkw6|II_9M^U>ct% zxvXlIp0PYG%JIk+w39~r?rk_ZU$oLBGO;`sa65`!hbdjOXQOElOTE-SI7bXpeAkec znR~C7Nsvsw-7wz^|9xk_@gP73Ud3wsMYGEy4Yo>jgEZtd;655$wb}k^c+mU4L`&0S z!7w|V_+G|dtooaCr%2UqMnPq8E9I|!K4Y2%FjRlw=5np$bX9(?o#nuh?vj>7r=BU$`c^w3n9s<_- zeWsS^Dd}83mWcS!2vFbQ%_@J`;G8}gY9=O^o=56pgi-828r4GKRy^<$Atgtp=9ea&o=nTitWspH3zO0Tw0z8 zH-v?AMK&Htb*|g6Fx0iTTeEe_{nN40yIo%t=Dt!hukcrd<>pB!Q3Yc%@*8eW1-4G+ zqI$DeHEVj3%DPdf=aB`bsXW`^fjNvV&H1|1DuEn$!fi3CVOxfY&;_(#%YPa=3qu6`6Wtyb@Rj^X4FA3dtQ&BuBYG|`9wdyQAooPLN>0Ip9J>~ zNjh*%o4D$4T?&nK5ieuIe z*peiC{BfbUPMEszfI?!z3^Uv|Weh3$yit}fviIBlHh)Bq3rW_sXHwW%4lWpHl^>kY^ls7fM*1e>N zP;PZY>AGXHWBx5lW+O1e9;rk`UJgC|US955q`SRqnpxZf@%Ql79qlI0$8bdA2U_7d zhvl;mCufKRlq#gkalW@TwE0HEpmHN0_U}rq*qYUv@-?gZj6;QRe{N<$b16e?8Q=xCdHM3#2)n(-TMm@& zR6cRew}pWJr?rxS!GabM^?^XY=V0KU+3_+UQ*|ue9h5ONJ;K%i{z`|g?U%<1lgBpt zb(3)Jrym?bYXC`rNKD2}kyiLahn;2#{gtX(qWawBg0${x4Q+9E@qh*WX9dzZF=6=0 z!ln0Z2tUjVxq*CdCg5)sc(T`s`)M*5Pp@c}`-1I!YTYj7VH`SlJ?&eW8wySPN_Tr? z3Z3`Q;wxbqN0IO$m{|VVT;h<)WiwKJEK^65z}j=yhB*=fLX?&~6b(OM%LvdBek}P~ z)1ueMY(2%$;#*ptW=G?b-C$$}?lV(3Bec-eU!eY|8)DM$mmT_@Plt>}87{xruh^z0 z{P1qy?Nt=z^WQ4E&Ec-!FDpOw%EWjB=|%*K8<4L9N_T^PcRgQb;T~M4{#0giIPQz< zg{&!1`SOt87k_DF4MIRwP#*MFWAvBV(h$*Cu?`G&t{Y!>EU|U0y@#5lx;tlBNB7qu z=9$CF_!jC?4I|iaaHMj^n`1G^>&j{+T!;+{=f9tF_mJx-s9j}hZ^HHmh3_~H3Yyc5xq_>EPeKCTl6qYc zQ5;MFzGsZ*J?7NZB8?M{#|dF)cybIip;D!8jKAp+y3;x0dGl&`Zox<5>#gDAO|JgV z05!j-u#@{9R_sw#i`+u?>+xswDsp(dm9sO#2aTj4?_v`4K5q0@*B~x)o;cQ(YXrg4 z1{>k%x^s~{snK+v6^vI0x*?lHsTsKzgr>6gXF7w%FmH}C$els|?}Znu$HQN->F}v8 zG=g^~q1w$mGcx&CKQXCqwSMs%un0fTv9=M&tVU<5L+#>^Ac#26OmqKSH6ZD3w}DEq z^u@0-4%R`rFH60DP8W`tS9P~Fs2X6S(TwPe6sxFo{dxt8)(fi@{8Av7=znN)M{{#$ zfEp7X?VVyt)or|t|D&Iu)3*`@XT^gwflP$pmvX=QwCBg@`1z5&gWI-?hAMQ!V-}I7 z_Mm=l5zBMA`YHdwv~$@K_+m-3@GeWh*G>}G(3N^n|3I;glEV%Cc%je5Wlmt-z&`NS zx_O4y_TPyfaam=$X@Je$sd9JQ4e_k4`!kW#X@>aOb;wlr#KK^-eR0 zybLvzes3TN=Q2!98~hVe!znwa)iYI|z3dB{8OwufA4x>}hKe2P-#O(n3x9K->h9dn zxs=LoVvIWZ_9LvqRmNqVaju)5h-TTO97=i|dKH!e8LP&6nY?q-R2P`ZvA}oDS*L$n zgLpWut2_$e5Q6i8{`n|@E3nZT$Qogi)6O*Mf?b50!H3{_x<-za`skvuJEtn=SQbfw z!G9KVb}qZ{{DO%hmY4*&|9m z?Z;<}z9x!f%L~Sx`rCKQufzz%KpZnU12BQ16v$7O7T6WUzbI(mVrs*{*mpG2F2NKy zI6xFD6Kv#83Z6XL@SC5rc;`c|CLv#A(0#0CCvizJr*_0wo;i-^9HIA^fH+4)HD{aO zPXTl{nO8$ltBwbMKzWDld^GXZmhh*1At|CHk+A`c@*K8FrvvW6jDMBkhBRJ37-WB( z-9%eTkOg+8oh|1Hq&p7j+j#*ixo1Zk8f~*>}>c~H_00;d@6XF_mE2yF^lJ{;ZqN|n$VRb}9sSkk z0pamNhK!O9+AXfWZw*90ZTd>(lr_AbD7Y?u7n+E7xVKbf$y zl)0Hz{7a_8B%1h0VH01&SS7u(Fq4Ul^u+8DmMM6(0p^kJ|)QkMjdGLjZ26;XsMOywZZz$Y6%SZ7@$Nsc0gynx? zjX3-f)-z?ae85|Y*5A8E=?RWElwJ;~bc)Q*Oh8IMk%+FRPx#T-{-`RV4{FBtCT^v_ zbw{0Hm>J(!#yf46bM3(Xv2TNI2_@LOZ&{ypTy+0qNz=?~?JEvdY!SGF@LaIo$7{_5 zQj9lIxN(0As$bGK#e-Y(o4qy{Bf_afuHI(;8oHO4yYxK2&4k%6EMmPx0|ou^3^G5z zYqxKn6Iy7nER>F3#KoLg>uoaz)Yp=`Ksw?8dFB5;1OJ_sS3^$&qK}nZXshH<1*TJE zEY9ZY>7%e|jm>@70v-@yR&f)0$qc)xK;elTiqm=gaEN5Ll#fwstzl!T-SddMvL?EJ z&&mM3eq=bOsuupvz;O9m(SX{X-~;!Z4k4YTFrW7aij)WHqO@@&ITyD@95UraR0;8R z4*!hSHB>GU{Hh3mpGq{*l|q^)EP8qiGoEGLDISCZ ztjL!`=DOzlGFGO0JlMAcAc9+dMu*qNR9tXAL&!3EbJ=ij=XE(R@evD4?a3ypH;cRA zXd(ytPW8TT?#6PQ*E*5#*=kF-Yua2w`eJPV?U$eI%@0T2N`G7-4Hc32ZfIfObS+}3 z4Q@?nlz!X&wcx$!K6^rUEuQ+>24^O>DkowT#QVOQV~ zup!37Wyg|)IZLvVTus1;1tT+c;QY!_A!4$hPF!9vo2JP=qPE!JTd%S`R-@OqX3@BL z3@xIL+3Tba{7Ti(TeU2+x2xIl4Jc=7{9PHyyqZ&)`Cq|R&Y|l+l@=5hQ#!1ZT4V~g z`gl7dhzp_!fh*NKagG7fDLzv`2Co3NgrpxyK%TdGW7UNe*vcEB5UTxIS&fB+r~T%C zad*?TBUL%|UCe)#*fv};Ys$4}xH~-z`;OA$o7VnGZ`=N%?CFYGI-@0BczlMmEDjGa zT^a8l6~ua{^sUVQqpmL3$UUIrwl4z93W`-U_NCEGk3_Yl#T3+Jp{_~jBc_6C!JKf0 zpOSxt{_eq57R8g#Sxkf5S=U^6+b;We->O$^Y|~&eG6cEpe#Z`YqI-8u*qPlIbDX** zaM<1r6oKh~c~fH4;#$?m90xV?Px+|{u(^EeDwh=kHdOS{0Izuks@XqHCRP`*z-i&d zm+9s0)SD)#uA^UgmFpT*SAuEgl}%AZdi$uPuxRbes4Bu$F!uz8xBzbg=c%>=#? zIb`UXhIF$M>DhkUH!ZkL>kd4bfwlM%MD2BoW*S}3+@28=f0fx^6IXcvEgNZ{&&*$_ zb)I?KHU}%0eHwm6pb&7FeO*>FjqjP{zmC6@uwT98Lhc&_ci3SFZ{lZHaoG&}LY5;*$y--X76ek+u4fiL#m3omcP549W=i>uD>AUDu+OnrF^OvPQZOio4(;Ba14 z9kk+%xK~(hQdRDlPS;EyH$()3K?!K6w!foEcu*s>G?M#(^TJOq+$(cZQic04MYnvJIn^8f5=nC&4My=BJ@j8RkY<; z(Z+j(KH7wDoUg>?ya;R#Z@O0g;1!7Uor|fYpl=>w(~2nK<5auI2yl3*YSxQD4z|Vr zLbzzxw0oz%U#Q*aW)^7cruGkCwV_75B+rg}_0V5R zr!@l39(`2mFfHix{>Y7Oz>{QNM|4KzYy!o<-ve`^ETA01w01*;?(Q@{`^9Tg8SbxN zXgB_SiE$44y!hniVOcE>GHlSqUZE2TdpAei)JsX!%C7P?ygT#xrLUBv7PYB!%{CfZ zcEpCviy@>F_qF)DfU?C;DQXk^@b@I`x|yeQ%Z^32B&JZaH*3~uZKH1-T81sVWu?9{ zx*xN;DIPMGyAo(RDryTx48R&^=R2cP} z20Y<+_Sgm~ivK(K9#4Re0Y8Kk(Vw;P3chD{G_RQ&%QXjob&37P*f^a*d28{|CDUSS zcs_VM_(kvBPv3klXb2f$M#R8Uzi4spPqK{5eOb5z6RZ-d$m$QhRkeQ#Sqfy3F}jnI z$asDJR7H|NEO`W@>(P_wylN+GI(@;!TjO|jKRAH$#(6@BqteT-;;9BL$pt}N;%gYh z#jEwlRSke68;{);F?LotuW39%e%#d&cKt;?UAdrcS#8lAF?2RXa)UI!%-U;y>d#3b zco%@$f9n6gK7Yx2LTYCiH@bmAXHj^Gs>Q)_SxQY<)ghPizc1?rm(SFF3fKeXgQIu> z2{p{vHi7mO`Ie#I6Rl$P&OOWjP12GHX}?awx@N+v?Ay3L3lOS#utfu7Eu9?~`UBM> zGC2b&{BF7Ty}Ias{#T7Y<0ufspf0>%LzVI36c`;2a2nZn>UJx^T4)%p57#xD`*bos z81l*19X3suQ_J1(+Bn9>*h2yxW4!Q-^1I2 z*j0H9sP@3JX~=-xQwAZ-cd;H{fQ(}5=1OO|Ck2Al$7l0>*E1$hX29>R=JS~bRg62p zCc=(7<#>0Ui;Ll&GZ37OadAS`-bj|&<-HzN3R(Lr#EtJXdr+JCI``HW*dfpIc?F|R zJ2J<`>6JXlJ}ku#<){|%A@n6FfsSWGeAo87hYnP(d>*C(WrjY%Zb1>xLM^LrYy3hL zU;{Of{l+GI5tIhYTjc_to78oMtDhH|C~rW^Hh!YXw3-Mz7fWv` zqJ1|;OZt6w|IcT0xEN0qFGA9t`T${+z0jv3we!kiH?iJLiro=I>yJg-A70v963o({ zI88c4%|e!kJDmWe4&s~Nq3*VsE7XHg*mNUq$DxRiwRBl2rYtexNDKRJcc)q8ZEj#F z-jXye^H!PBg39azP7UP8?p*w|@P}~nEyM{GxAWX>2AVjRyRGAXBu;hQU{#95>MxWk zvT78}TeJ8QOT+Qu_&=+Tr9eMa?aKH?=OVF)?0)27yK zWw+nj$-@F(Z|}}Cdf{)@LT_?t_?MeVrjC1aO=Ru(8o$b3(#{!*)+K2&5crXWX%C2H zYNLc3mcBq#G8#OdK+2Cde$__GmmMS>GibVnCK`+VYYw-aE*Cqnq$ghDUaX<4iJp4~ z`K@wAE=5e`@YZ5bm4t6j8`H^Fk!cD`Txi{My=uM7C9Vke;+WO{-x~@?u{x~w7hU-#CQmIbUz<3w9mvx~{;r-A zRJ+`;WfWC7^1bxG&Cw+ zZTJ|8uQ9p#jSJ>^LR@Kr&QU20)xPG*OF6}`3uihHhW)jEb#_t$`$@pxX6C#{+qEBL zVQa=V@t3)Pnlit;JN|co85`_1B2Xsfm*ir#HvNU66;)+0_if_mP9!1@|H2O84?H;Z zv+U-rB=%Ea#Jh|@!*zb>2(fTiicg-|d6RX6&rS|DyxbkyiM6AxscLk{Ay_WW@FZe$ z$c^go+Knx8@Wl&E1@p1qImx)9{~7XnWDub?X8*%LWeLNY_r2!=EEgyBi-YHjp2hbO z5gSO3>pPb!OmJDGjYeOaLdmVVu6Zlrspi$IiXD$PT#+f|$qhP0SGikKcFWyDVfbLg zc)96Xf%syzvt9c?_%!X-m`4kjzvXB-T_fSl)pGh)KKF#mSxeZyB5Y;I9-v6qJ)9_yZ_+h>EY{33x$X7Y(? z$&(@@&ZfrNnxj)N8k4x}5A?y#;T22KgWw0uUa6fBM)uG|s_@thze`CM^S9W0Jph{( z1iWbOSWzU!2`Ea1zQ>kxG_KE9AMhC|T?bArUbRpjZxQ}q79e?7BA@b>y~C+KwCPm0 zYN4Xk*VyU{RGY}Yeka{55q!(H;-54}{qvADHA7lirtkv#Yc#G=BaJnaj6RW8>DlL4 zc?I4$rM?}_QE#4?QSL8`Qp(9LKF1>Ybf8cOAO`w6=;%az=)c!J*ymP~<;1DP4F!_f z%B5%*W7Am-W|kL5F&?X|WE8b~ZfK7~hAC&YQUSlj{kzG%GKyCoEo@5u%I`%R|<9Q3NXBlW!7bthW&xuY$wk~c13CS-OP#UN1xw)RRk zD2d~K=Nugk1vt6vq0jO`W4=Z=^o186FZ*`M{^ zCyjwi8A zE5VEUo2f}0qn5!u+NquMi6aV@Xq=ip2KQ{T{rQIpNL;O3o}K$YA7x|CAK?o_wSsox zrnIKh3wuX%^Dbfd>oRc}3<7G>cDofcs<4XKVxUk6<1PJ?!xHpQn7oH3W&J~4q7vS< z7y5Gn>Oaj&<@M9}k`obiH)7(wcOAa;;XqKy(-vME#%%!F&?uz{u}`C0=(9+z4Fjy& zXtbY>49g8%8<%Cx?6)mVeUpJsOw0-WUfZ$Hbwop2)5(+1bvl~maBiQN_g z@JM)r>+yS_Z*fS#PdQ zRE~llF`PQ_FXiu@ncePzNRKf&CQ!#p`IDl>H7XFCFU+ca1yC0bt2I=o^v}h;hl*kI z!sD|m<+98Cu|!qdOXyS?{Yz^K$MI`ADHOTsM9;UuUuFR^tl9C$b@bEhsbG(<4HCO& zRGm+unBm}0NFH69a+e!4$LUjLC)--$mrLG{Axl*^z>NTFHq-f=Ga0_Dt59!#PSO5(&%u^n@|KgbEN!~-{S-gvx(x0HCVoG})6b8nSBefo6d7Tm z_NGa;6L9`Zg1SEuLP`Jxr<2z~U%Imq9XDnO_I@|kenFIXOR3n@=x+V%q4&bzhtP4+ zT*{&6xFDr3H}#(^!hbl9QYd;`u<)`5zo*zTMH?tQJHzyPEJf=+zYnl_TdWEv--D0G zJUGLNf~P^U*ukN#Z2y==vZ1_B_}kZh1h?qqqN5;w*VGy&T|E4j*vQP1W084(W>_{i z^X8lDPT1>=vY_W(3Z!6eP;VuA8-#zvqo?gdNo})=x3-P^`vc21k7Kn(<=;rrch}-p zAzPpMXYSXja2^ZM`kwekiwXOYfcZ&m-ty8EVbaA=&CV74ot|~StbecN8M%OSbXf)e z__w9zuD)jqlbvfJ^sJ83c>l^@Gv38zILf7d8_oDy?*2I-D&xue9NTUIYmz)`cXGw@ zt5#HiL2*baWLmplSk1+(OSs=$+{A19C2T_G5J%-j3I zWi$2`|vrn1;+DZ^vH3s|i-@|K%MGF3!iX7dd7jer=!*2Co0<@KQm2$P|{Ic+cJA;`ltGaa-7}uLG zs^@JYJYO-1mGAb|;R2>8aw(bW;dRFMPxKG%SMckVieQ?lP*?YwliIH#V`tZW(A;Ap z?k>NA1%+lm)xFF41}T$`2P3_%lUE1R%PTsMVgGqYNaAf{K(~EWM1-mcK7Z+F3b?^y zC@EBok;rgaWoRjf3s3*u>LtQ6B~*!T+Bc|e;=-Qj>hW9CWBVaQ;wp@Bizg@(xWJE= z8E_^n+=(z2AHK^W^Q?mop;=}Msj(j*G4F3pi((tzM-*3P*FJV1wQ%PX%|aOMaZ`7Z z!$#Tbz@!@-Uqr-;L$|S(P89>GTfW!U)os(RS&8MaZ+)ceKv0{6O9sFQPli41#OKL%)Z5cb)H6u53>aTYA z0-k6Co|f9un3Qakt#0|5i(_4Wj(2~Et^Z`5DHZ6B=5d#9JwB0_aRR|Ol-}DI3)p&V z142SeRe!syGGtzLw-+zvNA{uF{3~3c0RssUnGGPfE3>)Q^E00}msKw|kW=}sJKVpU zMUCBmV|wJpt*t2%Ii2cJaNhogpnP)ga^+}KzMbf3`R>RO;2livVJjY3CvH=SF>2$s zyM`3S{UQAo>+KJ)^rO7}S;1_XePLnek`fqPB;PX)k3t#!3)tLkXSH3q#&~Cb37)M| zs4TzsLSsAZ*}Xd^vxve>TF8~}3a2i$^XLtFJTy#J?@Knc)~jOVjTpwPy%bE;JCXY) zd^vYxOePLQ}v6^Zy;wD&&aehEm>$WTF{!UaeT7;i0vVj!zKoZ%r#NE1xyl z?EdKkJ z3hp0L4SH4D1R@EzRBousV2%BHT-i&63fWY*vfqk%ZSs}({2<(l`*sqUAJ0Ih1N1@ zpA&X*%IRD=nMyTk|Ec|;$b1Se&hzMLv{t-*h6vk-dYhl{6G|8uP{m!NPFtvAvNde} zJD%DpbH}p%)k2*T>f<@x+OdkF(jCcLk&h2IUBu&Yj7&uuKp-2Zw`@MZwdRCJ!s^1B z052n$V*HB3cI2kBs~skmXpMkk2Nt5k|7sD%KXEf1bBiKh$FB^@YONnbjk6;3a=))X zq7L3CW=I2dramBR0<6$mD2KgWhOd#XEEYJtSa1=31~M8qbQTJ9uc8xV^J_U!o?trN4*?t zJwc{wPabpbkD2ld`NX-0KcWY5Qd9ADN7w*Q^TzXj;o0tGc3m>uimF??4+`%Ez5!;5 znFHU`rVgJffFd-GyV6M@9%c;r#e&&igK+Z*^N;u1cP;Xv63xC18#T*&^Hz83%mY-3@z9xa7{yUaJ16=n0 zQzzFE$q(Jwc{58<%0!F!nam6FK2lglXs1Bc#A;f+BVGuC(D%)^`A3!XYnN&nx!aoT z+!9WJoBLoJbvi59tCf~$I%rwb>wWqN>{z2ukvyl?y7j(v6wj1Tp(d`b|0Lr!Rk#Yg zDL2;W4a~C;0~hN^Lew;G?!|&~vq5NST1ZL`#OrDV*pVSzcr>{zbCIqPtl7 zup@~XDKox?zLgQkD3gQZ(Tlk_D^Agp1tWkbu|6sz#&M-lH8WYT=Oqn^buhuo<Cv}92%*cR znO!}aM)%jvm&{F`z2lG?=n{fM(<5x(d|g@eoc?YYj5aJZx~Wbt%8 z_c}5$L!1K7)Iy|>P4+uIjZS{t0yIbbcL7z4fl%P-2)UNT&b+H@zrg4U2V4ZH9WJ5u zeIm!ilR^8q!Jgw%zO~Bj{_4n8Z4sXQ1gqWc3Y+usg|P!eloZ{UY4Z`|kg!n>*(oE= zbVpKK=%NFDrnML_x_-ibO)+P5E1(I*W`Cx>VWQRxUrvW}vu) z{!6a4L!frG^gC^?J2R9}Oa%wYb!}@HIs>Xa)fy#B49Ol=@{2c8X z@6CB-xLMa`HpLs?guU(Xa6p`2UY=2q^r?3@)UCyRA=Kxu^-l5P-*Ej*=94c+-h$md z9H`t6!k7V>&*{n-OBP*UlA2Nt&Q>H0A@p(RDe$K*eP^S@c&{b&eGJp)fnEmBcHK*q z&ZiImq9_{}(=1pLEI5iBth0Z^JJm(>|QzWLo=-+z7wBrUgzBkmRB& z;nTfl8r=)ToA1#R`(jofKJqqj;k_48A#IOUZnvV8i?F+1{!@)UR`5WGmxzdxEmm+! zDRwj64kG4pLFy$#@DJ7e$MgM^oBXJWL*OLaEXXsu*7U zW9NL-6FGYWnkXi=>S$FqmuqknJpHruR8)a0MAP?dMe{Q;?P3lU0loWu>b0bFg(CHu zczmBvXg$=6;co!6cXiOQEr*VG>;eb>=Hja$!{!9r+Z8zXxVL#Og;w*SpkMxESK4jL zJgS~6As40(b(FyzWBcXq0j2(UJPqO0-zqMFvz&XB63(VeCb0%WlLDeV(MD=St*~Xy zp?AW-8vVdE7-y5*MfiyzcM^#zDRvC}VpLqjZx8m#zktk3j^AIQcrfitKkV!g%2TLv|E&*JT=@rc*y-_ls=ICCBCC%HsD$y?bi19epB@T%2*!+Dt)WR z;Tul9&}I>&BW8rH$2Jgr8pf|Z_x%P5#(yj)A3j-0Es8-rzq0AJ;LfX2;to-~U&lm4 z=freAUYS^#;Xsv318K|p_nqk66vh80vJ^0~d`BUF+8}~e^sBoe= zYLLRM#P3^jFNNyxSgD3U6lsyJq)=Hm@qM%IK(3mv3qfg44dS6}w%;yQTWFJuilmc0t8o*lz!W}g4ac?V7bWCj#8+)GLRw4fr zO%(9^{VOs^8vKoUY`Jr6WN`7+B8XL010K3^hbOI*6sR45|MaL+0P^l2h20!n!tBbI zY8M^rJ^f!qPs&@mizUvCh)nuJoe2&8>aoJejdaW={!}P!FZVg0u5k6`dGF4C#lA#C zq<|W;@>-l`G$Cf#GHdpN6cQdBvf4zCI0M<=Z@ULmmtsoGi0!cI>e_{!`@>N>N#&eK}&dd3r z@sgreU{Vbj5|Xexrh<_t95TOjmkr+x1tBM2Mg8|gX5G0LYhDHGu>Xr4bw6M+m!6Ex zwMk8o`T%HwR#a{f@!HJV2BbE!tS0d4zrh=@Z-J-fFVecSRztXXe$#)<6mAs4+$8MN zF5E2FVuKFjDU+Db_XEXTYMO=+Fo4uHDk285g_G7**Z07EN%eC{Gv~ak*(PV+SI~d! zL;VugLv8ggI1h9@FuC%0C^_|Ic3+6++8Oh=S){kWQcn1EGH={x6t}~t+*#nF2Kv={ z#|q)~v$uN0OLq#J59vUGoL<(eDN7^WRm(p!EwPQC|6uNx0>iy#(zh%cAygjiUxq)m zU4yxE7wIB?1ZHK{yXnNe7<~4HyjDNs#aQ^OWrz1;bNPk}nD|5U_M?H7%C2blV}X3{ z$eZ|&Yc#8b%;a&P0EgIg`@RI!(|=0yE`W4hMjL6EgJNd+Sbl-+Ph8(?-3dnv&Tju>nq)q^CZ&pjTLJ!Cz|*~t@I*wcDXczI++S!EHT(Ob0WHAuAREr{NG89{VLAAK;!D8t|x5r;6 zG20_?R(ysO2L$q9oTw`10gW){yzRPq?2zS^Q8DdB>DG=C#K_(ybZKh%eLr%3p&mKJ zpnArheBcW6*M2qk=0w6%*Ph5~GJXEV*Cry533w&`y%;~!YN&Q#2rT`WH z*;RnpxlOZ`8h`)BSv-$%zHUjmjNB;(Qg`_b>_?UF#-bh#f$KL$(qcIe+swXpYWem& z^V8F7|7&2*4VZTO?nr?j;+EYbohUiyS(Y?(c6{&vEuj48<;&+)wC*Ptg28#@?qyDZ zQ*}`Hv-@hl`|7M96)a%qW3b>DB3Pc=zkGfvhEc4kOoFVLf?{$NTkNhA0rU%ixD7XQzlk?dh(%~BH6+&5 z`;I|IQL`9BKhGolO3F#!o4`hQs#9tD2Okag|5?RIkP-rRoG||r_kCE-kQG1d7h%aE zo+2>|3LtoWt?&;~xUU&_#v-#iJZWli22?vAeONoeS^-E$ZTKDmUZ-!aT6Yl8WCQm) zYsGt4k>n?75NaVSGW#1+*EzKdpuKP zO;DNlqS1+<${RU4+9hGK=!S6spmDBFc4cYh@%*e z?em)=VCWN_fnq7*l)e~EhCu6WqlJAW8KD5|YB+pt&$IIc3&Or#*!p9<;p$BC{G27w zLciTz*w5<3^F&>k$yK!U`$HVS-2E2fnP&%Dx1Qy?Q~Q0HW0o5$k*0-T%pk8xcKy}I+nTeafU-=`b2vzVbF$S@G1(`R3nbtUAjM6 z(b7(m`4c-p-=shQTskThBk?SK`v+t9T*g}rh)T_jGTRviq{YeT-URp_$r81LYR=P1 zH_Xk<&|D?^iZvZY*vIt$Allrd$WemR4X=?GRMv*iVg?uZgtXZ>7k(OYrJkwr91RaisY+eulHce;_9ZMTu*T6t9+P3-OQv9Vpj z<@-l$ec7Y?yQ;EHDWtGoFuA30%*;+ljh9jt(O-+R)MeN)0UtNp@e zzsF}2$Urru2dM`8H>7n&L+}jw`RbVIsfwfw-C$3h41RsJe=sToQXXW^}FCMv%J^%A;27_mXiL$%_rQTE|oYj*$z$| zly>sC_%+5Nc?H2WA`eoQ3&#IlRsPxA#;6BsZRaHisc7h24Cxw3+8DEpq+JQ@3hVmv z=`~F2Dc#dpy$=P~s52TB(o-U4J_u(A9lP$NNAOa7u1dvmh*ShUQF@KJB@}P1=GMJ! zbQeA_5Y#)MioBz4@f6Z@#x~Ac^Pm_FG3_BB2qktIY#`qNAJ3Z)UdRHWwwBrV%+_d& zF}S#kzXuT5nIF!t(DA{64K&yMZ94JOC-$&v%-q9{z$vdZg0fV_f>dZhDk_KMHx7c2 zG-W?`cfuUo$5^UF;(7}QNtXndf2Naq_tFk!;rWEdAp5Td{;%XtN8Cp-B07j4emMTT zMP+x|7MzcF&SE}%zB4vpdWTPW-9EPwS+MAM~o2wxVj>*(@uow&Qn>Y+3} zcf0M_(U_n+k*j`tcEBLX1pdVi&u`E30KLC-Hpb#{vQ5rFsc6KubD2S@NT?s3*zuU| z-H)HZ(@$CwIzj>)ZtP`;Ye6;J^lVfiiTT@V~@|h`-rt?-g=L$-1(^*R{45V z>uwhZJX}9}G%~#BC)0#W84-iGE-2@B0sH-+0S3E!ZV%o)F7PP!SAHOGy?Blb9BupX z(?BLN4C>A0YK=H-uOHsQb=CW` z1>23le9!Ov zdQDP7nqCwfZYPtJNNMPe#2hR#Wa^~8Isl6?q8?=poO9w^SiQ#*L>&)}a zNYvpXh|4`yu)HzE)zLuB(fuo@ufvp63P+x}!&zIIX@Ra*sw#oW@JA$ECD;Czwxmu^ zmXu(v<(Xj?%YD~X>q23#o1MQY&L8NVPUQ0*QYQ8I4pjW8-BqE7#u_RT1YeOGkb@K`gX_~x1Z#avI?);#^1txfdjIKV&e;pf9_flZ9YnTjH`#2_m_Q>8H4kF zi5qv%gYJ+{Ok_c^bY0yN9TB=hQeDtpD-gF$nY^+O8se5!_jPcWcbNnK6T%koi z^@D~Fb`N345n~>%oxUBXuazvjL%TzEy;~+S`ov1hmRoUfJmo^9cI&XZTItxzO+E(K zIOnnM-P(%kNP%PZ+QZomW}!JtPfuxqDH%KVQ^{b()jqUtalYOSo+wzmJmv_QLdTxwuy?T`fVU2#QFcaVw>FRy!X-2Dj)hR=^z02Q!3^qq*TbPF~ zt~LD%>AgAY$@*l}DZPD+RxcAnWY^gxZdu99~rT(OJu=7?V8-SHjQ1vPo(>sPo~k z{m=)Lztw?@44;cVMYiIabPj?)&Ll5{GGh@M$UM=N+~LI@UFDF6-GFr`Te0xj-n%<< zS)zb{;%LTgv@90%cW5HDL=ju6C$*Mm|9Tb8I?Y8gjxIFl?q-ZM!J*6iL-VLmL!lu`Gt_pHrtg`;gxHqU+L(1VXw^h;w!i#C zou;rYis2w|kxH`ZA?Cc>n)UQ69z%^;m)O|%e?$)lf*h7R1-!_OWQw%AJeOq;yz_0O zC{L!ljmh~*800G@+@09Mw%5iw))s2SSKD?N6r+k=6W%p(btDh7^xb+TJiC|PMmwdR zBhzjr_(>;xO@gDEvm3uraAN!tkMEv)Cgi=n%B!WE7ei!HY{~jp)q!d_69l^-8z^-t zBn;{P-5}{$*LV8yw}rCX;?LzF#~uHe=@M(*&(aIkhcp}7kihMoTMEAok8}UeH*nb< zBnxlLWny2~&~xz(lu`O9DkiqQ-xrx9Vnh8c&OF}psR^oWOPfd)WbTc|ee&q04gFR zizR4xo=X*@vf=#QjjG2ESh(S2&+E=_tdZ}N!~DF~y2I|3TCBNiUDTK6toU#YxGj>4 zzQz!i>~j-s2ogCtbP)B`@9>+#ThnOvuqGz}H~FmJ^^(n?TQ5dYX5JFTL5VwRYcx(b zB7KWoP0R>e*_4iGacHn}_{b5vtpA5faBVIvBx%}^6mQaHit8(xKba!fj#Z<20yp2! zB33zsWQ_kMAUI?wQUX%RAe>zCDbA&jTjZ50NsYW2GXj~G)Pm*xIn~w9f4zHaRVBH3 zzVLbPLvygIU)R0R_1f&LCgp5>XrLZhEh7ZxCrm6^5wWJVTAMzvyXNNbd8gy=pgDx& zZn3UE4fXJO#{+rHU0IQeYcN&nPGW=^7qq74mC@SP5(%oNOk;k2Ue_Who<5C*-~Q`^ zvJCR47(auW_O90JE=iGZ^XD!_7dCQ!c;Tmy5on-A4Z=CSmB*aSGh0-u{Tw%KqPTd&TYXshvRI@?&8QfdH=tPP{wZ zbhtK~G_1l-bEYlil9)Bwg8f(G#E~Q`Td6OEEOJs-VDt%a{Pwpef8chy&Rm_L&V{=J z32*#LSa_EFHw<%f?r7ZU(f;i#+`%nEv}f%J4=&4+cK&6n`i(6SBb=yn#_K3~JrpF` z)vYB3OnaZh9v!K37T`|&3f866y%Ey9)=E7mC5ys<6Vbu==sQuMmzPpqQWvxnX1qEK zS=Zu52_#SAP{d;3T#G-;Y2EPy5W1dxr~LLv?O-=4R?`-koQ}dWPSBTqSX*Zaf-|m) zv+3UVb+o%_w|AdfHXZ)&5AOchtItMbn@#W&R6Wk7l9M#?qd8AL>X^y%vyX_3z!23N-^gEi zW)rx_yDy~|tLFs|7d38X=bwg!1cEynTN-ng3ZEKEcgz>1sz+dC9B2Q|8|B3@F4bRg zR}W--d-B;-{x2*`)q-U4ho)LalVE~DL%J*5Cs>lzrjm^+OB9J+$Iwg}AE~H%yPENNSD87GpJc{Mekb=VAlNp#7=Lf-zc!kCV&=!7B{oFSFDO$Xdb^j zBza{1z8p%)T0{Az1LV&x$nSMDg74uzBD~~wT!l+{(j*a|(e^|e%;OFH z=OB1pJLrqt&{m?`(oDGj=lms7dHl}_#=YUTFGXN`O6${75AgA3!CNP*d!vkN#QD>V ztSO-ugdtvog`M5!^69m#MCgI90e;SOlU#h^TwiN|)Lnj}0HgbAzRvQ2(oVykc3R}t zkj6e@=dP2LtrkD1^pyaDgU=_2b`kdQ{(z?D>T2$~6RQp9;($_ZpqniAvxM7i`P^jQ$_8pDV{FbyNhte0%7HT*PRXt98s z5)O=nxPLkW_TpF*GAH`iIv=Z`jgK+))4W_tM#wWVGa91!Yz zkMAOTq>?v7@a?b9WEZo>L(MX+c%}4MJJ$SE6X^kW_P5Mw~R!NK_|k2{-f-MZp@d47DHKEg?>)na5v!CKh){To>3a+00 zKF54qt`lgy$O$`yn(cWrL;9tZo40U)IYs8--k!CRRBqongGgTCn19HJSef+A&>bR~ z*3j<-^S&k5Z;Wc047?i^x6ZEUBVgm2*(%e!C#337Q3OsG^fpctD{a{uPnNr zfI!!|7f7U2{R04&UcAOkYOxlg@FC@P*{caXP>Xw+n(bz0wEVne$4z*B-bd$Yo;TCt z!Xqk#8GMaKR4N}wlo`I`O3L?U#`DKLq7Y$`G4i(1^qOOc^s5kOxxi|Y%-|V|6ak3SX zBkoc?m(}*AIf>q`79~jSl%O-zMNMFqhSkc zU{>Ig?v}&29VzvJS1q*1I(+%MMaqTM`r4vX*VN)b?1NuKAo-1g4PA@>RYfu<;l+FX zfiyogCn1(w3Tv(e*bDHRFf_VZP!TisA6%Hebu;yTG}uL~PZW!*mx?hsnhwN)7qbJ} zbic}>8N-~be^pV*@FMZVF(~nJ!KPdyHg{?$tZ?4-na8nnRk`YXd)ZQToUN^?!FBb zNEIB&n$x&hX36kwxG>`h*$!@;&STvpsoQC3qt60?2RnYrzBmA=J-na9Jw?@b7&v)A z_|7U#yR!m2I~YZ&v5cG z!UdDD`AoUR{zUEaC)0kvY7Gn-5D1WQ1+3V_>S1B7952skGfRXiwzRg<5a7*forkF- zt?P7!I6)t-3A1p%rdXFA1bRsTDkXnpgFmAD$LK5Png^@2q6d~bADwMQ0`XAo%G=hn z*oZ)T;+ngqn!|o1e!1Zd;QOVXS<>~fb6=Pz5#xXzXnVLqyJDhri+JJToG}g>B5S%2y!$Cd!1KXcuw{BZl zi$gT*oGBj6e)@cxpxM=>;6Llzc?itCq&y)4y?xhy@Y8QCoF+$s! zNbqe?C|%c#V|-Be#wp0VcM`m64JLatLh?+=ip)n+F-D;*T~l&L%4;)U~^IN-xZ z(Ys|UG$PI@D?NU)MyfM?(S9*|05f60el8ST{@p*%spJfJ4|#T?q_IP=iE#*LWcfz4 zJ5mp|15Q5t@N%LfKCQ6aQH>o4el)3Dm#alJhC|Xonl%}`z4e?nw*-P65T6?qmfPik zg0@u8rhim;5y#4*RyW@EIj74vDUhb1=?24+i>YzOl(+lhCwpx*3&{-+x<}$i#U`m3 zYA1LySIFEf4w^8*`1`lOtAjwrjjBzT2-a%~wzYYelj;k&`>hK|tX{PTm=SARg@utl zCC3@lar(&);#l>eKOLCkl>hG|gaev1OoZ>fKk$0oM!OAPOIN*HA~bfhe)p@{oSA0e z%Dm`;y<}fK`Yf!8`MPo-rFKhGx{?9oYPEb1)KX7yFlU46bNNaXQ5a2ctd5L=9u37w*F72mLu-H^0a^=W<9b{%?3^ zOGQpaR;vE*KlV70fo2Vh-ge~7EpLmhW>6MTa`JSRpz1HjVV}`oYRD)22P?>k(CcEd zZv1PTnvda0kwg(5b29oe9&L$wZEpn&Gos{8a#-8oc7`>zRVJ;QADamW=ApC>dZpWFEn;`{ zhG(9bLKNPPN!9ARk+j6_IxZ6n2NUJ|@kROSlKZ^NUAJDQ^PlhgKWTC-F5x7&5@$xe z3g}BHE|7s-jwmbSzfRT}d8IV5%6(%L`2dGvX!kqfadCSXouU#i=m`wU0qb%L3l8MJ zns9L5HlPaa_6I;oYc#;tRAP5Qu}?{GCP&@VqK0X%tQBY1@AHBmwwI;HsYE&}X>8~d z(@ni-!v+3>e}BNu14w_3{Ta33Yd{Q$L*MyOb|SR%AwYUp;6#E88V#NWZ+?$@_{rfa zVxfRi@qu#Yuf%svu>7{3ZsKiph1%w|s1`PHIyW zx-@p@XS~`Lz}k1-esPx>vlH-9Y+>}FKJSV18h3|%2O)`+(P^m}Y$=kgI>fxf) zI-c%T843VX*e{1+-n};DQ9VC(t*Zx>_9Gge-d*F>OIi}@I;|_q?4z8XRp0}YkUFD7 zRg)O-;Vt-J^9vjsb@-gNLhiwtP+L2RkMI5Aj@`R=Ip$z+B%Pw87l!;BLXm9K9|F1c zas*fBM6|l#U6@96aQ;5V1auJS>elrW=!cY3!f0uMh9<+sVJqn5Q#(ldt3zIkvD?ZM zMF%Mr-?DvP-5V@m{46)fOO4_oMLnS20F>;Hda1Ih`A%)5vHA+W@c(wFd~h_Q%J**l z;C93FvRB(8NTcJlVu@sTZ2{xIVu)fBNk4Xb=RM)wMw#NPd zQj31}&66&;J7N~#?v+1!q4Nt<-9GtVL$T2(3Gl9m_ZDVox|s|3qb++ajCBt*ODagd z*6D>g5|f4@dt69(fE2%DxxD_KQB0aeKQh!h`~y(|mTD%rKbeNqZ2Ao_b{B5zxCam~ zaOWv6s~9}YrmCb1_bhxe61vFVt=g8f4STOJFP0LJy(K=7j zXz}41A$E=7%O}klgn>|(0(cwI24EpXNP@1fjJEyi>#Hj8KyPQN<(pOhj0#Gd!#a#6 z7sql|g~c!#2|gB;|4T6(+9?X2-n^k#_Gy-UP(K33qGBj2_@yc;uHKS#s@r{sRgp(1 z0A<}LN$Sxr*ae}h=t-KUJ7tE7eJfCVi4 zJofd_=+uyedKY3|vX769as*knHL63eQAp14z%c7Tb0@RN>iu)w&!Zn`gpo(vh4g5> zp!tKBWoJC+MvYHLem7E_oPwL!z=5t&s>$DN%aIBb$AKebzC~+IMl5YU@?)rlV?+KO z7~`LuSCY_AG$ht_-J-fYPi5@FQi2WMI>o2ai>fg&jaRMB&UYqL`Oe6%d@>_4y3EWT zw{~0oKOx3mZ(z~fm;tg8ujsyXnOGKcleOD6!Z{x}R zWA=7cq(*Qv)i(^kkGDYj6M-qLFF_A=Ep&38IAqjPlu?l->-ob z`;^IYd>u`A37+ zNaX|oOapz%e#K=w$7-QCQqtmbLCE|Qq!MKr$wN8E!Xvnze^~%Kh+yrZ^vq%kWcA;; z6~gZz!{HZ_wK%eQ@Nsokzs91P94>l%XreLt%EWt!bWTi}$ zm^58Vq1(H&16|p;qkY!{tr2;RVc`v2E6RWA@0ykFFt}dhclQ+vUr~T{1RZwi$G`2i zOiD@*vacu3akz!1Fi8-`^?+F0WUp?^tM~r_5H$vLkJgaw6nLrYQtP`n+6Ts;I%;w^ zx|l{rhT?{l?ugFf>1DAotW$~l{n3aY^RD$VKOoo@FS@`}LQa(h_qvHf6iuS(jc zOV(2|>BDSrZbo4tLsdO*su%V;Bo^$2E9Y>sPEs^YYLlCj0w5w-A^2EX8GX;g@4l~Y z(F>J89kAf4h?d)p^Ohw#xzKNxjxPd4Q~@Ke%V4(Kk?}VtsqmOu4`Dox=PKgijUH2F z)NyOLM%d5O-T~RS4|H!{bc~%#1G8z|XPo_40HYH@@zh8$cToh?_zN~Mz4B`4)UJpo zdx_`4OiG83+Opsw<7O#PRhd#OIR-$Sn2Yvp!>U)Cz0q+=i~Y7qVRM4vMEGM*QXP!5 zQMb##z;6jx6mb0$=N2PFIJ^Fr+-|;O{)1jgu2GRsUbfXwldRZ2 zsr_f^xs@FWnrRh#+40@wXm6fsM;Y0o*K)cNP`gd?=GcooUIOdA)cKffTx{&%=W0vi zK)BHN3-Pf|+tP%s5P~V2xZV5n?wUEF-g`q`m5#2w=Bm+^_HW?e)cXer^vnyEUAfx% zDYr|mam6PhBTQrpQ{{{a>rksx!{K33*5Ht3J+R}v?Zjt6irG=9$qNr<5b zf*(7_oaTKP9DUNqSB-}d9jck7U1ELsV`D$Lv_d(jzYg+OmaZKX2(G3v%5OxEBM!91 zpT%daC1a>{L`jcD^DQFeXU>_lRl_T8^ zs=o6+MFD0acdvL%ExHRrf+YGR`0>9NI2&Q(*`4FgebB{*#w6p1b=xL^({WpFwyCkG zd>?Qx-3Z3-Q!!I8{m99l7I;8m)*NbsCMrh%pw3WKpX_omrPY`6bIUv#lf)Se&O7_^ zB5v->^65VFdtT$TXsR0R^j7@`W;)_Q&Q#Kwm<2>eGx*Tm+cC(AA-KEcm3qEj#(FKj&CJHUT1hx3S9mN50#I~0d>WgQrn+5QV^9o&os z4ig_j>NP9JAnIN77#TC~>%4qQDJ=dO^0)`|0gxE|ulNjj+Lp>WWG*(0$*QU6Ka+Gi zX9NsXzW>;@nh=K`6^%;YXkx87((u1EWy!BAskhltOAI4^Qqbe7bGe+tZYH5C8fMFi zef1JIENIT!;H0L8P!d01)L)?M)frQ-si1lgdAE(xc`eEjqVn|v_4h_`sc+3TMk5ne zGDE+m=GFlJZcar*-;X)@L2VbATMKJ8H?PMaqMh@P3pJNNS}QrIeBj|^Y?TrZ&*4sZ zWv}bMeEq;Auk+(4G>bJFJGh2dy(Wp_@+zN%cMeJM+Lx#w=94Cy>4 zMC5h8aNzvLX*18x7r~QJ!L(vO+CI(EfTDQ~^W@Y}v2=R!KW*8E$Qw5#Rvzz~_yn(y z!jPwVW=pVPo^j$@0%Ne1Oy>JF-;xbJtyh}$e^gfY zRJD$bn!c3V1&EHk%oarA$LU}~XIbFe!Is!nwlnHYOagSd2z8#FL>C{6<}j`6V-NA_ zu-=6z(`Ju|G}AuUO9L7+=O}gO_!II+TVt1NiVjc|UHzjn_*h)7%R9E|T^q>E(e`*4 zKPN8rJ0pT&9H~R>r=6i?%nZPciq5+gntqvVC2;(k5$5K!u(_|tr%Lcb$w5nZ{CDK% z<<1Vy$uWw~mCg=%tkMosrJQNWM0C%T7E_L*#AK)DlbJu$NeHvB;&3JwL)5WAMcC;X z!3oE8|Ke{MZetiQ&fS)6)B>h?bNmY_K8|aboGc@Y&_C?hiiuIlH4&s}oSBPvPnz2c z)J|*rU*HFFJyqe0X$BKtM?bb6qhV0+c=KUjN)gY5UqT&)tm6<@!dAHSB&{wG9E$U|;S;N~Baylv+HmDh`8bDy%5_{(~L>y`s;i81uq?2+3r`P3bR6BIGv(}U-u22T-}TF0~(R` zp^HOW2o)e6;SG#T?Nla8E+i-3CoH!lDH~ey!Pu1ZLhH}8~-dQ7+-PT#+xY+jO}ss>dy9~? z7Mv1zd8$6t#*6~Y^dz$WiR|gu4R|~v>U8|m1MEDsxpf#;u2Wwm*Ei`ET z&0cJShbGa$~mY2X**IXeaqsdR#U&)%l}2+ht`=i{V$H9yRrlQF@T z9-Yqa!wdcW6OlOf`e{Ke8SX`+sjvcWQ%|*Yu@Y`V82E`L$(T-5NZpM>q2!~t6uq*q zpZ^kAuV6t(z0lJm(J2{uTs!^MNg-o=JkLs+Wf5VR?Zf_*Xis*gXUNn!T@c)y@wkCi zDyT`22A&nbx=C^+!0Mav{I_)J4(LbRgNTh#~Rh)k~kKAgkvc!*;kKvYPyDH?epNHHf zMB)h~iQz=P9a${xgkUdw6W{xfs;vcl1&Dw_)H2pNVJwKu?WX)aLR-n*A_+YCn0rw} zS)9H5_V3b=BDqD|kq3ZzrbpWles@=`z-lf!g~ER!auvj%y{l3KmHXZSu18&UD9zWShofF+!_*)Pz|V7$?jg~ ze?!2r0zBgzwDRDws=I=NZ?WV|q&^80bW3WVY!`Tmi3-`-vQA-*r2M?OqCHf zl|XZroabH1o(j$decI{#W{Mdvj^lc!HtFgdyQ(u%Mh9VP_6xk0M>D$_C~VyuKvEEe z#Uf~F9RFl37w`Ma%ke1&vC3I!eT(k6juY|6Z*Z$u(>Fm}5__nC8LTKbpeLoHBlu?z za-)D;(kZwJuT=zjLVn6&+Ge^TA1gvIHGKyOuX|){^e-wZC$e6I!G_CNt(6edd zaGcH_7lLJ$w;??Fh2ommwf|^?R94F=C4WJaAI5BNxJ5R6-RigjcVzo*&6-Uh2h}z9 zxn0z*{vd-oGeXX|k#~ugY6hKVP6w^O-tBx;RF4w|m?bt?zExgOO84t|Wp;XqaDGDj@P#z@JPJdMa68MbH+`DZWbBJp}!q(ey) z68F|A4l1$#S8@9FQ{0!l3PHyNIEL6%YvE2EubSE5V<$B43Q!L|FH=+(@W#&eW}E$V z`FO5bI2kc(@W}D*jmrinn1MrfBB#sB%Ct<5KkohED)&x!szQIEI)=7npE#QE8;z+* z)B`}!qj6(`R4l|5^;dFu`DcgTPvOtV@Of^0_pE?c2DJ$)St0?FzLFrqu1z4S^eq!Oe;U{9*U|;$y zAW1|OyzL><5}a5e*-jtw+GK6Au>NU{(IUW}xdT@Qh~68r;AYaRigj4eD+R=5jR*<# z_CLf7G%;OuoJ89tZ_H9Q10Li|V&3<6-dJDxh^98MeIS@XE|+!$l=dWfS4tSx*zYhg z5n@d(@!3zA?bIgq{5B2dGinUvFPP%3D@NiRM-7x3WBUtl1hPr}Le?E~UDv1VUCOvl zAodg_aLmHaVF}k*ghtSc&0&(i->a1QWOPP)(ji!*nP|9HV z2Wj}ML_~y3yr)7S+^;t+ib{glwzO=ok#bG;b@I~a;4wGt1MdXFVErahT?JGD-u$FU zqZg6GV)bKPTacn*@*CvmjHe3gejjr0T8-s9FIy8M>z~lH3=;r4PDO`lFdWB64R+Fw zmh(4Ut|DR4c6pWUTTk!yXL+G18K!MVBm|~^Ocoz~6F&S@w=L*ciq8e&+&pt0Q?Ld8 zE}Sk(capePI6M4>6|jbWwDkom`i2Dd@%Qsse^%BlEUNe+M)kk{US;PDd9*NfrGG57 zIO*ZhKfb=+fM_;3HR^3%r_ey)l0WN~hJQswmrK0&H4_$>T@quOSJHgmK=VSrEX2ip z&M8iFP|MEY3CxWUZylOk8MGF?DDMplOc+ec?i-TImYmh9GeF!Ii)Z50hgImO@d#mWyB35%@5~ygF-={uyt`+C@BeZKz&iyz`T-dY* zEhldUU5holwPf#HYO&z#u5x`obR~+E!%X?*1w^3QoG*H>Ly)~Y0-hr|HqV_(ZQ?Lqql$8Q!kn@KUq~h>;evaU%^-Nvyzc0G?OpjH_FZ|4!o{RRCqedWy&=mOJ zYqzHn&70}q(XVj$#}_uJyAJaCi-Y7o{jM()a=DENnMeJ$xHfqAmmX8WqrVI2BMYhB zA5Q3j2w&%rpfgfWpgB8r79vVamq?@3UV-(}E8#*a`I zna6!8WP5Bgu|K#X?Bl?>|IY2$>}THEgXap=rlzQIlMuQBlCj_0?-q4u+IwERr9Q(cP8Jkb6v+9qydha_|1Safm4TFTf z$mk*Ey-P8k9VQTy7X(8iGiJMI@p59$a9$|F_Ni! z*`U{=x^D=$_y8dLcz5x32s`t!c|46l-g3&*q}vblp%-4`EB{0VGAd-a+(=+yh@;rl z`3Ry%-z$INhg40E+|(LC`3YtN?gU_K&97aenxFPc9>5O&m2O~92DlAz6giW882c+; z#jQcZK+}m2$X0%6e;g(b(LOv~>vA=tt?o)}e^n3&T_SK_Sx{Ieh$x;cd%4T4BGn-E zKqe?mckUpTg{{RmkCa?2K{C%xv%77==<*Czv`8!;>THvCUTVlvD^6|2YV z=l4XBPiuY-eyo<&L!o1@d;Zx|y=?7R)LExqrUz3;MU^`a)M`zxgOAGbfAlR~w4OP2e0 z+@#Bh_www6TB#m&!QGND5FLflL7`?ffk55IpU>XR&Y1e1Q?S_NVGNf$F}QD1c;d72;$KyXR*3yoKG(@oD1dXgGs{%AU#2{;EBs1u6ilAqg|xRxQaj?cp8xwKuA#i<-4SuO8?_)aicZ(@J`Yv*I8Y8=x>FhWFOCWmfv$=# z);FZCS?7<930y(tuZ(~X+E(f_s~8jfy6xMiU%#y0|GN!m)uIa)`V#o6(CaVR&d`Lk z9>HW13)K1RYwSnV&Z#}&qlTyM7R2Hpqg$7)V6bU@`*dc<0mRd_p)vrXq>u@lAM&6d z={7W5$tWw-L6ictc@wOfgZb zh3(dL{9s9&TuWS+zJzde`9b&Apsqy?v6`r5Gpxbs-X(18T)CH%+7f!h>|oP7QH@WK zsAaKg*V!iDjY@^{mq^u;RtzgutTa&8i7kqX*vQd65M};p^NxLQi$efuOZ1j;%624_ zM&%(l31MH-b6b|#E~mO3Y8gNG7svYO?tiXWPK8Y4>A&^=Zde^-cSN0<+~qD|@(W!T z@^xw5u+80;E+;2Wpr6bo8OTnv@(mAcp1wP1GMo%zxG|ddB&*f6v%n9txyy7^DfmNh zLuyIDF2}=E7I~&nVf7@^Nnt}lM*(DWGop6Pu=Y*i)U2+3&M=Q=ENwxLpe~~+p&E=wH}H<4*0U|ZbO!0~ByvE2;ra7S4K_A1eP zjA{A{mK6Itn%eurD>OS$F~YK)xt-0&vJmBNa}mHt`^FfA_H?d8)V ztQWWarh^)5LR)E@C6eA}x7t4u<>qbh#Ge>v+4Y=VQk2Spe_`6mO2nP7wDsk&w z*j`RAg=f&T;Q&HDj1#-~UxR7vZv4ke-)VWL5l=U@r?V_V{k)T@8u*puDJm^nGc4Z? za$pqNeCJt>I<`-5PS5p0>Bf#(qu%R91J7_IW+q|GJ|Q(R!aY0C^?7TX?4RZ&yWej+72Mr9I_x)6NtB>w_Y> zt;`^rLP%hnD{$2g=h}XVb0@M}(|7FlsVOv2@I#=rmk8;XE*jjto1tY`z31+tmv6bk z{FN0!q^Kjc`~i(SbLP0~?FVmIfRRG!r=;;yl`8e=;Hh71nNW&m$jclF{kF5UPN^aP z2RsVm&1vF)TzLm^^$*OMf2x(c*o`jM^B(ntM|+WP%pAbhzD&$Pyr%+lknopG=WFQB zSp-qF+56aQZE&WeukdWZEWg&M&_Q+qQj`g_LMzOqts#|KB4X zrq=t(K>>cPt7n7Es8Ba=IaHW8)Mj_W=wzh3^Ns9hr1b6PKSb_7FD3iYU!_bt2TJzQ zhIBE^Eiam^@s6hRv!a4)xlrNqid_U}&Nk0qO3xn4y~&W`q!H$Y+LgA8%*=nSkavcN ztvx%J0H;7$zmG>t${BfFpHgE4>Z5FpuQd(sXg>G40>-ydZ>+_1zzCQf z*daTRrfi1ZO^PW;3^xC6-#N$UQk5 z&^KoWIKBL_B|2&Bhvj$GJdeQ=3zoUQ+?R5eaE;XyN&DAQw~Rr3Iu<}pK-|3-zAX&L zf9@*FeU?zIxs?@O<@F9UyVH4%&cC#$_M5=AZ`XUCL1lgar1u8Rr9@S;g22H0Na-a) z_%34nXXN~gCd0mN9aF8BeuNmsYdew`uipSx!oDt9SlcxPf9jL0&C9=;)SwGg zbEi~l`+wkc@b{Fww_oSFru&mDwg$7?Y!TVe>UHB41lFc0k%xh>m-OJQ8$7khs|^(& zvT`6MO7H^mP7rzL3fj(YlPoTh1!K=i2JoWulnv+^vLYKH^?50L>~N`c4Uc{7{J0}|GSz>JTzQS1M1%&k#6Fq0*UhxB z9J2ge$KE=3of9lr=)qpzB2_?&!9)ffXL=qpdU;zfkIF?@KY+BulG{G4!VQ1l)s~sLM*vcip~kzpftBehxT_>we~-y>sc*0QL89Ud?9ad-`mRC6cWi zv^~p5#PO9^z(`ShY2-}4zTB_r+2duQEopU>mYXT|ya z&db;I9P>%bKJ;MaV;KCUC!8Rv2$P3{dp)iVT)MSh-DiU zv)Lt$jL7`T%_g3FcFQu*p%~3!4y2aYWiv;%87Al!*i0V53Mh!QZ3qX~G#wm>5C<%A z%P90xV4e-8{;zP799#Y)*8#6?^CrHn-+5f>MPD!LDRU|~#+wLZIcK|7AW2<+Zyq!@ zASRhFR^f^!maokVIYDBk{(pk76KhNhNTyrAJe+3m^jur6EHhz;bbJUFDztdJccwwe zOv6C?JeV2J1-uqyzA#^t?in3y*L~jMhQB8a<9dClYKQ+^6kC$ZXt19t{%0e(!t79v zX9j&0Fqj9RuWb8Tz>g&xb!Z0XBdH(PMaM|&R{4KeK;P=a8JBpk09)_*tFpZ;2aVQ* z$oC1595(W{Zl{gFUq6tzUanqi2sp0o(9zl$%-w)o3cm_cS-;p2xDm32CO1!7c;-bu z$u>*u6$a{lj&~Oxr8g3s@VA)Oi7G+y)}29hR+L&GDf% zm(`C(2V;`+63OA0w!xm@e#fNtXe%;;tUr3Hi!us)QDYJMy=_v!WX zNLm+5Ep>PGGd705ZyEs11ccxQc<6?!J&BLWYT48*76hJ`n71;}y=_wt1I_lFCUG~K2Ys2uu@y#4r6(b=TqZ(JC+$Z>$fDWm5T2rv8b$YUgtdB z4<^@qWBn#>bTKS3d7!#^4G{Jo?|XiJ{qpljV%95$a1Bx1=6bpomRJ*II&-GM>;jT8Z;-}a;*uO7E%WmMdp z2eQtfQ zzt{Y|h0fB0>prz@ETn4okb2?!e1DyitBxtWa&Ow(dA5GuZVKgW1%DOmk@?^gq;zp)rr_)IOOjUBd0EXF{k%<8}e2!coL*@w#{_24whtI)m{VG7{ zfnVM%oJn4~IFFLN$Y$HkZo3&gZZPwW2W2-0*w^Gm@@C<0rR6YaUiz5i!(YK9JBZ>q zw=r(LeT7-Z;ID3ku8}9!8w)L_Bl!x)MY=@^J=uZ5k-R;!VVT;k;79`jD^VmYRlB9& zH__AwPylJo*}(xmTlsmE*VcS*;0BFAFX5t1DFgJLB`fkr`o8=B4(?-S*5)Qn!_AU_ znpQ?!WoNkA^x#r}-7W`uAUB^dI2jFG>}y@mU13*eI)^bB&<3X%!q>%8i0hz8O0diJ z_5SgyFW_wAQev)`1?|r`-q=)++1#4hnciEKy^_YjN(CM0`!Y2lHiszVxj4qNo|9HC z`Bg|>T}6e)=lo>yw-5qt+}8I*w}82h%|tXjY}79Y`WqLfHqy9|2DFfDmXN~YkpZHw zi`b7c8=$~8g$yuQpv(dk<)k`K009BdSlNV04lLWRfI~F7S$}pO)XxC>#LM5%bMRHw z&wU+zKkX&_dsuL@hZ!*Trt`03KScGlidqNEuHGqN>3uJ6XonX4cA4I%WuqU7D+5UH zH5qAm;=u->_Y3ANcp;M5dP2`AP#u3Pj<;%x(OLTX$8%4TyoD2{l;P{heaDD=$%AB# zxoqN}iE_O6^(e=6cl=uy|kdJR~ zF86xW8&`?xwYnpqCm`!AMM1%Uv5KB2nXSFAVdcFHl*`w=fca-iHxn8?w*LOg&Uf1@ zbd{#$)t@oPH~xaVzqPg(a96F%bQ9RB|MX;fJzKap!|+^HWwV*yw>PyHJ}1^QBIyTg zSud^Gd{*K#C_dmoV04n-+B;vi**N1y{QYUk%~CJbT3ra(qVB4TeKF3aXVv*kS;;-1 z*&1Ng6U#C$;+dQEr5?@RWJ~=(^VIdtU;Q54erF|4wt(u-+*82c-S_uCU(@|b4A=b` zzcm?GKw$O+&dWiI>% zT1ZAWK(G=s0$AAs*ZLta15q2lh&5gMTPoMC6%V&ppRNI8aNt-$?=J~6;P;!Lz2tK- zjXe*B)mOtG@H|NEo0*a4?6??|qA4$))w<;<_rk}rfvF`gSSg@2&{qL_^(ph9uYw9zwpL#oyQzjjkq9$f6-KGbFGV6e zX#D3K8v`^hfG$f!*ZW1cgY5r)D)u$kYq8G(Cm ziW@r4P}VFQ5~o*9IpeONlM3 z36!LUSQV_NUN$ zXd4T=)qMa|REZK+2YBS|#P;TZrCewDa9hR*RWL37VK7Sqfdr-LM zW6q&o`dNpyyk&W6{cN|AA8P%4-rnuzwYtp#R&^(I1IqEB%x+EgzEfrBEy?$zwOv`S z!%rbJ`0W<;QVq_x4h}Gr7*?RIo)N6@uyt>bNx+<=^y5?NihwuC6Zm$3kvxcr+>tP~ zz75^bmx-x1mf6eK0%PibHxEcVaCv%b1K8F;HkJ$616Y07qlsUR_c0*6=jVqL&!^_+ zVk}IUoa5&sp7_pcKRp3;Bs05BHnTpOJqYUKcO-4DHO34p{hVBE9-q;vytD;>ZC+*q z@Hyi5VR{6gC#HdsBEyI*FZsHktBh1b#!4c+T8@36MpCvKHzSYVF!=q)dSzcr^;`E$ z?w2#f&w=FURPs3w=VMBQXR9PtNYnc?(jegar0pI#(vc@d%JA&wh{Qtvsc}A*ZbOnzh0GQ4F2}Bg&q98 z-`8}%lgFuv;wm6;ps$xE;miY#`tvbP?%EH8v+=wRwA|%=UrcdU3$8*e zCIx@>kje%e7BJg0{6w-?hS=VVLuJ1Cv3U9C5g=Y}7~i+`+Kq?{{xMqL$`QD&J{lOr zK6{GU!(X?-deE1P2LbLCtjF?xD!8VyjCMoSdR6-ZQMWZ^`%X53bt_kW;v@NSMu@Dl zNDQ$=w2*k@{$eng??1Wc*7CLt1GE^8M{~9UC4H{5TXbu(D?WC|xsAQcZ6R1p!Dyvv z=B21qP?N!5{XDa0*+bYiN!D{+@AEPk0F2nOqb;qnQDcOa`?+skRLZ-!Ar5bQ&NNU6 zq&~o#0FvJ)#CV`)B~f$CGItChCo`;4K+K=(7A)}_o4qW%2XPNX7!uOPShm~7if6O- zjA!M*`>WdnTzvb=4F>qWh04K)sn-+n+<@&gNZmz#4P)!}EzDOp%Eg&5C{QTPHXP_qu+nR!B3v0RAlg-#i zSjlF7W>;L^+0M^C7h7p^fR*^hHAbKq4klN#FR3N&6nHuQWAVEkyT{((xRIA1+LZ^Y zO1BZy$K%@DDD|K(Oul7rU8~M#)qhS|fMR7o`<`+x1S~n=)LfT`0I3IiMruH+B4M|H zPa}UaXscv6U9bvfwyDa7k?zAtMA_ifj_m8FN*EX@W6T|Zdy`&Re^&+*TOM97{Hj1; zP;8Ds;7l_-$>CU*@J<1Nd7e{eT(zm z6|7fvC63Pq1Xc;?c?JBP3H&W)jw5pKeimo@uripzl^y)u0pN2biV<6+Y=XcF5*Lz= zn@I*hhrBh&(=v!s2_z{X6Ak1T2v%um0UwmPBAXgv00y&+=wTTMTaVVhIr770Wq1e2 z4D*FS7_hUhUtnzmmgfM$whu~X+ib;}0;s-;+6Kp1{=-WZtqqy%fXPcMj0z~vzV`Qm zG)!?BBG&^hEPkc+pv=%Mvb+Fa77#wy_AeJ^QXn1ZH9IU{Q}CAyDh8kwbkg^09&7=$*Ix$`Sh>9RnvZgZQQ<(3Sfabe@u4&3dAaxgW5Ki8~GnfE?rB8b*ID%}stv%Yp( zC+o=L5-Dpt00I$l7&wSao)q$?1%zh<7H`+jpnL1p*3WBa+I=0^-bUSS<8L<3 zgJ~WR9&N$z`T2Fo&lzL;5f3=oEq2MhoSS(@;^!kWYvH(70C_aGu!J0qU$zNakKxm5 zjObz*P7>P2u+7WoiC-HR1-<3a{k?8$PUvI$dUeMLH1)kSHtq`y>hQJ4dy1!d+~|kb zETj6z#`7>w!r-}?J!jy~DLc1RveD={!APXbW0To@os;*96LOzPpOf?Gbs5chw|e31 zNa=4{FMMCH9gbNG0xPJSm${496*JAp)P+%fLv&qDwD!yrd}xzz+b-K zcJTM1UDLx&6eAEgU<3l!1d(Z2YvnYUwQap-WJ8#5)DS^vD%Jvg>j%&|wX zmw&Nxrcw-TH8aN;+4>x28uF^AwER8sEoj81*6hS3*=rN6ps)7=UN2hj=28Y!rr{gQ zUL2s_R}3(*r-uN-g?`^ml9}3g>L#l9xE+K4y^QWDAi^n4%}q9lPX*~MQ`G`Q`ur+T zJ_e7tDd)fKH>rJtAOk9q{^da|Z~EHz2qXubX@h;_pJVfn-WOUN%2uxC*t{?Ym86rG z!mZvfys;+|(JJdNgDnPyx3_x~7_v>wsX03gbE0mkZxvUg1~wZ42{(Iw>rdW0-8h`x zcK2*NMC`_IF-%!y$$I}C+bntTxtA(DCOdP=y>;rwC*MC2<84n+gAiQvG11_31OkHw z`;p?dKnXgbHKfUa2(l428ssRWwHSg81A6kFDsg6}c+lq8zUQ;?X6J^0|K2DsT#xa5 zUu#r855h)V_}X=LHJg`sE3kfpmrz!+jSJ0LX<^Q*{X;xbgQ?7|Wk16WW&L&;oVQgk z*Dv>?)<786pXxKo$_a7#w^*at!D$Z&^Fa1$_48;D73lmAtM&7?wES(<&jI(>vM=9J zeLk+ux6dvMoQ*cv?SKwMUa%XN%yze1YH*<0_`Tw@+Y%YD3N~;)*DcCXEdf_gz{&8I z!9dmbK4CbRy4zmR{@wc+(>M1^Jw2YSoVoW)=UiHxHA-KLTjHhIJlHKut(!}?8Gr1( zP^$}=LA>1n4lTwN?6R|sd4;fZv-!rJpYKOJkI2TJ$k4~L?GY^0LG{=d0po zC!^V+_p~lc59ni9$TZg4=ad>lf!+G}cs}E$%za*tgE+mtd^`f*?st80SM^5UXPjPl z^tDG%sOBEpZyc_X{nsU+$Isbsk&knn1&>R2&e*=AUufy;CEM5WmZ0_|*m&*w{LJ%i zU;p!2B7m?yuSj(jRyTlk);C(bnIB*;{LnzNn}EP*>A54# zWFp0QbTgDd+rP09^3pO#w{~x9*bBP(s<(!;OEdlKjmZe=Rh`|o`iy?F{W$o`B*Nq1 zZ{M3;CkOA>tGTB8ohU|MzZwYaWdlTtPX=DK7)-Z4DfLg*#ipKmpB?9W?^L@aB2~B*9}l# zoLO*8!9iu3jkbR=1jww6t!xr7Bik2F1zRjWVLq!#eOxxv>miZo;FDNlpRtR!1uVdC zgaXP1yj6BS8E9q_3V>@je}&1!lCtV`kQXTo_LSA)teB7WUhlV5d#Ro^Ht6le?d^E! zVOZe%zoSjE9{~9cTQ7xZO7Sj z?^Q^8-#tsJQrSkXk!(#gI%Di0T^n^v!mR(+_?En{_3s)Wd@uu}tJTk=EggVC;#2(9 zZnu73ubp2lxNuu_&oKgr^|3gd$;1))*Gkyg5xc;o7S}9jgIGa5@vP;%sd2qd3fE+1zKW`{w!Oq0Dkjq zjdZNO>)7h-VMT_}uKt#GY&>Ihiejdb!-b&RZj$ zd8G!n&(Il5IH|_)eV=a1$6>FhF?_f2+yBmou>pKr@qAiL`<^AAJQEx(jEwD2atF*F z14?yvp>sgnS9zc*90eE0kFB`#!h)HqhElqP3BE6FtYrg+S=*aPy<=QHS8F;Y64@Eg zxc8M_$8>4AI2*BES>s{#!VeKhyLwM;f5wBrtnjKm;%OjobV~->U+6N*1YOFCB#EpR zP9saty6C40fJ!7fhEw>B`*|T>Fz{PHJ}l~OvRI)OiB_JR)!lgJHuC)40)OpHd2JT6 zrOLO1z4!H+9$w-&-8@{`{b(RC7h!n;&SZ#Ilg43@|J1=9NcJ(c?@iFH2yT3m*)FS( zCoNJ*B5$E!M_P(V9q2JjJea0Q3IW;tktEf>PUE7oZ(d$4Bk)`j&|AfydPy7y$NZ+u z)&N!HPgs7d7B0CPGWFXtqXARww$Su%SVo_`_c6}P*05|f>h^gd--1FcyljTm=aJ%+ z11%YVS6RP@1!R)LPd--m(^^qBo6YRe;KZ}#Eiinn;L5K!{>$KZ=G6wsHa8=wYi6`+ zL7>H#vanfh&TcELfxg)Q?;iBE|HksSlr37ip{z6w+9+xRQGaGOGP>#k48%AS&=!nG zaQ#>S;Y>*39wCE6tUVf;)39l%N@`Pe*V`}d~J$+{P?Z9)_z)&Xm5uUlCBUvtjJ zkKIZV<;4@Yp6z9+DJm%;P;(KT+-K}$gY~>9=6tY?Zo$a6NZvzjB<%a=eZ4s*ymXNL zI}dUD_n1T#%n;qnQ)vyTA6IffAnEzp43RAeoZEYjg`lNi(Ks$dno~d~m935Dyt4Nh zx>`lgNbA#X0pFQwY5RM(k-fpvg9!WIbc0D_~ zx9`V5_Ix$EC$5d_@-noGu$z&2B^Sbw)+`AkY>-L4AAE71)q(C`3otf&K;gGde!gV?r&hdn>PPVu~@F4C(EX>PWF6UVeCn~l$f_4kU2w;Vq# z*U$4jPdXEIsBI+&o2%sv=vAM#^77ry=X&7qP0G)w*Bo3QA0y1`JjBja6nqSW-*M{P zD0c6il45%D?td`;B{@{=H_9 z&ss@&Yq)vuh0l)dSQ`wli05CIH4s=Zoh=YpiP&Yy>Gl1Y+Pq2?19j$@Af)U1ab8qh zRej4YfQ)jzpBdX6W9QR4r<|AbQZ~~q;45=CS-Mz@Q%h1f4gB?fzdmo3mHFE){rpg_ z>Ha2#tweDO2wa9kCuVEd!(Ju)*ndyG_acF2X<-`*5X=(Lx_uUDU=ovo3Pc`idhZKcEa@R{3r8I! zU1i9`gQZ9e)@U}{s~oKw-HY$9cmUTpEK9*><)4fB*s}fZCN9SBRWXN=ZXDUoUX^^F zsnD8@WVC+I!GIlB0ySgIz#B_{uhrEz+mgPCR986hfX$R63Px;J_64(~f=oG({T?k- zR11gR)0aVC29GW1t87UjO4!ZgK=+jQuMA7^!9FVt#ws8eoOEhf7D|toiKomf=AeRpMC-T2ebpLF{g{=#fm~t2nu4|64&Z?;m`8V zynUt{^CLn^fclcNoF?a8j-O~e^(-J9i0q@Xq<39EuMKVAgzN6)7{_^FRGaI45=;zg zOcO*qLDH7CAg|!dg~b|H&wsz%D0o>>S^i4(9o=Pp@BA>E~khEb;bf{YGW~ z-syZJQY=RLop3VjkruG@IoID`&!^G$ufAs5<0#Np+&tnT_QDSdNIMnVDT9CaxQH>Kbv}wXW|lfGTY|) z_xjvz?&fY+2Y=UMbq9YR@-;o&L~#rR?wbIW-C|#0HSjK_ECVwg%m*6!X9CQ^0tBnS zWLPA4>-J89$m{ZUnG}mGkEBgirp79)Fbabk?pZGp_J`8vF=~p!6+oq%6mG|4Yw|6} zP`JW@nW=zUYa|#P1N!Z>JQ$!BS0L$T<7mjley4t5qTtgE-Tn=Yc?9yy05KBT12`$9}yyuiZ7dE%wVRX3(TfKrsNHg1RHnw-6{iQ^BmwlmNmN zaM*4Rt@lkPSuU%zp!r&Ibaw1->le%gpq?GUNaAtc9}kGE-L{PYXnq)~zdsD5@@5)dFx$Bh+nE~$ zdCw0nht6PWX?@Q*H(X_d`;_|QF3zIk(t+#b0Kj^8TPbLk;a1BKCI_%wn8-UP=Zh#q znqZjDTX7-H=h~1_Hvo$9R`;q8dJpEo@U@>*|biEymY+oQK{EKeX#Qe!y!AuZ3!wKz5%1Zvyk{SQq-Dv*#*A9waNl28Va>cfanf1oUly zz~h0Fg17Sm*79MljJ`lO`T@EDtiM+QVv#J;$DvX-(QTJ0OT-Sgunh9X3`9vH!N}b4 z_cOy#8Z~~sJZR7tAMuWE(sKjAR{_Sb$9{WM>_J~E ziNhP(D(zEf6Rr%OH-o-*VC09hk&4AcIa+hIo(okwv$J1lw5a zJ<5%bl{wWWR|yy5UCbWO^*t=;0es)^&RyQn&*Q`m?z~d--KQFKL=LdbWR?hLIeC3u zu#f{ZXULg*pc*hZS#}{5=9VXT3pl$CmT`SJs<~K-Y!oM6xkP=98Bi;OZ2(}rIXSz$ zt*?!edsK!?frq$k9PKyVY^O0er|!R8H5yB42WO>hJG{B z#%XrIL>d0QwfD&aQ}c2j)cZQFY`Cw3!ZwCI@DPan!@a1DQ{Et6-x|74z2KV=&wa1S zbr{#UzQ2^s7Qbc0`MRFx_UzT)14Ga`zKzBMevV5x;=9(n7D$UE6&+TF`FnnTed9U6 zl7`oE^A_Mc&dYYg7!KI+0Gf?msS8G=GatjpYK-xW4lXxu#qb`#_a&xBb;mfiE$|`r zhn3%lA)(p#GY{f(+~>2J$68Fw_X@aW^P}x+xaPMuL|o%zbAD+_pxj54Zp)EpWdcs? z1-wt&F1vDmCRd?sto z*;s6-daImKqOz5s+rVnWq$GXa+*K>4u~m!C^m<^Q`(#;wvD@hSpP#+yrteI$?Y%TP zOGIl=vV*_-Rj=vcCyK3PQLwhrBg0$v6;q%ix$wxvslmIjw^S1y(wC4B(vtjw#UU8+W^5 zphZ&wvtqZHtM+|m8N_J70oxEMI4O;d98e;4TRkmwD^0f$GkE~>VRNp;JyRpb@)q*| z{Ix)^fW`9pdao%PiUB8hpFl3uy(q&oKd@XU8(zSK>hPnf_-tRCueG<)PUp*l+&& z0cPo#klRv8$Jnyv8a2jsq@eSXm*xDH=Pflr-3CacyuiNfoVP(_qh$O}`P|pPGrlM6 z=X-xkmULIfD4a~b^$4~M=~2V$<+}sP8lA#;KK7p7*8Y?QuV76j(^ z)7BPg5Eo)4BFZ!4xL|Ne&iS>WnvWA5hVc1Ny6s9n1FRofG4kW<0}p0v7aGQb>X1x+ zOfxa9XOj7{TWGRDF!HMOfY>M(_w_Rqi|%9n{J_USM+j_|ytaLA*}BaRFXd}?GqT@g z8G&wkFO`j9?YzW;1r0N#S}G36Lz-pvp)m({QS`3+1BL8;+bb8 zoPYbR^}Ir2$V7DSmDJWiHQDyND(TDixG^b z5T+utskF==bFMvk1%ji&pi~7g7>iN1{2J$*uxYs@Gct{{Y=GciZEvQSp6Peb^fzac zzrG6i>tipUSkLd^?|r?d*CSC}eG{0IhRQR>4meR(RfMw8Gcipp`%B~)>!vT8g^#30 zw^_7SJ}eqjagotb|B(Xk2h|r4wh`|Op>V`k=Y;k?Y<<3eFSk7`ZyGztfYtRv#d>-i zFOvLLuWfL`PW;(?5-+H*JEY+Hnw`~9lM%#ne@pVyIteg1pjOEVtaoX?E zzmpwMl#P7&I%xsUN7)XU7zj{M-ERT|)_<8=e&wZerKH43D#YwfVD+UnNxl3hIJB zFA~w}v!k-nrIV-epyWFETL$sIR)m&o)EEWZ9>Jq?ihXEO2Y4w6oN2%WYC^(t52^o5 zmGxDE8G9gkY2Pq>{z5KNu*47G3N;P=Ca}JTFga5isI7)qi4a>2Z^6}Bq_496T$7>d z8Ru*l!sGxeBM*v;LPLzQ)Uj2vO5&oJSYf$&$w78AobUfQ$PYIEdnW%#(s=~Ss_czFPe}PQf>?pGUR8eH;4r+bp+R zr}t;q@pEf*cIhy(&^@=k8L9U`?&=R)Q;pw$-u}|94lI3NokFQ49S&QvGKR=v!4)AjPeLP!m%nsE@lFr3#KaEKY8q-{dj4T2eg!4Vr z>7=tN0XmA|+0-0;uQ#ve=HtEITAz12@yjv%5CG-dtv61sIYxEIxNf%fNB?vDJyvOC z`}`eSUB#8NC7wKs?f+ix`T$!G*%>DH1Uv`zDk*D3eSHiw-9N#}J3%y@A!AK(;R|5G)?SvSFzMEMdTUsnMCdMQp*@GZ5Fj(BQP}{nm#E5Bt|@ zym5ASH>~*j^aV;exp28XV9du&=?aEp;FuN_c5v$b9=M>gOtfQ?av3?1-H;ap5?b#HE2*uD z2|eiB1HQR?57_IvfBh8{vtBr10nvIexX=JLn}%LVItm6WktcLS9&J=cvX54^!EQR( z@6$%#g7|&j-fo=NNdP?ozz!V6GQct4U*8zzjhf-6 z^~Pz9hf4nHCa_Ay#YMJJ8waTfZy`IUcsz`!|quVlmq^YoKtSgJ+C4c<#1-?(5CFt)1gNP-|5A zwA=ixUa_Qf_4yWYjpLPve51i-?`>ym7&` z5NmO~9?SiP=PA9@>m1K_70cW4oZav;8%a+7*^v^1^#b=&jW7-qVJP2LrZwFVeOMM-wb{~_@ zw8r3=i$Lape{W9pSD2YXzoF4-K9M@Z<`AkEZe|3he^wM zQI*^Zsa8ZoXj6jbJlNLv^SpI=bzROX4)|reMu}Ng*(=VsTISwfF(wwV)dHDGa4d2v`lZko*XTwTjAXtZD3+6YX`?a_;K5*UfNm9!ShT)r zDsBnoWLa>G3mprr^@WlaTAn2r27abI z_$|wO%)?dNEFTC^i;H}TZW{>zBb&nFbs!%{*ex+;t7Y7+2QVLmECJ2F#Dy47heg`i zgTKHf*aNu#kHIJp`sRV0x0ja6D>0O>)u32^mz(6q{_yoO(E41%idT!5_31Z5830&o z$XOzkH-(jzUfdRF={ANH@Etc@Tlu9vzu<;g!u%^P=h{5XXMo;kfqXmzJP2%uSnId*T&&S8|oNrW_ML&{Vljcm{$4qkT#WY9yyO5DZkgx_Cog)2w z-G(Y$tMSmLg5{Q3A~8a@(Sj#)DZO zBX*lz0bl)|VpLFk4(aoem893L16GK!8);hS%5%+|fbco$=bpHAp4z$GgWKYENo%Lq z=sj`GpAqZ+kX(=V@y%N;OlW{1uW3E7Z9k#JGjxC%6B<0=z=O|G4A;LKhyKFH;`nN@ zyvOrx$MZNB_6kr|QHo~~#i;0vVwvkQuEn?Vw0;j(;zjLL{0xPO^EN-vdw$;Ic^J>! z`>_g|&B1HAITL9iJEB=RGK>!H<4nGfR+Wi!v=HJgap$xc{{Pu~yPjE=-a3p`^PHn7 zwq7ZT4A{_30AJ)T|Nnmk$gSZU8$lq$vMft^&z`DW^wbo|B3Z2JkLj7|1~&HI^V!qQ zVl6I`i*l?-i+9Fiy||mb>}NA)w&yjxU>3O*%GqIVkar5V_}hEmF_y>jvefp*t^qEv zmpDvXI0P(a%uG!pE2=HlZ==OT1sl~uo`CkZvd_rs5A^!9@$eN3pFOwZ;bNqG4t{Oz z^sUWI5qQBg9w$?!#WBXeJycw)0$151xH4PK|Fp^wQgKbSQ%ycTF&ixjT|kN7Op?I0 z&{S@?z%uUbSf|nC?=|=L6ONzvbrd~k0bol)1IV+1>p*clpO+_si{q(eTR@UC2_*#N zxsy0(sufLCQHJI#UGCh`>ZdE0rP3Kku37qaAujIR{zlMV6Jt-6ve4MVbdp z0R@+ZmbwXQhcE|U(zOa`1Bk{NsDN$RXt2cH9VNJmG(|x3I&Ubz!QI05CIPqqeOk^b z#-Mcm{_&J|F3$n{@c@p$AcS9!f7irt*);3pHThH$SA|$9(tuRj2G0?v^SkJM%hUF} z4SA478{*R9t)x&p4*s&OfDvNKe2o|?fjbPJ}cozR$Xcr309Dc!L=5>K)utFmbj(Vn&)u3rOV- z@j5~zk?P=@_$?$ugxWP85NV&D9p#c;aGTJJ?_@t;gW62ief=$%=)lr%nIspeJgJmi z2;}cd#0JuRM%Mt4u_r}^p{k_pjh}US#(fLr0M4M+xJ}WT52y2e3*&PMo3~0keBPwi zMMe`0*az}B!Ah3Zd*n@+f!O8FiBD~2Ws#aIGb!tJyQ6c96PQAuLAi|$g$+iZe2P7{ z2?O3aiPd=|TQ2yS+A%10Tw_ss59A_b8jsS)7D+__TATzzLO41L9xngf9f6+fi`F1 zxJHYAExBEZ=elCy_saEnVs2W1P#gL%KbIcK*ZjaQHzI+IyMgOW-*(g{R^VE4J(1zI zq5_B;Qg9I|-ltmC(7FzJr*1h{p7^CQ(Y2wf&$&@sypq4)bo{)(W5_~cQR?=U0$gb} zFqehSXc6Oi!?>ysClh3;(OS)#m^4^Wf~J4~WJVICceF{~831UdL|ZT%4WPFj0_=lH zNrGiBo6!JeGQd|qIaYxWC5otQTo&XM^=<-A+}GrjL`2igaUp}!(@x49>Sbd}C~(3v zfp4g?waP)`*B`U4?`S?-N%Z1GaH+ogg*t(MJ^x>myiy|gPG%z1Kli5dkk28d1YTB& ztJ!4vRyNRY@Qq z$puW_>d7)KVTNrNpj8mTI3JJ=XB10TKVR|0ohS(CnBqQ(DUOK+Khvh$ABF8%E5vO5 zFISOj3osX3Zj)nDQ4a0a;+VO24+AQ&h)+Vk+Gb+XoC$FzSSm5Gq^{4Fy}&SP&&7`#pzE&lb(s z_qN<1j*HrOa_rjI5p9&GpmO)zPVSxiFP&pjV*-ksqy!QeJcf-o=w3o4o^ebd$G>-R zo;B~-uKvXn3n##`x_T^}5jXg0vG6PNI-HBK#(YY-96X93G8L4FiU1;uxo=RDtu;2M zjW7XWmaNE?7ks0wKUy>*t1I47kzXb@Nt42<;pedAbLD5T9k#iPEBX6f$IoXt3&~+% z#{l5(1_qXJ2&g(rP6QXASA(NUF15+vfRYM)ZbL#{W`W54X@L`+7ZOM^t2&y<072M2 z5I+l;lmLe`BWE@_MrZPI**Kc?!qU;@{z#G~biPbvNtl+nsX@}ubAwtsf=kuf{h4f7 zI&5zbd%Zmg=@>IC$<*+ai@;!LZxFs*(>q!R_owW0=>je@fB}9%O242acT2)|d3=$A zuJ8YaB%afAHbT2;N-{8**r0?7Px#JO&(cb;`J(_^iMWwA?ACrMky_3TC$(q?bUU*T z1LOj(aFC8=>@YaP=SC~Ir8$yW?3ypnQMtN6=HpOlF92LISQ07KPva_doMZ`zoRG;b z?6+~SQoGbLBXhaW<};wu20l=_U!fsU_-wBF9PRSP_o_-jCl(kcu>!Gv_MOO0Q_#8P z{E<9KsPyIm1L#R$n(U($&v*2>x5s;NA~=vPsfrJ9LXLLi@ZeYK#^lL79{jhm>)vrU^1iGzqFW7>mcK6G+k#roB!92y^5kWYPGf6+SJ}% zsG_uLQ0vO%k9 zm|C+==DxJUw`GG0Hb?KKfT%UxU+&3`jGr<6eM+4lGJEvaYXy#wK13XQ9q>-2@U_JK zMi-Mt56^`9A*tYyl8HjuwY5{_Ip@leUsUNQxEi5t>iC>}e_#W~a;Bak`00h5%EJu> z6@&ANKT=qufze@ymdo_dNpMlQay){%`1b%UuS!;Pw7*fI$m=Lez{0ALh1j}7G|N2? z63aUvp9JRp;5O462I(YF_yfyO@b;yu_HZ*m1?=a@ zGpm&GMnm0y_VuGpS04S92Tiki)M)QKfi*&Tiwkt21Qs8$DEPq%Q2=;DOD53OYQAea z6x&B-Li;=PLx{2@8*~J+KGt~sgG~)pp;`ii;frpX%F6?F1DyqJeAXK8!{d|g zVjuk?EMRs?jY-UUF1EDjrRrmDv3Kb~#}sEgWe22s1gM9Aa#=p3c`f0)0Wd-0Hp7?u zlo6r<7vg$hs){!sK5l+L1DtWMq@(kp6)PD|A=Q8MT!kCod|b1AfGml=cDW>WE#J?> z-9~Wxd+y4GbX}K@99$r`;y}1KjLYBS{ zDi3;Vc||;ctH;9PjYJ(_k@Pj94E z=%-YM5#vwR$y%?U7~liFci5XS8H`I0f$9SWpIM(_1fagJI%Iq^if56Ldqil#rdBq; zz%m`zKB$oY5;GKw`MS7L($|@R@3m?nw|$3=-y!$52&>zarp!mocb-naS64P0eCSoE z$i3;w!Loe5cHpvD*FWdtt1_@+7xNQwFkV3=`3afmK4vW!lHc}g{l;EDU**xHwaH)E z5R^=@X=UIS+u9W`U+S(b(m7%oS6BGWgcry&2Pq3*hpms(|#>cq#{qhzHprBB5-)Jn&?L}P%Sw1 zV>0?qaE~HZ#_zNA#)F@6+@D(zbq@41JR3O2r<{%~d=^7%htmd=RNZ=1FI*9L*4Ou% z#G{f0?m`*tL_bkvlOUFyK5!AAUDUJh)vY3-*gIe2%V}=66kUF5Y=0SF|MXEixMpe# z5EqOd!P4fA?}r-S<;^j$(njWp4~9(g%re0zJl20mXaYohwK$-3C>N+U<_L zw4*FrYMW7emRN`?M6O-%PhZeI!sZTjfY0s3qpu*Py3M`HbKfvL&JBQ_W!Q;HTAYEo zq(ZyD@!SVgm>zdOX-ehl zIE*wPOgzSdGJp%{aUi33nE6D9sLzWnYJ)+eqCf-rJK3(13KsRx;Nr$cAFN62Rb@?? z7S>N~0UugD|FsTIXBzcp;SI#OSNw6WFxryUZe7CLc&0^Z=vtio_Tn`{zYs1o z0m4u0dJJcy3H89)FH{wuiQEt$le9ChYbs9>6OgKx--m^GDxIG^7B_X`n_0;XxsfEPn3te_6CJ5EQRi>Hqt82&S^ zqx4FEe&8*jYWSrlMwW%iNz47SJ=^m;X*5P8zENMEt~ezTZ~78*1p=9E zY=Q(QzPVFwKHFQ-ZtYNi~>zz|L+A@&WkXn4ca$YOHIcUXB?I|+6R_LmvLOivjRz$fdmqSg;@ zZvGY!wO2+X@z!SFpckpj2?F*YPlX)Z;6-mg&Y$@oQ7eBBF7ah{Sx2Qf z*=x=p9wJX8?Ou`_x5StX$XeEw{ZfJ={H?(fW)1}CX|5*xQp+@4|J;|@QgQ0h*|`g? z=`*ebSJm9w!NN%gu1FhCCinN38gY%$F-vTkQ5+Apex1#4Gg9fEFu!B9bnTRy_7O@w z8X*+_jf7iJQ#J?Pozs)2?niQ(-r|`$Lq6lrG8d{VJA;JSW!iqVdgJmlXh+_nY+}t< zBFI~y82btqB=gDI(wusZYtyb~7wzJim`24b**TCBUT#o%rBbY?|4N&~^KUn68yvqa zihTBcVAs!FV)5J~iaq-yu0Jwhg;N+dB_6rykmz;yw&tt>ur(o}!}Hiatr!`|d(C<< z=CAwB+(>1p{Ow>m6u#Gxt}vv>-pxWL198+}l8MZItpNQ^er9Yk$9;(u!|IBA|RC+`~QBpMf15@!76{x@=Pq|HWjxON`gF=Bc$V3b&ABPJMYr_m29 zGCe!r%fFVLr+g3pyGk!B0+GV%M0&dSbk^{DFbnW^s?w8RGwasQ-J{S5-b+vT%qm`# zU48kuxV$K#>}fxqr=j}|$xHk=f`}W1`fA>pRc!G1SMbT@xAZY@OB81(mNZwvx_naG zuy`;ni)k|%+!E5g?EUO6J9E@M0vXMla7Xmjp!RIegY4!wp)~8M=&D;zJfnM?mEVn? zH{2Im2AEy765d>|@#&AYlnO^QL)uUBPp@{IwB7-TD=(|ub>SVgb9!&>Llv`{;47oY z-}1bf%5Eh=&8p%HYUZ05ac=VoVYk|HpHM`JM?YS`x%W$eEw>G`d5t1Uz*u}zHvCxB znDN!~RU0Z`C`=}T;oSqam8QK{Y&le!G55klk1**NyzzTq>}|2ZUCiC5B_)?LwX~dH zp#zd={fjsn1%f|DKORf5RYF@L5j9)l4_|>@^#N2EQ3I*A zfHzrExVlwuSnbFkDTc3!-0hav3MnyMy=jYfvLjYt?nB)CWw8;1(auKJcK~htydUsG z6$Nj^<0LsU_@=hdblN;N?(vyTs*6Tf<@|ng{Q9AJc&zw+IW|r8Q=-!_!?Mg`XFxrJ zPSdL`zFq%Wt$@26KV4Qud|I>LG%%xXdE~`=6>xQXWjty0koIWYf(0wowVpm7j@N5& znW6h=@#Gh07498fixzz33-Tp0;?fl7c)bfPWd*R1@X_ymtxt-fHO9_oouq@{Q{X&w zZ`sdIeyKog*n?kZKec!40(0s<9G}w@BCU6I2<*tUDF}kY>gFwH>#oW+HPcL=kKe@I z$`xy!q1c=K@*RZ_%DIeL0A z`tf^GW0{SVz}#u(Cu7V5jqmWdUv*qg#m?mMr*~w%!WT^kTD)1m>auQ62wyR;F}B;) z=Yqc+(sC&<-I@`Y_w*G6sz-MAdbp?3=vG}>%;M1V*=^OlE4Fip&V-hHk97fPMrBAu z3@Z2S((c<{nck-2ZIU7Vmh9f@<7E$VSBm8Kaj(m2&(d|}TDI^T9q7&M+Pjfv=XT-x zAmlHRu7M?FBfj6hYjkYBHfDZEopCYv-JYoroNQVx>UyxYBQXGv;Ux?9oxrHrs|GWW zqhP6`c8i@*HS)}&t*|MwWq7r2eUtO?8<#{I?fWvH{{8ebb)C=w!;b3AXT0aFVz}6` z-;3y9q#J5DyO+p{g*V7xJfodWdo1^zY<{udDptw3ROPp|+A$3_daId@$!_!g%=-tu zLZ=y1g28xbCm}?#lL4GYPu!*ik+=+J;g44xH&{PnU&^&Uga-YnJy5 zpT(Amxu3rIAjUO=$S*sntA8Ah(JFTVh&uo1M+o&~pE~I>YiK#n4I*y~YG}W8?m=I;dIDWBHSKK8%gmaK*JB+*D_Yl(9Uq|iY8HFQRy zP2DfASOOcWIq|Cv9~3X)J8H)zx)I+si4<-%uLA}nRoS+QZu7E0hWODQd`&Wab`x+ASZ$w-453@A-m+OUi{8BvAig{20CXXgjc7Ny2$vzJkiU|c zd^n#y`&hl4QsKwnFm!Nncp$*_>)bdka4Q6t^cJ(sYfMdZBKoOC>+}!WytQXlB zhMMsgI7*fEI8G@d(Ydes^~9qdJ&Rl?2A}3WSRaYhkn@n81vf=bSDixlX7iCC7TdB{ zQ5vIpKSb&?^!lT)Q#sa`&+8n>Z#^H3~CNpLUPQ|9)zP4idjAdxRIos z+`qf*E4|s0-~3YtY*3}cphQPhM>|a=E=QE!YFCyDZZ!gNOH74@#LhH%7Qm`qCE41y zTDH|Q<#-4F1$}LO5$!=-H`5Wc3t8Vs=0r7a=bZwLL%S0+8hfspGe`~0DsW>Yr)Fm( zTUdqnA}Fmv-#Lz4dq3~XV>mIg^1v$Xa(L-5l}CSXyY5i7m9Xr+AgfoX;$vrQ&=}gF z-M_!5m?QY0d8T*J!0w4?kX3ofEP5~GIgbT-lgQuB^LUxlJtsUXHk%V(2;@%}O&HaN zS**U~)cGf2WAgCFQpL`pW$U- zGlnb_d439CM8U`a0GU>aNi)3v7d#4pb?inWF_aIPs%aKO)#X@{y6XA`jEK_AY`lF= z6*z^LwG#cDtQlZ$BPWYwv;^ zK#^r)$$(d(CTzE2Z&Bo1Tr|3P5B-Bu=^P2neaR0KQ-rS!S3q%Q(%0$a zZ&fyS@7;`kR10fLd-cH=?L@Nx+3LvNho=o7VO@xZleLDf^IOAq$#)x$r3xr&nFfpM zKpWmOMvrg2PUTd4la37u@3`D?YrgMEDAFev3bUVQef$$<8t zx8V6Mt#O9pC$`iV(yt5rG!3y)Y(BTuhW1u+>-T^-`los_MOs~kSOqZlcs(N}jTMKx zVOlR5l=HxQV=3jSdRR^w9{;orGP(@cdk@zl+e2lCm&*@Mkd$+bvU*DA-s33t+vg$x zlH&A!+vFp2z}$bpD|U7pd}Dwt=-m`WFwn*&to+KDvsVw^^Tarc%2R~NQFsomZ&(mr zLUq8!R7=;!FSYkv@Qrj{M8!27Eu6(-Xme{>a6Uce;<{7AUyb5Ss?Op=f@rwDwyopO z)5UZ%wgF;aRoYtG-!m{r3rQ=oxMK?Je_N8+?wa?t5dbhM7yI)oUE?~J(b1bM-9tu$ zT5%>RbmH@X>%sY!9yc~L+}3IjtZPmpCGOfPsp3B!=7X7UJ$m;*nzynp5)xEHo1A_n z$zoDQBfJ=;99;nJooX^o&KU+&UR0i09Q&!GW?=TiEw$RiO&s{Cqpn3oa`5B8HPt zPx0jE{^`*UoGqi68xJT5W{61NWSbs!;n5oHyRR}(Jop4FypL8RQ{6tNSs}51m?YDv zk%M=~9miR}u`D{?e^2IiCOKYzqoc3O{lrRMdlqn`dbX~?3wVk z9J^i7xQ@=5vzBgRK~IdfDfP#ND(|1Ce`y}*QawcRr|ckj19X<)E|DBLTr%^yH0WWeF?ayE_Mh?C+ARI zZNXt9Q2j}6-Bh$ai2I4W%WuqUq{vxqe0O^%I(fK`rq1DlxR0b5mXdC}d4-4~1djgJ zDYq+6K^o4XX~JW&!jCjXJ- z-lB6XcCaD+$!VxZr^Nwya-HThEKQ*0F8*R{oEzo)CF^jJTaN3xkzTF}-?(a7eKL5lkv#V*4Y=pxb=aOwRdLCZ13_aj6bT7Pn zAqenhA6{SG6T2bsDd4lTU_JS89YObk<7%JMJ>0uB{U$t_bkb>F>A+b_NGS79_m}ZQ zM#Y!kgpC0%mTUMf__&E{Vz=Ad32YD9T7y`Chaq7XZHQB8WRCy1X`*BMhE0b2CUud> z9LRy#+Msvh-V>ax)^*L7TOwl1U=Mk#r9cAd0VOM1!5%Kmb<|9l<9V|b-ZIUgOH#+@#D-< zN;&o%&w(c14m5NW@BVUqD@+b6$fb|MGpZ53x~tw?F6p+IaKQv1mlid}tCE0zt{NpOzCjR(e(& zFKZRQ;Ui1~!twdWyZsQ+Wl(@ zqC(+z(soudCeBOK!>cf6Yb-e^@o!8E8XCB>gC_2clozLs7l;P)hl6x#q4#G^xG*^5 z(;a*10tU)YV|%A~w%xwJkb>}UG$?7WE7nrLt}n((C$YBUvKV&oTUvi&=l`pdKPI&j zvC^c}qq+4Nf+(jOAzQljDx69uAt%jS?aNayihm>>&2N~o${HSviYHVrEB43cXr<}E z13A{r4u7o{%R&}F|)1D#XfhM`Xm9Q;;tydrz|4(4^>mcQmR54u=VHF7ku^%*W) ze+-%=Th3YmZk45!MnSBYbu!lnzHzf9vcs#?oLAt;OBu3;&8si2X;fWbut=P>qZ2Y6q1{tr)INOSEcL|N0(KsGHN(}-1QGLQ2shNwlG-^(VvGW zioOL6f*;NI7!BfY(iBbLNU?X4^)#Y#$P(_ZiX%j_bKQ?0Pwuj2XMhj~K`{gA%3vxd zQ|hkF-K_BSna$rKOtF629Q7?Kr`p)`f_NslAhyANQDo&wv^-M}VAm!O z&>YG=g~j=TNdhL$b$sKA>L&#U=&6|@|58H*{5f>{5;KjJB%3oVxW-ktW|*auD7_Ur zkeybj#47;8Qh=-$EQS4m-U_wfTc<3*P^GWhaqg@(>3>C`onG?7BAs1ZBw$t-qHdPi6 zfVK#faz3ofnlDvwu4_6{Uwfj(8VL=ID!(H#N3?Z_Bfm+g@DCS#H9Cix9BvB$$QHFf zq;EwK#)(b1vz%1yNw{$ymmQFWXLv)H@kR-;HyV*?nZ7m{Z>8L(@$uDuMtg@&8#ssd zKmilHF?Rk|Jr;xl=ds#pgp)%?v}O1IxK4qI?;UT2MkM5KNi!{tUC=LL=7jc5y!YG* zt?`WZ&&2+1@6X%5aA$#UXGtG%(l5TbK!~(VWd<0rwW<3r1y4cm78GxYPpePhullSE zE0IhHd!9jyH7V#7U`$SyQ; zu?uoV9N{whALG=~I6l5pANnXT)cMd_xccptP_^Qpa*OIS%eYqB{KbTBREWk{8J)5X z-FlwhHQ20Lgs1)X6iZ}imKi|3PYY0a?MGS`x~=>mXoF2=zH@`vTHYJ9(P^L2Sx%#( z*&0RlIL9ab0fNYo{mN_O)V?(?=fUpz-u%Yi`Cj@&xrIr?sIp2?lbALCy|5tsmw>23 zin+(Zp>0Sr2h=1Q!efmSGixt2CC+JN^!6M?8A$}VMTKzkMj;J=bJkm4l8()db=A|g zUq^%ScdUI*yhw$E;52$!;4ymmM62Wc4&_jA0RCyCd)#uL*#mA}Cyi{FQ`i-}y>s#h z67s0+Lv{358gWl|p6u?I?N`|QBIHQ`DV)BcSg~^X?m8yc7n8Ogo|uV}3(pm# zfbW!|l#DQst|~Xg(SH#R_Cl66yBJ^M){tMkwevXVJo2Mf+Vs&k`0PO|!;RE}4RxKH zotu?}>fa4~781=At66df@XE}iV?i%+ZV`>P0-_YP2MIiPNC>xMdWoX8&AgN?z#1%I zOKVJO?)}TuE^!&5G5tc4AT?`fSVsS@Mm#hJB^8A$yfLuq|JuddkT*wkj}^e#7ZNpg z2~iz@(C(C%F~pW9D{C)2yNJixVKb(^R&Dq1JG3IE>=EUU<#UMbMzQ(9>wbnfjnmAh zu_qTNRX2|chg|~ceTi|v^CcWWD=o@Md208C-)nvGm|pszZKlqqkAXWKvYyo!^*Dtg z`!HLYFP2xSL$;h=^mwsiH8rkpTReiaDm@$ga$K0Kbtf@PXIH4RN2X#^-8_1qdG-V8 z&pV_r5xRi$&I?dYmOU1L-AqFU7>7NSvb_QebBK}Z$gHSt<%x3Gad=K zzv;%*mQp0^8iIk-#rmygz`+kLkaKEf*^ulkX=?c~fZdC2q0dludY{%LbiYlT?m-8q z>bCU_7Yh-(4?o9z2=_!`gZ>HG54KrfbMitBXIC-h%Y+Mq^(C44o5Q4oaQnxLd0TWR zH0CxLzmFmS3QTWdi-JWW*)dg#volAwh*I$gqXbz~019cPo-_)1ZRzs}&Lk1BM~-_pE(f1!>)9<^>yGFw8dN_a{)WO6oL(<*l-zm~kEQtW0)qdPeMFq~K<% zB$Z~z_tb!2p`8vO-BG} zDzu|qgupghh{>4f$fOM<8Xu|PfEi5=T)K+!Y9Xb#=P*9_0-EXh0Yhc7wED}bs;}+K zVM45rd$0!%@N<)r&2J|7V1~~k51pMRj*oBNJ6@lHQzwPCP0!#wop?l6Oc#in?I-9~ z8GL*(B=Y)}dy{!NM0;`OTK5VSX9-3Ca+TMHKPC8gE zCe-69z0{u+k|k!UUEzx_ZJA;t;4aQbPZBqqf2q;$@)WJGdhLG$h4uGfu0oJ^e8+b{ z*mvJMHb*5NM$)pirv__R(e8@tUiaL!!H>bA7bG<7Z<|mlo5QU8U5`OVFA4YODnG>d zTEiCnVC=!;fsUoVKhQeg-A9q} zC3@6XLUDmm$MuA%)9rMm5qPa`R4pNkfSYz)B1%YH@fF(;}wUl`UYlJV<7T*Td z5F&*4V8!o>>uMPU^~UJCrx2Z;zq_u@vJ{VrCp6{DhYp}KI*vlo2bvdQR|iHUx6l5o zpK#9Lv0IP!AlnU#!L=C6Z_ntc&N^+S(%BY}ZU`1-)xpxM|56XX+wPQ7M0yz=6@?5# zh=6}jjZ2OeB&+$wc!FrJBVu~NwE$HkU`ZX)#0v7lu4H|yQ6_Fq3za=4NU%@S1}&_1 z?zO-<=248#h19hZ-@(^!?i>^BR5Kxk(hrnZoGD9>%YoQ2(KvQR#=$ zf=#RbNmmZ{XC@5=XcbMErac`rlX*&p)MO{et@cBSndTd`2;@OO=fsUy2Di14X$Yb* za_7~B>UqKFeItT=aO~HH>k+V)T1fO+cvo=YJUA*231u2MD46My+3in76V|h!X|K)76ZDwfWfK2Grudz!nNzEvj zo%sq%KGKc}n?u(%192N(-c)73%!_tUs!P*tiyXz2zixc2fg)p|_O+B}zjToC++Ml% zGQj-K@T>yAiYC|a=op2W)fXUd(xqrbFZ-8D74>uSS+u24{dljK4MbdaF}}z~mPnPFFeool=1mFOVp<;_80>ppYEpO!RR3$f$Q&7!Rf`}05fJ6OKS zgZYSsu_w#mxw=PHzbi)i7I1;{gQ(L2p%`8hXCB)b{ajLKa6dA@XbAgmjkv@Lkig8hmA$Wsi-w6v?oO-kFCv$_=z#~0gh6%aakvPWekTF2``q2*o zkdFs0sg|D@(7N#b%lPlUnN^GhouLatl$;!O+kcgbbmu#llU8a#d4E)k`a$@ zdRLWy>}av$x=_}*wj=-$9mI%lsG*;RDI73zuKbQ3$Zshu-m0q%HRfU5cBH{;=4*N0 z4)z%eWJh}NE9xz!2h}7*j0G))f0ji^oCxwQ1PlKzGk0`CiOj!RWZ62gfZv7_l`e6? z#qi<6vSiBnTDip+RKGDAi8>#!obHp@WrWO*I3zArmloT)Kq$#4XnVqIn(7v0HwTp; zu)exdwQNtR{v>nV%gR=Vs68k^;}*Z!mDm>Dg=cH0+{3v1t;*rQmzP97K_G}RX~C}M z(Z+VLAw5q2tDNTAc8_9WTe#`VgSecQE~6f$=)$|kNaQWtBiu=LpHF&dr;Y~XXL#Us zrfo4NJ0TYKynh;o_fYU0)W=suzqyhkcye2T+AXYq>cMb$4_|B^*cOfoEJZEPI27gFYDDu@@!n1ASCHU%pihCrG zOxiw%WcT5(CVK+mkeylEaG)w0PYDdXtzzBVN4D5$rO9#29)kLmpe6N*s~(=)WJ7&H zgJKH4>>;!@nbjsLLzAHwukTEV&nQ^T8>_5EyuE&lY4OcUp-BEXKQ!_0LmNJ$+bDm> z3*ln>p+IqY22&;L)_~0^8SI_K@F>wJuCnJDh+t8sh$tv#zthp(!8cZ2R#ivmE9qjU z+^(uyIC`~qTA8eUFtJ~mbX!%laJ?z=hZfx2gmU=*_rwJkQ>x&~+P@CCOssm<^lH*u*m6T| zz@d`u^rHo=iajO%J1KYx9^f)2N!g-QOeG$&DwZ9-hBro{WE01uGurpieD5{h`hEp( zd}DRmh?Z7BmTxu>8Or*H#w0#mG8G0)L%6t!r(K^=Zk1+%zt^sLt`ZlIr6HlTYSG9XqyuMt zdcdSMoOpxKZlJ-FhkK_UF7kMH2{FCeV6-2wQJ9h*H1}c{7~UCTBB!krGNg&>13!+= zKmY<7eTsO-GTXfrR5dd(N_+MW{6n7DFrB+CH^N!VR={&1_vc-{>^kW6ypuAKRr_GN z4{6$+b@JJU$01p&Wpqb&BP{A2+L$GEfUpj)H411R2x{a|J}K;wGqvJl1bgK0L~4I! zg-#BXvX=iY4Q=my%#Ua z5jAzzp=6@k%CFtNF62v^0qYNl1)(<=Rgv~do2ZXyQXJx!%RH~%P0`21`_>~b)~6Z=f}I|EO9t8+jaZ}Hi#B7p{!{K(DlFNuD0)+NDd!a-l`QEz1tVpveFH<;9_$3D1RJ-76k;q2HZ7Tin!ko zx-c);rM+(ruxg&=5h4#9L`%N>UIzi~HwBQVXg#hM!B$(!`I|+Zq9!iQ-{I&mP-b{1 zfBpOF$u@F()YiKptdVg zv+9q{gSWNXW0Td!R6#rtbbJ%15SuCwj7<7tGGwOnK_zTlWBEi$ur+iQmj-pz?hXrc zy~OL_9!xayQWFS3rX zeEEp_w!968z&*g7XLjXz$t2(H=zjAdzTpQt+R`~yn8BvEVjOm@uX9k@hy_xJmtlQ2 zvF9k*$=WTvvbyiU&txO7uQKt~LO+XpHdq(;aRL{QBZFeCXRG6UjE!z;#Xt+0s~w%i z;WhXIDum+7@C&M*nKHXvN+$NZz;+>8OOG>k@iCJQyN6Z&8ReVUbf$mk5y@6b{T-B; z%3Yiaq%l3~{52jVAQ0muMBz?VPC>MLwu?ALXB=tCpGBfWNQAe$Ho1ZM)&dHgcmt!x z9Ul10KZMJ63YtdK*shOzu|7@sp9VYvZEDr*9do^f_!XNh)KI|GK z<>Ua;uT!L^_x)twwZtRO!cC4OeX3KY1&Wvso7PZm=1zHrPw`!^JhJ8sG9FRmulb(A!y8M1q;eBd*ArYOn(4Q6l1@5KZPL*j(M4BsT& zuVoSP)35A{3hPT!(Y&|3B(z$mPhFM1*@sG!2qnqrWdgyxthA7;UqGJok`1`qxf}C} zlFbuSzpqBmpuQ(ug)o)>>htlLeuOlA!wUN@5z`?NscmFA_H*^28bV_>a5unftdCk~ zPVO34g#}|G4P=7Pi$ZVr&ejsm8df%iw8I`y6ZVlXT_5ouc6$-WQ#siJZ{*>5T zt2FuD^`4>Lb9>Y+qqDSY9>lZPr`?w0`FCX^?9Amw>`ids5?}NNcMN^jgfRKZ#!SNS z5gQF*0ulw;Jm-o_Mt_dZOLYS4y**M>6lBhDoV$6$4Q*{I9w2H)*f~+_fdpWnTB)NZ zwuBP{cB(ohHzuyVVLtr4E7HH_+p40!1b5N)-Ma9Dv5Uz6xO2zx*50@xYQ8|~82dgr z84WtdP;2 zpXs9iY$Wa;ILPMK>Gls1Y%K1RAUEp`jknKyYcpr0cA({cW4r4mtZ6N6Pm2*Tid zj0S+jQudsydvr5o$%1)~+m?Be0T7w+F%lx`LvwmT(Rgm)9CbCqKdF&diFd4v6g%j} z)a)`lL!`y~2P&iRbW5qs0b!f6UCnb}RaEz$L%jsU4Yb=B*tF_~W0zY)TCX=Aqi2qa zHr)RW*Lj$4h{QaDg&j-j{dNxq%Ij~FX@|gqO9A56cj00dSozyv__e&-r@Yq_* zu^`UW3@FEn*;SFvSK<@f5&9uFA|tbeDQh`avf)vzkMKmK*{qP-*Ge%#ts*9;9?P+% zBrVU`e_x_Ar|+sB*C?T6qTv%GKV@8q8+=4ENAWV{mfkn}_cMXh6WLmXQ3x5iQmh}I zH#nv5fJ(+mLFmP*coSWxDk50#S2QegoUuyo;HG>LKO+u2_1Dvzd*d9Nnj1NeH^hay z2Zg@RDB-xp5gy~g5SLj>jYm$~_6iF{zQxQkUifl5Y%Lx^I=%o>nvON24DUHgdT6~4 zTP|*Oi^O>DD%hkb)FpP(3~4;W>bzbGT?I)&k|)FidleTSbM;W%1Ir?2$>cd9L)1yQ zJ>wxbT9{%0xgnJ%O{NE&Z2Mloua`$rMU$!2$P}L#Ij-^96wvYpN$kxo>T(Y}mY2Nm z8@ZVN+@xBxNb$|?X8QE_hXX;tP8wqEY?-`4xsX1+A54rgJdsJu(IFBc|2nz_hg8kp z0ojc9zuCUfU*oExl2)z$QG2j*?RWH~=ijX-!3qJoPucHQ9nI>WY_+G$evB0uX4_9f zZf=k3SLQX?!#~l~_tG~ulnbu=&z;TZcQk|#pd)Mh51Bc9SJ@GFt!oRsw?yXa|Gq$Y6Ss3jK`f?o+ugrK_R2*& zG|dmWUd(*9WD;Q^BS%27yF@K*LM;-k7TJmNsGy6jyYBNPvzM!o(t9UOvA%jR)q7gl z9_KY;FLT2{S=7s+ku}Q%^YD?Hwl+VKrAjg0|ANNvg27+|u8SZu0?4E-#C9 zyB3^EwzStWGAK>BfbGH|B~Zi)!7B0->eo4fvWP%Xy1ORwp2RJ!9+~!xEg^*f7~=ba z(zOng($15s%Co8O7#aNfLqrGnR3ieA)VsHt$KUfa@)MKgPQbi&pwfq6;Jd-Jx{ZUG zI`IY_jkt&)&GbQ8TYF;)0VdUnKU0f6dz5^+u}d99I^Z70_@6BAezprhD9V#Ll)d_u zI4?r_!wMtLE8YYyVB0!;cg^TS`+M+Q!AKv4x+GR7EHOP+?lxNUv+i=YgUEcB<=4}O zAD*CdK*BHE6A}Mt{oxk5z5In(&6|2hw+Gh?Vd$hTO^>f$JU+&;*(+`j$PNy+8eyB5 zdXW=`j-3GqONV3~k^7Iyv}$AtgAKfJ5uCuP3#5(4P+mgJ>^9~eV-yWQhnnO<&YKxs}TRn;YtM1F4CbTXuqq) zTkPnSScDd2kUJ7`cz}I5yE`2Qwx@ME4?#VJK~}$wpp|0c#ij9C*KF>~c?H7Dlgu`S zs=mubGcWA}7nCHXZzvJ%i~e0CEz>Uad)fB}Y!I(_;=EQ< znV9ygOlIrkMDo95Tzh~oMMo2Iz#SQO_eRshPb;g%7! zDc*ahLxKC?PMGos$d#>1L#dYxJeHoRXE7bFouJz{LxiLmbSzp{kav zeq8*UmS4(DM3PCd>dhks+o8JP4^3;=QY-u;JBXgxg)I)FMtW@Xh&8)6BTbNSm!p>Y zYez-6vFwe6M=aF+f05KYA>5jZCws}b7+S}F1& za0e+UBt*hC*VPD>D}PbD*C-4X>Z{UaSn!s-rbuoO(=yxQ44;570b5LQnVVAlfh>Ti1*Z)R#S+-PeH?swnM@zJwwobZ zCD>_10Ov8y1yKP@<~yzP&TXN~b)1~1!OA9hH+U_|_S9F$m0gMSTa(Taos zM0V%TgrGMVw~2A+=;xb5;b6>IVaQ3(i#!&57{_V4R|h})q7j)D!KO=6{I=oJaa3*!F)pFm*0v+dbC9%eR< zT;ub$vf=aC@8zSnuxT%^;*Ddsh(+>Bd+8;st+l$xp5nnjJR@!b`UPVd1AGjx8&;m{-{AWuMpaQ60dZjx*1OqB)t_j^obbpmWg`%Ox9ZZcp=F&7=j=->shPWd2X+?zgHdk020|#(9**W?LJm<)!u$)4Hl8t zej5jR*T7lr=(1;@jJ~v|W~O|!g`Xa^TYxQ;&c^wT%Rj%bJ(t)#igCa~d`CDA1I{LY zGtdJ4EO0Fu`d!6mv7IyXgLx-Da3o&N#_RZVNw5=p6qUvIgwPvd*!%om%*E}Ku20&5 zy;aOMI{!Ba*TYhFvlPYX>#tb&?8g>G*PgiB_c!(T+UKqtS5d!%zIR!Rx$}F$ur-TE zv(%F=`~39d=kpu|K)(}X4G8T0-%9{jkWhmm4oqe~`<+1Es{y7bIoy-YEo7tYC>Nj+ zh4<0dwPdc<0j!h5G%37%HwTkE!A!e|t?KhFul*lHUb@OymE{9L*6B@*fRO+`FGC`Wwgh8I;VQ0OYpib!6qg!C1Uo7*{Gw* zU&{~ou5ZsLUnK4RcyI(WfRnU~K&9E%*mkclVy0WN^%<1p^eP5q@XOy`3A6Lrb5EKx z2(c#a7SZs5*RHp)=^6hVotXRb&+l)~S`3sQF}sumUMqbLllE)ba5S)##Mit7KX+Ds z@Rc)kdmV)mj}eVMUQWFF`5v$T8&xX9=Shn*=(!aRXtWVv^!I567QGnQinHat)Q*Kc z{_fji;WNeEI)+|TP_4bEVwY&x*Ls`R_CC2mC_A_-jkodeYL|U}!}0TZj>6iwJp;mL z0vy|c$ccj}Y`!BK`kH`$@A(vGvyTx{N1AiTUzZJ=(~`rz`w=?91bwXS{?)pE%fF@W zUw%$e3D)-yAeS!Wl4wjQ2^`3I(Rsk}G254S0816eI0)sPz*ey7wFB>Gcq+MOuVn;Z zVZ*45N&(C@KyQJwHEURt44&--UMo*$0YTdbQxd@Aw|fb?u=2Ng1LxlTiH4oidsmad zBXZQ9HFb0nc|oFu?EhVjU|M_Nb_RQ!IS8xZB!aEXijn?$)}^Jw^Ne z;(L0Y(P2mU@3J4^4))%d5KoM2@oHC*!Z#d0pW!5W0m96Ha4)#)k$Qm0JD%|Ml7HUd zXC`?2R1i2KjRFb*)N_`S1I`0rs3%< zP+DV$Gjh*TM|}nunhOFQP#7HkcTItSmGp^@Kt&>7_;1KeuEv^YEfrtQ22H&gB_p78 zkK}K!yVE0W6`XeEkpi;+O{=VVMYLDCDl7Nd>h9jc&X2|tBNfP_L1-IT$`ZySLuri1uuKfoqL!;m(|SzKFz}K49@i;#UuSaulnbi;wJ#P z2p+(%uGSmXbNT1j*mDoZ%d^@oHMO>5&pT#I+dHuOTCcb+46O@0)(hY(yg1G$pJ_&L zJ|wT;DIoLkiMOFs`lNXP03ZNKL_t)TYkppDuee|&9>^ef$6AdJ7(-e7r&YWVopFhW zckf+GZ+E087Vg>4H^sucdZ7*Y7>|;c9(&7tOz*S78B1~;&ee!Oup4bF*K$ojFOtr9M&XS; zb`#|MfOJ{c*G6QAWqy{_{hJ@JB!nA!%u@gX(4Se-3uZEz zd%Gl~d6lTwPxk_1?>d52zI;ib10x1Ji8&7m<|THw3H2Lf6?(7E|y*)k-1mM9H3@kRUB|u={K6~#WOy0j&V9XK1ZzKq9UoX%0 z4Nkl8+P}AhvR!voK21sTTXNJ!D^kAqS{u_<6MzE0gT6&~z zW#4$k!mo_Ew<^Z(7vabaRRH~wi=cdlH%81ro34QIYtmzZaM$go5N8#~gY-W3}?Z9mI4sFM8O%5+fS}lmm(8_4Y3E=iI zDWKdgF-H^DBSgmtxXuI5^^zIAprD;s(IyE-132q2sK#?XM+V!+Nrv>$T;IGU1 z0vtcn%)0ONno~cgfk^q^^2`zqSb9i#aFIiH&KLhf?7Jilj_a1)k5e!y$+}io8mQ1`iUyJl-|pRel&5x#CHd^!&SQ_pP4_gMQc} zXX*WI8h6r5K=*r#j6S4i5KEf?CAFqv#@D~4Dcyean^kSruI5AAc!uY-YdBL9=3!f?G z_N*mO+}(2IEf*79{ES|x?eRxEmd=X*NCJ1(+F#)>bw1bANa5*XzmmY8bo{)xlYjw7 z(c5T79EwEXNkL37034s~XUzkgk;E7Q4f#d)ZqM(roRSqh*mJ?^{mra<*^dXZXUd{Lz~F1M0jLfzjgNS^15;@iu`eWyf!stD(&=5hy+Y9 zKI?g{E%QoxFLCA#rSrpEQqj|qH3Ckx>j*2a-&RRJIl&i#R-EJgydE*6 zb@f>G#;ZyJb@N-@(N=J)-Pb&D4_|qV%*@FH_YuVXE(CA}qL%;3PGZs9Ib3{pM(3KF z1h2f81>-sE^)#VS?2um@+F8MUJ9LV6Jia)0$lARF-+03HaP+zh(4Wzp38s~cm#k3+ z^m7XSX$uiNvw?A8Lr+$`*JnldYA8Ew~?Ha+?{s#8wj3Dk?G#S=YKADY$J>B-75(^*YgJxx)d)OL; zbrc%@xnPO9$4E_B(sNd!g2kKA#|lSX_q+(UdK8~&?cv<6B=B`C$IoXtiC&O9JHO9P z__p1?0chgDLj-~|80rN{(fOFPVaEgS;VVd_-t$=jfS`i2dhg|6r#f(L{ibQ9h}6HF$D<0d3${+DU1^&*$gUbH$T3IS{Fb7eO|gpy8CGIYmJZ9k}q>b z0qyJ|O`fU-r?y>a;{`z7(|F>5+6Wz|K<8zFKuC=j>_`M`wLiT}wk2?-_2a?M-U5pw zEvV}i8rs;?CR5w*+Q*(H63~(j)yQBTV^W{p+A`j=xed4DmZ*L9 zlV;fVrD7aQ`h1DcxDStDcd~o&U36fFy}Kuap%UOBUcqU@wh~j`#h|@$YtP0hCZX4h zlilF7X^tOkzr_b)bXqA}ey!3*kykAjgQdT7X_qWR0i@&6=Z$IxzTDtH3Ec;+)Y~ zc!bY*w^;ZU@wPYlJJPV%#??~SFXf+*f~M`E`;mLAtGp+DvScQ)TQL7n@XP$hi=UPWK$ zUQ$3z}Qtbk~#Q@H)R{hX|KS(jICn5@D;XuEJrxY3+BQ9ui=iu zL3Yvp1`RXm+)s}q1=kwEGPZQ>WyaNvUW0ta!lyjKMqG@=$H;~F9`($&Gq|VL)~ZnH zKFw0z>s)9mHh)Z+0q`;}|cEo?<_gK&G8_0M8x-R9*K|ifd1EoS# zCYR`1%d84Jqi%z&%(U?C6*f@BRi(08gCyTeD^kmIKEDlY&L@{C_1gsZXS#org8r=d zxXh|yHHlcQs~*6bQ$p?Dnk8j*(FX>6rPp{nCp3Iu%|G%fi4-53Gp{s_N+1!*d-Z~Z z(3v$!uWjq!GueZx^gRwLqze7Sx+x`mv39nj^xUghDo>^VD6W)}zg95XzE=)lTTD1I zBVMu*>MJsnKC_66ph!c@v1SKTe*v_}L21f$eSc_!;}P{Rq$?bhKLQ!z=j( zozJ81sg>s2{=OCi1H&Ovd|t-p?cch6^Nz}3kee3P^3578ejRtJ+cLWIaUjPd8Z@xw zB=;lqrFr7*Ug05?thvATUbBxqOLCf$J!4yp9b2xLOd3B_Nx#sOm8pqp@g$p;ee0Nf> zm(1gNy4}ISHzbf%L_Sdx+CSsozSm(Y=GL34uyRR6`+PqcjN?KZqey#WR`|C-61)XB zO6rQG$qDZrR@=+hO8AIL_)U! zN(b>3B1oM*G_W=T;;RHhz0T(4eBG4{k&p`XFj$)S)ZMX^jKcPf#0c3nm zQ27n%(a~H8y!0emmg|xb*yj?_81!mEtOeL*i5PD8T%KcXaASANZbhU5V98HO`m?SD zDN#Uuv)oM`p6_de>k)a&me}NSFSJ<4_Sut8)(}?1p1a97ou;jN?fl`?-w80qm}gY}lNRgE)bY{j-gc*ZF6UO}F^? zJN)w=_T2h5-9Kyg-0S#lXSip9YspIS;Ye~M2yv%WnCl(mrpJ1ceadzix^doC_RDSd z%w53y;0-Aj4h-{3uYqUNO7$-q{(!-_v(IPrp9?G3cE7m=uRXptY0)H@1!XPXSB@<8QOo_dkB#=Txnr#4{kgH@^cK z;tf}fw29xojH8tF)ty%mK_uQBX(dVqy}H&026d46QTNOTe)a{V+H4A$jBcw?fssS< z=3EoQvUA74LkCJ3r1_-WM(f5Fp*Q!Ses@s7Q+CMk?q?@;$0nmi)jSwx(%)yO9t}n?+IvrLAErShEx>{%5T$;ouTUTn^>m-% zJ{<2u+y_XB11lj61H`P3;oHJXD_Pe1U>!eWpBoeswuhZ(3AZh=^Xtf&{V{ql_ATD^ z2&k)8#@#X=u{v3}JZ?5foZR^2w#brqaO=2UN`^`PrN$w0vC{c$`J6VrbqBB&C&b95c6RWb( zL~tuXj$a>}eN>-U9f2l+Et|EPGrq}IKkN8;UkA~15*B&ecN})&7r@qo=MKjr2HVe~ zRU};YLLv%#*Ta&)Y~=*Dy>Hp+4EF?f{5J*x2m}!v$Urm;@3A_hvg7-t`)An+uat}6 zoh3+RZzNgi<0VIy3cNcz@5rj1BGd#&LQ)vzGZF%r5q11lVt^(cv(oY5ooCXMKJsgFraD+#Ra z8 zat~imKG`#hJY69Gc6YCSznA^6Clw8VJBlS094RS`?-!Ma>dhqz&pj4@uDpl#?;|C) zBKkZjpw<3bM>sQvn_oy4A`?waBD^JG?60PHH}k)7^lmH>)e+I6f;^4BQnmX zm`5w-mENmi3@z5n%4h7!&5ev>>8&lV?f0b5rj?AqrYFl{5u{-Uf0qT~kH01k0?AAQk_zH)%#NkbVkuyc2*?Cz=gN9! zvhvO|4&qw^wgxz{BRvF`0a|bMEEquqIEi8pp0FPC$T@43r_u2_0CrJ9yYItSDBr9V5=Z_o8P8XszLr96^|?h(0jowMRQz5Z76&(Xmxg0c^c z@^f&YPwrjM48DerFkn+h@r2sG|L}a50o8Y;!nx{Ge879hr(? zpQEw)JIUAZ{Vg%Pmzb?$K8+`XX{S2hH|5#YTO@(6F5q`Oe%{YPKnG0u!5n^!S9i3; z+K8l|CPe_s>wAHb_IqN-X?g>Vp5$!k0Lit$lR9eop7*-lEFwfpjDg{Zdw~rPPNZ3< zRz)4J?#s%xunGl&5MI5kQ&$ zOMzd8DkrVY{hbLEoFPaC@K?r;R(a0^GMu2|fwnwvtOf-jTw7kfomkbh6jW%k(Lo8S z*35gCy6CkcpA5X%$M3f-;3`QUSsf0x@1~uAJ+j^MYxKU;YFLS^OAJJEpBsTEfpr2l zIKXG`bso~&n{@0+KWmcCAO;iEhNAKrQ6ZZ=B$DON@cQL{(lZ#U#WPyq3r(lJ?9)8g z_KaP?y@1q9%mk&tB!H~gf$c)_V-dVk_8$9a69tl;1koo*_m3tlwM3G2ZG#%f%LxTf zXRki1yG;g%P7ESp$0;2=<~aUe4@-@>4s`d(9Qd8SL#lknv;sVv-{9at%W)>Wx@ zVS@7AR`N81K3YY8tlc9l{F03|A3OUeUyqhQi;e_yNT7Q2_gjqyv z@AIXYGeN(AT~nWu?X#7E=2%)vG}C*8C8y80v&&vLsO4-iv8`k>K>@k9`o6%Dw z!#NI(==AvRFkq+Pd>^;x$hd~yx`hFJEZK83xD%~wP{JNsA~=Dr%$A)P!jmM>ZPVuH z@l=iowAN1_ut%u&0+l>CN}ObPF}jYpJTtbd5u&Tt;iwTI7NP2uM#srmJaaiiTk*)R_pOnqqd~=pY)-GU zMI*4Z!X8lfgLeHz$DR`eLNp8zMZNt_CUmTMzcLZSeVevM3ZYQ$Iqn8bC>Sbp?2<`j z$O%J$ap@$_-qw>S^SrM|QUb_b0&;*rXSPQ%IMFLjy`-b2W&z49KpZ^a#6AdqHj#Pp zzC?bHSU*D-@JO+oj~K)L-5%F~?LxN=xyUdM;JaQz0-#McB=&vD*gJdQ@9nsa3I?*O zzX3eSG`X`j4z8~=*y0PKvR&s)dJ?|8Q_)h{xe>fb6)yN^^kjN9B3X-3gMj%0^oqdx zHVkMV(K>;(YwPs`-(t^u&6u<$DK*<}ahQ(VXm@XJB*XROvb2`8`_;ohQnEKX-aq1> zHGKbS`-*VJV?Y0l{i$X{nPDGGWg!c(3%BX0U<=KjJ-$cB(XA2>fUl@02pA6rc*|GV z@Vg|K@&TM+k4upYqg(9IYam#&*Ul91X=|sqCrI+nd~IqmoYkz*E0*=~DRaLYzosV4 zmN+&ru8_;!`(t6BoVqs_{?w#eukpppyV!+1a>p-?ttoEdh5FGL%Y_@PfPIElEG+Mb z@;u-2`T1#|wV8=?bG!irs}LoHck3150$fSp&pv+6?;yYlqDCsHHR)VwMG z0Aa7gEGR^m6?kbtbfjCQcin>n@Q-%~_my3G61!eW4Sw!gm0YjtkIT}^@C zHfmLrY8&d>f`?vb@c3g^x4J~G)@z#|07VP*rFqQ(DXL@ouRXj z_2L;DJHM2Q%^vLIk&N^vRxL7?lf&5{Rc^q?UC7-o?Ruayt@XkonfSL7zM52=RPbrp zXdJ*3qqt&ZhFzb~JHI_!dz59Ty)hitV_Jujl;D+=cd~%P0a~RVfN?oe8E?qNkfZ(? zz%GV}4jUi!&prPV9QXL__Uw`A?Zx<8*|Szuqs{)MzF98V2`uU6y{{C<^~PkiHaLPY ztXNMw-?fT;J!OUrtxDaw4;gRtILa_+w{hTo?cPvr)HkwXOx9W(k+ODQZ_lmIT}r&7 zS&%aT03ZNKL_t)g^xCNWMyq+L-}GdyE1P4Men(`#rSceUM=+0tqsS4~MDnM_!h6Nm z8F~c)zQ4iX@vO(9P>{_#hjDJ^CUDj^A5ZrXyU3KPSr*%Cm8SIB)VNzXsr!%3*<78# z-*&vw4B$1%-(IrTL$LKoTK;)fHKA0g(%bMX$CtZ=g1yOjxI6m^WEnsD-d2uD1G1iqY<;t%vXQ|-K-mQZMHcsnQO%Wni;oSgc1zUC zx_UiJa%p+4Y*x4DhFQQ`?N*cs6HEHiA{;fl>~%2$1IS(iW++^mcwU}K?IWSA&IC@v zCc)ml$zbp7Ism=Xx3>>e|K?A$NC`gxuiUdeYcCiiY_I4bfnMkW3b@lMPU*Z~o`A1l zG?IXcoIU`||8`Mz;qy zTlmLP!3?So$GEL6jFI+CX?y}z7p#pbxwCdh`DRZn{7Hv5rXNlEYWbYl;qA(6>P%p} zNI$B4V|)KXXC2Ylg{njH!fLE!gr&(V=T>=f5NtUO#A`i!%nsYVlE7y_PM82*qYZBX ztdY6B0J=1^PS#TA5Cs4ljG$<27H~`SS%kJmT1bSybr1I56aw13t(mC3nQa+-m9Co8 z;{)WqoxPL9TRSlbUw=W`)$M-K8{%#HB=| z0D$oOyxj`9(}~mCzFpV@AkP!gz+X?gA79to0N@V_K_dm3H^nBfB#hK0(%!?iyBjBj zGTFy!A~-dBT%F&^X9f1EW_!UbbUq^;^AkQgnJke65%dIu zO9-@Eavz@xujBna?71c6<6xYa zmH6V;dH;+p^G@F&koEdpVS7Y~g@>%-xY1;p*FS6a9Kp|T;P)mckC8!_ag1>Gqjs}d zzb`ueuSxF%cof=b(oTxE6T=^pa)TAmdJ-(w$e=K2!(RU!8NPr4?n?T6Z%6lH-9+$KZ9D-M=Vf8OYHvM`@*MAcSflJl=BL|*(0W5ugjR)3QfI@Te`B$@ z=exn-lleXu*xq;(x`J`heo@Wj9BO)E0LsZ#u3R6%reXOEb`sdjom|J+j-PWnh%J)8 zv9rN|D48qE003B8^7_m_YZ$p#GD(|TCU2&tW3qHu$$=CnuPnmbL-fpaK=go1Ug20g z9nJ8(J_QWa`zXmjW5*2&X=D*f61dWcR{OWfGexO=%3US$J#FV#9Ot-spj5jy0BE;a zd3|J?Vm3fJ-biyt@|oW=Pt|m9POwi}Xs$Zf0|=!`EIDZ`6Howpr!NRWdn+T{%IswH zTB#zlO%nPmqrJ)xm^`(m{_RfR*!ey{^Er4>S6@%(KnH`=^&agkF1?c}DgK#v{&I5h zPS#vi48U_o0<;~Y()HRi5Xzk(#8Yu?CFJ{~9^`-|2!VyvVcsiF>vb7s7NBA>GZDO0 z6d369QrB18X-DVJczxH|DxWopc~4N9q2K)!1U#5U+o(1ZMSo*`u1@}F-IIyoW=@1? z63+?bgob4Yy$;&8K*z6;qpy*=kJv>zHh#7+!EM66G}6}!#ywcE*O@=l;RplkdlbJ& zv$He0Z#VHe)Z!Bje@As+<3%#n&Vzz|Jl9Gp`~au_?*H8u#!7owYsdXKz%ygjisL|7 z|8WH=G^&VXz0V^Xy2m~OO^m0<;+8E-w!Wj_@#=np^{w1+Ou`tG`o(fe`!^8Y>8K^Tea_-z3NmW zDiztduO0;o$#xRhMeHEp1&uT5NkUt{zc<<@vsk!2H$4{CxQj3l3+Fe8g*Rtks+it6#N-;y3vug!4c&6_DguAtAc%*NGa_#WUgaEX=JS&8s75v1Vf|5MA26|Pj zAd*kAd{!ppVoenGWMtcWf;$sx@*YrNAjw4Y#Hh4(dIck%IZQmcDtF`YHPNo4{^yqK zhTluOTqEc+)c{(#OK)N=FaVhe5R_(oEPISxom|&PJ(ubiGMdAk0C!qZdC>Iyee^!# z4${OD;8wL^0N;!&4S0shy(^3N%`?+ZFCf$A0ZS4@o=#7VJfiDXE{37xTMa0%WH$iq z=1vo2rByll%F5?8otPHE9Tl=LDEBzB=OXw=kU)pPv`Fr#?76&PEwH^oBaWMxOxmFZ?&YD zbRUzj2LrSPpTgA$9xURS3#oMxwAUZw39aLxEg0r@tjRMTZOdEQ*a&&P$JboI@t6ZgrTh!nft3|y(j2feXC_%~+}YxHcmax9u+gXWie zoaa_H8l1jymb+VvNA|F1?%SfsrL>ATL9}yRphjn1*CKcNI0%?R8(kL!T+!MD#XFuj zDG0?#lA@coE^#5H)D3+@d{5}$f6TM@xJ?+eTa6RsbBwW)Mryb!e=IDGIqTW(S!3Zn z_r|r!Ur_LdHO3RGtVs!8y+Gd+hga?@n0{Zr-?;O~TeM3tbWFQGJ+?4lb}y#~<{RC;Hf?F9^iSp8i)eI=P^U?d+0VTpV$mzkn-W?S3K zId^OaTKP>Ai4nAUr1Z4_vSgS?db=kl*P8=x z$?XOQ00fm>;MK%5QL3%|8`>K(N+g2m3-us~SN`!ePm}WXci?V&TwIhM_bf6ZJ+hz) z+moF1skWvOc&S73jdUBrAkot6EYJ&bWLwe_ztNam(~_#PgsrsaNHf*&zLgpYXR5N0 z6tb1ucoK>^0Q!l*vj(hrfc(k|*_}a>1efInBg2hWb#fc{R?<9>gcZd`na$n?MuJ$1 zCejSPtnME^Nk)3k)K5zoU0Pqjf^W?aW8&H~M^eA{5+1d1Dkk0R*J-3d51VNiU#ot)FJv1rvo07oL;}So~ZU0^OcyA&>B78$94wPp9 zf-9c$U=E5?!eBf&+O<173sbk{y7orborT4*4M&9}1JS2aKaB4eChVknm~@U|#nyp+ zuHQa%{|g4kAo*t?v8g7pt9QA3;$T4d#b>kI*z;_s)@-Ny2!}QkOKSFP`R6u%r1537 z&9*=|gI!=O&32a(JXXh8FNq-8R%H08SEvR8UnI?}owHxfZuQ48PqKv!^o*SJXt%G- z3%2-j5AFmUJRvYnBtkn@LdL(8-_m%dNVu))GlLLQdlLG+kuQOqcbzZFC5?NdqCns{ zE&j4sL}V9V;Oija=GOmk|AIM+gks(>5exI!JbzFuyhSVxFy7b)?l_S0c9xo!*7+No zxLeNQM3vKNc}DI2O20Xw5sVRGJuE+dgIeg9(0+<-zSuA2%c*R6X8T)Wa?sqaqZ(J~ zO&3=Z_+5^lb2$mnp#&SJzp@UV;)!&+@e_&6)%CKGIDvgI})PB3;4p-YtNYhmhb! zA@sVmUGSN83kTE*UqOr9RZ}a@3i(P&SUKS5a?kYjo?wwDVgc+fN}fQ8V0W9j(9KRm5LR3R{x|CyP%Nty<(Xe z60J8w-ZS43ggsxfIRL$2to|D(@pRRaf*Y(P0+r{Z!7uIXsIz^8vbP0jll3y_Z|Amq z=BS@V`f8Nqx9)Ft$e4Nl)UH*zlbmALLKxK97xQ>;fSMPr?7iH5eDtWAE-<7bSS``Bzosvf{!_X4#%+yCe5eUfaf=NBy&|piuVx;_tBhDo&PEjwFHBd8y;YNcbDt zY1xf+`=>qEdr!-$Y{k=VY2)D_|IBS#Q%STiKH^NMyJo zAv}*qt8w}9C}6_U)r;dD++mE17^tF$J`-5u;5^EFR}%Ogj-PWniO>Q5np4i8&wGq! zLO`qdXdMX%P6JToMVmB`2s_^KAa|+hL5A#jpc6m=b3VO9>CwT96lASEp9KB6DEi~_ zCVo@EB9$(}Nj2(}fm9jO_j@}hBzf>C%s7Y)v}uJA?L9am3CyeaFsNE8#R0I~jby_$ zaTtXv%r>E0e=nE8OCTpod-p;+w|;_Q-8I(ErMI>N*s^f^Z`>tbg7+H&9at&{KSyP^ zm;1zLt7sj?z-DB6d_m|06!gAhpD%YL(5`x^($AK}lez*&gSp7hZL}Be$ z6$4zkUpkX%^>08yV*;L3uji;$&=%W>2vOfQy_R>oTc<@p$nGiuPT9B|7CgJpv6;$De<8YYpH}YIbnoNp_)YV8Vj*UY1 zJAC#Eo%kY7#(~Ghg~!C3vp5{U>WH*3cHfpWgm431lv&4cXheNajiLA3dkNam$YDw& zP_#X7JG*{=8+^Szdpjcg_Dth?c|-*E%~WBEj%#W=_WF)}q#>uf=RVNoT1rzZR;=F-xB9Xh0Q?Ri{506Rj9Oc4KR=76>-V&Y zU!3cpYCws^=9H789DvS6OGOiwy;_9~R}%P4$Ip43gqJ`F(636>W-3LHr5Zi+*gzoX z_-BAh(#ZqEt)wq^3cUg28rTUipKv(C=Cl^Q-a4C-UCp9ZP201F+Af3&ux`-KSmi{N zXXdT8VFtxcwRvSVV0%rV&~7L==}VJMSz_KU3eN#Zo40!kXI$6$Y zbZzvyRU{%cfGpn$9bz{Nwk!qhzyL_Or-5|^YwK`?jP-!XNI(#kO_jkVof|35KZ`~n z17Oee)8%x>ePQU>X%+$(N!}?oc2dD-V$a_h@XU%IY9(J=|H&npJW@#>z}X{DyopPB z_AXCC*|Q&mG253*K-1S%$?hHop!d6#qT(PPC;9OC)b8ynE2QCy47`|#cGmTL*6Hb| z4v7H*7PRo4E+;Qz&?sWklK7=b*J!Lg?e|D?`|6DER+isVFv-sAXOlr()q_@DYu8p= zcWd$U8l3#eB#*aCbB6e~WPdT924jA_WZMb&D4nH~T)yveVi?4|osuUUgYv|HW~X+d z%*GL3JKl2+@3)dW!9kko_?F^e?V7glE#&rM!<+z2#$G#`NYd@IovE&2X^GeH`e*Gr zZt07^-JXNPo-MwF#|@Ukf`lWmUtbb5JU(gdx@XG)^kx#th5_`#Vb5Im|DU~g+m7Vc zwFM`slQWE_TK@kK2kdc>&R8?>c50_G@yhMN?FagYo z4)cpO1sKn`FTd(q$^_Ayg!LMUBP5eT%Vg!{vP-D5m-x1xR;smk^`<(Vk?pQIUo;wM zJqPfbvGw?$!R)* zd`eSEuNwsrHJaSuC1|RtS%Y%m$U{#DvetLdQoj#XAX;cGX{Hs^_5j#HnKeBuV9x6# zUIK<(I&r!5bsw3Ml#KxzWui#f^HnZ_Ze!N&oLLJ3sBH8l6A{2izB zhST{>1At2}=G%(?d88=-PCQ4jB^oer-=QR|wO!PDznlu$nv7Wjl*xuQNgHdO4YY8d z+F$^mlG+v0{Q1I_{?^lPq$VEGSb^$BGv2f*r55bC zp2s6Cb##CKaKNONu;?}T%Fh!9iU?5rb37>?INwGtp_BU>z@Q~|tgWQPVfs03`|bd* z$*pYw@;>M2bsy0wC5$(*kNW3ed}ob@w3iQ@YrC|uoo%&8XwZ(NJyXXwql#nwoRVWG zS%;HjZJr(U8)e&O_z@|I5gTsf+H!tT$47({{OC2$@JqbbwQYC_Ht0Q<#JQeW?rSkN zprN?0{T`u}VbL0TMzv7k()E`j?Fh!D#kvtv8@Ij&k?n0y7RDQp3GTVkHs!;>`@H>R zF%ob|GLBoMJr}+(rfcWbJ?WHD9e1y3+H0_v?5hF22K=(OHHo-q5dD}7zkkpF{{i3t zzd%60+07k^4j_6)jL!(+JwkYcsT{|LEQ&sL!M)S`-yK3Y&J7J3b7c|}?d2S;HGyk9 zs5CivF?)ht1V#r(8O0^`wZ=N!zLW4Ki=qoId9-?ZQB3Lp`^Qh2-raE}n8lKjXieEBo6iQn3PS=u>1MN%)wqzha}Z!%lb z*lK{j*WjfmEP9+0UTg(;L`um>`sD^QA^%3GV`5XW|pmfz+6O_S;HN2P{ z&VG&^AlI4{X&-NWg0?3K8gmBGlgI~qcKn)k=5FEKphf#?+?Fxtqz|*7wwmWO`IM-< z-xAcH6-?=3&(u;r4vF$wI^LDoDsN&cqW~Pn=)DpW0m9L!a ztLH1NYj6kPjlyUZm3^2*Bk?G$c5vdP-UL2>z2|vPC4nmh1Ir?j3+E~02a#)EGZ#*; zI2XPYezMg6`K&@#vDV6)dBI;}VrwUZgCe~o?e_^pe>!t}y4Q&w z=R=U#L1j&@TmL5`(Ht%EE>C!0Z}Jmf-2PyoSGC(gb4_?ZRv)?*Y8S z1guB2#T%{5IVZ=-NRomRKt=`JUb+{TbR{lHKzs&|mc7HL1lAIdqN{zJ6N|q<^rR%* zqjnGx!aYLxGrli&-U?%Ws`mU9=<^czaxa-0NgvtTJ4u>1`{nNvGk9uNn8u` zfwOP;q^DL$5ZNpKQ+`Sy%l%+c(q!G_0wOkuziT-=UdqZz)KF zGF8W$N}n0f+n(EdKKL4Jcr1pQ;;(GaZ&9X1k^{8KMusI*zrBexUjjlam|fRD?|%9= zb4|~le?tiGggwh*PJ&$wF1Fe-g}}uH$8ESDV@x1=-d{Y|%kj_dhkq`AO%7)G9>Ci< z-UvqgyIjlJj-fGQ#3dFW`re_R)hBcF83Vj|!G_vG6u?wvTh#Q!9x6`S*x-IBSg# zoWl9;rO|;Gg)^0XZO_DlWGiv!$pWYG(u3eKF{@Fl_b7WcEi(Ro)>#pqfKwKJ1Je+e z#oiwspN&`NuP2}Qbp~uc&57P2NwESnvp@o zM3#FmJ2J`IqyF=fSuNHKPTW}AN!=9iZNYSuZx=wAlh1=_#`0+6to^II^!OQj?EF*4@L#H~dZGhzQ%#8}yvf+KAQtYi zQE3HV9#25fQ1hm_XJvnn6vdu)oBj#yIfOrikJip@kDhO&NE*!tCmZqfmI?0(BAvqxw}doc$0(TPo_A7>d3S$x}ZxnI+sa{(thQaw^m1qyZn z<~!S_nF%BQ#;9k%BNu^f<_|9i_%iRqsUbARtW7Elx(Qlwum0%Kh_5Vs#+OK(Ch7kH z(Pu`ndwM=BbK%ku{aSM2TP&P;xb83gT2g)d7RzKdGg%4)NW+)S7UXRTEHb{ zpZxugdGhx!0FP(fkA$fZ{23|bvnI!Qp^`N$&EbSRe3Gwm9<<=i45g8Qv-QdIHC6kz zE&})1p{(ZIy$JkT)`kC}J$%>MKB z->>16pXQ)$3Dw|ekhfd2pR{mWmJ?wgt10;D`42OY+7|TcqFp@=FN+Ap){-bP*wZ;u zqu39M`$gZDr2+7D;)~zTlhE03PhHsJ`z$2h%vBx zDEC?}g&?Gz8s0iPMj`*=nJ*>2N6mpwmLjXIN$ z=I3k;5-yvZA3gJ0np}SVxBfZX@$R4Z)!H-BarV#Io+HaAVZ?{l6y4GoqxRLh4VU+< zee{zk_r5UT{yM2ZZnh zKx&hEw9xHd(>1T{COJFrew=A`|IKpYOXNHy7oHlTy{7hC$%SuyjeN%7;6R!^$UIuF z-`EUW8MpHay?{3j%x!t=0ww;BdzCdYv|&Fu3JFq!Xz-L^1%^PG!hxU_ciN zmo(4xqSv4o5B6Yk+m+lvPug8wOp9W=^8Q8drnbG77Pl@4OUlJKVDs{G#R|l=3L5nU zwE1{2Em;7q`>eM?dZMyD!C_?-AqM7ysP1RqEuC z9Ggif#ozxyN}n+mpwflD1Lp6MkkaE^0RBTv1NZZ$94i%;G*q#azK6AcKOvJD-lBa5bcVLffcVICf4^VQ=VzPz z0-~>T9pQmtk6iYH=NOSq30qPI+L5Uk zTpwCo`?S~G&`W^YDPX_5t^{mSpJbn){S|Fl+OxFj+~n}U?D{YlgQKE@Vh4F854dAG zNo^;`R_&g^V?*Tl_iA8%~3Pm?W zBH+byBlpc}`tkJM){aZ9#;PT@WfgQa(9yCXz8HdpVwc2TDD`F=}iSwm9e=dGBgNWOS+I4?9G z=l>qr)X;9j`&wep86bQ+H|YQ^z>JQ6_HxS}C?ACWBL@hN$ZQO|f8N&;|6F9MNZ=N{ z0lq)Y-Zr5^jj6PWvGQlxj=#_O-d|M__}9qy_H~*){{x~gv%d8M`s@omc?q5~@#62F zxLiS0`yS6M*C)g{QMK!5hh#V81ym^UJkUyP$#W(%p!|8^;_s=sFsk$Ky1B5HkKXDU zmGji>Js4Qtsdb$icc~|TBXo-A{Ma2VX@Fc9p6qeje?|BAvY0HC9E+(7aPA>1=; ztoQum` zkH^z@jn!)qJ+p?L?=Q*SuL}YYql11schB~LmMQSmH9|{~(d(Y|x&%i$50}Oi!30dD zo};Y~+k~ z-6HS)Yj$JnOV`aSX$8CZj+Fk!-CdTnX!lh;DU;)r;Oxg906?tsS{8kCVdDvzrmi$j ze%Zm;eGRNUUHgF*%y@h(o6GJPkVy-Di3WhB*+!-Pe&2JzeVqglPWJNwTsyVKItVTM ziuBJt1``-^TBVVqOi4bW6b-)b{&`;u*5jN{98rM!mQAE(QXn(_Z*dSU7Kv4EIr;h= zXFRj!oZXK1wJe673YNKGYEdRHYc8E^@^7T{f38^kl^9Sicuk+*E&|KEX+&xX@P}G5 zZq8*f*3O0fT>W~v@Fj4JHP({iZ?6H(Yq;0%LETv2K1Xk~mkh5_Y0{R1ez{pdPTpVR z-aNhN0mlgBB5*0t^3NF&LJ|ynTD(@%Lr>2y4c(=YHK@(lITo~~8p(+J6zHMJ? ztPLiBHD^Hs;2D{Knm*~+({_xg^?Ri-xGeqxHtj%EzEjb3DoOv>J(&DO0>Np?VlXe7 zeVQp&-p;hDQ4|-bN#@5ot46dHWcN0jK*Sb+-`B5g)0SNy*u?w0xdXOLyVrJR>!9R4 zP#2>}Nu+{$mT+3tn%+D*=YpIRp1^>V{+>0eIaqrM4Vu@wXbyb80C)#oHwTVxh?M}y zWXbBVCF9@Ho|XiY7VWdH=W72=aP6ypO-qBU*C~0ab)36dpOwj8Es+gwFyG1-c=v%` zX~6G+8^O`@f?`jj%>V&o9kiEP&o5eLwVtu3eJTrOqx9?69?5Y@reFLfrf_yYysxDI z-`^nmG&eOwjM0zh$P2XZ*2{%7?8Z88t}PRHe9d2Hxn6jsr*evND9!dvIgBgNm5 zhUn<}a;=D4|GS<1)ra~ZXrDEP*ZThjw>%=Hzd-aqE9}2%&rR>ci@*ngqiV%(uKOFA zEhct7`J^vr=hK?3wDZ%#^*r`Ak2OqVUE7PmYpuij4nrEj=<_`;c^lNPDJrcFk$M_9 zJMh~1XpTj`W~S+Qd=UxH1>ZfG{B@I@5@_(E*%yTHp(z9xAh{I0tgf7DcLa@c(V9}L zi@)tu+wOq(b&6eoneF=hTnOfNo%O-Az<`>6*Au`kz*;C&`HIk+iR=kX?$1l7Uj}Xe zL`r|5Ox^9iJKyh|FzM&ER=ARlC&4Kk^#ad)uaoijaDAoyyJ+}O&yU8+pUQ61x;ZU2 zKXW#bbr~0^N{nQ~kH$Vx>(;_}?kMfgttGij8V0N`Tc~GjJ4uCxMzgjbe$5FrJ>j)& zLfWUcpOPA*wEFMdZb-x`Q2qOqoE}Btcb~%9*Qx87O_5k*T^=K`u;AE)2tWy@p(PLwsj&N9g+33r4=S8ydpeZUY#-;FB?M_3Ad(xxi;CiIVt)EqHmbE+xK8{ zUw|x{5q)C?v)^B6NG3G?~%9k2l#HJF$r#gl8RU`|}2@#k`Pdf3&2o6r@S)(fXeCC$&eYftKE* zYb3L$00y20d2Q#dztVM}i~oyNlDb`z&uy7RoPi1uspE;d)7>sAcoV;0UZ!#O_<3Ka zpHRKI0^hCSB2%t6Nv(XFZTLTIvTL{FeO)uA_KIVqPS9^X?r-HLAQDy?1^3g9?xA`I$f&T(=MJe1%SPxfg+V&MgyV8Ku6Ae`*IO#PllN!(@Q#SKgy}c^~42AVlx6{T@Q@NpSf*@Blf)_rY1K1`f}>@{^vd?sK16J!8xyK z6@E!1W&u9MSph(7pS2ZO6+|+pb+h+CtR4tfCMJO|Gu75!SlHJ!ZJPU_2p_=IrhF|L z(OgjY7n>H??RQ^SvgRNu$h~+Xpy*roa>D|`5gm~yes}-8ul4+MFk*_4LX(A;q?g8f z;44!4yf^yp>q@z>%&StzPZM-Dl7df6nDSODvsfOTTyAu#xsAQ}#Bae6w(vi_??Y~0 zQ#VduBNyH}Hw+zr>ot;jIi|!E|LWPAM>LnBxoG^Hezadryk?wQ%u*+4p%O_#l2K}H7F*{@MxIzB%38ns z)bB|rd!>1k=7M^w+fzTUrh_e0*j!7v4j5}~9!*1OX+mXDg#&sgsvT#v6P`h#{pHDs ze2*vs>otO3ehocZ=YA|#p4$uZ33Wkni3G@6aViaf7xlR-?>+xrZ5wuxNt+V(HF>Um z9juA=OXUJIU!O-t!N~pZ9z*Zzvgee(uSX;UyvMVSC7=5Jy2lXvTERbS=T_@uOW{|G zeYEo^$K{!o;q&gF_q9SiYEha?=?N@|AM^8$f}LTv<$Yb-o;6&<^3iafPq@Ao?vkAG z8haiLquJtn`f_7q`r~Wm!dn%{`cf0VAJ+a~$29t&o%}hd%&&FrCW?Q{_mQ<9eh;Vf zVrmfj*E|sNw9%eRv;Oy=m?nWgVJh3{YyvfgR8LKp=S9VaB&(Ze@1#(m_X@iKV?|(V zh;3ijSSwBd_nZb{iN0E^Ljd@?ectphUN%o#{DpW-(mnq(Qv`h9lm303<>=eV$tQ&H z5h1)q2=}n5R^@>j-9wnu@cOT_uYH~C^B-9U>yb?ZznN`1&Owf)3mJ!#2OS(MOc1s2 z&&A)rK=eQR#LmSM1b&7l*tFa^F!ktR0DB6!?pmz7r)o&Xc9Po1qU|mW5mrKL75)K#%FarXw}?-B_HgPsNobo2G^%i^13cPQevN%B3*B5J z%hLHK_*0gcC(FJerGIt`#(iCXce4hIn*KHj&~X%q%dyRr1E%!v-G=wI;#sBPCDQI9 z?8ZthUZyHG2EOn9d0#8pGt@@P`Z>{w-7Q9vBhzHxZFyho+Vt|@lkxvs&G+eyzit1W zSuHgB*{gq>kQ=nADsD~rS86`5p9@>B5A+#l=mdLO<6g@=xu^5o%biDPpX##s&Yy&WbIs|I^Ga3#0_ZScYgc9HC71dJWup=pfBDS+KMA z@A>(gUVg48fh|2>?f=$P{jLYR_ByQRIHWThp^NaQbTqI^a~@XlH!`EYQ>hs<1tJFw zChd@a7~S&^>~zojy4=c>lYb(FA9DftzYyc^2;l+alk(D$7i|OoaNnKnzOG@@kIbgu zBZU8+1DOX_oCWi_o{PV?5ahk)6^tZ^oFqoxw}i1SLM=8J zodDJfR)mqpG5xy+EGrP|+BX^aBEpLF`}KZkfj3G2>s|j#fdZ%MIA0QyphDW zM~kItVrkU(YiUClswb||TQfFDP@}gmxV=5iQ@{V3W9glBVPEU5*2j(jazTk_J|m@n z?^D0~+Q^QH#kf*3MaEcB!6-@HrCuJk7lE(64%-^_2vF8Ou7i~j8(%th*+Eh|KkDw0 zLPb!DzZnF3e(Cn!>7Ms>ZHGVE+YiL}JQuD0n2W%%aiWFhmM8L(VmHj7K|sHIc3=Ct zrcEDbTl@r~H!p!i_S=O5xSs6PCPsCdUZ9;Gj_h-MMoN3}_q>F_O9+Dl}#J*2KQ~(Y>$$U20(<~=R4&dU-No- zHligidaPTnB~|Bl`8`iy)5?20h<&R~mH~C64h>$z?0f&eeG+G18=qTCq$T)XctT2l z?l!!yjcnMGr|9XjN8^kx=Xojq?zX+J^=(=&`i=~W)W4td#N4Fwe`X5J-In*Ywp}MB z4@ko9?P*_4PU&{=94lAz=v{kpm(QSe?OfP;KgndJ^E#^}9iV;k14jaB@$ z2KLCoOQb}LSNsjinZXOgWx&s7W|RLf?5>$^xiA9K4ehsF1g053_#O4+vb5FuJJ(EN z^7?@le5e1H0Wxi0Xt5>@{H(>L-eAUF1it1vtY^HVK(91VKVZ}j4qtyyZVIRlqG&+;&lTQ&>(G7;v@`qqxojE;;S;7w z;8^+pOf|~=FfW?4+8(6n{L0_w>9f7~d)m62@6`c)Dql_S*GiCj2_IpMO{ABwEJ-|j z6TvpsQArR{1>pSo#UIBF{BBUr4{{QE{yf0f(!^k__nLxwkJf6WkVGuD^sX@pzebx( zg-`ZL;FMaez7=3MX2{2nr~%o}0DkPgcV8Oh6T+K04)e~X zo}_|?$2^JR?{3@sTGJnEjdL=l*YXS5=uS+RJr{p>Ti(~&_M9N~*E5xHrWMv3gbCxU zR$J}Ui2fAth)hsGJ)EMw*A}_3mY3C!)wys|bG>mr(^KyCTJ}MMn2gob-|Fm2rd1tt zDUY?2zgmG8$OX~*cR-oeV!uor?*72_QZmWwG9Y7$l#+x0G-Pe|Td9?7WtsiW9 zeYfF#Z4rMxAcWr-6O_ihqBSs(b4K%m*vGZFP&ea32HlaRb>X zpviLDlARvQS}q9JtYq42@_f~zekK&%-#LiT>y-;S^ zhL)IU1>vZ?zo%8xK9&pFx=aNLKN}E2V(*()E%X)5wP0wu)b~ZwV3h=c0~v6Ve*7eR zt~X6yCq_D$(Fahnzq9YnHNKa&AGythSr3@l&*b>zti$)`Ui{tH#vqpeyaIFpEj?eJ zUf+wq``Xf$?-9b=8TgZI5z=?}WVZ729z|or9vkm#O`DeS0*qWhi%a-(5{SNmXo@p- zz2AMUze;{w;&{KfH^m%nGo>xTaw|Cyb#e$Rw~t1yPAm>vch8nwn3Q~rAd8rKE{skt zoL*5bEDLW|bFb&mwWfM+n9q8itj$D*v(z=5w*C`Q3dMjN^ee^Rzh`VP5BS~kN+9|^ z=hSzK9xyQ*ddYi0f8(4tBTi zeXVKJk8^{~7sU8>wr8Fo$jLHGUo&*x<1a?rxC30LB?O0g0{DIorgMS5_>#IKv(*49 zU4p?#4#Pk!;r%{hOb6JbE{bkKVzZ3ciA>w6+J2U88*aRUq(|2+se^if`Y8cCUHN;5 zh0nEYbwnGumv9666#5qXoeZ!fQ$mx`^~?Y62`T+&_Pzhveeb?jPjO4Z%-`=^K0^Ax zNgM3nd+~Q)8~Wo1gz#3tHc2@{w0L=B@^>%(?rRJG{01T1DX~Y7oh%3+{WRlse}d>A z0MGm7-PejM&bIs!A>1<`Yvl%96POpYl8CFPqB7B8_Rm}G(+7dg^yCFd+0Xp@MkUt> zE9HGM_LGuL$;jzwAg}FF-=32TuN7;^*dYu&Kd5^``<<=%D+l@{&cd7L>m0dE1#7>9 zf#1mD?`w&Fo{-XCh!IGM<|6O`a=@z|rqit=OV>^rzCNr;m?2b11bHv z7k~G)S$aDae?Otnq)q#+p2{J|x8)+)KXXxGx8Z$laRxmg#!raxzYxM3=RDBB+60|m zFEcaj#ov8x?VsO(OGaqLlv=7p+V|sZ%m12jk-hl4uPt)q_p>gi)TK`Bzaz8pRK*?> zyH2WNk*VSO<1G6YH`=EU2;l>!27Ryi%fAbCCIaQqNnqGPS}`w_xP^=dgORWIa^cW< z-YK~-tzgGIjvxmk!2o`uVL^5iyevqzjRI0qt4#lLd7>7piOTy{$NCljR9jgpl6fXB=Ek@U5D#Cl2aVm2nY+q zfwX@wyFv2Aq^2i4Igw2Jycd7>b(@ZVYEJkEF}`IK87&aNwJkGMWBvTysqSm*^)v@y z_lWV$JgpNIP%An`6jYB1TW92r_fe9QC{eg>aOQ9wLDtTC-t#Dy|jD{ zS`bg38>7--{Hk|B>rIDN$238oT#-809P|t;CH~em(I(6yBwbr6`euEzOqu)t?yL*@ z+UVSxK+6!`u?aI0dh^+?6MTByf3b$keeG+lm5aZ>BZU7wH{l(G%?9|>SglVddKR?& zyMNx-R{r^Y<)7PFFfzZbHJv`sjb^-&VPE@NJ4gQb(jZ;iXD|2Brb0PgYHpNx52DAF zeRXF3dN;FAMAXt+U`3<)|1BMIaPmH&#wpjH@(Ust=AV-@n_)pNOc%(7M{?84UITwx z`5cK(t3W8Rl&I?X)>ukJpP?-(*mz*)$qx{H2GMIB44InvQu>S#fEWoO|AQ$as80ZQG0M{c25QZ?-Qzx!G@kjYavUqJM3w&lBd zZ$~WalH@_g_j$7T`z!Mkw?F}VH&a@@M+m>qV2wsU=p`z>WP%2h!=C*tu?;d}0KnGx zwc-!Jr--&wa3)QN$9< ziPa&c|Cx)wKRab^#J+Cn+|0DkALfb4w`g_ec#fD%JD=?M-+L3oZtok~@+XAw--z)y z5r2`A!{wi&ai(No`s*)b*So#mmQCLY|NI8_)Os*t%>4i3FYcpv+un8^Fkx@+=O&#G zteHWZWY?stw0u%gJ3%39B&%jZ(m_nfH;KyH4L5 zhCfOtp>2kBD@TOgoXC3;Yz`Xb@w9hB~Gs^ z8|O$Ti$^hFy(S!o#GL|+$MxdxM9=XJDP8JS~MBnFbybl0=LpzlN z*u_3-o~z0USqPj;8Yu3Nr8lrH)e-kFF^BU{&k znhEi#5S%bgF#7?k_0qojb*X)2Q?pO!)^9I#jMKR_+Kj@BzfW^R z+G}JFxkh1t+xy)K;LfkU!s6#ng|go(jWnpSC-9P^vb{|+? z@nN>_dzM#dQ$^(9KaaD9z_m68#)uz+LW%82MbD(mp@)p7f(e`$j*6ZgTm|80C(;}Wt+Ox63^wq@yI2g4Uw#o>LOx>k;gz3RR%Hr{Szpsy!93fAWL zJ*3%8sG~&)uY0o>q>k9d1U62SgQwB{Oq!!s z0r{5if1aBBf|S0@RM1i{)e35IL0Idep;g__6gc0Xn7nuZ-fJvEEMrMHz4_r*?fOaB z^Mer_X!pBjf0%Up{+_4gZ;`r@f96u`ErIOY8T5M#y<5-o!=8VpfuxjEZr?M2p$^7M zFj*%-Q*fwLw`97g;*R9&PBb(8+;8`Fgk3})nFiJh&e|ChSt9Fc*94)JTPH7evst_W zzay!(tps<;Bx+8yJe^~ykF<8uyY#irZB`;Bp3*h6ITc!1StxqaM-A0Jt?d^K_=zvY z;*t<%c9PFGOqm;vnE5bp4{Mt!@$$n7cD4hvwy!25&m%?BM?NP{03Q@eeUFNapGOHq zUuTW2Tc>`G7tI0fd<;Sh&}+`?0Y1NiJzLXXBWGfGVZoVlq&s#dX!M(ww1vF(2@@;M z=b07fwfkq!wtD{A0v3UNvZROI^=(><8%n{qI{p} zK;Q-B+}WlThHtHKMj-kIqR#-{qt+fl6HIcQP5ZE4EBJ~C;T>Z9zvm>T)fLn~2cbW; zmhWvZpc*+qJP@ZB%!Ps1ILDvgS0T>@VCF#Y;YK?pgQy+nL_!4GVVfF?AFl3{X${Ov^9xYgY=k?fxQVf02_UrGccy z(vS6gkVeh9WN-AqXz!l1@k3!w@N{du0&jpWP0==2ZA-gv-CIvGpx5#2o$;?FU?1y* zF2!y#z>Vkt9^SdLZeteF)Yvi6W?2R3(8Obz`Z+hH71o7YxzBko9>hdgoMYyXtl`Lx zE%JRXG3a3iVDFSTc?3|j8bP$ejX2mrld7Bq=Yb-N%?xCF*mQQRYfwY{? zx*tjSV5y~=HB$4G#w$pMB=VJL`&WjH$ z2kynHS|eo`czh)P^L(&ngEaU&493=;JzG<_!Hw(76p`hp<^SUV)LZg@lbVm@aIfH)ia3R%{=-1+GHT}adv1& zQ8>Geg4r}R`45P`GVcE#a=~(4qXf+! zsOc_80HvjYTIc`*de9}Wf2(8h79qR`(Xp|8T^B<(JmhP5oPU1a*tTg7V!oqvwp!B- znhkR%hx|IX66EE5d6;P_Kh8zpsR&%AJfyuu0}u&=fDdN`DB48QmP(?+HJ6h}Y)cYU zQ^2&rT;0SG6d;+Dj>PutD|?tvcQ2Wy8F^0K=u~2fz8-KsduyGUfSxYR7*Mn3z9R<^ zgp(8#+Jfd%)`r)zT06I=bc2&%M~oLM)=q3ljkh_~TLzCc|*uepGMq*<*eJ?-z=w711$Gp8b0z}aw`>B797^D05VjjSzx0UbV zPX^|5(4M~dc7s!rG8a6&OgNU}SpI#^0TVK-25;1;X@eoAb!3cO7hcMgMq;1Kv+*A2 z3Gq4}4&XJ6jhyiw14j=dzyJtJ-97HJI)u*k3Udy6hg|T~;|Zy4o%5&fvtHcy8~4wa zJ(8%aGJJGB z9o!a z+qn&E$=CDTIP#3r8JC+Ke#}YrmbOhViTyMMdB=2r>ocJ4i{u$oO|cnX-_;Lh1x|r1)_E45@?G9;NUIu;%aSx>GT{_{(-u zCo&%pM6(S4-g;wN4P>GEj$0J_YLG?x!@Ah1#}i8v>z^m#Dih-RwbjoBa?T5a&0?{p z&yv$p@-vZQ1GyP(%jq)CupndSH!P-(&fg{j*hr$Np!rDs-s@EMV6Ulxi$BYLX$$J5 z+g!#wq~v;9UZW-ZsmcLMcRG*x13O!^xFXF{lD9O)&U3+gF|nQ-U=L300VPMYV&VF_ z7W?HnVG_CY5k4D^Z_Bc|#Cu*jr(0S{?QgZ$)ZR}%kH44pTK;F{K7{A6w&<| zG#oY!`Pyz2Jm|N%@AiCa`*+r)n8#pZ`Owk4k>|8&@HKjq(b{KAPHsv@9GZ*cZxF)$ zJP7do!dg=Hgom5(*Sw!?_8z6#=B|^Ij?y;s!Y{`lWqu()TUt5y=}|z}=Z^K!+G5zP z=EI{!IIs8{I?pKu+A#`fjs@3$U!OGqZ@w>nF)F{ye&om8_;#y|K9|N%|3*q+Mc~8B zwQ2`5B;MTmi0SX-bZ?JkDzGBF7h{D1e-#G*ZZ85aS%>Qy;^n$|Yzl>7{;d6tqyR3T z^?9CxJ8pbSB1?+ii^S+*KA^22gP@7i%Y?m5{8B|ZBRh)g!;YLJY~=or>pknBkzRnS zlZG5D>l!k3;L+<=4Re>>be&>MAbO8n{LP8<_Jv@ofY*r*n>%c6Vo=*(2~y+l`i`_r z4%t&T^>kvrZzTW(Skw?l(Lhnpe9ZFa{x(?Qj+DU{!Qtm z=YR7&H#$P0-T3zy1O68){l}E8*Z^P@03i+^n%>gGNB6Q>qKUdD{1`lT-n^ z?u->A`GwbdkH`rTZO>U9uU0UYoW0O?X3Brd=gZE)?6=#Fc)tr#eRV-gQzsKz(V$LT zO3_z#qQ)0nZ0YaXzvq5u>QoIYof&+;wSKm>6Yn)3fD&BDXRH~_U*f&S8u0XFNMkjy ze8D>QQEPi?8eaVQw=n(7sr5e?MTI&R;)N4k>#OHisfm}$1W(yJGT+c9doFj)Je}K7 zDFwoqj_C+>sRZ~#m4omYr=C8o&-hll2ZJDIOT#z$S~-0}EdKaww&N}1hnx$(onwgK zUMAJ+iOA5&0cAco#R0W;cb(@I#vPaduMX%ewPUJsGn)pJ@0~VA)_(RLFW;G(&rs)> zT3+P8pB49Tdu(a-Ac~PPSGAa%rb$13?`r0Tz$RdRY&`vYDgSKY4_2(pZ8go(26b#B zr{3Ep0~(0cfqoOjsWLzqc%9MLwf3tW15MWoXKvz4$db`17*;Hrf>`4vNER@ZY{k=g5M-aVPfMFARjf3icZJUCEy;;+v zvN=4W3{WH%huuQ6eyZ}=8guMPTUuEBt*sub!zq)$fL{ES&kZh)Qd8#_`r#Uf$@UWz zi7ri3`*|KHxiz+kHEIHP^U&a3g>lunm5h;UjbG0CRsJr*ZeEeYTA_pWEiD3jxM#q= z#@At8r$Y-9B@8@v%4Y~789OoxjqQWUsqm`>lEFB5>%*ES?I9Gp&Ke}IHvHLsqQw3IF(L%PJXjdLUiu5~tRpj>|J zDE#ggT2>DT;S*x~gVBiIxxTj6FdEZE=dpqWX{R{bZsO59ut)uE=m40bQzzDWA%C`- zg*?F2vfK7E@B&L6r-K0oiTNXGe-ebSiXnj&7mAO|G9xXe>l2fE*<$g+Z*Bs9FSJpE z8u!ZU&Wkov{H&e#t*;-?2l@R!I(cf(u4%#FEYUW#e5$8&-A?JZd#9(BC+#!BpJJ^1^j?n5|*UdKelvdsRP*0xr?8%F>wFU~p zxE89ncajlvjZoLx(|c`mlK!)7sIM7xyhbWXQ!J^qYqqb}r#;TLycK2_XT0vyoa5!j zoHqimlLaz~aik`mn9i!Bf=NKZ_(uF9VWi04x0@bQ0bn%*`+mO19%VP8!Jupli*wXthWr#oYmZ!kKY=QpbOID$Ux;GMG?b$+byx|V5cjeSju z9cuCzRxZ3O_uYoksh1O2^zdH3>lJrf+|ttbZE+O-S~dP|7kJypr=|j8y1!Y@C2e%g z*S_zZN%7l^JKj5Ie|%}SlGn6l#sho_zG&cz^0j(Y&%GkBb*Ai7z@zK1u0eX>nWysu z`1AuyGIuL%Y)2=PgUOF`a`b+t2el@|^o~@mIMx<@<;F{cNx7YHEx%?<5*#m4 z85OOUhfZxb^;EdLHkzH?&$Q8R=VIA6HZ}PJ+jJS_$>ir5*a{9PrcYB&2f!9Iq z!hW@X+k2o6=KQ7y-+mKpEuSk5G5%k()~}?s^Cojg?2Q~?(@U-)_LEl73k^t7pPys^ zJpk8f*Mmk>AX{4m?jm0`MHAg7I^Xs{SrJ$Rg9OE>tHN*U#MpH)Zc4OshjrS(-##G5PYB_E z&&@XXXf+&rV65I=_=5lj*N> zY?F&%1%%Dl@W}iu898HwK5YaPDn)sJ(u%%V+VMS``295h{|)mKL7d3|oj_v0b^}9h zJjq2hui&en|GhZm6pc|BvG8kLy@DP8UYrIxb+L`MahcN~MkQvHg#p=!^1ONRxA^DG z>{DOA;t%T_uJzgI_~$mZwewo)#4Ahu9!`ATrS=gm^vUF01CNfk_7(N-k^uE(ysj02 z`RmB$>tgREr+8xdXxh+6zefmv%<;xSiE)#G+i5mwvpX13#S^EHrpRw>vduq4V@CEdOuD$i5H(@c%YCH5NN~Jl3d)`V{0W~W4G*3l()`S^6NsU6plQK;zd@$hb5AcJ z2*5PVKIqd-ACjkm*RtyjSY>+k=p;|_8h+oH8mvtIPQ~BfE3Nj^!Jr=fRB~*io!%;w zRms^4`g_%Yo7bq*vulfrp9Ygo@BKy@L?ktp^?Ped*PvJrVQNB7Hm(RY+}A>ee- zx<_3&O5aQavGx)P7aI6XJ>Ya?vPfe?=`{|^=}2w=CN|x()s$q;1wS#Vh|K;Jp%=x7 zu?rB|hDT|`J&6?Sc{Gp@diM9TE$V=ueIT`Fw($xR5p@w*PN#+eKT%{=Zp%ND6Lz{&&>3o@2v(KdfUZR<0UV{qdHGD#0qGaaNkimbZ#E z?%5Rk`xpA>+IM<%B4u$bRK}D;YVa&Is2Q zh2iAMr#8Ki5yz5(Zv?@B)uX%Si~wPSNm=Ub$4d=AU1ML4oLQ$1PucilYoDAU4US|B zkArL(&stW?lIDs=E|VvJ|J+db_kOPFyq|}}{=)i0hR^eLD0;x{V4-Ax)6eNzj)TXi zNs)u7pI6J9jK)Yyin_ZV@F{DB3E+`QPrsw22Aq4;7Nbd6p_7^DpSMc*f188Jck|Tm zNHCcX?1Z*R4D=~-j~j<&`6MvQ&MCK-Fw7% zKuXx42wZfmrzzmO4miN+ZBjKwvHlb=2eTx=nqbie>Dqk(-c*Eb_tq5U5`UwCXkpM7 z^d=TVCjqxLt#y00zEfh)y#w(6rGPov_2=2HuWbvtpzx9D)AWPptaY{xePaf@c=7ih zzFzwhziHW*K7rOU8%Qb^tIN(mH(DCgq<)8@X)FC^op^KIYS~5HFF06%A3DIO)dZpM zp?cCR82=T(woQJtguQ;h?bxAuNw4Rx{7&udDX(q;a9T?3Xo2Bd*n$JY4MYlGY)2D~-X}?+iel$rvg%tuF@XBit)P6tCF5!PS zEp~~W?``>R2*9EM6}1nx3c-o_-YpAdhdCGgZ`K4H3?D1?rb)3`Z>q4JrqpTKXdu7# z=-8}I{!4?WTl;s*z9af{n>{8oOZ(B&Y7CHo{KSlN3;y{ad@R2%#{vIL9nE%fu8HNp zt%k>u*t~aty|Y7$2|OR(qwhZ@9vRI^xjk#~x92NTGtpSbzx{@a;^Wf`&au8N=i={w zi$M)Nw#aw}$2VGk-fQ@U$me?OeZk2Qfw3mA*A!Eua}9dyIJl=r{r@QCvSwczQyV(* zqGUMn_VIB5lNzDz))+!k^O zUjkS6=)`-^^H={T`#2f2=_3=py}$9Wz`Y1;XPs9!zHp|) zvJO+J;fjt^kb!6Z#}kOYZr~(x!vDW!ji-B9)SHDGP&**gKoAO86pnt-IT{#VDLa>kBriMRD){^>Yy6zvWve~SKCtGY88@o8gs7CRr|%BZbrM0 z8;YKMR(| zZ2I$iuSuQvS~6|qF`uMPOvGvOBU&9iH1Yn_1Q11j*kf8bZcr$T2;uGA2>g*17N~m; z*Y=tWKvMJHb>Z8l6V=YIG!To?mHew^UjfSiT(7C@T->4$xKDXyn|Ia?n!)(I1)yu= zcnIGVMO=)H{WH*KWgr%vu&>jz7JTL0emlfCEZzo+h* zP(MC0E!Gwfr@Rjel{0@{H2g_0;%gE`BI?BPQZ8z3Tb2zvr0g#e^!u89YcWOp?;6KS z1O7F2&f#>Tuk~;RpwAZK|nW?_=gqx8ibMMgTP0o81 zLOp78?{$EBVncRr1qDQE!8u+Co~}_;IyJdI^Z~%TnavJwT3rmj%E}2?0(kPKurA^qnQ~BUP(fvo#5z@z+{DJr@@IPAlNT z0ImY;DPcGo!TdRB?6y$fZxyUs>KB#n!&p+Z zAZz>Q;yZxl3=DN4tp<*@+*kVNWcX(i`H}v**>76E*Zr*hys_Ue_20q307${$bXzUg z;wWr2sX1(p=lcyz7E9F@w*0$j&`Hpn%92w2)oIMfu!<3X<@xBPvEM2F_>|AP^nB?x z23U>3OYodi=(H`_ywUF&#QwCJrBesjS&FH8_cAzVwAYBOpM9kvqBjv76c)g>ayFjx zkkc%`b}l&*cZJUWwf<&=nZ&XyZ@Smg>Xl4{?ceIU!O=K}qk@5d2k;f^%edsvn+HMu z3&5Kh4>|z&4Iw-ugda2GY+BilauGNp#`~FZwrv`mY8*!=u7!b(L74&$3YJVNjlC`@ z2lzuIeLUs%o9ee)hwB+zICB$e{~pzp>IDgsa&c_{>o6z#?-*5YQUk;iNP3hMgwh46-4x>C8d2Y z3CM^A*+5-v3&wOWP*Vp@`+_Jcdx-~FS*!dDh}P_^^R!f#(6wC?Ab5um{%fYYyI+tz zj%u|po3_k;xh}kp1f0oCx-;;s>jkyRs!lTu;qG^p#YrnoEo3n$)CRkok~1V zgIR#C0j%3&-GD(xQUrExwV&D7a$3Xhjuaky`cPZ#!>!j6J!%WF;-?lM@W$Q_RedW0!c)ro|=Rv&Y)6Tk{x{ zpKG+hZ?5g9d$wdx2lK`>oqC)^Y~jVU8a9#Um_piXf~E^unuo%`eO?FSXeWO)pDL$d zd(`Hq`e!fZ9r4e-N%`0Ar@cLGHJb({7LUvhZ8m|{M_c}7%QG>@8t-QyUyqq}yY-vU zTD)$_|G|8-N7bwQWxo(dXZYyL`19>_U`MIny>nwE93L8)jL~?5D>_ z{o$aJ@AfdTz~Ve8=NXrPx&_%A8s2|nuXU+Cvedr3Y5h^GvG;iWes*zJlcBSUzpcJ+ zjjw1i)DwulfatGTB4F*aA{T$NOu#f{TRv}&i9WEpz}j~H4B#7xzP-p+wzicU36mnR zNlMI0!cWP851`Kw;jsse>H=GXAzNc9w~V4}7HEzZa!(H?>~13(Fq&(vh!7rT=kNec z>&;Gpc#G6U9B}c&B`nC9TbiEeYy6FjXo@Hko3Cd^weUcJ@aj;2iZiutbx?9O#E}1YR z_%v^8fL-r}E)=@Js+TO(l=FUPat$DO|Hc5|Yinq?9ex^kB)k2j@0Z#jvANIuJGavr z#a{ECsrQr~Y}Qk^HQkK_vh;Jq0&bxs!%<0sd*I6!`s*G@He@?Nifox)(ET|W;v zfeE%=*FH3T*Aeh&-KohOLx=E2iH&W2Y91f!ntU){$MUgt%pILr&r48G*;6CbiKpaI zy++z4f3GF;T60}X0j(9++L+9zva6XRv^7fedM!JCgBU-}vBRBVcR|Fy2|8V9a&kfc z-vvA-6Bs@%ACx(r1rooOWyfOqJ6hlu2k&{DF~tqK^hBnLE{&Q=iRA;!pCWrbyx7IM z#T4$JAB-46Z@?`!n>uzzCZ?fJ=4m;ZMZw$i&s*B-sWH?@Gul%B7=`cP`}~Mj16z-A zY#)6Kplx7yot*sTSc4qm=ryQotY?5Vq|xFO^|iB^duV}A-Uk{e&V&ns=9#Zq+{kCsU@|1IC=GOyPfqLxVItYv4T4bG<&t7*l3 z(W7cd$NqX4qgLF7`y9J?8w~l2y2-7^SNM0Fq&!plJX1eEZ(utI#F%A0KLL0U*xeNG zhw%H%5c(I^F9N5zIR5uM@bdvv8L%CyX>q$y;d-SO5=BlI5khhp5qObUJLf&-h7o;W z>v?+-xV6~T4(?G(=n;oB`ukf19P@POTUPMNKy)$+xEd(Xn|9EO$})hIK|oTHsigrmJFlw|?tpl%UF;PYR8NwZi-U4_B;5*hU0DGXOMY+(U zVpt>KO0Z}Zb&@`ys z+x4Nnc0k^vFWaiiE6%?B(>(3q(S46y zvjm51pD%;xQY4NnpzI~o!3ad#>qe;iei?y_vdTxX(cu$L`)Yv`$ z9?wYWD~NdUcPkw5_qkcpZ~dcYw7F}_D#3e0RvP>Qsz zws$%A>sYn^`?d~I|K7`4L&qQWWE^)rU~8>70o>Og(H~m^oOyv{tJhL%4Xkyzyg>-> zk*9x)wyX?tEd3BN^l+$?96@nNTEah~Bhu3}T@s*&fkSJF&4kKn)f7XLYRE3^7AGgc z{dSs5I=mdTPo1Oh0eqRKfY&anjszuJ7Jtjs0`F?CL5t)hOUX&9Y)Y{6rX{Zh2#n}i z+uhS8;Fk7W10hq9Ig01Ede+(QOHf8te+$?J1-PR@->N4+_BrLz zmIf@>y3;2VdB?6@fc7+-r~?M&F2V@Ed%6b@U3%YX@rO;_*wU;6o)*rwo%h71l59I{ zix5jb?=9#kUD_WlovPF+j%uAl!ueqIrQ?TDz;z4SwqV4YsX6EC>&wAfFJ_QzJp4W$ z6`$UtdG`Ew*kF&GGSxu5I z<7>Q_!!D$co&V>?%$JJEPxa%PJd8JO6DoNYK4rn_h1(|OI!>qoc0G>C4dtc4zxI-> zLv3NV_Rm0{xy;gB)tYcDCYxT&dy4;~Gkx$WueTG{1|X!yHiA$7^~XoLONn|}A@lKdu(OI>s8JS(4v zQ@KkPiZ-tt!F{*Pg*}#!b93QK+D)&avKLd2G|h)DZqdin;r_p7UTc3}7mxYBk2g^K z&5WNJ2RwA{_dR0#Z7u?1gCg)m1wCCaAf;RczH4ltozw;FCY0933Im`X6X-)lmhbbX zdV7gn>KsnjPKx486B;{OWO5oZ8K8h3fO5^K^L70^fbiS{ zZX|#mO-eL}!L`-eBJpGgZ2?Sb-xR7YS*YMty@6?zMP#~fqPq>84h;r{OS{mn^;whA zN$XKQYu(&hXKwGijsV=345YPt(kspfl?M?Y6jCLh+ki+iCwa&tk39}IZtfqgo^zCfWLDJu7 z@&KML-jc+bPW(G>zZLx=4aCYxNgW^uC;pHiZXLv~2W*Y#NqY@@X)yVH?b8UCrp@g! zZjhR^tPglffb%x*UDnU@8Xrr{4D_{rYY@ny6m9p2w-?gj_4`#4(j_cV7TB3sOwSwO z&;QubnDO7@LqB(Wx8J&|2~uOX87RU18yOw6F=!M_4jXDgMge$-)^Lyrwo^9nb0M0=F@|H+040 z`5z$q8$@5QZSnUbLiioiU|%oqn;252N#Wd7^f#s=@R~l37l8>een2blXZxCZ`q#rh z{9T{2V$wHNx04BGU2-TglLI=x`+6bhG1_((6%x0+dc_AIG&BsCmFA{!W;ZvEc* zcT)kdbh;6J#X4PUTO|Uc_fk?gp4J6w>+1o1-HRn)zz7gPs{ieSFV>{9OcI08!qXBL z8KjX5cAg)5cp5io5|Gm96JCHSU7N3cAG#S+CUIXp9kJG*`ZoJ32G_pMT^+9wJW9JV z9lXVaIFBWl*wNZR4U~?3ODYBEP2uoHqc$OhlGtCnz;LTc>Zw!j!2t$F&lc^n7EnWWN;?DZ3i-(@p%Gzv>=`ezG7PfEUds((&r_~+4U@|yhfRzBK_<7=C! z{X^))^jjAwxsQh7qh-vIeY7Swks7}}-k|3DYOXPU4p#SC{PB5tUT=?Ewy(t#qs^cC z&w3mZ)U!uopDh-8jr_PrA#7t!B`=n~KeD{Y(*ImzzmxbJp@W0!dGhjHc%*Sw#CTVo#ebZ?EX=<-{+K{JThK40@E5PioavA8yka{es$2;n!x_}>WO z141|q+FY0i0YA=qz>hOK4(>W-wcUf!p#FOsG5>~FWl&20NO80eC9F){o-6~l;H`!l%fAEQFy~&{@ zTw3zg+Xr6q)M~3*8mIN-$oU|W*XW=(IcPx|sliy8NSDtEXsMogV}nLH$0t`O27^iC zdJQ|4bXZ~V`D^*}DCo=KPAk{8GujDjeZO8u+&M+y_ILHZ=u!0R#p^=BSpvvbtIpT$ zz21t>lWGp@YX0)Pj^_>Et-rih-BpgUfTm*KvmUv1j`n-ZWQJ7o+Tn z<-#NQ%sIK?sNH(k8aTiB>rp>zw&hD!^yr{1&EJf@x5Z-u(KCp?g6JO*{lJ!!zcK#T zT>QOX92-pM%DZ`}<`L@`vT1(LZyToR&4qy+P};3!%Rqk`c(jpX zp8`Hyf0NJ!9AH@R{QCE$D=yqX;#s;0dr41^0<3f_d0J6E;KiRKX+~SEk$^G!wjO;m z2A(?x7S#!Ptv}HQJ^?zdMLliCC%JNmwMLbjlaq2VNowfCfTjES-mlT!GeS4JBp6y3 zBxr3lb-^zGKYt%+_O8=Wa9Z`zggP{Pr*2r$fXrT?Zv|*jfh696S?gKzNrF5D7ze=9 zZGe93o@{HocXQBphyG+_FDbNu!CsMgDGlS;V|7BN0R+}LZvmUs1daST)0BB~63Yl% zZ*a`d6+OJ*e0DF1)@X_VpPs9JPTir8=CN%6!k*r1uj83+z(?E?@ET0tu21xiYMrjh zQnMtH-E!(%p4rKXtM#~}Wdj1n=$_l6nfCW}QxJ6$-JfY6(E{HiY0n{8c|3`X+6MF@ zum=(ZY{4`V!rh#LMBe*k+L za7`Z_PxR4H@Qcw#bq%kpAMg9;p3k!UGM(6j+Mchz_ISXyjVYsX$>?=G<$9fxw`**c zJ{9n}Mfeu?lKDHJvvz6C-e6d2?BH!{+r)^EAI*hN$%*KKw!F0XYx!Yqkg3QW`WT3O zuJ#)I3=S&pC5Nquj&t$%uX%d)xPcEju;TB>szGS%-thG>%gAL)=JkufQ}Oxl`F_7Q zioiDgdubZ#VSzSY$YpSRTV7i9^$Nznb`f}k31FWdQFB`DVKb75<)Agd*Wp>~=7)K5 z?j74)S}f&!gZ^FT*yC(FzVn+_ea}PA{HLZjp!Q+aTohx+#Etqzh3t`!* zwM8?{X(VWRsv#U0W$wBf1xo_I;^fy%uw+7{Pq^#U=Si{c-afE2bw)cmX&C(R_f8L3 z&=0EGo`V2;f*FwK!f!hvlY~7dhYmV!1SH98o}6G}ZGZkS>v%jE_i{;aksMp;`B#hP z>?fFB?_xnG$)4f`f)BBw5XQ`+2w**5* zb)zmprFhAhVU24t8f%W6u_J&^FVR`o=W>Y^o9b?>;zCVTUF!t)rXC44{bJ|3*^;_}zk{$8ic)eFDc^lp1Sd&$3cCXVG1V}*=s+p$k6+LKAq zr-MCebaeJdFdp*&>)!8Q`x?nnM*u0yrX_%0Q$Dx3Z&cn({>|3SIlOUJ^Uv7CKiAA* zy}a-I{JQsgrRn_o_i3q*&T+YHSo8-gyv9n85>=lbs@Xl(T%pR3PxH}tPs|_RC9O_Zkvg0oRS0>58uv25_XMIe`}oq4PU0rs7Q@!O4kIgH@HGnh1Rg_>>0J zYoGNa`|wl@YLt?Ebgz$02antFKJh`ujRg=#t0JH;;@CI zcr1AGHLd+~N)hy(h8qm<6tSS1F8ck>Ip!u|9TQuVuOQaOc_~(ps5%_M!jFS)T4|RI(??nm>#uPp)b?jNwb$j3N63^8QH~ievD0F*1rZ;7s&x9?T+jKk2T9S1Fnh zy_WiD?kn}{Mgu&y++HkSgj@tBHVM3@@639@`Ln%$saw>=-P*=VbB8SQMur!8!yV-8r{J7zVem04 z4&RHwH>d&J1Kt3SX3zhf{Jk~Nw8r<;sF0GQ9g@H`J^et^nsyvX{ITHY(Rjq^ zj=Xm0ID#mWWUX*kQ{vWiJFy8|rUFJZCVV#7MKAQ=r|h+~a`LN9JtgQ34!rO?O8+bq zsuAii>-t>sy7aU=fIh8m{(fQ5o@;8k(upbUnV2qcRFd1ZZ5bHrW~G&F*Q2f1sMsw^ zl+gsX*BML$`wRL0dnqH|zxE zI`z&eO}CxX{mXkKS*-k$9RL6z07*naRMoP++|v1e1)N9$9+qf>`CG0y%~ z=`WY$;9hYpVO%#``EI1R*gVIXIu6ZSqW@(-}YHn8c8?PFLsS4{sH!c+DHf7 zNI=v}qCM~j15QEe_-0Mi{5Mf?5(z{Rr30G>YMd4*zC8D|skCeFu~WgCH9sfd7k|C~ zJY6YUSLZx>^Gkha3I(+}-=7dk-N787O(n#_+beUji85PETN5bxRBBfWS5?)lz-?rU2;Ntcmn z980!^7(qR0BRb90ObFXC&qzMsi&sVq z2}_!IPMKtc8w0hh4()`W-CQ#g3kJm}g@K%Rt2|HF^Y!JaJUqgBEe!bPQ{~wD`oG&2 z**W9Vsk*wO@yxmMbmvn3w)bQ5=Wt>aPyS+L!g$0^!ayu(<&pmPEiOeXbo1eZu!-%p zMJF#8*5t@WY?7Q@a;Y8R#OH@jPHRy=ONKV9zzZRps68hd5(1nWIa5T_OYxWJ%dA(s zUGX=@-x0!l*tEnL*ppnpJO4W(PZtxt1MrCT3*9uo=MNBlpNrCW=oeV| z*8-4EJ;-{27CInaP$mR>)88!sRg!6Wa3#ggk_coZ6<2hE#kKA16g|={K(HumUrWA# zwm7VVUOpA%X>`yvb?kZ5Gi|`^fkop7Ro|ZZ-r=3s(!OI8oVWgIEx>KWr}TAKuMsE_ zeML&L;EpO-)`OT4jW}t0m(n{vw}W*FNNk@Oc5pZHdBV_{USoM4J*e}JRCJ8$iD4ON z-pyU19u>Q!g$)K!dVTw?r_4?{mpw{VD>+^|*)npjj{+KA92m~XwSx%EJc?HEtmLRT{5*0!*a2EPLhfU4eS9JNbhne@h}q(-@+b#K9xX4CMH)be4^tUyK|raEz|yhFu<370({e5*C-_vA*N)#una6^#a}8jnLI2Z>l}BjrPiY3;ibDRB&+c8H z(22X@&_MTmak)Qv5=yuIQ}V!dY*;VW);@Ryr_dS7P8rr1iD$h+B0pCadSd1~FQa8m zSKJRu~DrnnJ)W7#6twva3d+a(rmV~9Xk1cD1+pNQD`mi3= zgiXWN8yVlKI2YLDhu6_PqIJ5o@JkAC$!Xc-fjB~A(E|mR21tEyCWKatrr5{`O*r7w zn6$z1lu+}4J}B3+rF7c{RO%%O*1^1HfiE@tpd=w9)9xgauAT-Oy4Oe7I3irGF_9c9 zSZRw(=V2pjLJSTh#=$4ApJ7+8#?)m4XG3VCJB5TCJr&0RL{B$hNw=lYRgV#C1mz0o9 zeO$K4l4?r=*8|2_%IuiB)z}`1@h`B;iH7~??Z+p#m0z?|r|svi8;W}aIi&i+^RTUR zSq8mk?(5&5^4;}DqgIAY#zjjf!p|xAE-g|mDfn8?3r_L3eY|~c`~R9A8p`YD@0yFh zTk8JaA%yn`;gcx-o-<%&?fE<%{r)9(*`^45oUeD@Bkxe;Gpz=Wph&o-=DU^05_(OM zm!X2Ta?Epv0e+5k`1!t)MrF|JN?h^Ny%=*66Gc`>cfa`CPTQoxggjE|Eza^t+fx5lRT62H`^pxHSm;_&*afN zmqe=u5PF@pZQ|8770`tOWf)*Y-91}t*I9OK*>s*9J0%#=>CL4!%Ql+n7F{wrc7DzE z45A}`9qJIepv}MHt6=Jw{FnphFeeK4Xs5OUTAEYtXSO&e0yGH;9e}2**~aURHJALp z*Okxj#ob0{a;q(=+sjsQ0}aMCJWei@@O2k*T42+>I2jzB$|W?(+vg?Q?HQY*RkB{x zj3pirAQ^cy3V#c1Tw8CO$A4B#%9|HB;MlT7jZgf_i8ijsi3{X|zrtEV2^`GAx;4?x zv4J`#CC3M8MboX~3h&=R!7()dY&Dq^dWG8h+AJw5SYRUkq&D1pOk=FEniVWt(3nwp zj1gX%vUL2#V(eJUPZPt+yk>Mw7r2f^^ah<#9}U!Wx|gIB|CQI4O&{kC&$JZn`gfAl z%JvWfxA)O=uFZ{0ej7S*v1FRtW&+qdWAr@_*iR5vN&0JEVwqD4^z!fS5aauqU2uyca4x=oMHygthe8Lf zo#i!V-P)MkAG{c>=X3ScF)&8$yi}^_*VO|)T+fLv0m??fGA$U?y2UO1*R6v{o&ffA zPQmm=yuz;)H0nj*Hpv>Jzx4xhFPQ*F^}u}UxH0={DTTZOnr(B_-$d1EOxHb{x}4A2Ky`>zdZS16?XYvs3#S?$@k@&I`zF=a=7$tzYXMhCp8B{W#Pz5 z*30V!v#B9BG}K^8YLfJR5&GJ;Oz3NiZu!~vwF3xGAo_xo?hxZWLb$`!J*xSR_MEFJ z8fm4^Z2#Zt=I<4%{V9M`>BmPYxJKTO&h#I)&a>(g!1eF5eaNOVz2Nq9Evfk>zcV*|t=QW(r1U7%IXe{4PWpPlkDHmcjwc)2HX3weW=dXaAh}`Ft{GS&(r^-JlYjSSE;TY54?QA|p3P z7M7e5-?7d;;S+$I5lh=wHl~-L(>()rV|$I+m5H#WvJ4{)hx;1G&@2q%oc9TX_tCUvc1So zGLiKHMRks z=hh7p3ERpD^stWBeoJvy>R4K5AUQcefHuK371CP2#qX1kG0;hVb%~E|8-(iD<9<_n zo;-i7*Q?K`x~YvfD%2Fe81}(F)}Vc7@1FM9I<92N%D!uHv(&*Stm3aX1zh8ny5{hb z_$!HgeqZA;Y;b-2d3o1}PZ`ZqMn6*@H|3bq^f+(A8!d?2ObXf0YwQ&*qvhK7euOn} zj5%f*CHm+D@F{-RdMr496JGqXEqhfLa0@P}>H1oQWNnWn5dD~C*0!L1&c)yN2;n1u zgF@}!`sse`lTa5ndE-=4@{&7*@D@`c_7UqB!V3-eH1u{a?r-at>L$COoIe<*cINiy zH%X5aa7S{>U#kdwSZ5>Al?+pMm+;`<)_dJ*)!Iz~8huQi%*zR1KIND&qDP`>H;r`= zE(uWR!uNGFARFO)4^?tmx>i%?@as(h>olIWUgs7?;AA*pO@Ak`1TU@pS$V;oFxu2G zR`5+GDBNmIodSL>rC_23zET5{pa9PD0MojtYr3ua=i*azozfueWIdhTvJbtWn18N) z?Q3fQ;c+ekzk8Vi<`WQH@4Vg9YZv=0A2p^Id49LD7blK1)|>+9^mMY$0XenU)caX$ zz6!9XpVqO9T5GfyJ8$KCsRM4MK`_QD1_yVK)HKqv(5nOP_PN@|=2pX1+YwD@yQMwm zks9>Z-xJ1X(!s)-!6mr)L|t_8001wZ_6xd&ZeNQPG~cp*Zpimo9e0n!!CJo9e|~*` z#`PtaHOl-dao7^}E30`aEXZ}C#_j$D!gA;!4oS=GxKJ^2}0_+FR%zCAks5#8UG&RN&#)$Us~K0`z)D0}-e z|9k||_j&U4X(OL?KnU+<>gRV17qw&PDb`2>_f(@9Cc(B5SqyWB5FQZ1TM#{C{epNN zY?uo21=F&8P+-`4Fz@%&klmwgCM9O-)uoo``~KQR;2YKe_Nbq&pS6NpE&xiZq%FH+ zY2aWXM}wa=0xwVh2JXHn;Fkmod@Yah#L5F9M}j-gw=EH_*Any~bj7%Rw%~A~7>w|z z7p%j3i={PekOCt7O5o$ZZg(XBxm#1(WHQdBTj+LPa!zQ#?2^EFiGCt*y$Rq;C*eSk zk*19?Xu;oX0f_kE%(lATNhG6wEYT*W=){2jJ>~g?RhYFVV)g%f@7bG#?P+cHWGSc< z!%!!|4nuaUU;icXe;CLab-GeHA-AOta9v#B_B=MlTP7u}JhFbRmiAnGpU{bacMW*m z4tqt{9vDUNwO73}ku&&^frV@}^=Dx=?bJ+RInn^uUW}pppqh4`oFXPIyw6(GmW4r# z=9AuD>cu_Oc^;fx&->0JpGEt3aPQ05*)j56wupxk#)`dKgN~;qYT^BhoGf$m9Z{Uya=A!R!v+iw}@pPWcCC6rh z5@Yw6MP$x+6xZo6(=Q)4(nHRJ4PR!Pc#ElgC~+WO1ePpJspAWRnJ3wC+h`m&QUw0> z*2V?kks_}K_{2`)8VnG|s`hUc@bu`pv?4GWT2LBgu9ocgfZue1O>s%h0t{?wFW}K_ ztWZ%T=a3>%U~9YW+F(ddOIl8B&Hc5sh__|;9q)YQy1zZ!)xa!>BrKfpIvSX=B<3Q*Wwhvat$gqnS1{tz-gJ2naOyEDMEH#z!O7zzZllq?A1kz) z=%W+2_I2U3&$ZvJ?Z|vB>7y-8P@t7Akk_f#tk=fG zwVp6=nQ6vr*)pB*nAOxX;+JW_N1y6v_k4Mq>$PO)A}oB~$a^f2!dNmplJd?A_~@q&Tv$X_H4*SMQm*{~Mk8_TF8Yf#!!hi2&I_fFqoI zpS5~*RvbMXAtae(w!X;+W6;?0HIYfZw%f^DY|JOUCoK=a+QQi&v0bOF?ZHbOkOJ@N znUj^;q#}}Dsb>vftxmPR8Nv_zjt}o7_9hsh#cqdH=+uc^Hd`!v(IJ zR?}CXqiioRp>6tE_IbJ5SJnf;^F`}D^?f6KYvlXu&l9^w@bbA)_6xP|U0$0q;9EZd zSUUymFN}}ve_dAVq0D#BE>WfTeR|zrk+xL+Tl#3N54!T=HS_lNIZEF7b=KTzkXZfR zq|9MbW&Hgxo>}vsJ+GfyJ}Y{(mD;meFL|bC9y}_b|Bklg&2v-bIb)sdO_jiIEug$? z3+r*pGwpL3{Owiu_ist*Z>b-6$;w=zWrKuvUumhfr+Mo$=sG?($CJQkS_XmtmURZM zG@JL;GrE-Rte$RuJ?^QEJ%bs`bj|(_ZoAgg za>8TnG!$ns_bMkvt<;FMhiUxA9fN}NO#@PSa6KPTQ$65$ZPlC~#UMsoBt5^Kt?S!n zbHT6AYtxpwxJecqguF?Kc?EkwuMQP66X;iyhXckSu-Etb1h;q|)bZ*(u)o_horc3TW*a-Fg~VBo+h~ z(aV&i;Cs-gT})}O=KsGgr*LLncrl*$xw?Qf1=3pU%hkSSUc+d722JBhk$J`;QSX&y zEk-SfTKl*aB=7EjmQhN?-vpUtU2iC$FEI(;{l^bLBnb&27$X zE$CQ21`u+3zzS@SEWnXM>hSB@=<>$wrZ@s2vKfdgv zr@vF{r{`Z=Zd52YGQ~5bq)J~SQY*DJ-?Yq-h z&yJR#xg{`RrI}9+uR$v*rk(7q9n6xz^YAJ)fbDxbwhkEiU0y%AwOvKC2dzIg5B};u zyMC&-{@T{re#&vcFUk48JEnb3@=X2w?^oLAuRuGnu4S}MbGTK*82V}HB!AA$5wl)wU=Dk`C2;a=aUq-`9k*GG!J)<_lw>$&NjBuN{ti!~AV z(kyPR&$~>`SzFNEv)FS~yO=L@jN^mnMx4~}T$K*5yL>*>PV0*CjFZ5}>f^ljG7RP+h`HFf0FohEMw^drvUx@=-Jd^+Xev=s7Yyhy;URK(AeRbrT@ylxwp@T^? zAjpkizz-kcY=9mlLJf5pOW)4~k0P$8WWrU>GGwa$Ib>-w6|tC1Pkhf~;fhENGz^LN z8^^C9bL%!I1)qCCjKeNYR*aHHvLFyL$coTEKaIxJt6iDeCvHtmn>86>wNr!R9c9v zBILrU-I2RL;{MokGkp$p-+DgldkwQ*7q@HqQjoG~vtvZ!^9ddY`!?AAq6ubFS&28e zu0)$n+dx*VVfuTc;fH%RF9j;_rGtC>$44H+T@9|Z@qnsiq3btxy`TnujKlldkH4zp$?~pGx+lgRxI?bz zPgdGXfrVDATs;U94AGa`KgX-p!OXb}WNYhxor%!k0`nB%?54l_VaOHe(9|a3cj0(t zb)C&7=|Ug@q8{`|chBuBCsSMX)sYX9hn}pH6+=DaQ;N z9DO6nYVcOO0wqQ;FXiU@m-A;);WA|bw%)xO%G-ht!elJ znhel4@hDUDD1JraF(}+WcARG}#fcSJ^J;0m*8_p z#&tBs^X7KH7pCKH-}Sk1ZoU@j4JGrx7~fYsh*yspQ&;XGI^>#JYRNe#o(2+tBJt^( zUCi|UD179T`>P$MuNld%3W-4agexQGZ%?`pX)!;u<<+K(bpEIuTTqzff${N+tBH9( zs+`r`;Ozfs7-!#}Yp0z|K>^hUOq zC!+Vs;Qb`kV)s^`_c9d7!uM3seWY#}Mq8GHrnI}HaM6#+$o~@b9|2>+I zg$*g-8KDs|&8E9;E{yu@54DaY9YiP0E;v}$YazFOUgm}ZQ66$nVZOQ^hp_9Hj(wDN zb%+a=(k|}{etcqr0j?fB`jbjSeG=Xs{4M#rxcRe+6VDGUTVQFTeVDXTj)&REtIJPV zdhm7Jw{cdY2!h@r-_4Yf1^YC!#*+*-uAd7nX+9rGys5136&HFx zJfAlfZBdSa^9vbKO~(Di_H@GDeogRL4B>^}+i?>?fL)wffqjLboVEtqGHgxim>s5E zqG#Pv>hLuo213GPT=Abg^I5uTgb5yr`KE4*_-%w^-Om^5-zU47mMnBlFLX4W@^k7u z#g;Sahp4IR@ z_g%|=&U`7|@(>QqRyE&z7*a2}7LhpTYnxf_xO`9d#YmSx6K=12ZjKk^`59$)!pl@6 z4f3RC+G5ssMeHyPQ+@fLkyE?ubFa~k>C|tnjqT#VDLu4Ohw-^*9aUF|*7PXLF#ULr zqe^ibZ9%=(^3BJ=wmdcVBwHP#r4!{*m>C-IOZl6Mvm)0#>|EKmnPRBCTk#uEZ93&! zt3InGRBS2~0=dD9p}_SH&xejJ^tjSvo$OLM{p2%?9qEJNYFg>WCc3EiBzt(jo*yYd ztAdFNAp_cLjjZm9yO1i7OG5z=3_iLb*siM|Tlr?%b%&lAt!I!qI%HC}*`pp}rm-fe zADJ%0`{3qZ=EGZk_~!-yT;N?HQb-4fQLSmfKH66YJGH9J%Ayo}xa@COzYMP4#^&SA zhT2)5;CMWVO)MuD?IR8JrN7x)NEgP3>kjoDbd+mWdMPcP6&V)?KVZ|?p4tnfI*&p7 zGg{mj+uHUA`B4=%&zq3v$UClPg2nT@wh9|rM)pGjo2A?+I-k#bK14bez+T^ab@e8$ zsvr&uae!L&BleJYjA$Lz3}pl%nkm`J=LR-8iT@#W^vzftBs_EgMd7fur;XcWq=cwU zecnv9N3?FR5-xdeTREt^D-xF(2>Dr3WKm`JFO0oYZtd99(SQCQbH|*TLQQ{Tst5Aw zV0b55nYLXM^Fe?&r@&HVYk~YbjLkbc;GXSaUKNSyFI%{ue&i3IyTC9gs-N-K#&|T^ zNn7sz9o}+5^{r(&BcgVdXwv&a}kePXXWigomG2c8?zzJmviBcEezq+JCK# z`<6D&i}3enPh3NtCL%BdlW;t@WW$a1ws9RR-oiejG5neg!l^y!0l(l1>Zz7lUPdNK z1vHa;$EdD;ny)7L!=7EbSAAnlaK|C_gR{CRwNp|d?c~#ZQY3z{_uq3_e5Y-#P2V}q z-}BW?U5HEcy=!j>^}n%#v<$&z75<~c)%09tdTvs=W<2THT@BEKqedmPm|@>9b?2NU zO}NaquG#9?MeK#Otc4aJT&=Qy^pU(*xqU`r&B!(4DWbCzgRr`8gu8X%rgZB-Snad1 zaA*ay^@UN}efzh$iD&Neg#2Z1R*QU6KfP6^yU~eFiZY_K7dHIb*lnnaZi9Xq(b)R6 zn=9(Owx5sPnHaW8UPhBQ48Qe3O=GL=PCE;=S?#a|nVG{{I7d3!?hh=q{&ksAL8gpK zfXr3s$d}&4$~%Q}-am}&ff6>~7X64o=dq1y#~Fq*=_1;P@SO`8K2FgZ4`PHaJd%$F zTpYGr{-gZ*alWO7G5A&LCF!k`Gji)oXUrvd-*lqUWZAyiGg6LAr8z4wm8wXRK~i3H zie5)$q5OA~5P)RYM8?RvN1$S!UKoBO>bZSRo7Vg{s_}GikaLM$t%DEX2gZNmgcb%3 zMJ~RARqV5XU@k``E%X-D2=f;O{^4kZZ45XsA3sWQV_-jJ(kkoR`w1Xg@3Z`Kq-e|8 zF`XpK4vvwy^yV^bBe10&|De|!x2Wk`F!4Gjume-D^{YnCMsV~e zO(-<8mxe*5vG!gWR2twbZm?Md^I7nqNG78fWRVXfV6u+=AhxydML%54_vOm*kPSeRFm>TF=l+ITcj$vi;#l6)|(l_YJ-}N-TCAisr%n2RZ0< zUr4!=O`nXcxP=7N^-UDo<@L+o#Q0r7p;6GrnD6mHFEOHPj z>U+%9F!esciO$D3rEg5KT2ze?w0h9jK6CV2#WIag)3fixOh^vK?5zE zX^@?KtiewffIAp@{s9%$t?eFnziD38+ye>3IB7R!J=BXvs?B2hL$Z0Q+$A z_sH=oFDP@?kO$p7{#4ex%y@U_FoLZ7pXfT{O3^g+W@ACw$^b`K`_j6-!6n7-gF_N* z>dNUx`K8l75DCY$&iS|(mYkZIrHNPb!xeQ_OaGaU!atNblNS;T2MimTvgi1PS?~U= z9;JJoT!~b(lb10b+3E-AQkkRla zllAX)@1}Qp9LHyN zb}tjt>+W$z?#)pWq_!+HhWh|Rh3eF*woBC5={BGMrBwg)mJ87C zQmt{9S9LGyhk3i&g$#p(Xn(xIN(W;WeVitfK?oTdaFDnxjCd9~Dc^5AWay698Plifyc>h=H0%eXT~XXxvFDp<>b8i{qifi z+xud4x9(#2x}+#N8bnta(BC~S;2gE9 zh$Z;+jj1?VYv0MZB12Et0wF!hRJ;~8q?JliBAP(qJmVDWMW({%$r*TbG9O9a-i8+6 z@Gt)`$kPtCSz%;SCR|aDTx((eOoIj*iv+*Q;*G_2Q0_c?t|b0=>EMxjRieJve}zsr z`YH&LX^r6nLoWloT%7!n#hpR1PCv?Iwq=MFOaoF`RRy9DkgVeuWc%oh%O;Hl!X6G8 zZjbq!*;c}%)!J1@aAwC1lEP?bWVhT{=@|}%mi+|fkF18L#*|?7%UQ5hUZs81tdC6YI@!@ZeRv-g?X z=s_57*Xo=q>SpMCHXO;8;K z0uiAi^L8sb4n2lBgWV0$)Fy3xGO4T$Ig!$5zrLh{AhSqwM*Ihnw*I7Wj<^6Yd@6Bw ze~L&`*=kf9#0J9dgzn<(Xc!2ubn++H3COcTX^iEDQE&YFpEG$};z z=nMU)RM}Zh7+c22Z#wM(dbhOM<5X^kP3oY7(9ImmC1`+(@Y3d-oscwNI!pYT@fWfd zJ7KbxY#3X95G&ad2fP~yxsJsi??ATPoyD)=0p~WIMSd(H_6pM8tTlxh6}TwXh2pq@hZu&7ciyoEZK?`gSo5&P#J(9U^x{Ttvb zXs^P5`9#mXmqDo9qI<%)a)=RTZUhE6pvF(j+bfZz3&`Lf42ZVW?5?c@W!h}zAx2L* zIm32LQ-0I#lKIe*T&PK~u}f2U-`CK;9ftX(?x&d#7oiuQU)?TnPgm_Vi2?4ZwOLQi zJ%yx!%Wb_&n8}-iZ1yqZN32x%X5;ae=ZO71y}3{v1;MlqVG2vs8R?lnb$Oaux}V|b zdulE+Pu1hJRJfT#2axOUyZU@4+pyrg5EYM=W7o)GuT*~BYazl+RQmZ4J-0$hsI&z=2+L)PXG(cLDF zSEE#HbJ+dxKop}-k~8WF3^BMG=FLB^S};l9x>z^k{ux>lmj51Cmu|@O?3IbGW5X9` zP?4?_?Kw= z55;*S=ZqB$|0DX+kol}RNUO6OiF~k***G(=| z+%m$lvzCnz1vBsbtn<`M5I7xi##rcEZX=*Bo?PQ0f}QqNDcYI?v0Xs?tQ zrl}cJc#7abfEi`)I(hb8sIu^o-y;p1!b)>p?F4s=i2R8QYvzZVnOAOmTs!V@c@jOc zo?&>TC;c|1A~;wt;-yG=Dq%9`CvtMY6&z}=L`&6HO^vT}M?J}>Y)#f&2=dl^{?_^p zDX5N63$;CXL+(s!Oe#B)N%uRtZU{q%^%~Kv4D@0FP zmllpzR@l1ejpnG4!*S5`MQ3Q$nLrc&klbAR^2=LB*-C#|8G}8-a;ecVBb5aHsYXsP z^Gv~O!huv4(a9Jb+?#73)H64_zmaO<8Yp_r8M91Z%zq9)JN7-a^%um(zsyfWY$}Ie z-AN?xk#+w8WZ;?0Fv8=yL4%dEi~DA?Qw5~u=NR9?5hS4}G7lR`0v1HTmAFQ?9LwYl zw0qY{9=^VpBIAu-C5m&?c2UKze>}bfEF>NpH~6k;?{jsUne3Nc zvkI3?*fbvGC4+0jXIfaHecBu(D|A+H9`)nif48YVUe8^l(N}~j!;j(1$ulbn zfnrx9OlSXW;Z`ugF7yW;&%0$s=6e|0aUl7nyiHG)Bpq|X%Dn&uJ`hY%(m49YiSs2) zy!esv9B?w#**I;qxI7e|y)aeAF^X#{u7n%e1vTnN@S&SH0qfhnm^1Ksqn-2`Nkn9$ ze#*^*c||LQ&udahJ0z&>C1yCiZL~!&N$1p4*|lM2LQY!OZtXrY@^v7;2p*5RF1ktx z?-i!)yHI}94NEM4;T`Y&;b;33PEMSz$X8T5+el(Oi_iMRlPr_(PZSflR_UGJt^+;k zJ5EoLsS(mx*N+^REaH^kZL^MqN7sS~OhiHu{mAZJ;2iu&_Q00Q`CLF&4?w^ z)G^?UJbiQ+U#=Z|l|XO&N5C=Q8_ErBxjOJJGBl;w+5)e>N!}Kv=fIPZ@;V1mSjdV` z((=Q?`x*#l0VR4L+gNAvEc?X|`JUWn2Z+xwBCmi=u-LDr+Y>ym;iAMW)kIV)hQCaV z#tR~7!U%HfO-O{;Vjm`ic%jcQ{_|zzIW>=|9NdmE3qUBrMTpn>^(D+%w`qxL_S95S zVb0Z!I1C>6Z(!#=$^4`E`>mTR29# zFrAB2Kl*4rel6;bsrNTjUi=^Ga086zQC95mL#-JGd1P~xrZ?Peba~~%x>#@(#6#W^CHI1R0xDJLEn@S=ue47&0p} z@9%#DpPyq!_uDcUvDna)jJ=)|?K`7rRD;T53Bo zbpE|&gd41p!8km#qZfy8z)qMw2x|C@+I6qE1E9U%xU@EAx@~GE*ycBsTzLL+UP9e} zh!yC5V}sq%A8d6HK0WKtxKqXT)XZrgi{7$5Ey#T3fktpY$!wCy^CM5Y6O#>I8VuVw z4ygL9-jRA}t|VXo8+RYjNy2zh^3S?VIg^`#WYIXlnan+ET2-Hk*nAzA*HJ>Sy{hci zWLj|c`M^*rGGF0=%&VfK_oTn2Z!|G{v#?fA{lBqV5H`AYdlu2;`;bJ(hD^7ylgn75 zF~2Vxq6d}U{r9LLgZsV7B8--ic%{x1EDcLW5-o8&;Yh z?O$}K49|uZ0Sp9`c}5sjx;>Nd$yOdwTVOxLlPM|LhW%?qY)Z1V=ApaDOG$KD3>MjT z-{gZsBdrc~02zGG?i1&0-vjwF6y5h%gTos4{}3FW2l{`_y96@$KhoDmpj08R_%*vD z)8}G(mB`2ZooDbRcD<4x_LF7maj073a}J!N?s&o(WV)!qcG1%qU+9C^Xs?h$ZU9ed z4k^RuL%44aPO0mNppX8XD;&&@?XJ4BCIXKfCO$L0pjpbH%40mw^EsuG; zq=_y8u_Ao{i!fmzNFp~BDtX`4W2Y4zZh;|H0w&vktk%5n#;+jM+H&QWn(~8c-Ja!6 z3614Ojhn&;jEg*Qg5I0|BmfB0i%$zmn$y>-S5RNYf_iGK*g3MP1}cO2TKaT!&(4VI zE!jx*R53FKfHB6j7+Q{iuNd<37UH3Nujr+y2h`tw`=LsZeLHit7LTa^woDRn>#To^ zfWXy0(&;8&e7{MNtt^`w!H`RRJKw7F`#qP4)rGx{ZkV`_cu2dI1ZrYrpXoaDB9qY@|Ut^cjfDEuW_?^ z+nDa%NC7i6`z&LY$zzaYX2$hce|o}an;V)pUOU#~KVS7Q#G9Ca$R!;*S7VzaQ;#>` zYoGeA{sGJv{pPk0Q9IHno>Z^A&pW^wT1yB-D^K`7u{{d(D@B#olYCDqflBUUT3(Hq z7pX!{b$%-Wcn~@&TPm#7|1sKgNuAy>4jXV4s$r9R!?}>ALoSB?i$x1JzlQEl^{~=L z%&Dm|6Ie09>jb2rMf{NrANIPX9t%k2SesGF( z3$i);P4cud!}~EN<16)b<(w}he~b3w1SR?hWQQD)en#b7PJfVBtWo%mnIk;Wjef>w zGlVD9+`U7v`|ThTmCzbawf_B|J=oAjEY|qQF-=7in)EN^q;7l5-0zh-(jvAWc;ctM zB?;WVAa!9Wrde&p`C`GP){kcAkoVcak{zEJsB6{<;JK3EUW35@cn6E4QN z=U@R&jNp`t#9ZBIcN^&?vHR(XKTHd%BZt1KUhr8LpUHCzz?UMnmzV0VVQ9XN zwN;rqDS_qw<@A=Y`l4-EDe6n|`H8r`C-j&u=zLxt0&lk$9ln&?J;n5B1D`*KsSZQq zpah0vE2oRLGN+TGZ>4M1Z*AQLAPLDK$RN4WRC3!u%@Iuhi86a2yG}`;=^7BlB$gND$T+@4!NssU1{!ZxQyUy8Dy-0@ zvPu&a*(c?XLoj2QGX7QPfd>bBYS|ZC)9++cr%?rYp@n!(i#6%mZRKx_z4-J}okUi1 z9Efz0;h1C%hV)Y!`oHqkDii^w{2t*QKSa5_YSKyf>H?%8)r2s%gBy0M5bXYN6)6p1 z;pB3S(;}Hz^uD|MNZc&`rXUAh{Iv-fo3w z>;tgxcgjFLV9mi{sL|6Bkt+Y4=*)f1ZMcO(3Y`tzUrWk;st0=CY30G)@Q6z70W^C!eZ5!k;RaV!^z}ISFeY)N?$}21 zd9#4Ue|8TR82|PC644t=(A`eP>NJArk>qD`p96OAEagY3Fy=;k)cxJ2V57rbrPBO+ zPaF{-hokpx9oRQio?~xBqcd(JCx>yd&FpPY#;CIFuP=Aj)+mhg3|&K1EVbaVl;Dq` zo@6Pmj4$?+pELkWBU`0H8W)VdhdP31=|EBcre>zgSjso<+)0K8HuefTR%OQY124zH zfw56xf4J_??g*WLonmSwtr7e8k1&04P#&|_NAF{OVK!)Rhm48UU*_6%t4wBRXqw#4c@im#q3|qi)ksc-Q{q0v{YE{)e$A0=vMz@5DIo3zl9Wjz&br9Qb+8 z&+3%N{ox@TRL?!-=$XhbE4Es(Tw8oWONx&e5peV_(;sC?=)d&%#8a5`5XJL*)UA6$ z8atbqa*+V0ScYq(`tZ`ly48Kfz<${q0b~H`E%$~uUIX@OCU|lwK^76=C}en4V9&JG zt077BHjofrXY{)V*iBw}4=dD=VDEYHgPM-t)sM-pl9;`Zl39`8*=(dbx7;1Z2qVD6 z_Nc+Io`^F}b#8}Ug6|F5|3OZQTjKj+$;x$z6n?+iaOAkbdoIA$D<~Kp+pGb=B0wo$ z=i#qVkx01wTr;`y!Es~qT_DnWosNL~ws3uBUUqC;XZ}A1p;{;GW1eqam?s2$uBCjJ zDyDvQq+sWTG9>1+J)Lz#<3f?Sw_EK#~KZX zqtM3=`F3r4BoZpI7MMrS!0ku|PxhqD?BVC{<3D|uUHTJ=n^6jiXe)CpQWxsgk^$kj zLQNX@HFkJxzlw@bK?n`Sp&>Yj+YBBx)Om5_Bw2uhdnJMH!;9eB!qP#+Gw;`Ra&Zu} zmOniIQJt2a?Xlz~RYz%W*?a3ELB373b8p%*H$5n~CsRx0Q{-m7!++M}n0+y13EL5e zvPU7SA$a_kPvXnfDNq60z8W(ug5@+)m5g85(QvAcHUT^!VIRJZ`Fd~glf;;R)7xwo z~XZuFh|q;8N`P8jJvVBXF+3^55=QPAA`kbDFTmi@m;ffTjy z1HMURXPE4dbWD88rl&(W70hQvcTch1Zg7lp-#AcAe+g3u`QhU@U&W43Oji#`(0UwPN(_6^5DQh_D$ihBUv>L3^{jlpwvfa@sIN| zx}4&7$%Ss~L&+uXCIraAyWGyIahZXp%$e0S8O-Od_k9&v_{Gt!T`CcA?oO7Kib!UET`ZoL+ zY}G&O#ms*p4hu={Qo++pc(Yjyc@G@&djfLMyD4javHz(*kBpiDG|`M6Nz;GKX(ja? z*vb%WpL7NcM0 z{MTOH?qm;wNM9hD?75mnCv<8o%J1@b*vnRTyM9<5h`>FrU8ScaV*|UQln8tM8JtZa zAEny&v%3ZVWC${%O{Y+phN%?t=UXrV1CfGQ=&>Q6H}*fjZKU!=d`V5w|4NlZx-DZC zdhavq+i+Jmy(#ymsJxP;(Fu(1=O{Wjz*cV+tHo@!S)Eujqm{Q)C=Wyc8eOQck@#m3GRP~dLHykqEmY_otYI!<^V zHXHRbDtep9+p^HJTSSNuRz|emyX3z6N93;~kFJr8dYq7~NR%ej6~9UjdMcbe&|pzJ z_dG_o?ni!AVsByqs~^OD8!r9o-UAs~MJQPj_tnE@2$XPzWNC}w?lVBs^7b3ejF#aL z#Ug_DzfaU>uA<*BRfSyGU*iNWl5txx#_w{;hij)nv5^=P`ieDD`8!MaO)~+s2a6;0 z=jIcG7Y(^lZeSU*EF%2h1Fp(y=$v$R{#AjU6U5Si_&!Oe`NO>}RzIySd`&f<)`%{( za6K1U)3(0Q%0Df#jeB#+C33)c4+i+&JM`F5M_*hNH{Tic;Zz9d7!Ip9cV#26dQ_)^nm@laMLi^nZNT zJ_eiBdhQ-bQ8nMlAMii0O zvAwuQ61qa=d1*hVIS4)4VP;~P54UCa+kN>(iA!g)gO|#a()WcOez>Vl=laX6Y;Ju- zSFDOo9r>{W8Gh^#7jR^EpD+={7MdxZ?0j;1g|b?o1q2{Ax%o4{!3SW5pe)%{Pwnp@ z@c>M^3*eTB(y}b&F>bXibZGg>F}41@pUc*^FNVt8|2X86g-@3JHkl4y6LDZd?E_*> zAeK&>hk*>(Hx08-Lexbw${K|q{_Ma_17`pWBoki79~}kNB>h9`n)qwWMSnU6C&qgo z**#V!lAv=VKJR&LRp917H9%#Sp~=d#7E2ACy$36S428Bv-jo`ov8Zl&y8o+i+C~j| zJM_G3hq#Mm;xx4V?YH;qZUK{pA?;Du^{7r0Ff!_nTz&t=_VZ7I9^LGTox1LROnkJs%9n7XjBi+HaDFD%@bR_lf4N~fYT>7V zdbfJ~lQRG0I9XL*6>WMqdoNBgvxX z55;{FZiYQKt3Dd2ub*{@pe#l1u>r3LcW!RZvmTE4z$Z=nP5jHSv7p>YyhqHMJf_8u z(d==KTf*hGJEr~_`dnvw?He{?KGq+X95B0y$7($W*Trr$$!ElqMrnEQmlrkw8au1$ zpuc6v-iVDlDpQG$AJ>dt6Io8BZz3yA3u#!Tm7(jpY+ZJ*5RowzoXM)b7T4r!skXMN ze>?5Q)=reJNk%0Qj0z(~-EX~?@-g4HCsUh0(ZeU}1CggG2oIlpp}0-rUYg3Jmo5cD zl%_xCck;j+S{y8Cp;rc^I$$8N0q`B6*B(kr)fDa#!{BUm=cd^;fBch@E7Phf1|4n( z+N?Qy!~fHZ&ySz~KPY0+gByN+7@_awu3`LKd!_oO*D`M9A&hE1WavsvASK>*ML>%J}{Ui{zWMVc0DdJ4KS+4#^I^+@&WM zX}@7kX+gH!^S&)7)f(4o?}N<$(aEdJJmli)2IVs3K#Oun@$-aa?uNANpau8Z$B3B! zDTZkU2;pa=AjhvMsEht@?oyZwCgLMtv91PSy)(Kqz8Z3Um!;z@EumATd0<$?hxE;| z$N1XF)TFbjS=k-gMf(7(Ga42mIG=nxLy>qv75x>ZphT|@AVtnuep0RzU zg(kwQ)e~#*u3vk&+Rfx)IimaW%x#Nh{fybBBuLc^pj%e+&=edjl?sa#z{6C&&A~?$ z`61xFUFFR_1&EYqT0IF1pLwC}I7rfzSm9UWkl0Y!1zDCcIIl)|oWggonZ8>)(MT#T z>~^997jt+bPB6eLj*)ZWF_8+gLDT7-!M@Ja9Uam30~9hA#LWzJ`n?Ywjl3a{cq#aE zR1l*M8`zCBXzr3C`iI~)4Luw160Rr-BCngsEhX#7+vjB|#}vGWmxm4(@X}#M2#qrb zsKAnuo#?VKJ7Tj6 zBNBB@=?$r`ev+_bRYyBzPRM1q>nGyw7_0<_Q|EJD+}ii}4C_nC50XKC34(mCp{WhC&bMzP z@~`o7v_xyrDnE!(?stj^KOIIRA%Ai|0}&zGMO;$!wHzRA$)?F%ESUR~)0j3+%xjb( z|HyhsAoN2T_wNi^%c9M3t`j7&KiuUt`%N<_e=yT=+qL7j^;2c}?uXB2_PnuQ^n{54 zG6~Rr`|@aI(fK#(6qZZy=mV`{~Q? z%dsTkE0$4of3*-fgW?!A$w48zvle;AuwljjVBzLFPCOCOAIIwbPIN-DpsA6IhTwke z`Lek-Ui(OUE9hgx9MUQVtG;4TQwZZkC)d{3*A{bZ`ulD@f~|P1g}X?Q#I*WvHI^kT1IC0bZu2+2=4d6FV@au37v} zrh+U~&ptdrRb&jll?GS(5}ThgzWCSxV--b+XhaF=2piy2VLZ|E{%*?Y6Z^a_6HMC& zLSgiqfa|L%ovZ4>7d53$|6Q0G-ErHTA(@##n!?S1cF0A;DuR8*o-5T5*v+8O=L!MS z*+0DRJ`tQSocpy0E#I_cr{7D>xj3yBVIKD8nb%k4TCFgtSJ(FQz=qV4V%dw#3Q=)} zpfnw}KJ*@?lQ*PzgB_Fz5} zRGi>vp#4G#>g(&~T-!%stVT8jMg`-~4QE-2$px=p7Dc8|&lk?Y3KDPn_C0#(1*16_ z;<3lGxwyyoZ%QO8^qkIM(Fcqsp_pYQ%Av=PkzZXgmjU2>MNQJie7A2cqZGl>>I>X< zd&O_RD(anIQOR3EUT&j4YEW%xX@|+D-4Ikp2VLVWRZR?hK35x-Kws`lORddJ^tEC3 z>H78}U~(@P#_T<8wP$)#5jzHoZLfg#W*Qo`dG^Oo87@NmVK+I3j;MmZ!Ix{)xWiJz zN4Q_~h^2jdFX^G_gEz@#!Uw!c!cq*`OQ$C#cbCah;R^u{u2^Fp-J&qlm%XW>{LzzHsK8EXbvUU3+BL^~V zr0x2K08_qh9XVCAsY2>k!;of?Ed|*0K?=_JxCo)hQoVcIdZ-h&bF&g5A06!3xjhz! zGR3}}(l*ZBH^0#KPdL^~C+gs2U1ZLEGgRVoh#;Q6`hY4XCa3&O%P_2{F4n(erb%}-2%-%odjI(5AdnlHm zs*-rjm*hsKK)eH=a}K}wv7e@3sLoC+zhVDxw5|8LXU|hp-Bpv|SZAAC3OY@?Wf05m z0W)0Y??N0%jyv0v)jZe}2 z?jC1M@Tum*SXu1r=d;a9Rq5EdnH|cKftXXnfEXcY+$UW+ob!hP<48t*+7=+xR#}~g zK1qBYg{1(6)HFt%y-zBp0d*j|GEFVTq0@f5Tg3FGl7y<~r#&v&EOuDyX!X<@c4p|# zX=FRd^zCeG{&FGE%gvko)@;fy)2bwWY|k{Efl?3Q-3@u zK+s)6Xfz>LqH!C2BP?LzONckY)%Ck|3pfCNZHQ2d+}*I-BvI)17k?`%pR8)NI}xmM zy83eSm1(j@&$RE(cec*AsK9OHp2gTdD_`!`tns^#n(@l%`!rZeB>YQ1cTN6f}5dW+20G*!$9V!VShDm4+IX= z-=&g=KO{8yI%;BH6J27r()XhGSi@1KHaZgyw+qRoFN05)l097E;8TbdI8mv)6Pgru z=+!p!FE(hyktc%axo2M*5e+nD_)XRMAWvn>tR|5oTnd3zS${}vHLzFPJ7nbz6!@{n zkn)}Hof+@k5-$AYBI!@zke(=io82iE@~jD9#s^wrSNG?8gTw278}M^1IhuTAm$V54 zNt0MYKd>1;7}g1o9JTWWIUVi*VhzTpAE9pko$Oy%+#WySOY$}`7+4z`pyxxhdB#tV zXV#&*!k{S@I~bw z12GOMo^XXs?HPCgs}R3CF5TK+{_5G0*ooyh%Q5OtkvZ_FG`nZ~APtW`AbA{-i%r|%&%(?9umzWl7dX}iMS zQ6OrT37Cx%8$inP&F|51sH$IcH6E`92maka>T|kc!sN0)gApMPl-+$hywqsb_*zHY zgt?o*o#n{&r8z~ukQZ|>*&Z7rinZ)S2E*^(K>Cu}OV0n2uj8-=A2z36c({2uRtHc9 z-`kMxn190=t#k6c=(I#8ANm)qL!{Ps#&9cQB6JoMiMc?Lv-&s)xf*S*`R}jz|c82a{g^5J64@Ig9iJkM42o?zRzi|K_PYJ?+r~(y7hd?0C{j9 z_40Q_W9W>BgME$ubULe_9BnLNaxl>LLsQ!?E6;km-G7-GSai}$d*DxdnR~^0HI?Yt z;?DTG>WuV?i(7ITT%yz97!r>7aIiz=#BS6->V|w$OGJ%Dd{*spx!|kruQPM3!J7WL zW}Qa@{0;2CUqfPCK?@Wn!ceChhv zjUkT!f|Ja{1~p#ZQq75>?VX{VEWlED(D0A@7fX= zaYiL9ZJ7Fvz12hy%beL?0)bywjCdv4Ez}HuW~8Iwn%6RjaPZ9iOC#KDa`zIf>B}9P zy|H~|%+hI>qoC5S!A4$A4WYMnt&JSpNHp1cfjUt^HT@PbeVMWD0aN*+IG+;1)JZmy z$AunE&5?%5kxmRcWOdjf2f5LBQf2R1vLib5XXddG(Bo{Yv3y`{%>QHWJ)@f1 z*8O2RC`Cb~NK;S{0TGbiM5QPQf^O+en)D`}P(&%xM4Cub5fJIUCPC>nA~iq=MF>6A zP(s3g=A3))8QcBk{rrx@$N<*LDs#>GJiqeHl@;@S4K0g>l5RtUWn`rOhGkb=W+I)(?@%q80VEK<7rRbkZej9)r=uS&K>@Ok+B?3U8)3Y%_68N znC#RXK$kri#>Wxg%vnv~U+&gF%XRh{L_a{F{2Q_2EQQ>kFl;$PFu&lGKk3_6`_zy(S_y62Nx zz^yVg@oAlLPHj}7qBGRZycuJ3L_L&RnB-Kbygpooz-7qqYt2JuyDO+pn>}3@^U0EX|Om^=h2srFBS0fPzoEe?pJhScBi_-bB~iWaHtd z*EhFqh=+MMM$g?YQu2$bzCTysOS=``VvO%i`PlE7eN(x!xE56_-pd;qfaG@Mq^7kd ze@3UMv0|NqF_FlUD9gFFRk_J9R}hEQ3xr_#&WD8uBCK-}-z1XK)3UzVH^ryUzoBv| z>6hd?TD<3x{e6{a6HEaodg*UZhaW(l_7S5FIjYOLQ2Cx3akG-lm&6aL1kZuHwhW)3 zIL)IT=f2kiA7bq04>?bbu9>w)A2&}UDpU${f-z%oJW?O;hPBi(nV7|_TLiK)&ZV_? zXH7SWBJ(SU44feXXL=55YYQ>VraQelA>uS4ArH_Z^k@8OLiTW$ogSX^H41#F9cID1 zxelXH?}X9npN|U*4l}EX7qeHtsl1WOHIJMO7OfP_>#27+3apKjD#5^Io*po;F_Hzo z?tupF<34&DgU^D5mSUfL9eXm#$uKSdzRxoufVKP3aCg{^K<-$e)cvbqqqqM3@l7IA zNhwC6w|rwfl~(DQcjVP7{oYz! z{fINHHq)E1{6^=po%7>&TYa7wq?OGBt`h6*wdfBA5nVX3OyWVvTc(`C4P& zdJ})*VCDbT|L4AAjJjydfxX!H^BDBgO+8^jW;sHWBE(+zO6To-)_dCLTi# zTrxd=SLxFas8>}zU*3Q+O8O{>vc>i$@9o4rY_KxRvztd^DAB4%7r zcI-rHuOxiDfz2oTSN4vIE8jmk3Tc{tz1Uu;bf^@u+mYcDfGBZMseJSq zGVtJ>+2oV=cjpg0!%Bk6^6jlTo=4@!)=IGbW)w=%I@tGVlrreCl z9utc#xWto%U+$uzak5TK$%mw8KVr2Wt)1~*hvgj2?FNc8WhwXNrMv=LgI<9l?WwxysEN1MuX8en7%6a6rX}nzp zcpm0E3i(R<(SVzA1(ze|e$S*U#NIOs{ZP>Nb2aK7tCTToaP6&WCHf)_MXt{d5T`85 z-mw~{*dCNcp=Q`{;9N;fovOd)uzdfOPTEPdocNGHj{%W$ASg$9HZ0|hs^vOy(5JAB z?e6IE1LXx{h+7bPxBu+wW80%wdEP8l$47hnA)dGEM%b^^Onjrt-dR|DU9?*kKF;a7 z*#PlK_g1}Erm~thhpmXZaLRB@u%)I?bmvlWtr7m{6N^K^)1Q`y zrslPI{L@9-!}Bi)qYgDr>pBko|1c>7B77?uCfQLPRsyr)LLc z$V4z~1pVYvtWePvy%&A%qXEW_rfic#bv45!yV4%&A!&QQCW4|^;_*~tegg($Dpi%Z z*L+cV=>wAl^(^cPrmQ{sVF{!Fi4Mq0f?G(?gklKJhp}aQ6{6%*l1>ENMSk^csR{Ha z+hh*iEZzAE%*0CCZhw!Aim609uG+(R8mW#=d$@cD+=3RV^?UcV&sJpnv$2K{%y0u^ z%z(@4Tz_iTX_N4l(YgE8qvp~yFB8#_-P;0{O~%P#&JBTf%Bl|w?eT9Ef38(WK5i`1 zMXkSk-Cm*lI6s6V7XK?lacpII8pwQYl?4&&b;oHybWA=#X{kWPX^pkpZn58NjBtBnm?3*V-RIYfn@72O1XC48 zc(ZRYu|q4#|A~7&?%0UuUiqkQt+HhNR}NTS!q&>n4Y>OCbgsohB8L3gDq&S}`r2dD zRgSO5rAE^pS!J^E!xO%q#1g_uD%yK^?BqV;r%3P{%%MB_gCjsz=ynBnI7~6yo!zEkvVsZ5shRQqBZA)gB?UN(9!3PK; z4HSr%eIg2!#*VTf)6APc$YKxLb%f^AlE*&3^Rx47y1{}Pi2ih5$!745_ zJaUQsz!9jE5I}sP7yUMVK?Sd>Yj5pLF`oa=L52gP6tnG z$;{>HtcZU!rU|Z5-5t#;6zv>Fu>bUH+A#KA;2z1I+k;q#=N+xq`QmcKuSIP{R4Ahr z##D%z_s7piea#CMdi;Gk=5PW*_{=!}3THAp+MV)b(RlQ=Y3377-Fu2lfgX37LxI;=9wn zN9;{`DCuA&1x?+^a73T75|mTLoU&(mTtS4?8LYKE=RL94TLCF4mTu6F(y@-3{o)#! z1+hii(}!1dF2^tdhuo7&6^{~6bduI44T?%MMv66>*KsJj$V6t+81m!7gLOuAmBqbDIj|G3{W z@I4YLb;v`Tg>GK(YqhbH@6OA)^(0`en9;7Lo7w&Ml^}Cg+n&a9o^Tz`3jy(;dbeWP z&Kpjvj0#1L9)_h{|4F~({E*wf?Q?tTIW4*JvmZs3uPhk*m35xp^~2Wq#C7DD6fw%b zc;0KWnzSHe=DTY$7WL)#(5T|CFefIBUBu3L_)tgfwv-X!(})U&8|%B9JUJ>qSwg<9 zq+;!MViBm)9QSx|jd_}{YF|;v;x3~9E%LDGvy)rkYHd}%Z=Co}R;gOA?2TXh<=Ocwveptf?|+303nu)2*0pVlPP+Vh9`(D{*3wU@qB!buff<;NFGIy`r4 z9Oqxb=5gbD4>@6J_MLnFf^xM}Ife7+#4Kem+2<|-M?C&vzg25<+LR@tOfwMG&ODCm zzQ)qG)pV@{7nJrKjkNMCun_lLTq9pbsxgz@y>MQturl#rOXAzHu`x!m>E1oDyNtqF$@1 z5-tg>E;XvQxi&s2h@m8=LJ@SrhE63Z{uxoV*<{1!k*wz{j}E%`k>>MbO_3&8 z@|W;2EWC^uz%OLOzZZXsX#QAqe(+#x+R424-Q7VS@aPJ{?h}N@p31bLI5k{-vL#Q6 zzpNbgK~2oR!T#8{Ol~A$Rc2!}GQ~&REbuKOx0|us$7zXK2bW}DU7_VX-#67Y&x4Pv zXFufZJz{UOFpXiF;mN{sPQ|bt#7!57W*GhYESgkFhkf6-=J0sJD?5%}wh>(-%I=&V zWpUMSw33eVl)O6Y595u)(Ij|a$J>&E=+Ak!@$VHiU;>^!`K$*crA99@-EoGHp!LyX zsQ@K9;GTh+u%H{&ldC{xg%8uVGs zODSeF$@NO}geb`A-8b|1-I!(HRT>qY%FOZz z{2i=3N0>M#i>#WIYxMi6ANiu!bl@U9fPST>BETgx=fqLiTEN+y0YDgDL;5Mmj@R!On35lCvVrk{K5-xiLX=Z_Xj31mm-N zSY&GyJNjayLj5fAcd9Eo;umI0s&IC`a2AhXAd4;JD*4`;sIYWWJ%Ih1@5;DVjqn#@ zh3UFl*D%tUi>ffIEbK{S(NU^Y*XowII=Z;m=OMO_MvWg@O-LAL^Y>=G9&|o8Xc;Yg zj%Pv`e6>X6;C`)k=!4eR9kO$=t%jCKi(^i*$p^-o1WioK-nW zyg|3jBUOZ;+&jbLjq0p;D)%z)_-ZQ=^ao{sElxMa;A%y|eHeUj7oF2sTIt(=RSPbq za7r;D*9Cl8TMoGGs#4c)+K-p_Rk0%!i^~4o%2h5~EEvNZ+huxMXsp8`%^xL>=70{7^-zR%7+b z-2~}W>1Iq~k|Pygd5udd_!Rh0O~$;?lC zt2PBIP0Cx3I;t9WR#_@!*44A4OCVPWOW@}9Skb!Vwqa@fUOcnn#g2C&qnRtM6fGrU z3co@T!Iny2)_>p8npbr4tdc?pX^BRso==BPJpPiasG#{FnW@Znt7Ks{AdjQfo=GQ{ zpgxU^sN3c4J^!MmlE6dY>iLD^+B>prajd&PF%+k+5|S5}tntun`}_XxD7NmGZq6WE zmN?@SXY%+tXLk5vUwh>hpZsjmJwAV?sUqz3_TjL<>EtgJH@Q>(!_kwYx0jFwVf-p5 zYnMDvnpHOV~2TZD`e<7~ge!LTyPjC$H znmUv+vki?yI5nAcL{4K6Ok{ycwOtXd(D}s@dN>ra?T|a#9+R5%+&*E9cdnpqsFYc- zgV+pH{6H=$yngh?>t{(=Uux*mg~zqE⪚=nB4Y$UYyGQ8d-T4?(ssP42^St&pR87 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 Gy#E3Cbcx{r diff --git a/packages/sysutils/plymouth-lite/url b/packages/sysutils/plymouth-lite/url deleted file mode 100644 index d4557ad929..0000000000 --- a/packages/sysutils/plymouth-lite/url +++ /dev/null @@ -1 +0,0 @@ -http://sources.openelec.tv/svn/plymouth-lite-0.6.0.tar.bz2 \ No newline at end of file From 6a1831436f120a11bf7fe8f9588f140a95095cd8 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 00:12:59 +0200 Subject: [PATCH 107/171] xbmc: - add splash image --- packages/mediacenter/xbmc/install | 1 + packages/mediacenter/xbmc/splash/Splash.png | Bin 0 -> 298487 bytes 2 files changed, 1 insertion(+) create mode 100644 packages/mediacenter/xbmc/splash/Splash.png diff --git a/packages/mediacenter/xbmc/install b/packages/mediacenter/xbmc/install index 1b4baa796e..4ef6e081fd 100755 --- a/packages/mediacenter/xbmc/install +++ b/packages/mediacenter/xbmc/install @@ -83,6 +83,7 @@ mkdir -p $INSTALL/usr/share/xbmc/media/Fonts mkdir -p $INSTALL/usr/share/xbmc/media cp -P $PKG_BUILD/media/weather.zip $INSTALL/usr/share/xbmc/media/ cp -P $PKG_BUILD/media/icon.png $INSTALL/usr/share/xbmc/media/ + cp -P $PKG_DIR/splash/Splash.png $INSTALL/usr/share/xbmc/media/ mkdir -p $INSTALL/usr/share/xbmc/skin diff --git a/packages/mediacenter/xbmc/splash/Splash.png b/packages/mediacenter/xbmc/splash/Splash.png new file mode 100644 index 0000000000000000000000000000000000000000..8c86ae06a7e156780ad0ada07b71fd661fd3fc0a GIT binary patch literal 298487 zcmeFYX;@Ni)CQ_$S!UYcRBASvnNw;x51I8^S!$Y7IHaUzia6weC^V^=Q)SKynVF>_ zngdQq=0J{=r6?#kV0^($6)Vn~bQ^r#Y}8WD#l5ftGQoNl4Y z6_@LK6sd=jC{UF9@9{?Ce_l9dX{(EF|L*^HTlQ^NMw&vK|L=$eabD~Hc8zxLy7#}k zkDob+{QDobH={lO4T^~TXORD#;Xfd3`@nxd_zwvG0pUL&{8t|QR~r3KB>XQU{I41Q z|E`laR^^tViEjrNLI0lbvC75GDMGfi*kk+HL8u;UpVbF{@qZ5xj#w;T?BmTPxs`63gBr$p_2t&Z++6A@Xdal6wTmUc6v?jWh3 z%?k&2`CD%Cm9d{2vqVHX2)_1=ACceVOX2@03W#vrD3$?>z=~MB%NbG>@T~hUEsTgF z0Fok?B)6P&XTEH0{vaxznh*?HHZwD**;^sFXxv7TAkDyNbCAzGx0O@wDDPn?DlT$7QBb77Lw6B=r*nX?)oHly zuo7%J!pld{MiAYq5xASeKvc`kHoC6hHFRF5wk&#PX%0S*Q1ptkeAzDIHB_-M*|KiO3I%zJ z`(pcQ7hB=+rm*!!U16KSro4+D0X{)7=$?+R9x*3Kg(-Y9J^6SPzGt(mHm>^#rd_*j8tmqgY=Y2BxS2y*L2%;YrUK#y*$TpIfFpx6%>$78rSmN-@pEdV zADiM#95S`jYsiwG@dR$_%M*v9UH89O58kKWGBId&=mU%d<;&N{Hm;kFE6OY?Z<-$t z-D4v1*gmBMu94VU*RybVn)Y{q>PNucG6nVrxL%68K_>nFNYOpkOv5%CXm6wt_ioQ7 zmr6%kmhQJ4OvjK$mS?bQ$;7GOuG(-qiVTdnQyC z8Y$HYBPG(cK^if5dGBF+Xoh8Vo_SNzZ*wXk_};eZ(@Wr{iGtbH% zpNuS*kM*gL(!CC*jPn;`45SL8I{bLR3F?dYQj{QblYLRlVcGU{oTWZLG-gs&Fc}TI z7AP2TVL$j8S@Eiw6BM#b8LsOlCerZ>P~C_6@KXagZ=a52-a6UuI@QVTA+EQEjI1U`~%UV<+l3O@_x5qP(1dB5MR5&E2#W%1Od@mfuzhB7@rk^pZSZ(zY9YM1 zXn%C-uX+g_==-`ez?vD4{8&VtM)>{&d#L?;ad0$TAWvG+2XPI_3u)0yJLzr6n)5RV z{yYZx*D?~0J0;h=9*yO?{MM|ASn(o|) ze=^y^+G?hW!kJ$vQ1Lg=`jgz}j}M9*uwjl07{8u=M+`kc%3Gr0>n%XZH^6T`Hhsp? zzFm#1c+0T5(a-=zGGHSOC)~KN82d;eUgL8^B+5Iis6+67U?Y%LmXNxXQ3I9ueoH<= z3V#3K@*5@}wa)945MmQLZBkz1vVQZE-GT`;%Ltu*X%F!*g=KKsA*nyMTf>j%5h(5T zI7-V(BN8XO7J6!-kcO+`MN{@DtcUFUN+V

}i#Y+w}jrM`W`gY%MO}=H|7_4@S80 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

Qb=N5=mE47H;> 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

t|}f?~zm{)D4A^)SSUdG#yhx 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⪚=nB4Y$UYyGQ8d-T4?(ssP42^St&pR87 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 Gy#E3Cbcx{r literal 0 HcmV?d00001 From 9559b6238a1409fa43149556306dc3d56bba6cb4 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 00:13:29 +0200 Subject: [PATCH 108/171] xbmc: - add patch to change LCD content --- .../patches/452-xbmc-change_lcd_content-0.1.diff | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 packages/mediacenter/xbmc/patches/452-xbmc-change_lcd_content-0.1.diff diff --git a/packages/mediacenter/xbmc/patches/452-xbmc-change_lcd_content-0.1.diff b/packages/mediacenter/xbmc/patches/452-xbmc-change_lcd_content-0.1.diff new file mode 100644 index 0000000000..d9c54b3756 --- /dev/null +++ b/packages/mediacenter/xbmc/patches/452-xbmc-change_lcd_content-0.1.diff @@ -0,0 +1,12 @@ +diff -Naur xbmc-29490/userdata/LCD.xml xbmc-29490.patch/userdata/LCD.xml +--- xbmc-29490/userdata/LCD.xml 2010-04-24 22:42:45.000000000 +0200 ++++ xbmc-29490.patch/userdata/LCD.xml 2010-04-27 17:26:02.946045110 +0200 +@@ -21,7 +21,7 @@ + Freemem: $INFO[System.FreeMemory] + + +- XBMC running... ++ *** OpenELEC.tv *** + $INFO[System.Time] $INFO[System.Date] + Freemem: $INFO[System.FreeMemory] + $INFO[System.ScreenWidth]x$INFO[System.ScreenHeight] $INFO[System.ScreenMode] From 81faecee0876c631cc6d0a88760b48a0ca27a3af Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 00:13:51 +0200 Subject: [PATCH 109/171] busybox: - add clear applet --- packages/sysutils/busybox/config/busybox.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/busybox/config/busybox.conf b/packages/sysutils/busybox/config/busybox.conf index 55d1bd1358..e19516e704 100644 --- a/packages/sysutils/busybox/config/busybox.conf +++ b/packages/sysutils/busybox/config/busybox.conf @@ -282,7 +282,7 @@ CONFIG_FEATURE_HUMAN_READABLE=y # Console Utilities # CONFIG_CHVT=y -# CONFIG_CLEAR is not set +CONFIG_CLEAR=y # CONFIG_DEALLOCVT is not set # CONFIG_DUMPKMAP is not set # CONFIG_KBD_MODE is not set From 917ed6e7acf10169536f60574df468f3a36ac172 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 00:14:20 +0200 Subject: [PATCH 110/171] busybox: - clear screen on boot --- packages/sysutils/busybox/scripts/init | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/sysutils/busybox/scripts/init b/packages/sysutils/busybox/scripts/init index 0a0d1756d8..5c717a7157 100755 --- a/packages/sysutils/busybox/scripts/init +++ b/packages/sysutils/busybox/scripts/init @@ -1,5 +1,7 @@ #!/bin/sh -l +clear + # starting init scripts for wanted runlevel progress "Starting Init Scripts" RET=0 From eb4d89ee3d3d83f2b99f649521736151986bb41f Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 00:15:31 +0200 Subject: [PATCH 111/171] busybox: - add simple progressbar on boot --- packages/sysutils/busybox/config/profile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/sysutils/busybox/config/profile b/packages/sysutils/busybox/config/profile index 395c8918d1..f629dae7ff 100644 --- a/packages/sysutils/busybox/config/profile +++ b/packages/sysutils/busybox/config/profile @@ -22,6 +22,8 @@ progress() { if test "$DEBUG" = yes; then echo "### $1 ###" + else + echo -n "***" fi } From 79a0f312b07ef2f70bc8496413f000456b208208 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 00:16:14 +0200 Subject: [PATCH 112/171] busybox-initramfs: - add applet echo --- .../busybox-initramfs/config/busybox-initramfs.conf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/sysutils/busybox-initramfs/config/busybox-initramfs.conf b/packages/sysutils/busybox-initramfs/config/busybox-initramfs.conf index c22aca4a05..584fc3a78d 100644 --- a/packages/sysutils/busybox-initramfs/config/busybox-initramfs.conf +++ b/packages/sysutils/busybox-initramfs/config/busybox-initramfs.conf @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Busybox version: 1.16.0 -# Sat Jan 30 22:58:05 2010 +# Busybox version: 1.16.1 +# Tue Apr 27 18:57:48 2010 # CONFIG_HAVE_DOT_CONFIG=y @@ -172,8 +172,8 @@ CONFIG_CHROOT=y # CONFIG_UNIX2DOS is not set # CONFIG_DU is not set # CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K is not set -# CONFIG_ECHO is not set -# CONFIG_FEATURE_FANCY_ECHO is not set +CONFIG_ECHO=y +CONFIG_FEATURE_FANCY_ECHO=y # CONFIG_ENV is not set # CONFIG_FEATURE_ENV_LONG_OPTIONS is not set # CONFIG_EXPAND is not set @@ -203,7 +203,7 @@ CONFIG_CHROOT=y # CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set # CONFIG_MD5SUM is not set CONFIG_MKDIR=y -CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y +# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set # CONFIG_MKFIFO is not set # CONFIG_MKNOD is not set CONFIG_MV=y @@ -863,7 +863,7 @@ CONFIG_ASH_BASH_COMPAT=y # CONFIG_ASH_JOB_CONTROL is not set # CONFIG_ASH_ALIAS is not set # CONFIG_ASH_GETOPTS is not set -CONFIG_ASH_BUILTIN_ECHO=y +# CONFIG_ASH_BUILTIN_ECHO is not set # CONFIG_ASH_BUILTIN_PRINTF is not set CONFIG_ASH_BUILTIN_TEST=y # CONFIG_ASH_CMDCMD is not set From 8a215637bdcdd9077ce3b39c7f73e80e803b64f4 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 00:18:18 +0200 Subject: [PATCH 113/171] irserver: - add udevrule to create /dev/irtrans* - add remote config for Philips RC197 - install remote config files - add patch to use /dev/irtrans* --- .../sysutils/irserver/config/81-irtrans.rules | 1 + packages/sysutils/irserver/init.d/30_irserver | 13 ++++- packages/sysutils/irserver/install | 6 ++- ...rver-add_support_for_dev_irtransX-0.1.diff | 30 +++++++++++ .../irserver/remotes/philips_rc197.rem | 51 +++++++++++++++++++ 5 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 packages/sysutils/irserver/config/81-irtrans.rules create mode 100644 packages/sysutils/irserver/patches/01-irserver-add_support_for_dev_irtransX-0.1.diff create mode 100644 packages/sysutils/irserver/remotes/philips_rc197.rem diff --git a/packages/sysutils/irserver/config/81-irtrans.rules b/packages/sysutils/irserver/config/81-irtrans.rules new file mode 100644 index 0000000000..58495b5f37 --- /dev/null +++ b/packages/sysutils/irserver/config/81-irtrans.rules @@ -0,0 +1 @@ +BUS=="usb", ATTRS{interface}=="IRTrans USB", NAME="irtrans%n" diff --git a/packages/sysutils/irserver/init.d/30_irserver b/packages/sysutils/irserver/init.d/30_irserver index d13973dc6b..78fd21af88 100755 --- a/packages/sysutils/irserver/init.d/30_irserver +++ b/packages/sysutils/irserver/init.d/30_irserver @@ -2,9 +2,18 @@ # # runlevels: openelec, textmode +IRTRANS_DEV="/dev/irtrans0" +IRTRANS_LOG="/var/log/irserver.log" +IRTRANS_PID="/var/run/irserver.pid" + +[ "$DEBUG" = "yes" ] && \ + IRTRANS_ARG="$IRTRANS_ARG -loglevel 4" # set loglevel in debugmode + ( progress "Starting IRtrans daemon" - irtrans > /dev/null 2>&1 - + irtrans -logfile $IRTRANS_LOG \ + -pidfile $IRTRANS_PID \ + -daemon $IRTRANS_DEV \ + $IRTRANS_ARG > /dev/null 2>&1 )& diff --git a/packages/sysutils/irserver/install b/packages/sysutils/irserver/install index f38e5ec61b..8c196ca804 100755 --- a/packages/sysutils/irserver/install +++ b/packages/sysutils/irserver/install @@ -10,6 +10,10 @@ mkdir -p $INSTALL/usr/sbin [ $TARGET_ARCH = arm ] && cp -P $PKG_BUILD/irserver_arm $INSTALL/usr/sbin/irserver mkdir -p $INSTALL/usr/share/irtrans/remotes - cp $PKG_BUILD/remotes/ccf.rem $INSTALL/usr/share/irtrans/remotes cp $PKG_BUILD/remotes/irtrans.rem $INSTALL/usr/share/irtrans/remotes cp $PKG_BUILD/remotes/mediacenter.rem $INSTALL/usr/share/irtrans/remotes + cp $PKG_DIR/remotes/*.rem $INSTALL/usr/share/irtrans/remotes + + +mkdir -p $INSTALL/lib/udev/rules.d + cp $PKG_DIR/config/*.rules $INSTALL/lib/udev/rules.d diff --git a/packages/sysutils/irserver/patches/01-irserver-add_support_for_dev_irtransX-0.1.diff b/packages/sysutils/irserver/patches/01-irserver-add_support_for_dev_irtransX-0.1.diff new file mode 100644 index 0000000000..c9aa492d56 --- /dev/null +++ b/packages/sysutils/irserver/patches/01-irserver-add_support_for_dev_irtransX-0.1.diff @@ -0,0 +1,30 @@ +diff -Naur irserver-05.02.10/lowlevel.c irserver-05.02.10.patch/lowlevel.c +--- irserver-05.02.10/lowlevel.c 2010-02-05 01:14:44.000000000 +0100 ++++ irserver-05.02.10.patch/lowlevel.c 2010-04-26 13:22:40.171936190 +0200 +@@ -2638,10 +2638,17 @@ + #endif + #ifdef LINUX + //LINUX Autofind USB devices +- if ((!strncmp (st + q,"usb",3) || !strncmp (st + q,"USB",3)) && !autoflag) { ++ if( !strncmp( st, "/dev/irtrans", 12 ) && !autoflag ) { ++ autoflag = 1; ++ res = 0; ++ get_detail_deviceinfo ("",st,IF_USB); ++ } ++ else if ((!strncmp (st + q,"usb",3) || !strncmp (st + q,"USB",3)) && !autoflag) { + autoflag = 1; + res = 0; + for (i=0;i < 16;i++) { ++ sprintf (dst,"/dev/irtrans%d",i); ++ if (get_detail_deviceinfo ("",dst,IF_USB)) { + sprintf (dst,"/dev/ttyUSB%d",i); + if (get_detail_deviceinfo ("",dst,IF_USB)) { + sprintf (dst,"/dev/usb/ttyUSB%d",i); +@@ -2655,6 +2662,7 @@ + } + } + } ++ } + else if ((!strncmp (st + q,"/dev/usb/tty",12) || !strncmp (st + q,"/dev/ttyUSB",11) || !strncmp (st + q,"/dev/usb/tts",12) || + !strncmp (st + q,"/dev/ttyusb",11) || !strncmp (st + q,"/dev/tts/USB",12)) && !autoflag) { + if (st[q + strlen (st+q) - 1] == ']') { diff --git a/packages/sysutils/irserver/remotes/philips_rc197.rem b/packages/sysutils/irserver/remotes/philips_rc197.rem new file mode 100644 index 0000000000..e9ccb72d5b --- /dev/null +++ b/packages/sysutils/irserver/remotes/philips_rc197.rem @@ -0,0 +1,51 @@ +[REMOTE] + [NAME]philips_rc197 + +[TIMING] + [0][N]0[RC]2[RP]87[FREQ]36[SB][RS][RC6] + +[COMMANDS] + [1][T]0[D]S11101010000000000011110000010000000001 + [2][T]0[D]S11101010000000000011110000010000000010 + [3][T]0[D]S11101010000000000011110000010000000011 + [4][T]0[D]S11101010000000000011110000010000000100 + [5][T]0[D]S11101010000000000011110000010000000101 + [6][T]0[D]S11101010000000000011110000010000000110 + [7][T]0[D]S11101010000000000011110000010000000111 + [8][T]0[D]S11101010000000000011110000010000001000 + [9][T]0[D]S11101010000000000011110000010000001001 + [0][T]0[D]S11101010000000000011110000010000000000 + [ok][T]0[D]S11101010000000000011110000010000100010 + [left][T]0[D]S11101010000000000011110000010000100000 + [right][T]0[D]S11101010000000000011110000010000100001 + [down][T]0[D]S11101010000000000011110000010000011111 + [up][T]0[D]S11101010000000000011110000010000011110 + [play][T]0[D]S11101010000000000011110000010000010110 + [power][T]0[D]S11101010000000000011110000010000001100 + [Stop][T]0[D]S11101010000000000011110000010000011001 + [Rec][T]0[D]S11101010000000000011110000010000010111 + [Rew][T]0[D]S11101010000000000011110000010000010101 + [Fwd][T]0[D]S11101010000000000011110000010000010100 + [Pause][T]0[D]S11101010000000000011110000010000011000 + [Next][T]0[D]S11101010000000000011110000010000011010 + [Prev][T]0[D]S11101010000000000011110000010000011011 + [eHome][T]0[D]S11101010000000000011110000010000001101 + [Back][T]0[D]S11101010000000000011110000010000100011 + [EPG][T]0[D]S11101010000000000011110000010000100110 + [Info][T]0[D]S11101010000000000011110000010000001111 + [LiveTV][T]0[D]S11101010000000000011110000010000100101 + [TV][T]0[D]S11101010000000000011110000010001000110 + [Vol+][T]0[D]S11101010000000000011110000010000010000 + [Vol-][T]0[D]S11101010000000000011110000010000010001 + [Mute][T]0[D]S11101010000000000011110000010000001110 + [Ch+][T]0[D]S11101010000000000011110000010000010010 + [Ch-][T]0[D]S11101010000000000011110000010000010011 + [Enter][T]0[D]S11101010000000000011110000010000001011 + [Clear][T]0[D]S11101010000000000011110000010000001010 + [DVDMenu][T]0[D]S11101010000000000011110000010000100100 + [Rectv][T]0[D]S11101010000000000011110000010001001000 + [Teletext][T][0][D]S11101010000000000011110000010001011010 + [Red][T][0][D]S11101010000000000011110000010001011011 + [Green][T][0][D]S11101010000000000011110000010001011100 + [Yellow][T][0][D]S11101010000000000011110000010001011101 + [Blue][T][0][D]S11101010000000000011110000010001011110 From bf4ca416ab381dbfd159ca9b9017d9bfbfff39d9 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 00:19:01 +0200 Subject: [PATCH 114/171] lcdproc: - some usefull settings to /etc/LCDd.conf --- packages/sysutils/lcdproc/build | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/sysutils/lcdproc/build b/packages/sysutils/lcdproc/build index da38b67505..f35d8c9c57 100755 --- a/packages/sysutils/lcdproc/build +++ b/packages/sysutils/lcdproc/build @@ -17,4 +17,8 @@ make sed -i -e "s|^DriverPath=.*$|DriverPath=/usr/lib/lcdproc/|" LCDd.conf sed -i -e "s|^Driver=.*$|Driver=irtrans|" LCDd.conf -sed -i -e "s|^#Foreground=.*$|Foreground=no|" LCDd.conf \ No newline at end of file +sed -i -e "s|^#Foreground=.*$|Foreground=no|" LCDd.conf +sed -i -e "s|^#ServerScreen=.*$|ServerScreen=blank|" LCDd.conf +sed -i -e "s|^#Backlight=.*$|Backlight=open|" LCDd.conf +sed -i -e "s|^#Heartbeat=.*$|Heartbeat=open|" LCDd.conf +sed -i -e "s|^#TitleSpeed=.*$|TitleSpeed=10|" LCDd.conf From 5ca1b266eb515082cba220a4a04988b978b10ec1 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 00:20:03 +0200 Subject: [PATCH 115/171] lcdproc: - add user and group nobody - dont install lcdproc bin - dont use /storage/.config for configfiles (not needed) --- packages/sysutils/lcdproc/install | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/packages/sysutils/lcdproc/install b/packages/sysutils/lcdproc/install index 1bd711dce1..969d25da3c 100755 --- a/packages/sysutils/lcdproc/install +++ b/packages/sysutils/lcdproc/install @@ -7,19 +7,14 @@ $SCRIPTS/install irserver PKG_DIR=`find $PACKAGES -type d -name $1` +add_user nobody x 999 999 "Nobody" "/" "/bin/sh" +add_group nobody 999 + mkdir -p $INSTALL/usr/sbin cp $PKG_BUILD/server/LCDd $INSTALL/usr/sbin -mkdir -p $INSTALL/usr/bin - cp $PKG_BUILD/clients/lcdproc/lcdproc $INSTALL/usr/bin - mkdir -p $INSTALL/usr/lib/lcdproc cp $PKG_BUILD/server/drivers/*.so $INSTALL/usr/lib/lcdproc mkdir -p $INSTALL/etc cp $PKG_BUILD/LCDd.conf $INSTALL/etc - cp $PKG_BUILD/clients/lcdproc/lcdproc.conf $INSTALL/etc - -mkdir -p $INSTALL/usr/config - cp $PKG_BUILD/LCDd.conf $INSTALL/usr/config/LCDd.conf.sample - cp $PKG_BUILD/clients/lcdproc/lcdproc.conf $INSTALL/usr/config/lcdproc.conf.sample From 60a051ce1b3652b9466cd0b82bbd883a3b158e7b Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 00:20:26 +0200 Subject: [PATCH 116/171] lcdproc: - cleanup init script --- packages/sysutils/lcdproc/init.d/33_lcdproc | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/packages/sysutils/lcdproc/init.d/33_lcdproc b/packages/sysutils/lcdproc/init.d/33_lcdproc index d29efb58dd..119dbef8bc 100755 --- a/packages/sysutils/lcdproc/init.d/33_lcdproc +++ b/packages/sysutils/lcdproc/init.d/33_lcdproc @@ -5,16 +5,6 @@ ( progress "Starting LCD daemon" - LCD_USERCONF="/storage/.config/LCDd.conf" - LCD_DEFCONF="/etc/LCDd.conf" - LCD_ARG="" - - if [ -f $LCD_USERCONF ]; then - LCD_ARG="$LCD_ARG -c $LCD_USERCONF" - else - LCD_ARG="$LCD_ARG -c $LCD_DEFCONF" - fi - - LCDd $LCD_ARG > /dev/null 2>&1 + LCDd -c /etc/LCDd.conf > /dev/null 2>&1 )& From f6507cc11dc59b27b5bbb9049c102debef231279 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 14:01:04 +0200 Subject: [PATCH 117/171] irserver: - fix irserver init script --- packages/sysutils/irserver/init.d/30_irserver | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/sysutils/irserver/init.d/30_irserver b/packages/sysutils/irserver/init.d/30_irserver index 78fd21af88..16e8c106c5 100755 --- a/packages/sysutils/irserver/init.d/30_irserver +++ b/packages/sysutils/irserver/init.d/30_irserver @@ -3,17 +3,17 @@ # runlevels: openelec, textmode IRTRANS_DEV="/dev/irtrans0" -IRTRANS_LOG="/var/log/irserver.log" -IRTRANS_PID="/var/run/irserver.pid" +IRSERVER_LOG="/var/log/irserver.log" +IRSERVER_PID="/var/run/irserver.pid" [ "$DEBUG" = "yes" ] && \ - IRTRANS_ARG="$IRTRANS_ARG -loglevel 4" # set loglevel in debugmode + IRSERVER_ARG="$IRSERVER_ARG -loglevel 4" # set loglevel in debugmode ( progress "Starting IRtrans daemon" - irtrans -logfile $IRTRANS_LOG \ - -pidfile $IRTRANS_PID \ - -daemon $IRTRANS_DEV \ - $IRTRANS_ARG > /dev/null 2>&1 + irserver -logfile $IRSERVER_LOG \ + -pidfile $IRSERVER_PID \ + -daemon $IRTRANS_DEV \ + $IRSERVER_ARG > /dev/null 2>&1 )& From 8c7d320c038fc94d96427690230326592640f356 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 14:03:08 +0200 Subject: [PATCH 118/171] irserver: - rename remote philips-rc197.rem configfile - add codes for "star" and "hash" --- .../irserver/remotes/{philips_rc197.rem => philips-rc197.rem} | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) rename packages/sysutils/irserver/remotes/{philips_rc197.rem => philips-rc197.rem} (94%) diff --git a/packages/sysutils/irserver/remotes/philips_rc197.rem b/packages/sysutils/irserver/remotes/philips-rc197.rem similarity index 94% rename from packages/sysutils/irserver/remotes/philips_rc197.rem rename to packages/sysutils/irserver/remotes/philips-rc197.rem index e9ccb72d5b..f3ca22a38f 100644 --- a/packages/sysutils/irserver/remotes/philips_rc197.rem +++ b/packages/sysutils/irserver/remotes/philips-rc197.rem @@ -1,5 +1,5 @@ [REMOTE] - [NAME]philips_rc197 + [NAME]philips-rc197 [TIMING] [0][N]0[RC]2[RP]87[FREQ]36[SB][RS][RC6] @@ -15,6 +15,8 @@ [8][T]0[D]S11101010000000000011110000010000001000 [9][T]0[D]S11101010000000000011110000010000001001 [0][T]0[D]S11101010000000000011110000010000000000 + [Star][T]0[D]S11101010000000000011110000010000011101 + [Hash][T]0[D]S11101010000000000011110000010000011100 [ok][T]0[D]S11101010000000000011110000010000100010 [left][T]0[D]S11101010000000000011110000010000100000 [right][T]0[D]S11101010000000000011110000010000100001 From d31100aec095c07befc6fc9d91b50f802d2e306d Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 18:38:50 +0200 Subject: [PATCH 119/171] glib: - cosmetics --- packages/devel/glib/install | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/devel/glib/install b/packages/devel/glib/install index 2a4172be3f..36e99db878 100755 --- a/packages/devel/glib/install +++ b/packages/devel/glib/install @@ -7,4 +7,5 @@ $SCRIPTS/install zlib mkdir -p $INSTALL/usr/lib cp -P `find $PKG_BUILD/.build-target/g{lib,module,object,thread,io} -name *.so*` $INSTALL/usr/lib rm -rf $INSTALL/usr/lib/libg{lib,module,object,thread,io}*.so*T - cp $PKG_BUILD/.build-target/glib/libcharset/charset.alias $INSTALL/usr/lib \ No newline at end of file + + cp $PKG_BUILD/.build-target/glib/libcharset/charset.alias $INSTALL/usr/lib From e5cc12d62fc1ae57a856e3729a243037e0410afa Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 18:39:33 +0200 Subject: [PATCH 120/171] new package: - add package xbmc-theme-PM3-HD (disabled) --- packages/mediacenter/install | 1 + packages/mediacenter/xbmc-theme-PM3-HD/install | 6 ++++++ packages/mediacenter/xbmc-theme-PM3-HD/url | 1 + 3 files changed, 8 insertions(+) create mode 100644 packages/mediacenter/xbmc-theme-PM3-HD/install create mode 100644 packages/mediacenter/xbmc-theme-PM3-HD/url diff --git a/packages/mediacenter/install b/packages/mediacenter/install index 3dbd24daf4..18e85b7297 100755 --- a/packages/mediacenter/install +++ b/packages/mediacenter/install @@ -5,6 +5,7 @@ # Base $SCRIPTS/install $MEDIACENTER $SCRIPTS/install $MEDIACENTER-theme-Confluence +# $SCRIPTS/install $MEDIACENTER-theme-PM3-HD # Plugins $SCRIPTS/install plugins \ No newline at end of file diff --git a/packages/mediacenter/xbmc-theme-PM3-HD/install b/packages/mediacenter/xbmc-theme-PM3-HD/install new file mode 100644 index 0000000000..b9b7f8903c --- /dev/null +++ b/packages/mediacenter/xbmc-theme-PM3-HD/install @@ -0,0 +1,6 @@ +#!/bin/sh + +. config/options + +mkdir -p $INSTALL/usr/share/xbmc/addons/skin.pm3-hd + cp -R $PKG_BUILD/* $INSTALL/usr/share/xbmc/addons/skin.pm3-hd diff --git a/packages/mediacenter/xbmc-theme-PM3-HD/url b/packages/mediacenter/xbmc-theme-PM3-HD/url new file mode 100644 index 0000000000..1c5183dbb3 --- /dev/null +++ b/packages/mediacenter/xbmc-theme-PM3-HD/url @@ -0,0 +1 @@ +http://sources.openelec.tv/svn/xbmc-theme-PM3-HD-29605.tar.bz2 From 4f7859a5fc6ded08c5968581b97da00d94b64111 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 18:39:57 +0200 Subject: [PATCH 121/171] xbmc: - update to xbmc-29605 --- packages/mediacenter/xbmc/install | 2 -- packages/mediacenter/xbmc/url | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/mediacenter/xbmc/install b/packages/mediacenter/xbmc/install index 4ef6e081fd..4ea16a6758 100755 --- a/packages/mediacenter/xbmc/install +++ b/packages/mediacenter/xbmc/install @@ -85,8 +85,6 @@ mkdir -p $INSTALL/usr/share/xbmc/media cp -P $PKG_BUILD/media/icon.png $INSTALL/usr/share/xbmc/media/ cp -P $PKG_DIR/splash/Splash.png $INSTALL/usr/share/xbmc/media/ -mkdir -p $INSTALL/usr/share/xbmc/skin - mkdir -p $INSTALL/usr/share/xbmc/sounds cp -PR $PKG_BUILD/sounds/* $INSTALL/usr/share/xbmc/sounds diff --git a/packages/mediacenter/xbmc/url b/packages/mediacenter/xbmc/url index f995ab9a88..a97051b150 100644 --- a/packages/mediacenter/xbmc/url +++ b/packages/mediacenter/xbmc/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xbmc-29490.tar.bz2 +http://sources.openelec.tv/svn/xbmc-29605.tar.bz2 From 1022adca8424861ca7b240c0e61de98f03d1f6c0 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 18:40:26 +0200 Subject: [PATCH 122/171] xbmc-theme-Confluence: - update to xbmc-theme-Confluence-29605 --- packages/mediacenter/xbmc-theme-Confluence/install | 4 ++-- packages/mediacenter/xbmc-theme-Confluence/url | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/mediacenter/xbmc-theme-Confluence/install b/packages/mediacenter/xbmc-theme-Confluence/install index ff3f06ff8c..e9d1d6b44c 100755 --- a/packages/mediacenter/xbmc-theme-Confluence/install +++ b/packages/mediacenter/xbmc-theme-Confluence/install @@ -2,5 +2,5 @@ . config/options -mkdir -p $INSTALL/usr/share/xbmc/skin/Confluence - cp -R $PKG_BUILD/* $INSTALL/usr/share/xbmc/skin/Confluence +mkdir -p $INSTALL/usr/share/xbmc/addons/skin.confluence + cp -R $PKG_BUILD/* $INSTALL/usr/share/xbmc/addons/skin.confluence diff --git a/packages/mediacenter/xbmc-theme-Confluence/url b/packages/mediacenter/xbmc-theme-Confluence/url index 537ae45965..6cbaee5ac4 100644 --- a/packages/mediacenter/xbmc-theme-Confluence/url +++ b/packages/mediacenter/xbmc-theme-Confluence/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xbmc-theme-Confluence-29490.tar.bz2 +http://sources.openelec.tv/svn/xbmc-theme-Confluence-29605.tar.bz2 From 3201d39adaa79ca184efc163e142fd0bb60c8ba5 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 18:40:53 +0200 Subject: [PATCH 123/171] projects/generic/options: - build with vaapi support --- projects/generic/options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/generic/options b/projects/generic/options index 5c1d29f96d..9445078e59 100644 --- a/projects/generic/options +++ b/projects/generic/options @@ -86,7 +86,7 @@ VDPAU="yes" # Use VAAPI video acceleration (needs intel i965 driver and a supported card) - VAAPI="no" + VAAPI="yes" # Use Broadcom CrystalHD Decoder Card for video acceleration # (needs Kernelsupport for Broadcom Decoder Card and a supported card) From d54bb9109e0192c5bfcc5a74f9f0b3ed8ff09cfc Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 18:41:20 +0200 Subject: [PATCH 124/171] tools/mkpkg/mkpkg_xbmc: - update to the latest svn changes --- tools/mkpkg/mkpkg_xbmc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tools/mkpkg/mkpkg_xbmc b/tools/mkpkg/mkpkg_xbmc index 51f7959a2e..e22781a15e 100755 --- a/tools/mkpkg/mkpkg_xbmc +++ b/tools/mkpkg/mkpkg_xbmc @@ -18,13 +18,13 @@ echo "cleaning sources..." echo "seperating theme..." rm -rf xbmc-theme-Confluence-$SVN_REV - mv xbmc-$SVN_REV/skin/Confluence xbmc-theme-Confluence-$SVN_REV + mv xbmc-$SVN_REV/addons/skin.confluence xbmc-theme-Confluence-$SVN_REV + mv xbmc-$SVN_REV/addons/skin.pm3-hd xbmc-theme-PM3-HD-$SVN_REV echo "cleaning sources..." - rm -rf xbmc-$SVN_REV/visualizations/XBMCProjectM/win32 + rm -rf xbmc-$SVN_REV/visualisations rm -rf xbmc-$SVN_REV/lib/libSDL-* rm -rf xbmc-$SVN_REV/lib/libcurl-* - rm -rf xbmc-$SVN_REV/skin rm -rf xbmc-$SVN_REV/project for i in "Changelog" "Fake\ Episode\ Maker" "MingwBuildEnvironment" \ @@ -40,7 +40,9 @@ echo "cleaning sources..." echo "packing sources..." tar cvjf xbmc-$SVN_REV.tar.bz2 xbmc-$SVN_REV tar cvjf xbmc-theme-Confluence-$SVN_REV.tar.bz2 xbmc-theme-Confluence-$SVN_REV + tar cvjf xbmc-theme-PM3-HD-$SVN_REV.tar.bz2 xbmc-theme-PM3-HD-$SVN_REV echo "remove temporary sourcedir..." rm -rf xbmc-$SVN_REV rm -rf xbmc-theme-Confluence-$SVN_REV + rm -rf xbmc-theme-PM3-HD-$SVN_REV From b842ef757168aefdc5459c860185cdc68e7d71cb Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 20:41:21 +0200 Subject: [PATCH 125/171] irserver: - move to sysutils/remote --- packages/sysutils/irserver/init.d/30_irserver | 19 -------------- packages/sysutils/{ => remote}/irserver/build | 0 .../irserver/config/81-irtrans.rules | 0 .../remote/irserver/init.d/30_irserver | 25 +++++++++++++++++++ .../sysutils/{ => remote}/irserver/install | 0 ...rver-add_support_for_dev_irtransX-0.1.diff | 0 .../irserver/remotes/philips-rc197.rem | 0 packages/sysutils/{ => remote}/irserver/url | 0 8 files changed, 25 insertions(+), 19 deletions(-) delete mode 100755 packages/sysutils/irserver/init.d/30_irserver rename packages/sysutils/{ => remote}/irserver/build (100%) rename packages/sysutils/{ => remote}/irserver/config/81-irtrans.rules (100%) create mode 100755 packages/sysutils/remote/irserver/init.d/30_irserver rename packages/sysutils/{ => remote}/irserver/install (100%) rename packages/sysutils/{ => remote}/irserver/patches/01-irserver-add_support_for_dev_irtransX-0.1.diff (100%) rename packages/sysutils/{ => remote}/irserver/remotes/philips-rc197.rem (100%) rename packages/sysutils/{ => remote}/irserver/url (100%) diff --git a/packages/sysutils/irserver/init.d/30_irserver b/packages/sysutils/irserver/init.d/30_irserver deleted file mode 100755 index 16e8c106c5..0000000000 --- a/packages/sysutils/irserver/init.d/30_irserver +++ /dev/null @@ -1,19 +0,0 @@ -# start the IRtrans daemon -# -# runlevels: openelec, textmode - -IRTRANS_DEV="/dev/irtrans0" -IRSERVER_LOG="/var/log/irserver.log" -IRSERVER_PID="/var/run/irserver.pid" - -[ "$DEBUG" = "yes" ] && \ - IRSERVER_ARG="$IRSERVER_ARG -loglevel 4" # set loglevel in debugmode - -( - progress "Starting IRtrans daemon" - - irserver -logfile $IRSERVER_LOG \ - -pidfile $IRSERVER_PID \ - -daemon $IRTRANS_DEV \ - $IRSERVER_ARG > /dev/null 2>&1 -)& diff --git a/packages/sysutils/irserver/build b/packages/sysutils/remote/irserver/build similarity index 100% rename from packages/sysutils/irserver/build rename to packages/sysutils/remote/irserver/build diff --git a/packages/sysutils/irserver/config/81-irtrans.rules b/packages/sysutils/remote/irserver/config/81-irtrans.rules similarity index 100% rename from packages/sysutils/irserver/config/81-irtrans.rules rename to packages/sysutils/remote/irserver/config/81-irtrans.rules diff --git a/packages/sysutils/remote/irserver/init.d/30_irserver b/packages/sysutils/remote/irserver/init.d/30_irserver new file mode 100755 index 0000000000..cc77fcf556 --- /dev/null +++ b/packages/sysutils/remote/irserver/init.d/30_irserver @@ -0,0 +1,25 @@ +# start the IRtrans daemon +# +# runlevels: openelec, textmode + +[ -f /storage/.config/remote.conf ] && . /storage/.config/remote.conf +[ -f /storage/.config/lcd.conf ] && . /storage/.config/lcd.conf + +if [ "$REMOTE_BACKEND" = "irtrans" -o "$LCD_DRIVER" = "irtrans" ]; then + + progress "Starting IRtrans daemon" + + IRTRANS_DEV="/dev/irtrans0" + IRSERVER_LOG="/var/log/irserver.log" + IRSERVER_PID="/var/run/irserver.pid" + + [ ! "$REMOTE_BACKEND" = "irtrans" ] && \ + IRSERVER_ARG="$IRSERVER_ARG -no_lirc" # dont run in lirc mode + + [ "$DEBUG" = "yes" ] && \ + IRSERVER_ARG="$IRSERVER_ARG -loglevel 4" # set loglevel in debugmode + + irserver -logfile $IRSERVER_LOG -pidfile $IRSERVER_PID \ + -daemon $IRTRANS_DEV $IRSERVER_ARG > /dev/null 2>&1 + +fi \ No newline at end of file diff --git a/packages/sysutils/irserver/install b/packages/sysutils/remote/irserver/install similarity index 100% rename from packages/sysutils/irserver/install rename to packages/sysutils/remote/irserver/install diff --git a/packages/sysutils/irserver/patches/01-irserver-add_support_for_dev_irtransX-0.1.diff b/packages/sysutils/remote/irserver/patches/01-irserver-add_support_for_dev_irtransX-0.1.diff similarity index 100% rename from packages/sysutils/irserver/patches/01-irserver-add_support_for_dev_irtransX-0.1.diff rename to packages/sysutils/remote/irserver/patches/01-irserver-add_support_for_dev_irtransX-0.1.diff diff --git a/packages/sysutils/irserver/remotes/philips-rc197.rem b/packages/sysutils/remote/irserver/remotes/philips-rc197.rem similarity index 100% rename from packages/sysutils/irserver/remotes/philips-rc197.rem rename to packages/sysutils/remote/irserver/remotes/philips-rc197.rem diff --git a/packages/sysutils/irserver/url b/packages/sysutils/remote/irserver/url similarity index 100% rename from packages/sysutils/irserver/url rename to packages/sysutils/remote/irserver/url From 71ccc96ca747aa7fb63a82228deeedf2a5cfd368 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 20:41:48 +0200 Subject: [PATCH 126/171] lirc: - move to sysutils/remote --- packages/sysutils/lirc/init.d/32_lirc | 18 - packages/sysutils/{ => remote}/lirc/build | 0 .../lirc/config/lircd_mceusb.conf | 0 packages/sysutils/remote/lirc/init.d/32_lirc | 18 + packages/sysutils/{ => remote}/lirc/install | 0 .../lirc/lirc-use_lirc.h_from_kernel-0.1.diff | 504 ++++++++++++++++++ packages/sysutils/{ => remote}/lirc/url | 0 7 files changed, 522 insertions(+), 18 deletions(-) delete mode 100755 packages/sysutils/lirc/init.d/32_lirc rename packages/sysutils/{ => remote}/lirc/build (100%) rename packages/sysutils/{ => remote}/lirc/config/lircd_mceusb.conf (100%) create mode 100755 packages/sysutils/remote/lirc/init.d/32_lirc rename packages/sysutils/{ => remote}/lirc/install (100%) create mode 100644 packages/sysutils/remote/lirc/lirc-use_lirc.h_from_kernel-0.1.diff rename packages/sysutils/{ => remote}/lirc/url (100%) diff --git a/packages/sysutils/lirc/init.d/32_lirc b/packages/sysutils/lirc/init.d/32_lirc deleted file mode 100755 index 3501a9d8f2..0000000000 --- a/packages/sysutils/lirc/init.d/32_lirc +++ /dev/null @@ -1,18 +0,0 @@ -# start the LIRC daemon -# -# runlevels: openelec, textmode - -LIRC_DRIVER="default" -LIRC_DEVICE="/dev/lirc0" -LIRC_OUTPUT="/dev/lircd" - -( - progress "Starting LIRC daemon" - - - $IONICE mkdir -p /var/run/lirc - - lircd --driver=$LIRC_DRIVER \ - --device=$LIRC_DEVICE \ - --output=$LIRC_OUTPUT -)& diff --git a/packages/sysutils/lirc/build b/packages/sysutils/remote/lirc/build similarity index 100% rename from packages/sysutils/lirc/build rename to packages/sysutils/remote/lirc/build diff --git a/packages/sysutils/lirc/config/lircd_mceusb.conf b/packages/sysutils/remote/lirc/config/lircd_mceusb.conf similarity index 100% rename from packages/sysutils/lirc/config/lircd_mceusb.conf rename to packages/sysutils/remote/lirc/config/lircd_mceusb.conf diff --git a/packages/sysutils/remote/lirc/init.d/32_lirc b/packages/sysutils/remote/lirc/init.d/32_lirc new file mode 100755 index 0000000000..a1dd209292 --- /dev/null +++ b/packages/sysutils/remote/lirc/init.d/32_lirc @@ -0,0 +1,18 @@ +# start the LIRC daemon +# +# runlevels: openelec, textmode + +[ -f /storage/.config/remote.conf ] && . /storage/.config/remote.conf + +if [ "$REMOTE_BACKEND" = "lirc" ]; then + + progress "Starting LIRC daemon" + + LIRC_DRIVER="default" + LIRC_DEVICE="/dev/lirc0" + LIRC_OUTPUT="/dev/lircd" + + $IONICE mkdir -p /var/run/lirc + lircd --driver=$LIRC_DRIVER --device=$LIRC_DEVICE --output=$LIRC_OUTPUT + +fi diff --git a/packages/sysutils/lirc/install b/packages/sysutils/remote/lirc/install similarity index 100% rename from packages/sysutils/lirc/install rename to packages/sysutils/remote/lirc/install diff --git a/packages/sysutils/remote/lirc/lirc-use_lirc.h_from_kernel-0.1.diff b/packages/sysutils/remote/lirc/lirc-use_lirc.h_from_kernel-0.1.diff new file mode 100644 index 0000000000..f70d415552 --- /dev/null +++ b/packages/sysutils/remote/lirc/lirc-use_lirc.h_from_kernel-0.1.diff @@ -0,0 +1,504 @@ +diff -Naur lirc-20100408/daemons/hardware.h lirc-20100408.patch/daemons/hardware.h +--- lirc-20100408/daemons/hardware.h 2009-01-04 23:17:39.000000000 +0100 ++++ lirc-20100408.patch/daemons/hardware.h 2010-04-09 16:05:14.406356679 +0200 +@@ -13,7 +13,7 @@ + #ifndef _HARDWARE_H + #define _HARDWARE_H + +-#include "drivers/lirc.h" ++#include + #include "ir_remote_types.h" + + struct hardware +diff -Naur lirc-20100408/daemons/hw_accent.h lirc-20100408.patch/daemons/hw_accent.h +--- lirc-20100408/daemons/hw_accent.h 2007-07-29 20:20:06.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_accent.h 2010-04-09 16:05:14.356327542 +0200 +@@ -27,7 +27,7 @@ + #ifndef _HW_ACCENT_H + #define _HW_ACCENT_H + +-#include "drivers/lirc.h" ++#include + + int accent_decode (struct ir_remote *remote, + ir_code *prep, +diff -Naur lirc-20100408/daemons/hw_bte.h lirc-20100408.patch/daemons/hw_bte.h +--- lirc-20100408/daemons/hw_bte.h 2007-07-29 20:20:06.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_bte.h 2010-04-09 16:05:14.362326501 +0200 +@@ -26,7 +26,7 @@ + #ifndef HW_BTE_H + #define HW_BTE_H + +-#include "drivers/lirc.h" ++#include + + int bte_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, +diff -Naur lirc-20100408/daemons/hw_caraca.h lirc-20100408.patch/daemons/hw_caraca.h +--- lirc-20100408/daemons/hw_caraca.h 2007-07-29 20:20:06.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_caraca.h 2010-04-09 16:05:14.400327269 +0200 +@@ -13,7 +13,7 @@ + #ifndef HW_CARACA_H + #define HW_CARACA_H + +-#include "drivers/lirc.h" ++#include + + int caraca_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, +diff -Naur lirc-20100408/daemons/hw_creative.h lirc-20100408.patch/daemons/hw_creative.h +--- lirc-20100408/daemons/hw_creative.h 2007-07-29 20:20:07.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_creative.h 2010-04-09 16:05:14.393357176 +0200 +@@ -13,7 +13,7 @@ + #ifndef _HW_CREATIVE_H + #define _HW_CREATIVE_H + +-#include "drivers/lirc.h" ++#include + + int creative_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, +diff -Naur lirc-20100408/daemons/hw_ea65.h lirc-20100408.patch/daemons/hw_ea65.h +--- lirc-20100408/daemons/hw_ea65.h 2007-07-29 20:20:07.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_ea65.h 2010-04-09 16:05:14.346327762 +0200 +@@ -24,7 +24,7 @@ + #ifndef HW_EA65_H + #define HW_EA65_H + +-#include "drivers/lirc.h" ++#include + + int ea65_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, +diff -Naur lirc-20100408/daemons/hw_irlink.h lirc-20100408.patch/daemons/hw_irlink.h +--- lirc-20100408/daemons/hw_irlink.h 2008-01-13 21:50:43.000000000 +0100 ++++ lirc-20100408.patch/daemons/hw_irlink.h 2010-04-09 16:05:14.350327534 +0200 +@@ -23,7 +23,7 @@ + #ifndef HW_IRLINK_H + #define HW_IRLINK_H + +-#include "drivers/lirc.h" ++#include + + int irlink_decode (struct ir_remote *remote, + ir_code *prep, +diff -Naur lirc-20100408/daemons/hw_irman.h lirc-20100408.patch/daemons/hw_irman.h +--- lirc-20100408/daemons/hw_irman.h 2007-07-29 20:20:08.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_irman.h 2010-04-09 16:05:14.368352769 +0200 +@@ -13,7 +13,7 @@ + #ifndef _HW_IRMAN_H + #define _HW_IRMAN_H + +-#include "drivers/lirc.h" ++#include + + int irman_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, +diff -Naur lirc-20100408/daemons/hw_logitech.h lirc-20100408.patch/daemons/hw_logitech.h +--- lirc-20100408/daemons/hw_logitech.h 2007-07-29 20:20:08.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_logitech.h 2010-04-09 16:05:14.348327369 +0200 +@@ -13,7 +13,7 @@ + #ifndef _HW_LOGITECH_H + #define _HW_LOGITECH_H + +-#include "drivers/lirc.h" ++#include + + int logitech_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, +diff -Naur lirc-20100408/daemons/hw_mouseremote.h lirc-20100408.patch/daemons/hw_mouseremote.h +--- lirc-20100408/daemons/hw_mouseremote.h 2007-07-29 20:20:08.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_mouseremote.h 2010-04-09 16:05:14.395328008 +0200 +@@ -16,7 +16,7 @@ + #ifndef HW_MOUSEREMOTE_H + #define HW_MOUSEREMOTE_H + +-#include "drivers/lirc.h" ++#include + + int mouseremote_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, +diff -Naur lirc-20100408/daemons/hw_mp3anywhere.h lirc-20100408.patch/daemons/hw_mp3anywhere.h +--- lirc-20100408/daemons/hw_mp3anywhere.h 2007-07-29 20:20:08.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_mp3anywhere.h 2010-04-09 16:05:14.364357606 +0200 +@@ -15,7 +15,7 @@ + #ifndef HW_MP3ANYWHERE_H + #define HW_MP3ANYWHERE_H + +-#include "drivers/lirc.h" ++#include + + int mp3anywhere_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, +diff -Naur lirc-20100408/daemons/hw_mplay.h lirc-20100408.patch/daemons/hw_mplay.h +--- lirc-20100408/daemons/hw_mplay.h 2007-12-22 13:33:16.000000000 +0100 ++++ lirc-20100408.patch/daemons/hw_mplay.h 2010-04-09 16:05:14.389357823 +0200 +@@ -25,7 +25,7 @@ + #ifndef HW_MPLAY_H + #define HW_MPLAY_H + +-#include "drivers/lirc.h" ++#include + + extern int mplay_decode(struct ir_remote *remote, + ir_code *prep, +diff -Naur lirc-20100408/daemons/hw_pcmak.h lirc-20100408.patch/daemons/hw_pcmak.h +--- lirc-20100408/daemons/hw_pcmak.h 2007-07-29 20:20:08.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_pcmak.h 2010-04-09 16:05:14.402362075 +0200 +@@ -14,7 +14,7 @@ + #ifndef HW_PCMAK_H + #define HW_PCMAK_H + +-#include "drivers/lirc.h" ++#include + + int pcmak_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, +diff -Naur lirc-20100408/daemons/hw_pinsys.h lirc-20100408.patch/daemons/hw_pinsys.h +--- lirc-20100408/daemons/hw_pinsys.h 2007-07-29 20:20:09.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_pinsys.h 2010-04-09 16:05:14.352327630 +0200 +@@ -14,7 +14,7 @@ + #ifndef _HW_PINSYS_H + #define _HW_PINSYS_H + +-#include "drivers/lirc.h" ++#include + + int is_it_is_it_huh(int port); + int autodetect(void); +diff -Naur lirc-20100408/daemons/hw_pixelview.h lirc-20100408.patch/daemons/hw_pixelview.h +--- lirc-20100408/daemons/hw_pixelview.h 2007-07-29 20:20:09.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_pixelview.h 2010-04-09 16:05:14.366327740 +0200 +@@ -13,7 +13,7 @@ + #ifndef _HW_PIXELVIEW_H + #define _HW_PIXELVIEW_H + +-#include "drivers/lirc.h" ++#include + + int pixelview_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, +diff -Naur lirc-20100408/daemons/hw_silitek.h lirc-20100408.patch/daemons/hw_silitek.h +--- lirc-20100408/daemons/hw_silitek.h 2007-07-29 20:20:09.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_silitek.h 2010-04-09 16:05:14.358327986 +0200 +@@ -12,7 +12,7 @@ + #ifndef _HW_SILITEK_H + #define _HW_SILITEK_H + +-#include "drivers/lirc.h" ++#include + + int silitek_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, +diff -Naur lirc-20100408/daemons/hw_slinke.h lirc-20100408.patch/daemons/hw_slinke.h +--- lirc-20100408/daemons/hw_slinke.h 2007-07-29 20:20:09.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_slinke.h 2010-04-09 16:05:14.360356926 +0200 +@@ -14,7 +14,7 @@ + #ifndef _HW_SLINKE_H + #define _HW_SLINKE_H + +-#include "drivers/lirc.h" ++#include + + int slinke_decode(struct ir_remote *remote, + ir_code *prep, +diff -Naur lirc-20100408/daemons/hw_tira.h lirc-20100408.patch/daemons/hw_tira.h +--- lirc-20100408/daemons/hw_tira.h 2010-03-20 17:18:30.000000000 +0100 ++++ lirc-20100408.patch/daemons/hw_tira.h 2010-04-09 16:05:14.391327119 +0200 +@@ -28,7 +28,7 @@ + #ifndef HW_TIRA_H + #define HW_TIRA_H + +-#include "drivers/lirc.h" ++#include + + int tira_decode (struct ir_remote *remote, + ir_code *prep, +diff -Naur lirc-20100408/daemons/hw_usbx.h lirc-20100408.patch/daemons/hw_usbx.h +--- lirc-20100408/daemons/hw_usbx.h 2007-07-29 20:20:12.000000000 +0200 ++++ lirc-20100408.patch/daemons/hw_usbx.h 2010-04-09 16:05:14.354327656 +0200 +@@ -23,7 +23,7 @@ + #ifndef HW_USBX_H + #define HW_USBX_H + +-#include "drivers/lirc.h" ++#include + + int usbx_decode (struct ir_remote *remote, + ir_code *prep, +diff -Naur lirc-20100408/daemons/irrecord.c lirc-20100408.patch/daemons/irrecord.c +--- lirc-20100408/daemons/irrecord.c 2010-03-20 17:18:30.000000000 +0100 ++++ lirc-20100408.patch/daemons/irrecord.c 2010-04-09 16:05:14.387327137 +0200 +@@ -44,7 +44,7 @@ + #include + #include + +-#include "drivers/lirc.h" ++#include + + #include "hardware.h" + #include "hw-types.h" +diff -Naur lirc-20100408/daemons/ir_remote.c lirc-20100408.patch/daemons/ir_remote.c +--- lirc-20100408/daemons/ir_remote.c 2010-04-02 12:26:57.000000000 +0200 ++++ lirc-20100408.patch/daemons/ir_remote.c 2010-04-09 16:05:14.413327192 +0200 +@@ -22,7 +22,7 @@ + + #include + +-#include "drivers/lirc.h" ++#include + + #include "lircd.h" + #include "ir_remote.h" +diff -Naur lirc-20100408/daemons/ir_remote.h lirc-20100408.patch/daemons/ir_remote.h +--- lirc-20100408/daemons/ir_remote.h 2009-05-24 12:46:52.000000000 +0200 ++++ lirc-20100408.patch/daemons/ir_remote.h 2010-04-09 16:05:14.398356646 +0200 +@@ -21,7 +21,7 @@ + #include + #include + +-#include "drivers/lirc.h" ++#include + #include "hardware.h" + + #include "ir_remote_types.h" +diff -Naur lirc-20100408/daemons/ir_remote_types.h lirc-20100408.patch/daemons/ir_remote_types.h +--- lirc-20100408/daemons/ir_remote_types.h 2010-04-02 12:26:57.000000000 +0200 ++++ lirc-20100408.patch/daemons/ir_remote_types.h 2010-04-09 16:05:14.404327809 +0200 +@@ -21,7 +21,7 @@ + #include + #include + +-#include "drivers/lirc.h" ++#include + + #ifdef LONG_IR_CODE + typedef unsigned long long ir_code; +diff -Naur lirc-20100408/drivers/lirc_atiusb/lirc_atiusb.c lirc-20100408.patch/drivers/lirc_atiusb/lirc_atiusb.c +--- lirc-20100408/drivers/lirc_atiusb/lirc_atiusb.c 2010-03-17 15:16:15.000000000 +0100 ++++ lirc-20100408.patch/drivers/lirc_atiusb/lirc_atiusb.c 2010-04-09 16:05:14.459351320 +0200 +@@ -65,7 +65,7 @@ + #include + #include + +-#include "drivers/lirc.h" ++#include + #include "drivers/kcompat.h" + #include "drivers/lirc_dev/lirc_dev.h" + +diff -Naur lirc-20100408/drivers/lirc_dev/lirc_dev.c lirc-20100408.patch/drivers/lirc_dev/lirc_dev.c +--- lirc-20100408/drivers/lirc_dev/lirc_dev.c 2010-03-17 15:16:15.000000000 +0100 ++++ lirc-20100408.patch/drivers/lirc_dev/lirc_dev.c 2010-04-09 16:05:14.516356068 +0200 +@@ -70,7 +70,7 @@ + #include + #endif + +-#include "drivers/lirc.h" ++#include + #include "lirc_dev.h" + + static int debug; +diff -Naur lirc-20100408/drivers/lirc_dev/lirc_dev.h lirc-20100408.patch/drivers/lirc_dev/lirc_dev.h +--- lirc-20100408/drivers/lirc_dev/lirc_dev.h 2010-01-30 16:01:29.000000000 +0100 ++++ lirc-20100408.patch/drivers/lirc_dev/lirc_dev.h 2010-04-09 16:05:14.520327275 +0200 +@@ -28,7 +28,7 @@ + #include + #endif + +-#include "drivers/lirc.h" ++#include + + struct lirc_buffer { + wait_queue_head_t wait_poll; +diff -Naur lirc-20100408/drivers/lirc_ene0100/lirc_ene0100.h lirc-20100408.patch/drivers/lirc_ene0100/lirc_ene0100.h +--- lirc-20100408/drivers/lirc_ene0100/lirc_ene0100.h 2009-08-25 14:27:53.000000000 +0200 ++++ lirc-20100408.patch/drivers/lirc_ene0100/lirc_ene0100.h 2010-04-09 16:05:14.447327629 +0200 +@@ -20,7 +20,7 @@ + */ + + #include "drivers/kcompat.h" +-#include "drivers/lirc.h" ++#include + #include "drivers/lirc_dev/lirc_dev.h" + + /* hardware address */ +diff -Naur lirc-20100408/drivers/lirc_igorplugusb/lirc_igorplugusb.c lirc-20100408.patch/drivers/lirc_igorplugusb/lirc_igorplugusb.c +--- lirc-20100408/drivers/lirc_igorplugusb/lirc_igorplugusb.c 2010-03-17 15:16:15.000000000 +0100 ++++ lirc-20100408.patch/drivers/lirc_igorplugusb/lirc_igorplugusb.c 2010-04-09 16:05:14.525356846 +0200 +@@ -63,7 +63,7 @@ + #include + + #include "drivers/kcompat.h" +-#include "drivers/lirc.h" ++#include + #include "drivers/lirc_dev/lirc_dev.h" + + #if !defined(KERNEL_2_5) +diff -Naur lirc-20100408/drivers/lirc_imon/lirc_imon.c lirc-20100408.patch/drivers/lirc_imon/lirc_imon.c +--- lirc-20100408/drivers/lirc_imon/lirc_imon.c 2010-03-17 15:27:19.000000000 +0100 ++++ lirc-20100408.patch/drivers/lirc_imon/lirc_imon.c 2010-04-09 16:05:14.500327646 +0200 +@@ -54,7 +54,7 @@ + #include + + #include "drivers/kcompat.h" +-#include "drivers/lirc.h" ++#include + #include "drivers/lirc_dev/lirc_dev.h" + + +diff -Naur lirc-20100408/drivers/lirc_it87/lirc_it87.c lirc-20100408.patch/drivers/lirc_it87/lirc_it87.c +--- lirc-20100408/drivers/lirc_it87/lirc_it87.c 2010-03-17 15:16:15.000000000 +0100 ++++ lirc-20100408.patch/drivers/lirc_it87/lirc_it87.c 2010-04-09 16:05:14.467327188 +0200 +@@ -71,7 +71,7 @@ + #include + #include + +-#include "drivers/lirc.h" ++#include + #include "drivers/lirc_dev/lirc_dev.h" + #include "drivers/kcompat.h" + +diff -Naur lirc-20100408/drivers/lirc_ite8709/lirc_ite8709.c lirc-20100408.patch/drivers/lirc_ite8709/lirc_ite8709.c +--- lirc-20100408/drivers/lirc_ite8709/lirc_ite8709.c 2010-01-13 20:56:13.000000000 +0100 ++++ lirc-20100408.patch/drivers/lirc_ite8709/lirc_ite8709.c 2010-04-09 16:05:14.479327272 +0200 +@@ -31,7 +31,7 @@ + #include + #endif + +-#include "drivers/lirc.h" ++#include + #include "drivers/lirc_dev/lirc_dev.h" + #include "drivers/kcompat.h" + +diff -Naur lirc-20100408/drivers/lirc_mceusb/lirc_mceusb.c lirc-20100408.patch/drivers/lirc_mceusb/lirc_mceusb.c +--- lirc-20100408/drivers/lirc_mceusb/lirc_mceusb.c 2010-03-31 06:51:02.000000000 +0200 ++++ lirc-20100408.patch/drivers/lirc_mceusb/lirc_mceusb.c 2010-04-09 16:05:14.439352599 +0200 +@@ -67,7 +67,7 @@ + #include + #include + +-#include "drivers/lirc.h" ++#include + #include "drivers/kcompat.h" + #include "drivers/lirc_dev/lirc_dev.h" + +diff -Naur lirc-20100408/drivers/lirc_parallel/lirc_parallel.c lirc-20100408.patch/drivers/lirc_parallel/lirc_parallel.c +--- lirc-20100408/drivers/lirc_parallel/lirc_parallel.c 2010-03-17 15:16:16.000000000 +0100 ++++ lirc-20100408.patch/drivers/lirc_parallel/lirc_parallel.c 2010-04-09 16:05:14.420351761 +0200 +@@ -70,7 +70,7 @@ + #include + #include + +-#include "drivers/lirc.h" ++#include + #include "drivers/kcompat.h" + #include "drivers/lirc_dev/lirc_dev.h" + +diff -Naur lirc-20100408/drivers/lirc_sasem/lirc_sasem.c lirc-20100408.patch/drivers/lirc_sasem/lirc_sasem.c +--- lirc-20100408/drivers/lirc_sasem/lirc_sasem.c 2010-03-17 15:16:16.000000000 +0100 ++++ lirc-20100408.patch/drivers/lirc_sasem/lirc_sasem.c 2010-04-09 16:05:14.534327175 +0200 +@@ -58,7 +58,7 @@ + #include + + #include "drivers/kcompat.h" +-#include "drivers/lirc.h" ++#include + #include "drivers/lirc_dev/lirc_dev.h" + + +diff -Naur lirc-20100408/drivers/lirc_serial/lirc_serial.c lirc-20100408.patch/drivers/lirc_serial/lirc_serial.c +--- lirc-20100408/drivers/lirc_serial/lirc_serial.c 2010-03-17 15:16:16.000000000 +0100 ++++ lirc-20100408.patch/drivers/lirc_serial/lirc_serial.c 2010-04-09 16:05:14.509327239 +0200 +@@ -120,7 +120,7 @@ + #endif + #endif + +-#include "drivers/lirc.h" ++#include + #include "drivers/kcompat.h" + #include "drivers/lirc_dev/lirc_dev.h" + +diff -Naur lirc-20100408/drivers/lirc_sir/lirc_sir.c lirc-20100408.patch/drivers/lirc_sir/lirc_sir.c +--- lirc-20100408/drivers/lirc_sir/lirc_sir.c 2010-03-17 15:16:16.000000000 +0100 ++++ lirc-20100408.patch/drivers/lirc_sir/lirc_sir.c 2010-04-09 16:05:14.429327188 +0200 +@@ -95,7 +95,7 @@ + + #include + +-#include "drivers/lirc.h" ++#include + #include "drivers/lirc_dev/lirc_dev.h" + #include "drivers/kcompat.h" + +diff -Naur lirc-20100408/drivers/lirc_streamzap/lirc_streamzap.c lirc-20100408.patch/drivers/lirc_streamzap/lirc_streamzap.c +--- lirc-20100408/drivers/lirc_streamzap/lirc_streamzap.c 2010-03-17 15:16:16.000000000 +0100 ++++ lirc-20100408.patch/drivers/lirc_streamzap/lirc_streamzap.c 2010-04-09 16:05:14.486358057 +0200 +@@ -52,7 +52,7 @@ + #endif + #include + +-#include "drivers/lirc.h" ++#include + #include "drivers/kcompat.h" + #include "drivers/lirc_dev/lirc_dev.h" + +diff -Naur lirc-20100408/drivers/lirc_ttusbir/lirc_ttusbir.c lirc-20100408.patch/drivers/lirc_ttusbir/lirc_ttusbir.c +--- lirc-20100408/drivers/lirc_ttusbir/lirc_ttusbir.c 2009-03-15 10:34:01.000000000 +0100 ++++ lirc-20100408.patch/drivers/lirc_ttusbir/lirc_ttusbir.c 2010-04-09 16:05:14.444327695 +0200 +@@ -38,7 +38,7 @@ + #include + #include + +-#include "drivers/lirc.h" ++#include + #include "drivers/kcompat.h" + #include "drivers/lirc_dev/lirc_dev.h" + +diff -Naur lirc-20100408/drivers/lirc_wpc8769l/lirc_wpc8769l.c lirc-20100408.patch/drivers/lirc_wpc8769l/lirc_wpc8769l.c +--- lirc-20100408/drivers/lirc_wpc8769l/lirc_wpc8769l.c 2010-03-17 15:16:16.000000000 +0100 ++++ lirc-20100408.patch/drivers/lirc_wpc8769l/lirc_wpc8769l.c 2010-04-09 16:05:14.475356554 +0200 +@@ -66,7 +66,7 @@ + #include + #endif + +-#include "drivers/lirc.h" ++#include + #include "drivers/kcompat.h" + #include "drivers/lirc_dev/lirc_dev.h" + +diff -Naur lirc-20100408/tools/mode2.c lirc-20100408.patch/tools/mode2.c +--- lirc-20100408/tools/mode2.c 2009-12-28 14:05:30.000000000 +0100 ++++ lirc-20100408.patch/tools/mode2.c 2010-04-09 16:05:14.543327535 +0200 +@@ -33,7 +33,7 @@ + #include + #include + +-#include "drivers/lirc.h" ++#include + #include "daemons/ir_remote.h" + #include "daemons/hardware.h" + #include "daemons/hw-types.h" +diff -Naur lirc-20100408/tools/smode2.c lirc-20100408.patch/tools/smode2.c +--- lirc-20100408/tools/smode2.c 2003-03-30 14:26:44.000000000 +0200 ++++ lirc-20100408.patch/tools/smode2.c 2010-04-09 16:05:14.546353310 +0200 +@@ -37,7 +37,7 @@ + #include + #include + +-#include "drivers/lirc.h" ++#include + + GraphicsContext *screen; + GraphicsContext *physicalscreen; +diff -Naur lirc-20100408/tools/xmode2.c lirc-20100408.patch/tools/xmode2.c +--- lirc-20100408/tools/xmode2.c 2009-12-27 20:04:10.000000000 +0100 ++++ lirc-20100408.patch/tools/xmode2.c 2010-04-09 16:05:14.539352347 +0200 +@@ -60,7 +60,7 @@ + #include + #include + +-#include "drivers/lirc.h" ++#include + #include "daemons/ir_remote.h" + #include "daemons/hardware.h" + #include "daemons/hw-types.h" diff --git a/packages/sysutils/lirc/url b/packages/sysutils/remote/lirc/url similarity index 100% rename from packages/sysutils/lirc/url rename to packages/sysutils/remote/lirc/url From 8f505e4e0af760c8219964890b27c3c1646a6a3e Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 20:42:40 +0200 Subject: [PATCH 127/171] lcdproc: - add user config file - rework the init script --- packages/sysutils/lcdproc/init.d/33_lcdproc | 9 ++++++--- packages/sysutils/lcdproc/install | 3 +++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/sysutils/lcdproc/init.d/33_lcdproc b/packages/sysutils/lcdproc/init.d/33_lcdproc index 119dbef8bc..a64dcfcb81 100755 --- a/packages/sysutils/lcdproc/init.d/33_lcdproc +++ b/packages/sysutils/lcdproc/init.d/33_lcdproc @@ -2,9 +2,12 @@ # # runlevels: openelec, textmode -( +[ -f /storage/.config/lcd.conf ] && . /storage/.config/lcd.conf + +if [ ! "$LCD_DRIVER" = "none" -a -z "$LCD_DRIVER" ]; then + progress "Starting LCD daemon" - LCDd -c /etc/LCDd.conf > /dev/null 2>&1 + LCDd -c /etc/LCDd.conf -d $LCD_DRIVER > /dev/null 2>&1 -)& +fi \ No newline at end of file diff --git a/packages/sysutils/lcdproc/install b/packages/sysutils/lcdproc/install index 969d25da3c..d395d781a0 100755 --- a/packages/sysutils/lcdproc/install +++ b/packages/sysutils/lcdproc/install @@ -16,5 +16,8 @@ mkdir -p $INSTALL/usr/sbin mkdir -p $INSTALL/usr/lib/lcdproc cp $PKG_BUILD/server/drivers/*.so $INSTALL/usr/lib/lcdproc +mkdir -p $INSTALL/usr/config + cp $PKG_DIR/config/lcd.conf $INSTALL/usr/config + mkdir -p $INSTALL/etc cp $PKG_BUILD/LCDd.conf $INSTALL/etc From ad59ede1560bcac2241d5fd458192efd479204e4 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 20:43:04 +0200 Subject: [PATCH 128/171] xbmc: - install remote package --- packages/mediacenter/xbmc/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mediacenter/xbmc/install b/packages/mediacenter/xbmc/install index 4ea16a6758..22bbae5fe0 100755 --- a/packages/mediacenter/xbmc/install +++ b/packages/mediacenter/xbmc/install @@ -127,7 +127,7 @@ mkdir -p $INSTALL/usr/share/xbmc/addons # other programs needed to run $SCRIPTS/install alsa - $SCRIPTS/install lirc + $SCRIPTS/install remote [ ! "$LCD_DRIVER" = none ] && $SCRIPTS/install lcdproc [ "$SENSOR_SUPPORT" = yes ] && $SCRIPTS/install lm_sensors [ "$UPDATE_SUPPORT" = yes ] && $SCRIPTS/install autoupdate From 6fd9bde9a1494f663c4049ee05c10dcee3bbd3cb Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 20:43:37 +0200 Subject: [PATCH 129/171] xbmc: - add philips-rc197 remote controller support --- ...461-xbmc-add_remote_philips-rc197-0.1.diff | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 packages/mediacenter/xbmc/patches/461-xbmc-add_remote_philips-rc197-0.1.diff diff --git a/packages/mediacenter/xbmc/patches/461-xbmc-add_remote_philips-rc197-0.1.diff b/packages/mediacenter/xbmc/patches/461-xbmc-add_remote_philips-rc197-0.1.diff new file mode 100644 index 0000000000..677aa8859e --- /dev/null +++ b/packages/mediacenter/xbmc/patches/461-xbmc-add_remote_philips-rc197-0.1.diff @@ -0,0 +1,55 @@ +diff -Naur xbmc-29490/system/Lircmap.xml xbmc-29490.patch/system/Lircmap.xml +--- xbmc-29490/system/Lircmap.xml 2010-04-24 22:45:26.000000000 +0200 ++++ xbmc-29490.patch/system/Lircmap.xml 2010-04-28 14:18:01.951408228 +0200 +@@ -362,4 +362,51 @@ + recordlist + teletext + ++ ++ ++ play ++ Pause ++ Stop ++ Fwd ++ Rew ++ left ++ right ++ up ++ down ++ ++ Ch+ ++ Ch- ++ Back ++ DVDMenu ++ EPG ++ Info ++ Next ++ Prev ++ eHome ++ Rec ++ Vol+ ++ Vol- ++ Mute ++ power ++ TV ++ 1 ++ 2 ++ 3 ++ 4 ++ 5 ++ 6 ++ 7 ++ 8 ++ 9 ++ 0 ++ Star ++ Hash ++ Clear ++ Enter ++ Red ++ Green ++ Yellow ++ Blue ++ Teletext ++ + From fef78f1c3f7c42e4d3f9b093f64fdd317f47bcf1 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 23:39:14 +0200 Subject: [PATCH 130/171] lcdproc: - add lcd user config file --- packages/sysutils/lcdproc/config/lcd.conf | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 packages/sysutils/lcdproc/config/lcd.conf diff --git a/packages/sysutils/lcdproc/config/lcd.conf b/packages/sysutils/lcdproc/config/lcd.conf new file mode 100644 index 0000000000..6259b17772 --- /dev/null +++ b/packages/sysutils/lcdproc/config/lcd.conf @@ -0,0 +1,7 @@ +# Setup LCD/VFD driver ( none / irtrans ) +# +# none: no LCD/VFD hardware is installed +# +# irtrans: use irtrans as LCD/VFD driver + +LCD_DRIVER="none" From 92e9ff992a678ab11fd8569ccde9d13ecde04dfd Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 23:39:50 +0200 Subject: [PATCH 131/171] remote: - add remote user config file --- packages/sysutils/remote/config/remote.conf | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 packages/sysutils/remote/config/remote.conf diff --git a/packages/sysutils/remote/config/remote.conf b/packages/sysutils/remote/config/remote.conf new file mode 100644 index 0000000000..aafd0b010e --- /dev/null +++ b/packages/sysutils/remote/config/remote.conf @@ -0,0 +1,9 @@ +# Setup remote control ( none / lirc / irtrans ) +# +# none: no remote control hardware is installed +# +# lirc: use lirc as remotecontrol backend (default) +# +# irtrans: use irtrans as remotecontrol backend + +REMOTE_BACKEND="lirc" From a593b42718cf35ffcaf33aa464d78c1cd45b15b6 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 23:40:46 +0200 Subject: [PATCH 132/171] xbmc: - remove patch for adding philips remote - add patch to support irtrans mediacenter remote --- ...461-xbmc-add_remote_philips-rc197-0.1.diff | 55 ------------------- ...mc-add_remote_irtrans_mediacenter-0.1.diff | 52 ++++++++++++++++++ 2 files changed, 52 insertions(+), 55 deletions(-) delete mode 100644 packages/mediacenter/xbmc/patches/461-xbmc-add_remote_philips-rc197-0.1.diff create mode 100644 packages/mediacenter/xbmc/patches/462-xbmc-add_remote_irtrans_mediacenter-0.1.diff diff --git a/packages/mediacenter/xbmc/patches/461-xbmc-add_remote_philips-rc197-0.1.diff b/packages/mediacenter/xbmc/patches/461-xbmc-add_remote_philips-rc197-0.1.diff deleted file mode 100644 index 677aa8859e..0000000000 --- a/packages/mediacenter/xbmc/patches/461-xbmc-add_remote_philips-rc197-0.1.diff +++ /dev/null @@ -1,55 +0,0 @@ -diff -Naur xbmc-29490/system/Lircmap.xml xbmc-29490.patch/system/Lircmap.xml ---- xbmc-29490/system/Lircmap.xml 2010-04-24 22:45:26.000000000 +0200 -+++ xbmc-29490.patch/system/Lircmap.xml 2010-04-28 14:18:01.951408228 +0200 -@@ -362,4 +362,51 @@ - recordlist - teletext - -+ -+ -+ play -+ Pause -+ Stop -+ Fwd -+ Rew -+ left -+ right -+ up -+ down -+ -+ Ch+ -+ Ch- -+ Back -+ DVDMenu -+ EPG -+ Info -+ Next -+ Prev -+ eHome -+ Rec -+ Vol+ -+ Vol- -+ Mute -+ power -+ TV -+ 1 -+ 2 -+ 3 -+ 4 -+ 5 -+ 6 -+ 7 -+ 8 -+ 9 -+ 0 -+ Star -+ Hash -+ Clear -+ Enter -+ Red -+ Green -+ Yellow -+ Blue -+ Teletext -+ - diff --git a/packages/mediacenter/xbmc/patches/462-xbmc-add_remote_irtrans_mediacenter-0.1.diff b/packages/mediacenter/xbmc/patches/462-xbmc-add_remote_irtrans_mediacenter-0.1.diff new file mode 100644 index 0000000000..2b969b601e --- /dev/null +++ b/packages/mediacenter/xbmc/patches/462-xbmc-add_remote_irtrans_mediacenter-0.1.diff @@ -0,0 +1,52 @@ +diff -Naur xbmc-29490/system/Lircmap.xml xbmc-29490.patch/system/Lircmap.xml +--- xbmc-29490/system/Lircmap.xml 2010-04-24 22:45:26.000000000 +0200 ++++ xbmc-29490.patch/system/Lircmap.xml 2010-04-28 22:00:13.734656322 +0200 +@@ -362,4 +362,48 @@ + recordlist + teletext + ++ ++ pause ++ stop ++ fwd ++ rew ++ left ++ right ++ up ++ down ++ ++ ch+ ++ ch- ++ back ++ clear ++ play ++ info ++ next ++ prev ++ teletext ++ ehome ++ rec ++ vol+ ++ vol- ++ mute ++ power ++ video ++ music ++ pictures ++ tv ++ 1 ++ 2 ++ 3 ++ 4 ++ 5 ++ 6 ++ 7 ++ 8 ++ 9 ++ 0 ++ red ++ green ++ yellow ++ blue ++ + From 8c0006edf7e8e49c1fdd1252c0298f32b806e9f7 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 23:41:25 +0200 Subject: [PATCH 133/171] remote: - add install script --- packages/sysutils/remote/install | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100755 packages/sysutils/remote/install diff --git a/packages/sysutils/remote/install b/packages/sysutils/remote/install new file mode 100755 index 0000000000..5f8129d2c2 --- /dev/null +++ b/packages/sysutils/remote/install @@ -0,0 +1,11 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/install lirc +$SCRIPTS/install irserver + +PKG_DIR=`find $PACKAGES -type d -name $1` + +mkdir -p $INSTALL/usr/config + cp $PKG_DIR/config/*.conf $INSTALL/usr/config \ No newline at end of file From ce6296fae0f653880601f0d11c92a4b62f1bb8b7 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 28 Apr 2010 23:42:53 +0200 Subject: [PATCH 134/171] irserver: - remove philips-rc197 config file --- packages/sysutils/remote/irserver/install | 2 - .../remote/irserver/remotes/philips-rc197.rem | 53 ------------------- 2 files changed, 55 deletions(-) delete mode 100644 packages/sysutils/remote/irserver/remotes/philips-rc197.rem diff --git a/packages/sysutils/remote/irserver/install b/packages/sysutils/remote/irserver/install index 8c196ca804..4f33270239 100755 --- a/packages/sysutils/remote/irserver/install +++ b/packages/sysutils/remote/irserver/install @@ -12,8 +12,6 @@ mkdir -p $INSTALL/usr/sbin mkdir -p $INSTALL/usr/share/irtrans/remotes cp $PKG_BUILD/remotes/irtrans.rem $INSTALL/usr/share/irtrans/remotes cp $PKG_BUILD/remotes/mediacenter.rem $INSTALL/usr/share/irtrans/remotes - cp $PKG_DIR/remotes/*.rem $INSTALL/usr/share/irtrans/remotes - mkdir -p $INSTALL/lib/udev/rules.d cp $PKG_DIR/config/*.rules $INSTALL/lib/udev/rules.d diff --git a/packages/sysutils/remote/irserver/remotes/philips-rc197.rem b/packages/sysutils/remote/irserver/remotes/philips-rc197.rem deleted file mode 100644 index f3ca22a38f..0000000000 --- a/packages/sysutils/remote/irserver/remotes/philips-rc197.rem +++ /dev/null @@ -1,53 +0,0 @@ -[REMOTE] - [NAME]philips-rc197 - -[TIMING] - [0][N]0[RC]2[RP]87[FREQ]36[SB][RS][RC6] - -[COMMANDS] - [1][T]0[D]S11101010000000000011110000010000000001 - [2][T]0[D]S11101010000000000011110000010000000010 - [3][T]0[D]S11101010000000000011110000010000000011 - [4][T]0[D]S11101010000000000011110000010000000100 - [5][T]0[D]S11101010000000000011110000010000000101 - [6][T]0[D]S11101010000000000011110000010000000110 - [7][T]0[D]S11101010000000000011110000010000000111 - [8][T]0[D]S11101010000000000011110000010000001000 - [9][T]0[D]S11101010000000000011110000010000001001 - [0][T]0[D]S11101010000000000011110000010000000000 - [Star][T]0[D]S11101010000000000011110000010000011101 - [Hash][T]0[D]S11101010000000000011110000010000011100 - [ok][T]0[D]S11101010000000000011110000010000100010 - [left][T]0[D]S11101010000000000011110000010000100000 - [right][T]0[D]S11101010000000000011110000010000100001 - [down][T]0[D]S11101010000000000011110000010000011111 - [up][T]0[D]S11101010000000000011110000010000011110 - [play][T]0[D]S11101010000000000011110000010000010110 - [power][T]0[D]S11101010000000000011110000010000001100 - [Stop][T]0[D]S11101010000000000011110000010000011001 - [Rec][T]0[D]S11101010000000000011110000010000010111 - [Rew][T]0[D]S11101010000000000011110000010000010101 - [Fwd][T]0[D]S11101010000000000011110000010000010100 - [Pause][T]0[D]S11101010000000000011110000010000011000 - [Next][T]0[D]S11101010000000000011110000010000011010 - [Prev][T]0[D]S11101010000000000011110000010000011011 - [eHome][T]0[D]S11101010000000000011110000010000001101 - [Back][T]0[D]S11101010000000000011110000010000100011 - [EPG][T]0[D]S11101010000000000011110000010000100110 - [Info][T]0[D]S11101010000000000011110000010000001111 - [LiveTV][T]0[D]S11101010000000000011110000010000100101 - [TV][T]0[D]S11101010000000000011110000010001000110 - [Vol+][T]0[D]S11101010000000000011110000010000010000 - [Vol-][T]0[D]S11101010000000000011110000010000010001 - [Mute][T]0[D]S11101010000000000011110000010000001110 - [Ch+][T]0[D]S11101010000000000011110000010000010010 - [Ch-][T]0[D]S11101010000000000011110000010000010011 - [Enter][T]0[D]S11101010000000000011110000010000001011 - [Clear][T]0[D]S11101010000000000011110000010000001010 - [DVDMenu][T]0[D]S11101010000000000011110000010000100100 - [Rectv][T]0[D]S11101010000000000011110000010001001000 - [Teletext][T][0][D]S11101010000000000011110000010001011010 - [Red][T][0][D]S11101010000000000011110000010001011011 - [Green][T][0][D]S11101010000000000011110000010001011100 - [Yellow][T][0][D]S11101010000000000011110000010001011101 - [Blue][T][0][D]S11101010000000000011110000010001011110 From 2215a41c23fcf9eed335ae6c3d2533f55cfe8e86 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Thu, 29 Apr 2010 17:35:02 +0200 Subject: [PATCH 135/171] projects/*/linux: - adding suspend to ram support in kernel --- projects/ION/linux/linux.i386.conf | 19 +++++---- projects/ION/linux/linux.x86_64.conf | 19 +++++---- projects/generic/linux/linux.i386.conf | 21 ++++++---- projects/intel/linux/linux.i386.conf | 19 +++++---- projects/intel/linux/linux.x86_64.conf | 54 ++++++++++++++++++++------ 5 files changed, 93 insertions(+), 39 deletions(-) diff --git a/projects/ION/linux/linux.i386.conf b/projects/ION/linux/linux.i386.conf index cf1932b77a..43f33a7dc3 100644 --- a/projects/ION/linux/linux.i386.conf +++ b/projects/ION/linux/linux.i386.conf @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.33.2 +# Linux kernel version: 2.6.33.3 # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -221,7 +221,7 @@ CONFIG_INLINE_WRITE_UNLOCK=y CONFIG_INLINE_WRITE_UNLOCK_IRQ=y # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set CONFIG_MUTEX_SPIN_ON_OWNER=y -# CONFIG_FREEZER is not set +CONFIG_FREEZER=y # # Processor type and features @@ -376,16 +376,20 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # CONFIG_PM=y # CONFIG_PM_DEBUG is not set -# CONFIG_SUSPEND is not set -# CONFIG_PM_RUNTIME is not set +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_PM_RUNTIME=y CONFIG_ACPI=y +CONFIG_ACPI_SLEEP=y # CONFIG_ACPI_PROCFS is not set # CONFIG_ACPI_PROCFS_POWER is not set # CONFIG_ACPI_POWER_METER is not set CONFIG_ACPI_SYSFS_POWER=y CONFIG_ACPI_PROC_EVENT=y -# CONFIG_ACPI_AC is not set -# CONFIG_ACPI_BATTERY is not set +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y CONFIG_ACPI_BUTTON=y CONFIG_ACPI_FAN=y CONFIG_ACPI_DOCK=y @@ -399,8 +403,9 @@ CONFIG_ACPI_BLACKLIST_YEAR=2000 CONFIG_ACPI_PCI_SLOT=y CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y -# CONFIG_ACPI_SBS is not set +CONFIG_ACPI_SBS=y # CONFIG_SFI is not set +# CONFIG_APM is not set # # CPU Frequency scaling diff --git a/projects/ION/linux/linux.x86_64.conf b/projects/ION/linux/linux.x86_64.conf index 3cbc4f2752..0750c2800a 100644 --- a/projects/ION/linux/linux.x86_64.conf +++ b/projects/ION/linux/linux.x86_64.conf @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.33.2 +# Linux kernel version: 2.6.33.3 # CONFIG_64BIT=y # CONFIG_X86_32 is not set @@ -220,7 +220,7 @@ CONFIG_INLINE_WRITE_UNLOCK=y CONFIG_INLINE_WRITE_UNLOCK_IRQ=y # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set CONFIG_MUTEX_SPIN_ON_OWNER=y -# CONFIG_FREEZER is not set +CONFIG_FREEZER=y # # Processor type and features @@ -360,16 +360,20 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # CONFIG_PM=y # CONFIG_PM_DEBUG is not set -# CONFIG_SUSPEND is not set -# CONFIG_PM_RUNTIME is not set +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_PM_RUNTIME=y CONFIG_ACPI=y +CONFIG_ACPI_SLEEP=y # CONFIG_ACPI_PROCFS is not set # CONFIG_ACPI_PROCFS_POWER is not set # CONFIG_ACPI_POWER_METER is not set CONFIG_ACPI_SYSFS_POWER=y CONFIG_ACPI_PROC_EVENT=y -# CONFIG_ACPI_AC is not set -# CONFIG_ACPI_BATTERY is not set +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y CONFIG_ACPI_BUTTON=y CONFIG_ACPI_FAN=y CONFIG_ACPI_DOCK=y @@ -383,8 +387,9 @@ CONFIG_ACPI_BLACKLIST_YEAR=0 CONFIG_ACPI_PCI_SLOT=y CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y -# CONFIG_ACPI_SBS is not set +CONFIG_ACPI_SBS=y # CONFIG_SFI is not set +# CONFIG_APM is not set # # CPU Frequency scaling diff --git a/projects/generic/linux/linux.i386.conf b/projects/generic/linux/linux.i386.conf index abcdb5d6cb..67bc1b7c17 100644 --- a/projects/generic/linux/linux.i386.conf +++ b/projects/generic/linux/linux.i386.conf @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.33.2 +# Linux kernel version: 2.6.33.3 # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -221,7 +221,7 @@ CONFIG_INLINE_WRITE_UNLOCK=y CONFIG_INLINE_WRITE_UNLOCK_IRQ=y # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set CONFIG_MUTEX_SPIN_ON_OWNER=y -# CONFIG_FREEZER is not set +CONFIG_FREEZER=y # # Processor type and features @@ -377,16 +377,20 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # CONFIG_PM=y # CONFIG_PM_DEBUG is not set -# CONFIG_SUSPEND is not set -# CONFIG_PM_RUNTIME is not set +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_PM_RUNTIME=y CONFIG_ACPI=y +CONFIG_ACPI_SLEEP=y # CONFIG_ACPI_PROCFS is not set # CONFIG_ACPI_PROCFS_POWER is not set # CONFIG_ACPI_POWER_METER is not set CONFIG_ACPI_SYSFS_POWER=y CONFIG_ACPI_PROC_EVENT=y -# CONFIG_ACPI_AC is not set -# CONFIG_ACPI_BATTERY is not set +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y CONFIG_ACPI_BUTTON=y CONFIG_ACPI_VIDEO=y CONFIG_ACPI_FAN=y @@ -401,8 +405,9 @@ CONFIG_ACPI_BLACKLIST_YEAR=2000 CONFIG_ACPI_PCI_SLOT=y CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y -# CONFIG_ACPI_SBS is not set +CONFIG_ACPI_SBS=y # CONFIG_SFI is not set +# CONFIG_APM is not set # # CPU Frequency scaling @@ -930,6 +935,7 @@ CONFIG_B43=m CONFIG_B43_PCI_AUTOSELECT=y CONFIG_B43_PCICORE_AUTOSELECT=y # CONFIG_B43_SDIO is not set +CONFIG_B43_PIO=y CONFIG_B43_PHY_LP=y CONFIG_B43_LEDS=y CONFIG_B43_HWRNG=y @@ -1373,6 +1379,7 @@ CONFIG_SSB_POSSIBLE=y # CONFIG_SSB=m CONFIG_SSB_SPROM=y +CONFIG_SSB_BLOCKIO=y CONFIG_SSB_PCIHOST_POSSIBLE=y CONFIG_SSB_PCIHOST=y CONFIG_SSB_B43_PCI_BRIDGE=y diff --git a/projects/intel/linux/linux.i386.conf b/projects/intel/linux/linux.i386.conf index 6473ae01ce..9f9571b24a 100644 --- a/projects/intel/linux/linux.i386.conf +++ b/projects/intel/linux/linux.i386.conf @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.33.2 +# Linux kernel version: 2.6.33.3 # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -221,7 +221,7 @@ CONFIG_INLINE_WRITE_UNLOCK=y CONFIG_INLINE_WRITE_UNLOCK_IRQ=y # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set CONFIG_MUTEX_SPIN_ON_OWNER=y -# CONFIG_FREEZER is not set +CONFIG_FREEZER=y # # Processor type and features @@ -377,16 +377,20 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # CONFIG_PM=y # CONFIG_PM_DEBUG is not set -# CONFIG_SUSPEND is not set -# CONFIG_PM_RUNTIME is not set +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_PM_RUNTIME=y CONFIG_ACPI=y +CONFIG_ACPI_SLEEP=y # CONFIG_ACPI_PROCFS is not set # CONFIG_ACPI_PROCFS_POWER is not set # CONFIG_ACPI_POWER_METER is not set CONFIG_ACPI_SYSFS_POWER=y CONFIG_ACPI_PROC_EVENT=y -# CONFIG_ACPI_AC is not set -# CONFIG_ACPI_BATTERY is not set +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y CONFIG_ACPI_BUTTON=y CONFIG_ACPI_VIDEO=y CONFIG_ACPI_FAN=y @@ -401,8 +405,9 @@ CONFIG_ACPI_BLACKLIST_YEAR=2000 CONFIG_ACPI_PCI_SLOT=y CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y -# CONFIG_ACPI_SBS is not set +CONFIG_ACPI_SBS=y # CONFIG_SFI is not set +# CONFIG_APM is not set # # CPU Frequency scaling diff --git a/projects/intel/linux/linux.x86_64.conf b/projects/intel/linux/linux.x86_64.conf index e5b0f9c048..e2789b0706 100644 --- a/projects/intel/linux/linux.x86_64.conf +++ b/projects/intel/linux/linux.x86_64.conf @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.33.2 +# Linux kernel version: 2.6.33.3 # CONFIG_64BIT=y # CONFIG_X86_32 is not set @@ -24,8 +24,8 @@ CONFIG_GENERIC_BUG=y CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_TIME_VSYSCALL=y @@ -71,7 +71,7 @@ CONFIG_HAVE_KERNEL_LZO=y # CONFIG_KERNEL_BZIP2 is not set CONFIG_KERNEL_LZMA=y # CONFIG_KERNEL_LZO is not set -# CONFIG_SWAP is not set +CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y @@ -220,7 +220,7 @@ CONFIG_INLINE_WRITE_UNLOCK=y CONFIG_INLINE_WRITE_UNLOCK_IRQ=y # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set CONFIG_MUTEX_SPIN_ON_OWNER=y -# CONFIG_FREEZER is not set +CONFIG_FREEZER=y # # Processor type and features @@ -266,6 +266,7 @@ CONFIG_X86_CPU=y CONFIG_X86_INTERNODE_CACHE_SHIFT=6 CONFIG_X86_CMPXCHG=y CONFIG_X86_L1_CACHE_SHIFT=6 +CONFIG_X86_XADD=y CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y @@ -348,6 +349,7 @@ CONFIG_HZ=300 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y +# CONFIG_KEXEC_JUMP is not set CONFIG_PHYSICAL_START=0x400000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x1000000 @@ -360,18 +362,47 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # # Power management and ACPI options # +CONFIG_ARCH_HIBERNATION_HEADER=y CONFIG_PM=y # CONFIG_PM_DEBUG is not set -# CONFIG_SUSPEND is not set -# CONFIG_PM_RUNTIME is not set +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_HIBERNATION_NVS=y +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="" +CONFIG_TOI_CORE=y + +# +# Image Storage (you need at least one allocator) +# +CONFIG_TOI_FILE=y +# CONFIG_TOI_SWAP is not set + +# +# General Options +# +CONFIG_TOI_CRYPTO=y +CONFIG_TOI_USERUI=y +CONFIG_TOI_USERUI_DEFAULT_PATH="/usr/local/sbin/tuxoniceui_text" +CONFIG_TOI_KEEP_IMAGE=y +CONFIG_TOI_REPLACE_SWSUSP=y +# CONFIG_TOI_IGNORE_LATE_INITCALL is not set +CONFIG_TOI_DEFAULT_WAIT=25 +CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE=2000 +# CONFIG_TOI_CHECKSUM is not set +CONFIG_TOI=y +CONFIG_PM_RUNTIME=y CONFIG_ACPI=y +CONFIG_ACPI_SLEEP=y # CONFIG_ACPI_PROCFS is not set # CONFIG_ACPI_PROCFS_POWER is not set # CONFIG_ACPI_POWER_METER is not set CONFIG_ACPI_SYSFS_POWER=y CONFIG_ACPI_PROC_EVENT=y -# CONFIG_ACPI_AC is not set -# CONFIG_ACPI_BATTERY is not set +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y CONFIG_ACPI_BUTTON=y CONFIG_ACPI_VIDEO=y CONFIG_ACPI_FAN=y @@ -386,7 +417,7 @@ CONFIG_ACPI_BLACKLIST_YEAR=0 CONFIG_ACPI_PCI_SLOT=y CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y -# CONFIG_ACPI_SBS is not set +CONFIG_ACPI_SBS=y # CONFIG_SFI is not set # @@ -1937,6 +1968,7 @@ CONFIG_STAGING=y # # CONFIG_RAR_REGISTER is not set # CONFIG_IIO is not set +# CONFIG_RAMZSWAP is not set # CONFIG_BATMAN_ADV is not set # CONFIG_SAMSUNG_LAPTOP is not set # CONFIG_STRIP is not set @@ -2278,6 +2310,7 @@ CONFIG_CRYPTO_DES=y # CONFIG_CRYPTO_DEFLATE is not set CONFIG_CRYPTO_ZLIB=y CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_LZF=y # # Random Number Generation @@ -2302,7 +2335,6 @@ CONFIG_CRC_ITU_T=y CONFIG_CRC32=y # CONFIG_CRC7 is not set CONFIG_LIBCRC32C=y -CONFIG_AUDIT_GENERIC=y CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y From 71e3a025830ea55bf7c9bb1c356ee9c2180808da Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Thu, 29 Apr 2010 18:20:55 +0200 Subject: [PATCH 136/171] new package: - adding package upower --- packages/sysutils/upower/build | 31 ++++++++++++++++++++++++++++ packages/sysutils/upower/install | 35 ++++++++++++++++++++++++++++++++ packages/sysutils/upower/url | 1 + 3 files changed, 67 insertions(+) create mode 100755 packages/sysutils/upower/build create mode 100755 packages/sysutils/upower/install create mode 100644 packages/sysutils/upower/url diff --git a/packages/sysutils/upower/build b/packages/sysutils/upower/build new file mode 100755 index 0000000000..e3ed681c1d --- /dev/null +++ b/packages/sysutils/upower/build @@ -0,0 +1,31 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/build toolchain +$SCRIPTS/build udev +$SCRIPTS/build glib +$SCRIPTS/build dbus +$SCRIPTS/build dbus-glib +$SCRIPTS/build polkit + +cd $PKG_BUILD +./configure --host=$TARGET_NAME \ + --build=$HOST_NAME \ + --prefix=/usr \ + --sysconfdir=/etc \ + --datadir=/usr/share \ + --libexecdir=/usr/lib/upower \ + --localstatedir=/var \ + --disable-static \ + --enable-shared \ + --with-backend=linux \ + --disable-man-pages \ + --disable-gtk-doc \ + --enable-gtk-doc-html \ + --enable-gtk-doc-pdf \ + --disable-nls \ + +make + +$MAKEINSTALL diff --git a/packages/sysutils/upower/install b/packages/sysutils/upower/install new file mode 100755 index 0000000000..0d4fad0654 --- /dev/null +++ b/packages/sysutils/upower/install @@ -0,0 +1,35 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/install udev +$SCRIPTS/install glib +$SCRIPTS/install dbus +$SCRIPTS/install dbus-glib +$SCRIPTS/install polkit + +mkdir -p $INSTALL/etc/dbus-1/system.d + cp -P $PKG_BUILD/src/org.freedesktop.UPower.conf $INSTALL/etc/dbus-1/system.d + +mkdir -p $INSTALL/usr/bin + cp -P $PKG_BUILD/tools/.libs/upower $INSTALL/usr/bin + +mkdir -p $INSTALL/usr/lib + cp -P $PKG_BUILD/devkit-power-gobject/.libs/*.so* $INSTALL/usr/lib + cp -P $PKG_BUILD/libupower-glib/.libs/*.so* $INSTALL/usr/lib + +mkdir -p $INSTALL/usr/lib/upower + cp -P $PKG_BUILD/src/.libs/upowerd $INSTALL/usr/lib/upower + +mkdir -p $INSTALL/usr/share/dbus-1/interfaces + cp -P $PKG_BUILD/src/org.freedesktop.UPower.Device.xml $INSTALL/usr/share/dbus-1/interfaces + cp -P $PKG_BUILD/src/org.freedesktop.UPower.QoS.xml $INSTALL/usr/share/dbus-1/interfaces + cp -P $PKG_BUILD/src/org.freedesktop.UPower.Wakeups.xml $INSTALL/usr/share/dbus-1/interfaces + cp -P $PKG_BUILD/src/org.freedesktop.UPower.xml $INSTALL/usr/share/dbus-1/interfaces + +mkdir -p $INSTALL/usr/share/dbus-1/system-services + cp -P $PKG_BUILD/src/org.freedesktop.UPower.service $INSTALL/usr/share/dbus-1/system-services + +mkdir -p $INSTALL/usr/share/polkit-1/actions + cp -P $PKG_BUILD/policy/org.freedesktop.upower.policy $INSTALL/usr/share/polkit-1/actions + cp -P $PKG_BUILD/policy/org.freedesktop.upower.qos.policy $INSTALL/usr/share/polkit-1/actions diff --git a/packages/sysutils/upower/url b/packages/sysutils/upower/url new file mode 100644 index 0000000000..fe8dcb77e1 --- /dev/null +++ b/packages/sysutils/upower/url @@ -0,0 +1 @@ +http://upower.freedesktop.org/releases/upower-0.9.2.tar.bz2 \ No newline at end of file From e3006e500b95c2ea09ccbf1542d22c5dde95d5de Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Thu, 29 Apr 2010 18:21:28 +0200 Subject: [PATCH 137/171] busybox: - create /var/lib/upower at starttime --- packages/sysutils/busybox/init.d/06_make_directorys | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/sysutils/busybox/init.d/06_make_directorys b/packages/sysutils/busybox/init.d/06_make_directorys index 8f4690580d..fde0d0c8f8 100755 --- a/packages/sysutils/busybox/init.d/06_make_directorys +++ b/packages/sysutils/busybox/init.d/06_make_directorys @@ -21,4 +21,5 @@ progress "make variable directory structure" # others: $IONICE mkdir -p /var/lib/polkit-1 \ - /var/lib/udisks + /var/lib/udisks \ + /var/lib/upower From 7ad081a59a30b0851dfe17d0d602a1b6c20a8f35 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Thu, 29 Apr 2010 18:22:04 +0200 Subject: [PATCH 138/171] linux: - add tuxonice kernel support --- .../patches/tuxonice-3.1-for-2.6.33.diff | 21427 ++++++++++++++++ projects/ION/linux/linux.i386.conf | 28 +- projects/ION/linux/linux.x86_64.conf | 28 +- projects/generic/linux/linux.i386.conf | 29 +- projects/intel/linux/linux.i386.conf | 29 +- 5 files changed, 21537 insertions(+), 4 deletions(-) create mode 100644 packages/linux/patches/tuxonice-3.1-for-2.6.33.diff diff --git a/packages/linux/patches/tuxonice-3.1-for-2.6.33.diff b/packages/linux/patches/tuxonice-3.1-for-2.6.33.diff new file mode 100644 index 0000000000..fdd7bee0d9 --- /dev/null +++ b/packages/linux/patches/tuxonice-3.1-for-2.6.33.diff @@ -0,0 +1,21427 @@ +diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt +index e7848a0..616afc2 100644 +--- a/Documentation/kernel-parameters.txt ++++ b/Documentation/kernel-parameters.txt +@@ -2703,6 +2703,9 @@ and is between 256 and 4096 characters. It is defined in the file + medium is write-protected). + Example: quirks=0419:aaf5:rl,0421:0433:rc + ++ uuid_debug= (Boolean) whether to enable debugging of TuxOnIce's ++ uuid support. ++ + vdso= [X86,SH] + vdso=2: enable compat VDSO (default with COMPAT_VDSO) + vdso=1: enable VDSO (default) +diff --git a/Documentation/power/tuxonice-internals.txt b/Documentation/power/tuxonice-internals.txt +new file mode 100644 +index 0000000..7a96186 +--- /dev/null ++++ b/Documentation/power/tuxonice-internals.txt +@@ -0,0 +1,477 @@ ++ TuxOnIce 3.0 Internal Documentation. ++ Updated to 26 March 2009 ++ ++1. Introduction. ++ ++ TuxOnIce 3.0 is an addition to the Linux Kernel, designed to ++ allow the user to quickly shutdown and quickly boot a computer, without ++ needing to close documents or programs. It is equivalent to the ++ hibernate facility in some laptops. This implementation, however, ++ requires no special BIOS or hardware support. ++ ++ The code in these files is based upon the original implementation ++ prepared by Gabor Kuti and additional work by Pavel Machek and a ++ host of others. This code has been substantially reworked by Nigel ++ Cunningham, again with the help and testing of many others, not the ++ least of whom is Michael Frank. At its heart, however, the operation is ++ essentially the same as Gabor's version. ++ ++2. Overview of operation. ++ ++ The basic sequence of operations is as follows: ++ ++ a. Quiesce all other activity. ++ b. Ensure enough memory and storage space are available, and attempt ++ to free memory/storage if necessary. ++ c. Allocate the required memory and storage space. ++ d. Write the image. ++ e. Power down. ++ ++ There are a number of complicating factors which mean that things are ++ not as simple as the above would imply, however... ++ ++ o The activity of each process must be stopped at a point where it will ++ not be holding locks necessary for saving the image, or unexpectedly ++ restart operations due to something like a timeout and thereby make ++ our image inconsistent. ++ ++ o It is desirous that we sync outstanding I/O to disk before calculating ++ image statistics. This reduces corruption if one should suspend but ++ then not resume, and also makes later parts of the operation safer (see ++ below). ++ ++ o We need to get as close as we can to an atomic copy of the data. ++ Inconsistencies in the image will result in inconsistent memory contents at ++ resume time, and thus in instability of the system and/or file system ++ corruption. This would appear to imply a maximum image size of one half of ++ the amount of RAM, but we have a solution... (again, below). ++ ++ o In 2.6, we choose to play nicely with the other suspend-to-disk ++ implementations. ++ ++3. Detailed description of internals. ++ ++ a. Quiescing activity. ++ ++ Safely quiescing the system is achieved using three separate but related ++ aspects. ++ ++ First, we note that the vast majority of processes don't need to run during ++ suspend. They can be 'frozen'. We therefore implement a refrigerator ++ routine, which processes enter and in which they remain until the cycle is ++ complete. Processes enter the refrigerator via try_to_freeze() invocations ++ at appropriate places. A process cannot be frozen in any old place. It ++ must not be holding locks that will be needed for writing the image or ++ freezing other processes. For this reason, userspace processes generally ++ enter the refrigerator via the signal handling code, and kernel threads at ++ the place in their event loops where they drop locks and yield to other ++ processes or sleep. ++ ++ The task of freezing processes is complicated by the fact that there can be ++ interdependencies between processes. Freezing process A before process B may ++ mean that process B cannot be frozen, because it stops at waiting for ++ process A rather than in the refrigerator. This issue is seen where ++ userspace waits on freezeable kernel threads or fuse filesystem threads. To ++ address this issue, we implement the following algorithm for quiescing ++ activity: ++ ++ - Freeze filesystems (including fuse - userspace programs starting ++ new requests are immediately frozen; programs already running ++ requests complete their work before being frozen in the next ++ step) ++ - Freeze userspace ++ - Thaw filesystems (this is safe now that userspace is frozen and no ++ fuse requests are outstanding). ++ - Invoke sys_sync (noop on fuse). ++ - Freeze filesystems ++ - Freeze kernel threads ++ ++ If we need to free memory, we thaw kernel threads and filesystems, but not ++ userspace. We can then free caches without worrying about deadlocks due to ++ swap files being on frozen filesystems or such like. ++ ++ b. Ensure enough memory & storage are available. ++ ++ We have a number of constraints to meet in order to be able to successfully ++ suspend and resume. ++ ++ First, the image will be written in two parts, described below. One of these ++ parts needs to have an atomic copy made, which of course implies a maximum ++ size of one half of the amount of system memory. The other part ('pageset') ++ is not atomically copied, and can therefore be as large or small as desired. ++ ++ Second, we have constraints on the amount of storage available. In these ++ calculations, we may also consider any compression that will be done. The ++ cryptoapi module allows the user to configure an expected compression ratio. ++ ++ Third, the user can specify an arbitrary limit on the image size, in ++ megabytes. This limit is treated as a soft limit, so that we don't fail the ++ attempt to suspend if we cannot meet this constraint. ++ ++ c. Allocate the required memory and storage space. ++ ++ Having done the initial freeze, we determine whether the above constraints ++ are met, and seek to allocate the metadata for the image. If the constraints ++ are not met, or we fail to allocate the required space for the metadata, we ++ seek to free the amount of memory that we calculate is needed and try again. ++ We allow up to four iterations of this loop before aborting the cycle. If we ++ do fail, it should only be because of a bug in TuxOnIce's calculations. ++ ++ These steps are merged together in the prepare_image function, found in ++ prepare_image.c. The functions are merged because of the cyclical nature ++ of the problem of calculating how much memory and storage is needed. Since ++ the data structures containing the information about the image must ++ themselves take memory and use storage, the amount of memory and storage ++ required changes as we prepare the image. Since the changes are not large, ++ only one or two iterations will be required to achieve a solution. ++ ++ The recursive nature of the algorithm is miminised by keeping user space ++ frozen while preparing the image, and by the fact that our records of which ++ pages are to be saved and which pageset they are saved in use bitmaps (so ++ that changes in number or fragmentation of the pages to be saved don't ++ feedback via changes in the amount of memory needed for metadata). The ++ recursiveness is thus limited to any extra slab pages allocated to store the ++ extents that record storage used, and the effects of seeking to free memory. ++ ++ d. Write the image. ++ ++ We previously mentioned the need to create an atomic copy of the data, and ++ the half-of-memory limitation that is implied in this. This limitation is ++ circumvented by dividing the memory to be saved into two parts, called ++ pagesets. ++ ++ Pageset2 contains most of the page cache - the pages on the active and ++ inactive LRU lists that aren't needed or modified while TuxOnIce is ++ running, so they can be safely written without an atomic copy. They are ++ therefore saved first and reloaded last. While saving these pages, ++ TuxOnIce carefully ensures that the work of writing the pages doesn't make ++ the image inconsistent. With the support for Kernel (Video) Mode Setting ++ going into the kernel at the time of writing, we need to check for pages ++ on the LRU that are used by KMS, and exclude them from pageset2. They are ++ atomically copied as part of pageset 1. ++ ++ Once pageset2 has been saved, we prepare to do the atomic copy of remaining ++ memory. As part of the preparation, we power down drivers, thereby providing ++ them with the opportunity to have their state recorded in the image. The ++ amount of memory allocated by drivers for this is usually negligible, but if ++ DRI is in use, video drivers may require significants amounts. Ideally we ++ would be able to query drivers while preparing the image as to the amount of ++ memory they will need. Unfortunately no such mechanism exists at the time of ++ writing. For this reason, TuxOnIce allows the user to set an ++ 'extra_pages_allowance', which is used to seek to ensure sufficient memory ++ is available for drivers at this point. TuxOnIce also lets the user set this ++ value to 0. In this case, a test driver suspend is done while preparing the ++ image, and the difference (plus a margin) used instead. TuxOnIce will also ++ automatically restart the hibernation process (twice at most) if it finds ++ that the extra pages allowance is not sufficient. It will then use what was ++ actually needed (plus a margin, again). Failure to hibernate should thus ++ be an extremely rare occurence. ++ ++ Having suspended the drivers, we save the CPU context before making an ++ atomic copy of pageset1, resuming the drivers and saving the atomic copy. ++ After saving the two pagesets, we just need to save our metadata before ++ powering down. ++ ++ As we mentioned earlier, the contents of pageset2 pages aren't needed once ++ they've been saved. We therefore use them as the destination of our atomic ++ copy. In the unlikely event that pageset1 is larger, extra pages are ++ allocated while the image is being prepared. This is normally only a real ++ possibility when the system has just been booted and the page cache is ++ small. ++ ++ This is where we need to be careful about syncing, however. Pageset2 will ++ probably contain filesystem meta data. If this is overwritten with pageset1 ++ and then a sync occurs, the filesystem will be corrupted - at least until ++ resume time and another sync of the restored data. Since there is a ++ possibility that the user might not resume or (may it never be!) that ++ TuxOnIce might oops, we do our utmost to avoid syncing filesystems after ++ copying pageset1. ++ ++ e. Power down. ++ ++ Powering down uses standard kernel routines. TuxOnIce supports powering down ++ using the ACPI S3, S4 and S5 methods or the kernel's non-ACPI power-off. ++ Supporting suspend to ram (S3) as a power off option might sound strange, ++ but it allows the user to quickly get their system up and running again if ++ the battery doesn't run out (we just need to re-read the overwritten pages) ++ and if the battery does run out (or the user removes power), they can still ++ resume. ++ ++4. Data Structures. ++ ++ TuxOnIce uses three main structures to store its metadata and configuration ++ information: ++ ++ a) Pageflags bitmaps. ++ ++ TuxOnIce records which pages will be in pageset1, pageset2, the destination ++ of the atomic copy and the source of the atomically restored image using ++ bitmaps. The code used is that written for swsusp, with small improvements ++ to match TuxOnIce's requirements. ++ ++ The pageset1 bitmap is thus easily stored in the image header for use at ++ resume time. ++ ++ As mentioned above, using bitmaps also means that the amount of memory and ++ storage required for recording the above information is constant. This ++ greatly simplifies the work of preparing the image. In earlier versions of ++ TuxOnIce, extents were used to record which pages would be stored. In that ++ case, however, eating memory could result in greater fragmentation of the ++ lists of pages, which in turn required more memory to store the extents and ++ more storage in the image header. These could in turn require further ++ freeing of memory, and another iteration. All of this complexity is removed ++ by having bitmaps. ++ ++ Bitmaps also make a lot of sense because TuxOnIce only ever iterates ++ through the lists. There is therefore no cost to not being able to find the ++ nth page in order 0 time. We only need to worry about the cost of finding ++ the n+1th page, given the location of the nth page. Bitwise optimisations ++ help here. ++ ++ b) Extents for block data. ++ ++ TuxOnIce supports writing the image to multiple block devices. In the case ++ of swap, multiple partitions and/or files may be in use, and we happily use ++ them all (with the exception of compcache pages, which we allocate but do ++ not use). This use of multiple block devices is accomplished as follows: ++ ++ Whatever the actual source of the allocated storage, the destination of the ++ image can be viewed in terms of one or more block devices, and on each ++ device, a list of sectors. To simplify matters, we only use contiguous, ++ PAGE_SIZE aligned sectors, like the swap code does. ++ ++ Since sector numbers on each bdev may well not start at 0, it makes much ++ more sense to use extents here. Contiguous ranges of pages can thus be ++ represented in the extents by contiguous values. ++ ++ Variations in block size are taken account of in transforming this data ++ into the parameters for bio submission. ++ ++ We can thus implement a layer of abstraction wherein the core of TuxOnIce ++ doesn't have to worry about which device we're currently writing to or ++ where in the device we are. It simply requests that the next page in the ++ pageset or header be written, leaving the details to this lower layer. ++ The lower layer remembers where in the sequence of devices and blocks each ++ pageset starts. The header always starts at the beginning of the allocated ++ storage. ++ ++ So extents are: ++ ++ struct extent { ++ unsigned long minimum, maximum; ++ struct extent *next; ++ } ++ ++ These are combined into chains of extents for a device: ++ ++ struct extent_chain { ++ int size; /* size of the extent ie sum (max-min+1) */ ++ int allocs, frees; ++ char *name; ++ struct extent *first, *last_touched; ++ }; ++ ++ For each bdev, we need to store a little more info: ++ ++ struct suspend_bdev_info { ++ struct block_device *bdev; ++ dev_t dev_t; ++ int bmap_shift; ++ int blocks_per_page; ++ }; ++ ++ The dev_t is used to identify the device in the stored image. As a result, ++ we expect devices at resume time to have the same major and minor numbers ++ as they had while suspending. This is primarily a concern where the user ++ utilises LVM for storage, as they will need to dmsetup their partitions in ++ such a way as to maintain this consistency at resume time. ++ ++ bmap_shift and blocks_per_page apply the effects of variations in blocks ++ per page settings for the filesystem and underlying bdev. For most ++ filesystems, these are the same, but for xfs, they can have independant ++ values. ++ ++ Combining these two structures together, we have everything we need to ++ record what devices and what blocks on each device are being used to ++ store the image, and to submit i/o using bio_submit. ++ ++ The last elements in the picture are a means of recording how the storage ++ is being used. ++ ++ We do this first and foremost by implementing a layer of abstraction on ++ top of the devices and extent chains which allows us to view however many ++ devices there might be as one long storage tape, with a single 'head' that ++ tracks a 'current position' on the tape: ++ ++ struct extent_iterate_state { ++ struct extent_chain *chains; ++ int num_chains; ++ int current_chain; ++ struct extent *current_extent; ++ unsigned long current_offset; ++ }; ++ ++ That is, *chains points to an array of size num_chains of extent chains. ++ For the filewriter, this is always a single chain. For the swapwriter, the ++ array is of size MAX_SWAPFILES. ++ ++ current_chain, current_extent and current_offset thus point to the current ++ index in the chains array (and into a matching array of struct ++ suspend_bdev_info), the current extent in that chain (to optimise access), ++ and the current value in the offset. ++ ++ The image is divided into three parts: ++ - The header ++ - Pageset 1 ++ - Pageset 2 ++ ++ The header always starts at the first device and first block. We know its ++ size before we begin to save the image because we carefully account for ++ everything that will be stored in it. ++ ++ The second pageset (LRU) is stored first. It begins on the next page after ++ the end of the header. ++ ++ The first pageset is stored second. It's start location is only known once ++ pageset2 has been saved, since pageset2 may be compressed as it is written. ++ This location is thus recorded at the end of saving pageset2. It is page ++ aligned also. ++ ++ Since this information is needed at resume time, and the location of extents ++ in memory will differ at resume time, this needs to be stored in a portable ++ way: ++ ++ struct extent_iterate_saved_state { ++ int chain_num; ++ int extent_num; ++ unsigned long offset; ++ }; ++ ++ We can thus implement a layer of abstraction wherein the core of TuxOnIce ++ doesn't have to worry about which device we're currently writing to or ++ where in the device we are. It simply requests that the next page in the ++ pageset or header be written, leaving the details to this layer, and ++ invokes the routines to remember and restore the position, without having ++ to worry about the details of how the data is arranged on disk or such like. ++ ++ c) Modules ++ ++ One aim in designing TuxOnIce was to make it flexible. We wanted to allow ++ for the implementation of different methods of transforming a page to be ++ written to disk and different methods of getting the pages stored. ++ ++ In early versions (the betas and perhaps Suspend1), compression support was ++ inlined in the image writing code, and the data structures and code for ++ managing swap were intertwined with the rest of the code. A number of people ++ had expressed interest in implementing image encryption, and alternative ++ methods of storing the image. ++ ++ In order to achieve this, TuxOnIce was given a modular design. ++ ++ A module is a single file which encapsulates the functionality needed ++ to transform a pageset of data (encryption or compression, for example), ++ or to write the pageset to a device. The former type of module is called ++ a 'page-transformer', the later a 'writer'. ++ ++ Modules are linked together in pipeline fashion. There may be zero or more ++ page transformers in a pipeline, and there is always exactly one writer. ++ The pipeline follows this pattern: ++ ++ --------------------------------- ++ | TuxOnIce Core | ++ --------------------------------- ++ | ++ | ++ --------------------------------- ++ | Page transformer 1 | ++ --------------------------------- ++ | ++ | ++ --------------------------------- ++ | Page transformer 2 | ++ --------------------------------- ++ | ++ | ++ --------------------------------- ++ | Writer | ++ --------------------------------- ++ ++ During the writing of an image, the core code feeds pages one at a time ++ to the first module. This module performs whatever transformations it ++ implements on the incoming data, completely consuming the incoming data and ++ feeding output in a similar manner to the next module. ++ ++ All routines are SMP safe, and the final result of the transformations is ++ written with an index (provided by the core) and size of the output by the ++ writer. As a result, we can have multithreaded I/O without needing to ++ worry about the sequence in which pages are written (or read). ++ ++ During reading, the pipeline works in the reverse direction. The core code ++ calls the first module with the address of a buffer which should be filled. ++ (Note that the buffer size is always PAGE_SIZE at this time). This module ++ will in turn request data from the next module and so on down until the ++ writer is made to read from the stored image. ++ ++ Part of definition of the structure of a module thus looks like this: ++ ++ int (*rw_init) (int rw, int stream_number); ++ int (*rw_cleanup) (int rw); ++ int (*write_chunk) (struct page *buffer_page); ++ int (*read_chunk) (struct page *buffer_page, int sync); ++ ++ It should be noted that the _cleanup routine may be called before the ++ full stream of data has been read or written. While writing the image, ++ the user may (depending upon settings) choose to abort suspending, and ++ if we are in the midst of writing the last portion of the image, a portion ++ of the second pageset may be reread. This may also happen if an error ++ occurs and we seek to abort the process of writing the image. ++ ++ The modular design is also useful in a number of other ways. It provides ++ a means where by we can add support for: ++ ++ - providing overall initialisation and cleanup routines; ++ - serialising configuration information in the image header; ++ - providing debugging information to the user; ++ - determining memory and image storage requirements; ++ - dis/enabling components at run-time; ++ - configuring the module (see below); ++ ++ ...and routines for writers specific to their work: ++ - Parsing a resume= location; ++ - Determining whether an image exists; ++ - Marking a resume as having been attempted; ++ - Invalidating an image; ++ ++ Since some parts of the core - the user interface and storage manager ++ support - have use for some of these functions, they are registered as ++ 'miscellaneous' modules as well. ++ ++ d) Sysfs data structures. ++ ++ This brings us naturally to support for configuring TuxOnIce. We desired to ++ provide a way to make TuxOnIce as flexible and configurable as possible. ++ The user shouldn't have to reboot just because they want to now hibernate to ++ a file instead of a partition, for example. ++ ++ To accomplish this, TuxOnIce implements a very generic means whereby the ++ core and modules can register new sysfs entries. All TuxOnIce entries use ++ a single _store and _show routine, both of which are found in ++ tuxonice_sysfs.c in the kernel/power directory. These routines handle the ++ most common operations - getting and setting the values of bits, integers, ++ longs, unsigned longs and strings in one place, and allow overrides for ++ customised get and set options as well as side-effect routines for all ++ reads and writes. ++ ++ When combined with some simple macros, a new sysfs entry can then be defined ++ in just a couple of lines: ++ ++ SYSFS_INT("progress_granularity", SYSFS_RW, &progress_granularity, 1, ++ 2048, 0, NULL), ++ ++ This defines a sysfs entry named "progress_granularity" which is rw and ++ allows the user to access an integer stored at &progress_granularity, giving ++ it a value between 1 and 2048 inclusive. ++ ++ Sysfs entries are registered under /sys/power/tuxonice, and entries for ++ modules are located in a subdirectory named after the module. ++ +diff --git a/Documentation/power/tuxonice.txt b/Documentation/power/tuxonice.txt +new file mode 100644 +index 0000000..3bf0575 +--- /dev/null ++++ b/Documentation/power/tuxonice.txt +@@ -0,0 +1,948 @@ ++ --- TuxOnIce, version 3.0 --- ++ ++1. What is it? ++2. Why would you want it? ++3. What do you need to use it? ++4. Why not just use the version already in the kernel? ++5. How do you use it? ++6. What do all those entries in /sys/power/tuxonice do? ++7. How do you get support? ++8. I think I've found a bug. What should I do? ++9. When will XXX be supported? ++10 How does it work? ++11. Who wrote TuxOnIce? ++ ++1. What is it? ++ ++ Imagine you're sitting at your computer, working away. For some reason, you ++ need to turn off your computer for a while - perhaps it's time to go home ++ for the day. When you come back to your computer next, you're going to want ++ to carry on where you left off. Now imagine that you could push a button and ++ have your computer store the contents of its memory to disk and power down. ++ Then, when you next start up your computer, it loads that image back into ++ memory and you can carry on from where you were, just as if you'd never ++ turned the computer off. You have far less time to start up, no reopening of ++ applications or finding what directory you put that file in yesterday. ++ That's what TuxOnIce does. ++ ++ TuxOnIce has a long heritage. It began life as work by Gabor Kuti, who, ++ with some help from Pavel Machek, got an early version going in 1999. The ++ project was then taken over by Florent Chabaud while still in alpha version ++ numbers. Nigel Cunningham came on the scene when Florent was unable to ++ continue, moving the project into betas, then 1.0, 2.0 and so on up to ++ the present series. During the 2.0 series, the name was contracted to ++ Suspend2 and the website suspend2.net created. Beginning around July 2007, ++ a transition to calling the software TuxOnIce was made, to seek to help ++ make it clear that TuxOnIce is more concerned with hibernation than suspend ++ to ram. ++ ++ Pavel Machek's swsusp code, which was merged around 2.5.17 retains the ++ original name, and was essentially a fork of the beta code until Rafael ++ Wysocki came on the scene in 2005 and began to improve it further. ++ ++2. Why would you want it? ++ ++ Why wouldn't you want it? ++ ++ Being able to save the state of your system and quickly restore it improves ++ your productivity - you get a useful system in far less time than through ++ the normal boot process. You also get to be completely 'green', using zero ++ power, or as close to that as possible (the computer may still provide ++ minimal power to some devices, so they can initiate a power on, but that ++ will be the same amount of power as would be used if you told the computer ++ to shutdown. ++ ++3. What do you need to use it? ++ ++ a. Kernel Support. ++ ++ i) The TuxOnIce patch. ++ ++ TuxOnIce is part of the Linux Kernel. This version is not part of Linus's ++ 2.6 tree at the moment, so you will need to download the kernel source and ++ apply the latest patch. Having done that, enable the appropriate options in ++ make [menu|x]config (under Power Management Options - look for "Enhanced ++ Hibernation"), compile and install your kernel. TuxOnIce works with SMP, ++ Highmem, preemption, fuse filesystems, x86-32, PPC and x86_64. ++ ++ TuxOnIce patches are available from http://tuxonice.net. ++ ++ ii) Compression support. ++ ++ Compression support is implemented via the cryptoapi. You will therefore want ++ to select any Cryptoapi transforms that you want to use on your image from ++ the Cryptoapi menu while configuring your kernel. We recommend the use of the ++ LZO compression method - it is very fast and still achieves good compression. ++ ++ You can also tell TuxOnIce to write its image to an encrypted and/or ++ compressed filesystem/swap partition. In that case, you don't need to do ++ anything special for TuxOnIce when it comes to kernel configuration. ++ ++ iii) Configuring other options. ++ ++ While you're configuring your kernel, try to configure as much as possible ++ to build as modules. We recommend this because there are a number of drivers ++ that are still in the process of implementing proper power management ++ support. In those cases, the best way to work around their current lack is ++ to build them as modules and remove the modules while hibernating. You might ++ also bug the driver authors to get their support up to speed, or even help! ++ ++ b. Storage. ++ ++ i) Swap. ++ ++ TuxOnIce can store the hibernation image in your swap partition, a swap file or ++ a combination thereof. Whichever combination you choose, you will probably ++ want to create enough swap space to store the largest image you could have, ++ plus the space you'd normally use for swap. A good rule of thumb would be ++ to calculate the amount of swap you'd want without using TuxOnIce, and then ++ add the amount of memory you have. This swapspace can be arranged in any way ++ you'd like. It can be in one partition or file, or spread over a number. The ++ only requirement is that they be active when you start a hibernation cycle. ++ ++ There is one exception to this requirement. TuxOnIce has the ability to turn ++ on one swap file or partition at the start of hibernating and turn it back off ++ at the end. If you want to ensure you have enough memory to store a image ++ when your memory is fully used, you might want to make one swap partition or ++ file for 'normal' use, and another for TuxOnIce to activate & deactivate ++ automatically. (Further details below). ++ ++ ii) Normal files. ++ ++ TuxOnIce includes a 'file allocator'. The file allocator can store your ++ image in a simple file. Since Linux has the concept of everything being a ++ file, this is more powerful than it initially sounds. If, for example, you ++ were to set up a network block device file, you could hibernate to a network ++ server. This has been tested and works to a point, but nbd itself isn't ++ stateless enough for our purposes. ++ ++ Take extra care when setting up the file allocator. If you just type ++ commands without thinking and then try to hibernate, you could cause ++ irreversible corruption on your filesystems! Make sure you have backups. ++ ++ Most people will only want to hibernate to a local file. To achieve that, do ++ something along the lines of: ++ ++ echo "TuxOnIce" > /hibernation-file ++ dd if=/dev/zero bs=1M count=512 >> /hibernation-file ++ ++ This will create a 512MB file called /hibernation-file. To get TuxOnIce to use ++ it: ++ ++ echo /hibernation-file > /sys/power/tuxonice/file/target ++ ++ Then ++ ++ cat /sys/power/tuxonice/resume ++ ++ Put the results of this into your bootloader's configuration (see also step ++ C, below): ++ ++ ---EXAMPLE-ONLY-DON'T-COPY-AND-PASTE--- ++ # cat /sys/power/tuxonice/resume ++ file:/dev/hda2:0x1e001 ++ ++ In this example, we would edit the append= line of our lilo.conf|menu.lst ++ so that it included: ++ ++ resume=file:/dev/hda2:0x1e001 ++ ---EXAMPLE-ONLY-DON'T-COPY-AND-PASTE--- ++ ++ For those who are thinking 'Could I make the file sparse?', the answer is ++ 'No!'. At the moment, there is no way for TuxOnIce to fill in the holes in ++ a sparse file while hibernating. In the longer term (post merge!), I'd like ++ to change things so that the file could be dynamically resized and have ++ holes filled as needed. Right now, however, that's not possible and not a ++ priority. ++ ++ c. Bootloader configuration. ++ ++ Using TuxOnIce also requires that you add an extra parameter to ++ your lilo.conf or equivalent. Here's an example for a swap partition: ++ ++ append="resume=swap:/dev/hda1" ++ ++ This would tell TuxOnIce that /dev/hda1 is a swap partition you ++ have. TuxOnIce will use the swap signature of this partition as a ++ pointer to your data when you hibernate. This means that (in this example) ++ /dev/hda1 doesn't need to be _the_ swap partition where all of your data ++ is actually stored. It just needs to be a swap partition that has a ++ valid signature. ++ ++ You don't need to have a swap partition for this purpose. TuxOnIce ++ can also use a swap file, but usage is a little more complex. Having made ++ your swap file, turn it on and do ++ ++ cat /sys/power/tuxonice/swap/headerlocations ++ ++ (this assumes you've already compiled your kernel with TuxOnIce ++ support and booted it). The results of the cat command will tell you ++ what you need to put in lilo.conf: ++ ++ For swap partitions like /dev/hda1, simply use resume=/dev/hda1. ++ For swapfile `swapfile`, use resume=swap:/dev/hda2:0x242d. ++ ++ If the swapfile changes for any reason (it is moved to a different ++ location, it is deleted and recreated, or the filesystem is ++ defragmented) then you will have to check ++ /sys/power/tuxonice/swap/headerlocations for a new resume_block value. ++ ++ Once you've compiled and installed the kernel and adjusted your bootloader ++ configuration, you should only need to reboot for the most basic part ++ of TuxOnIce to be ready. ++ ++ If you only compile in the swap allocator, or only compile in the file ++ allocator, you don't need to add the "swap:" part of the resume= ++ parameters above. resume=/dev/hda2:0x242d will work just as well. If you ++ have compiled both and your storage is on swap, you can also use this ++ format (the swap allocator is the default allocator). ++ ++ When compiling your kernel, one of the options in the 'Power Management ++ Support' menu, just above the 'Enhanced Hibernation (TuxOnIce)' entry is ++ called 'Default resume partition'. This can be used to set a default value ++ for the resume= parameter. ++ ++ d. The hibernate script. ++ ++ Since the driver model in 2.6 kernels is still being developed, you may need ++ to do more than just configure TuxOnIce. Users of TuxOnIce usually start the ++ process via a script which prepares for the hibernation cycle, tells the ++ kernel to do its stuff and then restore things afterwards. This script might ++ involve: ++ ++ - Switching to a text console and back if X doesn't like the video card ++ status on resume. ++ - Un/reloading drivers that don't play well with hibernation. ++ ++ Note that you might not be able to unload some drivers if there are ++ processes using them. You might have to kill off processes that hold ++ devices open. Hint: if your X server accesses an USB mouse, doing a ++ 'chvt' to a text console releases the device and you can unload the ++ module. ++ ++ Check out the latest script (available on tuxonice.net). ++ ++ e. The userspace user interface. ++ ++ TuxOnIce has very limited support for displaying status if you only apply ++ the kernel patch - it can printk messages, but that is all. In addition, ++ some of the functions mentioned in this document (such as cancelling a cycle ++ or performing interactive debugging) are unavailable. To utilise these ++ functions, or simply get a nice display, you need the 'userui' component. ++ Userui comes in three flavours, usplash, fbsplash and text. Text should ++ work on any console. Usplash and fbsplash require the appropriate ++ (distro specific?) support. ++ ++ To utilise a userui, TuxOnIce just needs to be told where to find the ++ userspace binary: ++ ++ echo "/usr/local/sbin/tuxoniceui_fbsplash" > /sys/power/tuxonice/user_interface/program ++ ++ The hibernate script can do this for you, and a default value for this ++ setting can be configured when compiling the kernel. This path is also ++ stored in the image header, so if you have an initrd or initramfs, you can ++ use the userui during the first part of resuming (prior to the atomic ++ restore) by putting the binary in the same path in your initrd/ramfs. ++ Alternatively, you can put it in a different location and do an echo ++ similar to the above prior to the echo > do_resume. The value saved in the ++ image header will then be ignored. ++ ++4. Why not just use the version already in the kernel? ++ ++ The version in the vanilla kernel has a number of drawbacks. The most ++ serious of these are: ++ - it has a maximum image size of 1/2 total memory; ++ - it doesn't allocate storage until after it has snapshotted memory. ++ This means that you can't be sure hibernating will work until you ++ see it start to write the image; ++ - it does not allow you to press escape to cancel a cycle; ++ - it does not allow you to press escape to cancel resuming; ++ - it does not allow you to automatically swapon a file when ++ starting a cycle; ++ - it does not allow you to use multiple swap partitions or files; ++ - it does not allow you to use ordinary files; ++ - it just invalidates an image and continues to boot if you ++ accidentally boot the wrong kernel after hibernating; ++ - it doesn't support any sort of nice display while hibernating; ++ - it is moving toward requiring that you have an initrd/initramfs ++ to ever have a hope of resuming (uswsusp). While uswsusp will ++ address some of the concerns above, it won't address all of them, ++ and will be more complicated to get set up; ++ - it doesn't have support for suspend-to-both (write a hibernation ++ image, then suspend to ram; I think this is known as ReadySafe ++ under M$). ++ ++5. How do you use it? ++ ++ A hibernation cycle can be started directly by doing: ++ ++ echo > /sys/power/tuxonice/do_hibernate ++ ++ In practice, though, you'll probably want to use the hibernate script ++ to unload modules, configure the kernel the way you like it and so on. ++ In that case, you'd do (as root): ++ ++ hibernate ++ ++ See the hibernate script's man page for more details on the options it ++ takes. ++ ++ If you're using the text or splash user interface modules, one feature of ++ TuxOnIce that you might find useful is that you can press Escape at any time ++ during hibernating, and the process will be aborted. ++ ++ Due to the way hibernation works, this means you'll have your system back and ++ perfectly usable almost instantly. The only exception is when it's at the ++ very end of writing the image. Then it will need to reload a small (usually ++ 4-50MBs, depending upon the image characteristics) portion first. ++ ++ Likewise, when resuming, you can press escape and resuming will be aborted. ++ The computer will then powerdown again according to settings at that time for ++ the powerdown method or rebooting. ++ ++ You can change the settings for powering down while the image is being ++ written by pressing 'R' to toggle rebooting and 'O' to toggle between ++ suspending to ram and powering down completely). ++ ++ If you run into problems with resuming, adding the "noresume" option to ++ the kernel command line will let you skip the resume step and recover your ++ system. This option shouldn't normally be needed, because TuxOnIce modifies ++ the image header prior to the atomic restore, and will thus prompt you ++ if it detects that you've tried to resume an image before (this flag is ++ removed if you press Escape to cancel a resume, so you won't be prompted ++ then). ++ ++ Recent kernels (2.6.24 onwards) add support for resuming from a different ++ kernel to the one that was hibernated (thanks to Rafael for his work on ++ this - I've just embraced and enhanced the support for TuxOnIce). This ++ should further reduce the need for you to use the noresume option. ++ ++6. What do all those entries in /sys/power/tuxonice do? ++ ++ /sys/power/tuxonice is the directory which contains files you can use to ++ tune and configure TuxOnIce to your liking. The exact contents of ++ the directory will depend upon the version of TuxOnIce you're ++ running and the options you selected at compile time. In the following ++ descriptions, names in brackets refer to compile time options. ++ (Note that they're all dependant upon you having selected CONFIG_TUXONICE ++ in the first place!). ++ ++ Since the values of these settings can open potential security risks, the ++ writeable ones are accessible only to the root user. You may want to ++ configure sudo to allow you to invoke your hibernate script as an ordinary ++ user. ++ ++ - alloc/failure_test ++ ++ This debugging option provides a way of testing TuxOnIce's handling of ++ memory allocation failures. Each allocation type that TuxOnIce makes has ++ been given a unique number (see the source code). Echo the appropriate ++ number into this entry, and when TuxOnIce attempts to do that allocation, ++ it will pretend there was a failure and act accordingly. ++ ++ - alloc/find_max_mem_allocated ++ ++ This debugging option will cause TuxOnIce to find the maximum amount of ++ memory it used during a cycle, and report that information in debugging ++ information at the end of the cycle. ++ ++ - alt_resume_param ++ ++ Instead of powering down after writing a hibernation image, TuxOnIce ++ supports resuming from a different image. This entry lets you set the ++ location of the signature for that image (the resume= value you'd use ++ for it). Using an alternate image and keep_image mode, you can do things ++ like using an alternate image to power down an uninterruptible power ++ supply. ++ ++ - block_io/target_outstanding_io ++ ++ This value controls the amount of memory that the block I/O code says it ++ needs when the core code is calculating how much memory is needed for ++ hibernating and for resuming. It doesn't directly control the amount of ++ I/O that is submitted at any one time - that depends on the amount of ++ available memory (we may have more available than we asked for), the ++ throughput that is being achieved and the ability of the CPU to keep up ++ with disk throughput (particularly where we're compressing pages). ++ ++ - checksum/enabled ++ ++ Use cryptoapi hashing routines to verify that Pageset2 pages don't change ++ while we're saving the first part of the image, and to get any pages that ++ do change resaved in the atomic copy. This should normally not be needed, ++ but if you're seeing issues, please enable this. If your issues stop you ++ being able to resume, enable this option, hibernate and cancel the cycle ++ after the atomic copy is done. If the debugging info shows a non-zero ++ number of pages resaved, please report this to Nigel. ++ ++ - compression/algorithm ++ ++ Set the cryptoapi algorithm used for compressing the image. ++ ++ - compression/expected_compression ++ ++ These values allow you to set an expected compression ratio, which TuxOnice ++ will use in calculating whether it meets constraints on the image size. If ++ this expected compression ratio is not attained, the hibernation cycle will ++ abort, so it is wise to allow some spare. You can see what compression ++ ratio is achieved in the logs after hibernating. ++ ++ - debug_info: ++ ++ This file returns information about your configuration that may be helpful ++ in diagnosing problems with hibernating. ++ ++ - did_suspend_to_both: ++ ++ This file can be used when you hibernate with powerdown method 3 (ie suspend ++ to ram after writing the image). There can be two outcomes in this case. We ++ can resume from the suspend-to-ram before the battery runs out, or we can run ++ out of juice and and up resuming like normal. This entry lets you find out, ++ post resume, which way we went. If the value is 1, we resumed from suspend ++ to ram. This can be useful when actions need to be run post suspend-to-ram ++ that don't need to be run if we did the normal resume from power off. ++ ++ - do_hibernate: ++ ++ When anything is written to this file, the kernel side of TuxOnIce will ++ begin to attempt to write an image to disk and power down. You'll normally ++ want to run the hibernate script instead, to get modules unloaded first. ++ ++ - do_resume: ++ ++ When anything is written to this file TuxOnIce will attempt to read and ++ restore an image. If there is no image, it will return almost immediately. ++ If an image exists, the echo > will never return. Instead, the original ++ kernel context will be restored and the original echo > do_hibernate will ++ return. ++ ++ - */enabled ++ ++ These option can be used to temporarily disable various parts of TuxOnIce. ++ ++ - extra_pages_allowance ++ ++ When TuxOnIce does its atomic copy, it calls the driver model suspend ++ and resume methods. If you have DRI enabled with a driver such as fglrx, ++ this can result in the driver allocating a substantial amount of memory ++ for storing its state. Extra_pages_allowance tells TuxOnIce how much ++ extra memory it should ensure is available for those allocations. If ++ your attempts at hibernating end with a message in dmesg indicating that ++ insufficient extra pages were allowed, you need to increase this value. ++ ++ - file/target: ++ ++ Read this value to get the current setting. Write to it to point TuxOnice ++ at a new storage location for the file allocator. See section 3.b.ii above ++ for details of how to set up the file allocator. ++ ++ - freezer_test ++ ++ This entry can be used to get TuxOnIce to just test the freezer and prepare ++ an image without actually doing a hibernation cycle. It is useful for ++ diagnosing freezing and image preparation issues. ++ ++ - full_pageset2 ++ ++ TuxOnIce divides the pages that are stored in an image into two sets. The ++ difference between the two sets is that pages in pageset 1 are atomically ++ copied, and pages in pageset 2 are written to disk without being copied ++ first. A page CAN be written to disk without being copied first if and only ++ if its contents will not be modified or used at any time after userspace ++ processes are frozen. A page MUST be in pageset 1 if its contents are ++ modified or used at any time after userspace processes have been frozen. ++ ++ Normally (ie if this option is enabled), TuxOnIce will put all pages on the ++ per-zone LRUs in pageset2, then remove those pages used by any userspace ++ user interface helper and TuxOnIce storage manager that are running, ++ together with pages used by the GEM memory manager introduced around 2.6.28 ++ kernels. ++ ++ If this option is disabled, a much more conservative approach will be taken. ++ The only pages in pageset2 will be those belonging to userspace processes, ++ with the exclusion of those belonging to the TuxOnIce userspace helpers ++ mentioned above. This will result in a much smaller pageset2, and will ++ therefore result in smaller images than are possible with this option ++ enabled. ++ ++ - ignore_rootfs ++ ++ TuxOnIce records which device is mounted as the root filesystem when ++ writing the hibernation image. It will normally check at resume time that ++ this device isn't already mounted - that would be a cause of filesystem ++ corruption. In some particular cases (RAM based root filesystems), you ++ might want to disable this check. This option allows you to do that. ++ ++ - image_exists: ++ ++ Can be used in a script to determine whether a valid image exists at the ++ location currently pointed to by resume=. Returns up to three lines. ++ The first is whether an image exists (-1 for unsure, otherwise 0 or 1). ++ If an image eixsts, additional lines will return the machine and version. ++ Echoing anything to this entry removes any current image. ++ ++ - image_size_limit: ++ ++ The maximum size of hibernation image written to disk, measured in megabytes ++ (1024*1024). ++ ++ - last_result: ++ ++ The result of the last hibernation cycle, as defined in ++ include/linux/suspend-debug.h with the values SUSPEND_ABORTED to ++ SUSPEND_KEPT_IMAGE. This is a bitmask. ++ ++ - late_cpu_hotplug: ++ ++ This sysfs entry controls whether cpu hotplugging is done - as normal - just ++ before (unplug) and after (replug) the atomic copy/restore (so that all ++ CPUs/cores are available for multithreaded I/O). The alternative is to ++ unplug all secondary CPUs/cores at the start of hibernating/resuming, and ++ replug them at the end of resuming. No multithreaded I/O will be possible in ++ this configuration, but the odd machine has been reported to require it. ++ ++ - lid_file: ++ ++ This determines which ACPI button file we look in to determine whether the ++ lid is open or closed after resuming from suspend to disk or power off. ++ If the entry is set to "lid/LID", we'll open /proc/acpi/button/lid/LID/state ++ and check its contents at the appropriate moment. See post_wake_state below ++ for more details on how this entry is used. ++ ++ - log_everything (CONFIG_PM_DEBUG): ++ ++ Setting this option results in all messages printed being logged. Normally, ++ only a subset are logged, so as to not slow the process and not clutter the ++ logs. Useful for debugging. It can be toggled during a cycle by pressing ++ 'L'. ++ ++ - no_load_direct: ++ ++ This is a debugging option. If, when loading the atomically copied pages of ++ an image, TuxOnIce finds that the destination address for a page is free, ++ it will normally allocate the image, load the data directly into that ++ address and skip it in the atomic restore. If this option is disabled, the ++ page will be loaded somewhere else and atomically restored like other pages. ++ ++ - no_flusher_thread: ++ ++ When doing multithreaded I/O (see below), the first online CPU can be used ++ to _just_ submit compressed pages when writing the image, rather than ++ compressing and submitting data. This option is normally disabled, but has ++ been included because Nigel would like to see whether it will be more useful ++ as the number of cores/cpus in computers increases. ++ ++ - no_multithreaded_io: ++ ++ TuxOnIce will normally create one thread per cpu/core on your computer, ++ each of which will then perform I/O. This will generally result in ++ throughput that's the maximum the storage medium can handle. There ++ shouldn't be any reason to disable multithreaded I/O now, but this option ++ has been retained for debugging purposes. ++ ++ - no_pageset2 ++ ++ See the entry for full_pageset2 above for an explanation of pagesets. ++ Enabling this option causes TuxOnIce to do an atomic copy of all pages, ++ thereby limiting the maximum image size to 1/2 of memory, as swsusp does. ++ ++ - no_pageset2_if_unneeded ++ ++ See the entry for full_pageset2 above for an explanation of pagesets. ++ Enabling this option causes TuxOnIce to act like no_pageset2 was enabled ++ if and only it isn't needed anyway. This option may still make TuxOnIce ++ less reliable because pageset2 pages are normally used to store the ++ atomic copy - drivers that want to do allocations of larger amounts of ++ memory in one shot will be more likely to find that those amounts aren't ++ available if this option is enabled. ++ ++ - pause_between_steps (CONFIG_PM_DEBUG): ++ ++ This option is used during debugging, to make TuxOnIce pause between ++ each step of the process. It is ignored when the nice display is on. ++ ++ - post_wake_state: ++ ++ TuxOnIce provides support for automatically waking after a user-selected ++ delay, and using a different powerdown method if the lid is still closed. ++ (Yes, we're assuming a laptop). This entry lets you choose what state ++ should be entered next. The values are those described under ++ powerdown_method, below. It can be used to suspend to RAM after hibernating, ++ then powerdown properly (say) 20 minutes. It can also be used to power down ++ properly, then wake at (say) 6.30am and suspend to RAM until you're ready ++ to use the machine. ++ ++ - powerdown_method: ++ ++ Used to select a method by which TuxOnIce should powerdown after writing the ++ image. Currently: ++ ++ 0: Don't use ACPI to power off. ++ 3: Attempt to enter Suspend-to-ram. ++ 4: Attempt to enter ACPI S4 mode. ++ 5: Attempt to power down via ACPI S5 mode. ++ ++ Note that these options are highly dependant upon your hardware & software: ++ ++ 3: When succesful, your machine suspends to ram instead of powering off. ++ The advantage of using this mode is that it doesn't matter whether your ++ battery has enough charge to make it through to your next resume. If it ++ lasts, you will simply resume from suspend to ram (and the image on disk ++ will be discarded). If the battery runs out, you will resume from disk ++ instead. The disadvantage is that it takes longer than a normal ++ suspend-to-ram to enter the state, since the suspend-to-disk image needs ++ to be written first. ++ 4/5: When successful, your machine will be off and comsume (almost) no power. ++ But it might still react to some external events like opening the lid or ++ trafic on a network or usb device. For the bios, resume is then the same ++ as warm boot, similar to a situation where you used the command `reboot' ++ to reboot your machine. If your machine has problems on warm boot or if ++ you want to protect your machine with the bios password, this is probably ++ not the right choice. Mode 4 may be necessary on some machines where ACPI ++ wake up methods need to be run to properly reinitialise hardware after a ++ hibernation cycle. ++ 0: Switch the machine completely off. The only possible wakeup is the power ++ button. For the bios, resume is then the same as a cold boot, in ++ particular you would have to provide your bios boot password if your ++ machine uses that feature for booting. ++ ++ - progressbar_granularity_limit: ++ ++ This option can be used to limit the granularity of the progress bar ++ displayed with a bootsplash screen. The value is the maximum number of ++ steps. That is, 10 will make the progress bar jump in 10% increments. ++ ++ - reboot: ++ ++ This option causes TuxOnIce to reboot rather than powering down ++ at the end of saving an image. It can be toggled during a cycle by pressing ++ 'R'. ++ ++ - resume: ++ ++ This sysfs entry can be used to read and set the location in which TuxOnIce ++ will look for the signature of an image - the value set using resume= at ++ boot time or CONFIG_PM_STD_PARTITION ("Default resume partition"). By ++ writing to this file as well as modifying your bootloader's configuration ++ file (eg menu.lst), you can set or reset the location of your image or the ++ method of storing the image without rebooting. ++ ++ - replace_swsusp (CONFIG_TOI_REPLACE_SWSUSP): ++ ++ This option makes ++ ++ echo disk > /sys/power/state ++ ++ activate TuxOnIce instead of swsusp. Regardless of whether this option is ++ enabled, any invocation of swsusp's resume time trigger will cause TuxOnIce ++ to check for an image too. This is due to the fact that at resume time, we ++ can't know whether this option was enabled until we see if an image is there ++ for us to resume from. (And when an image exists, we don't care whether we ++ did replace swsusp anyway - we just want to resume). ++ ++ - resume_commandline: ++ ++ This entry can be read after resuming to see the commandline that was used ++ when resuming began. You might use this to set up two bootloader entries ++ that are the same apart from the fact that one includes a extra append= ++ argument "at_work=1". You could then grep resume_commandline in your ++ post-resume scripts and configure networking (for example) differently ++ depending upon whether you're at home or work. resume_commandline can be ++ set to arbitrary text if you wish to remove sensitive contents. ++ ++ - swap/swapfilename: ++ ++ This entry is used to specify the swapfile or partition that ++ TuxOnIce will attempt to swapon/swapoff automatically. Thus, if ++ I normally use /dev/hda1 for swap, and want to use /dev/hda2 for specifically ++ for my hibernation image, I would ++ ++ echo /dev/hda2 > /sys/power/tuxonice/swap/swapfile ++ ++ /dev/hda2 would then be automatically swapon'd and swapoff'd. Note that the ++ swapon and swapoff occur while other processes are frozen (including kswapd) ++ so this swap file will not be used up when attempting to free memory. The ++ parition/file is also given the highest priority, so other swapfiles/partitions ++ will only be used to save the image when this one is filled. ++ ++ The value of this file is used by headerlocations along with any currently ++ activated swapfiles/partitions. ++ ++ - swap/headerlocations: ++ ++ This option tells you the resume= options to use for swap devices you ++ currently have activated. It is particularly useful when you only want to ++ use a swap file to store your image. See above for further details. ++ ++ - test_bio ++ ++ This is a debugging option. When enabled, TuxOnIce will not hibernate. ++ Instead, when asked to write an image, it will skip the atomic copy, ++ just doing the writing of the image and then returning control to the ++ user at the point where it would have powered off. This is useful for ++ testing throughput in different configurations. ++ ++ - test_filter_speed ++ ++ This is a debugging option. When enabled, TuxOnIce will not hibernate. ++ Instead, when asked to write an image, it will not write anything or do ++ an atomic copy, but will only run any enabled compression algorithm on the ++ data that would have been written (the source pages of the atomic copy in ++ the case of pageset 1). This is useful for comparing the performance of ++ compression algorithms and for determining the extent to which an upgrade ++ to your storage method would improve hibernation speed. ++ ++ - user_interface/debug_sections (CONFIG_PM_DEBUG): ++ ++ This value, together with the console log level, controls what debugging ++ information is displayed. The console log level determines the level of ++ detail, and this value determines what detail is displayed. This value is ++ a bit vector, and the meaning of the bits can be found in the kernel tree ++ in include/linux/tuxonice.h. It can be overridden using the kernel's ++ command line option suspend_dbg. ++ ++ - user_interface/default_console_level (CONFIG_PM_DEBUG): ++ ++ This determines the value of the console log level at the start of a ++ hibernation cycle. If debugging is compiled in, the console log level can be ++ changed during a cycle by pressing the digit keys. Meanings are: ++ ++ 0: Nice display. ++ 1: Nice display plus numerical progress. ++ 2: Errors only. ++ 3: Low level debugging info. ++ 4: Medium level debugging info. ++ 5: High level debugging info. ++ 6: Verbose debugging info. ++ ++ - user_interface/enable_escape: ++ ++ Setting this to "1" will enable you abort a hibernation cycle or resuming by ++ pressing escape, "0" (default) disables this feature. Note that enabling ++ this option means that you cannot initiate a hibernation cycle and then walk ++ away from your computer, expecting it to be secure. With feature disabled, ++ you can validly have this expectation once TuxOnice begins to write the ++ image to disk. (Prior to this point, it is possible that TuxOnice might ++ about because of failure to freeze all processes or because constraints ++ on its ability to save the image are not met). ++ ++ - user_interface/program ++ ++ This entry is used to tell TuxOnice what userspace program to use for ++ providing a user interface while hibernating. The program uses a netlink ++ socket to pass messages back and forward to the kernel, allowing all of the ++ functions formerly implemented in the kernel user interface components. ++ ++ - version: ++ ++ The version of TuxOnIce you have compiled into the currently running kernel. ++ ++ - wake_alarm_dir: ++ ++ As mentioned above (post_wake_state), TuxOnIce supports automatically waking ++ after some delay. This entry allows you to select which wake alarm to use. ++ It should contain the value "rtc0" if you're wanting to use ++ /sys/class/rtc/rtc0. ++ ++ - wake_delay: ++ ++ This value determines the delay from the end of writing the image until the ++ wake alarm is triggered. You can set an absolute time by writing the desired ++ time into /sys/class/rtc//wakealarm and leaving these values ++ empty. ++ ++ Note that for the wakeup to actually occur, you may need to modify entries ++ in /proc/acpi/wakeup. This is done by echoing the name of the button in the ++ first column (eg PBTN) into the file. ++ ++7. How do you get support? ++ ++ Glad you asked. TuxOnIce is being actively maintained and supported ++ by Nigel (the guy doing most of the kernel coding at the moment), Bernard ++ (who maintains the hibernate script and userspace user interface components) ++ and its users. ++ ++ Resources availble include HowTos, FAQs and a Wiki, all available via ++ tuxonice.net. You can find the mailing lists there. ++ ++8. I think I've found a bug. What should I do? ++ ++ By far and a way, the most common problems people have with TuxOnIce ++ related to drivers not having adequate power management support. In this ++ case, it is not a bug with TuxOnIce, but we can still help you. As we ++ mentioned above, such issues can usually be worked around by building the ++ functionality as modules and unloading them while hibernating. Please visit ++ the Wiki for up-to-date lists of known issues and work arounds. ++ ++ If this information doesn't help, try running: ++ ++ hibernate --bug-report ++ ++ ..and sending the output to the users mailing list. ++ ++ Good information on how to provide us with useful information from an ++ oops is found in the file REPORTING-BUGS, in the top level directory ++ of the kernel tree. If you get an oops, please especially note the ++ information about running what is printed on the screen through ksymoops. ++ The raw information is useless. ++ ++9. When will XXX be supported? ++ ++ If there's a feature missing from TuxOnIce that you'd like, feel free to ++ ask. We try to be obliging, within reason. ++ ++ Patches are welcome. Please send to the list. ++ ++10. How does it work? ++ ++ TuxOnIce does its work in a number of steps. ++ ++ a. Freezing system activity. ++ ++ The first main stage in hibernating is to stop all other activity. This is ++ achieved in stages. Processes are considered in fours groups, which we will ++ describe in reverse order for clarity's sake: Threads with the PF_NOFREEZE ++ flag, kernel threads without this flag, userspace processes with the ++ PF_SYNCTHREAD flag and all other processes. The first set (PF_NOFREEZE) are ++ untouched by the refrigerator code. They are allowed to run during hibernating ++ and resuming, and are used to support user interaction, storage access or the ++ like. Other kernel threads (those unneeded while hibernating) are frozen last. ++ This leaves us with userspace processes that need to be frozen. When a ++ process enters one of the *_sync system calls, we set a PF_SYNCTHREAD flag on ++ that process for the duration of that call. Processes that have this flag are ++ frozen after processes without it, so that we can seek to ensure that dirty ++ data is synced to disk as quickly as possible in a situation where other ++ processes may be submitting writes at the same time. Freezing the processes ++ that are submitting data stops new I/O from being submitted. Syncthreads can ++ then cleanly finish their work. So the order is: ++ ++ - Userspace processes without PF_SYNCTHREAD or PF_NOFREEZE; ++ - Userspace processes with PF_SYNCTHREAD (they won't have NOFREEZE); ++ - Kernel processes without PF_NOFREEZE. ++ ++ b. Eating memory. ++ ++ For a successful hibernation cycle, you need to have enough disk space to store the ++ image and enough memory for the various limitations of TuxOnIce's ++ algorithm. You can also specify a maximum image size. In order to attain ++ to those constraints, TuxOnIce may 'eat' memory. If, after freezing ++ processes, the constraints aren't met, TuxOnIce will thaw all the ++ other processes and begin to eat memory until its calculations indicate ++ the constraints are met. It will then freeze processes again and recheck ++ its calculations. ++ ++ c. Allocation of storage. ++ ++ Next, TuxOnIce allocates the storage that will be used to save ++ the image. ++ ++ The core of TuxOnIce knows nothing about how or where pages are stored. We ++ therefore request the active allocator (remember you might have compiled in ++ more than one!) to allocate enough storage for our expect image size. If ++ this request cannot be fulfilled, we eat more memory and try again. If it ++ is fulfiled, we seek to allocate additional storage, just in case our ++ expected compression ratio (if any) isn't achieved. This time, however, we ++ just continue if we can't allocate enough storage. ++ ++ If these calls to our allocator change the characteristics of the image ++ such that we haven't allocated enough memory, we also loop. (The allocator ++ may well need to allocate space for its storage information). ++ ++ d. Write the first part of the image. ++ ++ TuxOnIce stores the image in two sets of pages called 'pagesets'. ++ Pageset 2 contains pages on the active and inactive lists; essentially ++ the page cache. Pageset 1 contains all other pages, including the kernel. ++ We use two pagesets for one important reason: We need to make an atomic copy ++ of the kernel to ensure consistency of the image. Without a second pageset, ++ that would limit us to an image that was at most half the amount of memory ++ available. Using two pagesets allows us to store a full image. Since pageset ++ 2 pages won't be needed in saving pageset 1, we first save pageset 2 pages. ++ We can then make our atomic copy of the remaining pages using both pageset 2 ++ pages and any other pages that are free. While saving both pagesets, we are ++ careful not to corrupt the image. Among other things, we use lowlevel block ++ I/O routines that don't change the pagecache contents. ++ ++ The next step, then, is writing pageset 2. ++ ++ e. Suspending drivers and storing processor context. ++ ++ Having written pageset2, TuxOnIce calls the power management functions to ++ notify drivers of the hibernation, and saves the processor state in preparation ++ for the atomic copy of memory we are about to make. ++ ++ f. Atomic copy. ++ ++ At this stage, everything else but the TuxOnIce code is halted. Processes ++ are frozen or idling, drivers are quiesced and have stored (ideally and where ++ necessary) their configuration in memory we are about to atomically copy. ++ In our lowlevel architecture specific code, we have saved the CPU state. ++ We can therefore now do our atomic copy before resuming drivers etc. ++ ++ g. Save the atomic copy (pageset 1). ++ ++ TuxOnice can then write the atomic copy of the remaining pages. Since we ++ have copied the pages into other locations, we can continue to use the ++ normal block I/O routines without fear of corruption our image. ++ ++ f. Save the image header. ++ ++ Nearly there! We save our settings and other parameters needed for ++ reloading pageset 1 in an 'image header'. We also tell our allocator to ++ serialise its data at this stage, so that it can reread the image at resume ++ time. ++ ++ g. Set the image header. ++ ++ Finally, we edit the header at our resume= location. The signature is ++ changed by the allocator to reflect the fact that an image exists, and to ++ point to the start of that data if necessary (swap allocator). ++ ++ h. Power down. ++ ++ Or reboot if we're debugging and the appropriate option is selected. ++ ++ Whew! ++ ++ Reloading the image. ++ -------------------- ++ ++ Reloading the image is essentially the reverse of all the above. We load ++ our copy of pageset 1, being careful to choose locations that aren't going ++ to be overwritten as we copy it back (We start very early in the boot ++ process, so there are no other processes to quiesce here). We then copy ++ pageset 1 back to its original location in memory and restore the process ++ context. We are now running with the original kernel. Next, we reload the ++ pageset 2 pages, free the memory and swap used by TuxOnIce, restore ++ the pageset header and restart processes. Sounds easy in comparison to ++ hibernating, doesn't it! ++ ++ There is of course more to TuxOnIce than this, but this explanation ++ should be a good start. If there's interest, I'll write further ++ documentation on range pages and the low level I/O. ++ ++11. Who wrote TuxOnIce? ++ ++ (Answer based on the writings of Florent Chabaud, credits in files and ++ Nigel's limited knowledge; apologies to anyone missed out!) ++ ++ The main developers of TuxOnIce have been... ++ ++ Gabor Kuti ++ Pavel Machek ++ Florent Chabaud ++ Bernard Blackham ++ Nigel Cunningham ++ ++ Significant portions of swsusp, the code in the vanilla kernel which ++ TuxOnIce enhances, have been worked on by Rafael Wysocki. Thanks should ++ also be expressed to him. ++ ++ The above mentioned developers have been aided in their efforts by a host ++ of hundreds, if not thousands of testers and people who have submitted bug ++ fixes & suggestions. Of special note are the efforts of Michael Frank, who ++ had his computers repetitively hibernate and resume for literally tens of ++ thousands of cycles and developed scripts to stress the system and test ++ TuxOnIce far beyond the point most of us (Nigel included!) would consider ++ testing. His efforts have contributed as much to TuxOnIce as any of the ++ names above. +diff --git a/MAINTAINERS b/MAINTAINERS +index 2533fc4..e14223f 100644 +--- a/MAINTAINERS ++++ b/MAINTAINERS +@@ -5380,6 +5380,13 @@ S: Maintained + F: drivers/tc/ + F: include/linux/tc.h + ++TUXONICE (ENHANCED HIBERNATION) ++P: Nigel Cunningham ++M: nigel@tuxonice.net ++L: tuxonice-devel@tuxonice.net ++W: http://tuxonice.net ++S: Maintained ++ + U14-34F SCSI DRIVER + M: Dario Ballabio + L: linux-scsi@vger.kernel.org +diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c +index 573b3bd..073736f 100644 +--- a/arch/powerpc/mm/pgtable_32.c ++++ b/arch/powerpc/mm/pgtable_32.c +@@ -422,6 +422,7 @@ void kernel_map_pages(struct page *page, int numpages, int enable) + + change_page_attr(page, numpages, enable ? PAGE_KERNEL : __pgprot(0)); + } ++EXPORT_SYMBOL_GPL(kernel_map_pages); + #endif /* CONFIG_DEBUG_PAGEALLOC */ + + static int fixmaps; +diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c +index 704bddc..acdf978 100644 +--- a/arch/x86/kernel/reboot.c ++++ b/arch/x86/kernel/reboot.c +@@ -710,6 +710,7 @@ void machine_restart(char *cmd) + { + machine_ops.restart(cmd); + } ++EXPORT_SYMBOL_GPL(machine_restart); + + void machine_halt(void) + { +diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c +index 1d4eb93..035b423 100644 +--- a/arch/x86/mm/pageattr.c ++++ b/arch/x86/mm/pageattr.c +@@ -1296,6 +1296,7 @@ void kernel_map_pages(struct page *page, int numpages, int enable) + */ + __flush_tlb_all(); + } ++EXPORT_SYMBOL_GPL(kernel_map_pages); + + #ifdef CONFIG_HIBERNATION + +@@ -1310,7 +1311,7 @@ bool kernel_page_present(struct page *page) + pte = lookup_address((unsigned long)page_address(page), &level); + return (pte_val(*pte) & _PAGE_PRESENT); + } +- ++EXPORT_SYMBOL_GPL(kernel_page_present); + #endif /* CONFIG_HIBERNATION */ + + #endif /* CONFIG_DEBUG_PAGEALLOC */ +diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c +index 0a979f3..7cdace5 100644 +--- a/arch/x86/power/cpu.c ++++ b/arch/x86/power/cpu.c +@@ -112,9 +112,7 @@ void save_processor_state(void) + { + __save_processor_state(&saved_context); + } +-#ifdef CONFIG_X86_32 + EXPORT_SYMBOL(save_processor_state); +-#endif + + static void do_fpu_end(void) + { +diff --git a/arch/x86/power/hibernate_32.c b/arch/x86/power/hibernate_32.c +index 81197c6..ff7e534 100644 +--- a/arch/x86/power/hibernate_32.c ++++ b/arch/x86/power/hibernate_32.c +@@ -8,6 +8,7 @@ + + #include + #include ++#include + + #include + #include +@@ -163,6 +164,7 @@ int swsusp_arch_resume(void) + restore_image(); + return 0; + } ++EXPORT_SYMBOL_GPL(swsusp_arch_resume); + + /* + * pfn_is_nosave - check if given pfn is in the 'nosave' section +diff --git a/arch/x86/power/hibernate_64.c b/arch/x86/power/hibernate_64.c +index 65fdc86..e5c31f6 100644 +--- a/arch/x86/power/hibernate_64.c ++++ b/arch/x86/power/hibernate_64.c +@@ -10,6 +10,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -118,6 +119,7 @@ int swsusp_arch_resume(void) + restore_image(); + return 0; + } ++EXPORT_SYMBOL_GPL(swsusp_arch_resume); + + /* + * pfn_is_nosave - check if given pfn is in the 'nosave' section +@@ -168,3 +170,4 @@ int arch_hibernation_header_restore(void *addr) + restore_cr3 = rdr->cr3; + return (rdr->magic == RESTORE_MAGIC) ? 0 : -EINVAL; + } ++EXPORT_SYMBOL_GPL(arch_hibernation_header_restore); +diff --git a/block/Makefile b/block/Makefile +index cb2d515..f35a848 100644 +--- a/block/Makefile ++++ b/block/Makefile +@@ -5,7 +5,7 @@ + obj-$(CONFIG_BLOCK) := elevator.o blk-core.o blk-tag.o blk-sysfs.o \ + blk-barrier.o blk-settings.o blk-ioc.o blk-map.o \ + blk-exec.o blk-merge.o blk-softirq.o blk-timeout.o \ +- blk-iopoll.o ioctl.o genhd.o scsi_ioctl.o ++ blk-iopoll.o ioctl.o genhd.o scsi_ioctl.o uuid.o + + obj-$(CONFIG_BLK_DEV_BSG) += bsg.o + obj-$(CONFIG_BLK_CGROUP) += blk-cgroup.o +diff --git a/block/blk-core.c b/block/blk-core.c +index d1a9a0a..d229a5b 100644 +--- a/block/blk-core.c ++++ b/block/blk-core.c +@@ -37,6 +37,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(block_remap); + EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_remap); + EXPORT_TRACEPOINT_SYMBOL_GPL(block_bio_complete); + ++int trap_non_toi_io; ++EXPORT_SYMBOL_GPL(trap_non_toi_io); ++ + static int __make_request(struct request_queue *q, struct bio *bio); + + /* +@@ -1555,6 +1558,9 @@ void submit_bio(int rw, struct bio *bio) + + bio->bi_rw |= rw; + ++ if (unlikely(trap_non_toi_io)) ++ BUG_ON(!bio_rw_flagged(bio, BIO_RW_TUXONICE)); ++ + /* + * If it's a regular read/write or a barrier with data attached, + * go through the normal accounting stuff before submission. +diff --git a/block/genhd.c b/block/genhd.c +index d13ba76..a69521c 100644 +--- a/block/genhd.c ++++ b/block/genhd.c +@@ -18,6 +18,8 @@ + #include + #include + #include ++#include ++#include + + #include "blk.h" + +@@ -1286,3 +1288,82 @@ int invalidate_partition(struct gendisk *disk, int partno) + } + + EXPORT_SYMBOL(invalidate_partition); ++ ++dev_t blk_lookup_uuid(const char *uuid) ++{ ++ dev_t devt = MKDEV(0, 0); ++ struct class_dev_iter iter; ++ struct device *dev; ++ ++ class_dev_iter_init(&iter, &block_class, NULL, &disk_type); ++ while (!devt && (dev = class_dev_iter_next(&iter))) { ++ struct gendisk *disk = dev_to_disk(dev); ++ struct disk_part_iter piter; ++ struct hd_struct *part; ++ ++ disk_part_iter_init(&piter, disk, DISK_PITER_INCL_PART0); ++ ++ while ((part = disk_part_iter_next(&piter))) { ++ if (part_matches_uuid(part, uuid)) { ++ devt = part_devt(part); ++ break; ++ } ++ } ++ disk_part_iter_exit(&piter); ++ } ++ class_dev_iter_exit(&iter); ++ return devt; ++} ++EXPORT_SYMBOL_GPL(blk_lookup_uuid); ++ ++/* Caller uses NULL, key to start. For each match found, we return a bdev on ++ * which we have done blkdev_get, and we do the blkdev_put on block devices ++ * that are passed to us. When no more matches are found, we return NULL. ++ */ ++struct block_device *next_bdev_of_type(struct block_device *last, ++ const char *key) ++{ ++ dev_t devt = MKDEV(0, 0); ++ struct class_dev_iter iter; ++ struct device *dev; ++ struct block_device *next = NULL, *bdev; ++ int got_last = 0; ++ ++ if (!key) ++ goto out; ++ ++ class_dev_iter_init(&iter, &block_class, NULL, &disk_type); ++ while (!devt && (dev = class_dev_iter_next(&iter))) { ++ struct gendisk *disk = dev_to_disk(dev); ++ struct disk_part_iter piter; ++ struct hd_struct *part; ++ ++ disk_part_iter_init(&piter, disk, DISK_PITER_INCL_PART0); ++ ++ while ((part = disk_part_iter_next(&piter))) { ++ bdev = bdget(part_devt(part)); ++ if (last && !got_last) { ++ if (last == bdev) ++ got_last = 1; ++ continue; ++ } ++ ++ if (blkdev_get(bdev, FMODE_READ)) ++ continue; ++ ++ if (bdev_matches_key(bdev, key)) { ++ next = bdev; ++ break; ++ } ++ ++ blkdev_put(bdev, FMODE_READ); ++ } ++ disk_part_iter_exit(&piter); ++ } ++ class_dev_iter_exit(&iter); ++out: ++ if (last) ++ blkdev_put(last, FMODE_READ); ++ return next; ++} ++EXPORT_SYMBOL_GPL(next_bdev_of_type); +diff --git a/block/uuid.c b/block/uuid.c +new file mode 100644 +index 0000000..3862685 +--- /dev/null ++++ b/block/uuid.c +@@ -0,0 +1,528 @@ ++#include ++#include ++#include ++ ++static int debug_enabled; ++ ++#define PRINTK(fmt, args...) do { \ ++ if (debug_enabled) \ ++ printk(KERN_DEBUG fmt, ## args); \ ++ } while(0) ++ ++#define PRINT_HEX_DUMP(v1, v2, v3, v4, v5, v6, v7, v8) \ ++ do { \ ++ if (debug_enabled) \ ++ print_hex_dump(v1, v2, v3, v4, v5, v6, v7, v8); \ ++ } while(0) ++ ++/* ++ * Simple UUID translation ++ */ ++ ++struct uuid_info { ++ const char *key; ++ const char *name; ++ long bkoff; ++ unsigned sboff; ++ unsigned sig_len; ++ const char *magic; ++ int uuid_offset; ++ int last_mount_offset; ++ int last_mount_size; ++}; ++ ++/* ++ * Based on libuuid's blkid_magic array. Note that I don't ++ * have uuid offsets for all of these yet - mssing ones are 0x0. ++ * Further information welcome. ++ * ++ * Rearranged by page of fs signature for optimisation. ++ */ ++static struct uuid_info uuid_list[] = { ++ { NULL, "oracleasm", 0, 32, 8, "ORCLDISK", 0x0, 0, 0 }, ++ { "ntfs", "ntfs", 0, 3, 8, "NTFS ", 0x0, 0, 0 }, ++ { "vfat", "vfat", 0, 0x52, 5, "MSWIN", 0x0, 0, 0 }, ++ { "vfat", "vfat", 0, 0x52, 8, "FAT32 ", 0x0, 0, 0 }, ++ { "vfat", "vfat", 0, 0x36, 5, "MSDOS", 0x0, 0, 0 }, ++ { "vfat", "vfat", 0, 0x36, 8, "FAT16 ", 0x0, 0, 0 }, ++ { "vfat", "vfat", 0, 0x36, 8, "FAT12 ", 0x0, 0, 0 }, ++ { "vfat", "vfat", 0, 0, 1, "\353", 0x0, 0, 0 }, ++ { "vfat", "vfat", 0, 0, 1, "\351", 0x0, 0, 0 }, ++ { "vfat", "vfat", 0, 0x1fe, 2, "\125\252", 0x0, 0, 0 }, ++ { "xfs", "xfs", 0, 0, 4, "XFSB", 0x14, 0, 0 }, ++ { "romfs", "romfs", 0, 0, 8, "-rom1fs-", 0x0, 0, 0 }, ++ { "bfs", "bfs", 0, 0, 4, "\316\372\173\033", 0, 0, 0 }, ++ { "cramfs", "cramfs", 0, 0, 4, "E=\315\050", 0x0, 0, 0 }, ++ { "qnx4", "qnx4", 0, 4, 6, "QNX4FS", 0, 0, 0 }, ++ { NULL, "crypt_LUKS", 0, 0, 6, "LUKS\xba\xbe", 0x0, 0, 0 }, ++ { "squashfs", "squashfs", 0, 0, 4, "sqsh", 0, 0, 0 }, ++ { "squashfs", "squashfs", 0, 0, 4, "hsqs", 0, 0, 0 }, ++ { "ocfs", "ocfs", 0, 8, 9, "OracleCFS", 0x0, 0, 0 }, ++ { "lvm2pv", "lvm2pv", 0, 0x018, 8, "LVM2 001", 0x0, 0, 0 }, ++ { "sysv", "sysv", 0, 0x3f8, 4, "\020~\030\375", 0, 0, 0 }, ++ { "ext", "ext", 1, 0x38, 2, "\123\357", 0x468, 0x42c, 4 }, ++ { "minix", "minix", 1, 0x10, 2, "\177\023", 0, 0, 0 }, ++ { "minix", "minix", 1, 0x10, 2, "\217\023", 0, 0, 0 }, ++ { "minix", "minix", 1, 0x10, 2, "\150\044", 0, 0, 0 }, ++ { "minix", "minix", 1, 0x10, 2, "\170\044", 0, 0, 0 }, ++ { "lvm2pv", "lvm2pv", 1, 0x018, 8, "LVM2 001", 0x0, 0, 0 }, ++ { "vxfs", "vxfs", 1, 0, 4, "\365\374\001\245", 0, 0, 0 }, ++ { "hfsplus", "hfsplus", 1, 0, 2, "BD", 0x0, 0, 0 }, ++ { "hfsplus", "hfsplus", 1, 0, 2, "H+", 0x0, 0, 0 }, ++ { "hfsplus", "hfsplus", 1, 0, 2, "HX", 0x0, 0, 0 }, ++ { "hfs", "hfs", 1, 0, 2, "BD", 0x0, 0, 0 }, ++ { "ocfs2", "ocfs2", 1, 0, 6, "OCFSV2", 0x0, 0, 0 }, ++ { "lvm2pv", "lvm2pv", 0, 0x218, 8, "LVM2 001", 0x0, 0, 0 }, ++ { "lvm2pv", "lvm2pv", 1, 0x218, 8, "LVM2 001", 0x0, 0, 0 }, ++ { "ocfs2", "ocfs2", 2, 0, 6, "OCFSV2", 0x0, 0, 0 }, ++ { "swap", "swap", 0, 0xff6, 10, "SWAP-SPACE", 0x40c, 0, 0 }, ++ { "swap", "swap", 0, 0xff6, 10, "SWAPSPACE2", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0xff6, 9, "S1SUSPEND", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0xff6, 9, "S2SUSPEND", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0xff6, 9, "ULSUSPEND", 0x40c, 0, 0 }, ++ { "ocfs2", "ocfs2", 4, 0, 6, "OCFSV2", 0x0, 0, 0 }, ++ { "ocfs2", "ocfs2", 8, 0, 6, "OCFSV2", 0x0, 0, 0 }, ++ { "hpfs", "hpfs", 8, 0, 4, "I\350\225\371", 0, 0, 0 }, ++ { "reiserfs", "reiserfs", 8, 0x34, 8, "ReIsErFs", 0x10054, 0, 0 }, ++ { "reiserfs", "reiserfs", 8, 20, 8, "ReIsErFs", 0x10054, 0, 0 }, ++ { "zfs", "zfs", 8, 0, 8, "\0\0\x02\xf5\xb0\x07\xb1\x0c", 0x0, 0, 0 }, ++ { "zfs", "zfs", 8, 0, 8, "\x0c\xb1\x07\xb0\xf5\x02\0\0", 0x0, 0, 0 }, ++ { "ufs", "ufs", 8, 0x55c, 4, "T\031\001\000", 0, 0, 0 }, ++ { "swap", "swap", 0, 0x1ff6, 10, "SWAP-SPACE", 0x40c, 0, 0 }, ++ { "swap", "swap", 0, 0x1ff6, 10, "SWAPSPACE2", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0x1ff6, 9, "S1SUSPEND", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0x1ff6, 9, "S2SUSPEND", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0x1ff6, 9, "ULSUSPEND", 0x40c, 0, 0 }, ++ { "reiserfs", "reiserfs", 64, 0x34, 9, "ReIsEr2Fs", 0x10054, 0, 0 }, ++ { "reiserfs", "reiserfs", 64, 0x34, 9, "ReIsEr3Fs", 0x10054, 0, 0 }, ++ { "reiserfs", "reiserfs", 64, 0x34, 8, "ReIsErFs", 0x10054, 0, 0 }, ++ { "reiser4", "reiser4", 64, 0, 7, "ReIsEr4", 0x100544, 0, 0 }, ++ { "gfs2", "gfs2", 64, 0, 4, "\x01\x16\x19\x70", 0x0, 0, 0 }, ++ { "gfs", "gfs", 64, 0, 4, "\x01\x16\x19\x70", 0x0, 0, 0 }, ++ { "btrfs", "btrfs", 64, 0x40, 8, "_BHRfS_M", 0x0, 0, 0 }, ++ { "swap", "swap", 0, 0x3ff6, 10, "SWAP-SPACE", 0x40c, 0, 0 }, ++ { "swap", "swap", 0, 0x3ff6, 10, "SWAPSPACE2", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0x3ff6, 9, "S1SUSPEND", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0x3ff6, 9, "S2SUSPEND", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0x3ff6, 9, "ULSUSPEND", 0x40c, 0, 0 }, ++ { "udf", "udf", 32, 1, 5, "BEA01", 0x0, 0, 0 }, ++ { "udf", "udf", 32, 1, 5, "BOOT2", 0x0, 0, 0 }, ++ { "udf", "udf", 32, 1, 5, "CD001", 0x0, 0, 0 }, ++ { "udf", "udf", 32, 1, 5, "CDW02", 0x0, 0, 0 }, ++ { "udf", "udf", 32, 1, 5, "NSR02", 0x0, 0, 0 }, ++ { "udf", "udf", 32, 1, 5, "NSR03", 0x0, 0, 0 }, ++ { "udf", "udf", 32, 1, 5, "TEA01", 0x0, 0, 0 }, ++ { "iso9660", "iso9660", 32, 1, 5, "CD001", 0x0, 0, 0 }, ++ { "iso9660", "iso9660", 32, 9, 5, "CDROM", 0x0, 0, 0 }, ++ { "jfs", "jfs", 32, 0, 4, "JFS1", 0x88, 0, 0 }, ++ { "swap", "swap", 0, 0x7ff6, 10, "SWAP-SPACE", 0x40c, 0, 0 }, ++ { "swap", "swap", 0, 0x7ff6, 10, "SWAPSPACE2", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0x7ff6, 9, "S1SUSPEND", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0x7ff6, 9, "S2SUSPEND", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0x7ff6, 9, "ULSUSPEND", 0x40c, 0, 0 }, ++ { "swap", "swap", 0, 0xfff6, 10, "SWAP-SPACE", 0x40c, 0, 0 }, ++ { "swap", "swap", 0, 0xfff6, 10, "SWAPSPACE2", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0xfff6, 9, "S1SUSPEND", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0xfff6, 9, "S2SUSPEND", 0x40c, 0, 0 }, ++ { "swap", "swsuspend", 0, 0xfff6, 9, "ULSUSPEND", 0x40c, 0, 0 }, ++ { "zfs", "zfs", 264, 0, 8, "\0\0\x02\xf5\xb0\x07\xb1\x0c", 0x0, 0, 0 }, ++ { "zfs", "zfs", 264, 0, 8, "\x0c\xb1\x07\xb0\xf5\x02\0\0", 0x0, 0, 0 }, ++ { NULL, NULL, 0, 0, 0, NULL, 0x0, 0, 0 } ++}; ++ ++static int null_uuid(const char *uuid) ++{ ++ int i; ++ ++ for (i = 0; i < 16 && !uuid[i]; i++); ++ ++ return (i == 16); ++} ++ ++ ++static void uuid_end_bio(struct bio *bio, int err) ++{ ++ struct page *page = bio->bi_io_vec[0].bv_page; ++ ++ BUG_ON(!test_bit(BIO_UPTODATE, &bio->bi_flags)); ++ ++ unlock_page(page); ++ bio_put(bio); ++} ++ ++ ++/** ++ * submit - submit BIO request ++ * @dev: The block device we're using. ++ * @page_num: The page we're reading. ++ * ++ * Based on Patrick Mochell's pmdisk code from long ago: "Straight from the ++ * textbook - allocate and initialize the bio. If we're writing, make sure ++ * the page is marked as dirty. Then submit it and carry on." ++ **/ ++static struct page *read_bdev_page(struct block_device *dev, int page_num) ++{ ++ struct bio *bio = NULL; ++ struct page *page = alloc_page(GFP_NOFS); ++ ++ if (!page) { ++ printk(KERN_ERR "Failed to allocate a page for reading data " ++ "in UUID checks."); ++ return NULL; ++ } ++ ++ bio = bio_alloc(GFP_NOFS, 1); ++ bio->bi_bdev = dev; ++ bio->bi_sector = page_num << 3; ++ bio->bi_end_io = uuid_end_bio; ++ ++ PRINTK("Submitting bio on device %lx, page %d.\n", ++ (unsigned long) dev->bd_dev, page_num); ++ ++ if (bio_add_page(bio, page, PAGE_SIZE, 0) < PAGE_SIZE) { ++ printk(KERN_DEBUG "ERROR: adding page to bio at %d\n", ++ page_num); ++ bio_put(bio); ++ __free_page(page); ++ printk(KERN_DEBUG "read_bdev_page freed page %p (in error " ++ "path).\n", page); ++ return ERR_PTR(-EFAULT); ++ } ++ ++ lock_page(page); ++ submit_bio(READ | (1 << BIO_RW_SYNCIO) | ++ (1 << BIO_RW_UNPLUG), bio); ++ ++ wait_on_page_locked(page); ++ return page; ++} ++ ++int bdev_matches_key(struct block_device *bdev, const char *key) ++{ ++ unsigned char *data = NULL; ++ struct page *data_page = NULL; ++ ++ int dev_offset, pg_num, pg_off, i; ++ int last_pg_num = -1; ++ int result = 0; ++ char buf[50]; ++ ++ if (null_uuid(key)) { ++ PRINTK("Refusing to find a NULL key.\n"); ++ return 0; ++ } ++ ++ if (!bdev->bd_disk) { ++ bdevname(bdev, buf); ++ PRINTK("bdev %s has no bd_disk.\n", buf); ++ return 0; ++ } ++ ++ if (!bdev->bd_disk->queue) { ++ bdevname(bdev, buf); ++ PRINTK("bdev %s has no queue.\n", buf); ++ return 0; ++ } ++ ++ for (i = 0; uuid_list[i].name; i++) { ++ struct uuid_info *dat = &uuid_list[i]; ++ ++ if (!dat->key || strcmp(dat->key, key)) ++ continue; ++ ++ dev_offset = (dat->bkoff << 10) + dat->sboff; ++ pg_num = dev_offset >> 12; ++ pg_off = dev_offset & 0xfff; ++ ++ if ((((pg_num + 1) << 3) - 1) > bdev->bd_part->nr_sects >> 1) ++ continue; ++ ++ if (pg_num != last_pg_num) { ++ if (data_page) ++ __free_page(data_page); ++ data_page = read_bdev_page(bdev, pg_num); ++ if (!data_page) { ++ result = -ENOMEM; ++ break; ++ } ++ data = page_address(data_page); ++ } ++ ++ last_pg_num = pg_num; ++ ++ if (strncmp(&data[pg_off], dat->magic, dat->sig_len)) ++ continue; ++ ++ result = 1; ++ break; ++ } ++ ++ if (data_page) ++ __free_page(data_page); ++ ++ return result; ++} ++ ++int part_matches_uuid(struct hd_struct *part, const char *uuid) ++{ ++ struct block_device *bdev; ++ unsigned char *data = NULL; ++ struct page *data_page = NULL; ++ ++ int dev_offset, pg_num, pg_off; ++ int uuid_pg_num, uuid_pg_off, i; ++ unsigned char *uuid_data = NULL; ++ struct page *uuid_data_page = NULL; ++ ++ int last_pg_num = -1, last_uuid_pg_num = 0; ++ int result = 0; ++ char buf[50]; ++ ++ if (null_uuid(uuid)) { ++ PRINTK("Refusing to find a NULL uuid.\n"); ++ return 0; ++ } ++ ++ bdev = bdget(part_devt(part)); ++ ++ PRINTK("blkdev_get %p.\n", part); ++ ++ if (blkdev_get(bdev, FMODE_READ)) { ++ PRINTK("blkdev_get failed.\n"); ++ return 0; ++ } ++ ++ if (!bdev->bd_disk) { ++ bdevname(bdev, buf); ++ PRINTK("bdev %s has no bd_disk.\n", buf); ++ goto out; ++ } ++ ++ if (!bdev->bd_disk->queue) { ++ bdevname(bdev, buf); ++ PRINTK("bdev %s has no queue.\n", buf); ++ goto out; ++ } ++ ++ PRINT_HEX_DUMP(KERN_EMERG, "part_matches_uuid looking for ", ++ DUMP_PREFIX_NONE, 16, 1, uuid, 16, 0); ++ ++ for (i = 0; uuid_list[i].name; i++) { ++ struct uuid_info *dat = &uuid_list[i]; ++ dev_offset = (dat->bkoff << 10) + dat->sboff; ++ pg_num = dev_offset >> 12; ++ pg_off = dev_offset & 0xfff; ++ uuid_pg_num = dat->uuid_offset >> 12; ++ uuid_pg_off = dat->uuid_offset & 0xfff; ++ ++ if ((((pg_num + 1) << 3) - 1) > part->nr_sects >> 1) ++ continue; ++ ++ /* Ignore partition types with no UUID offset */ ++ if (!dat->uuid_offset) ++ continue; ++ ++ if (pg_num != last_pg_num) { ++ if (data_page) ++ __free_page(data_page); ++ data_page = read_bdev_page(bdev, pg_num); ++ if (!data_page) { ++ result = -ENOMEM; ++ break; ++ } ++ data = page_address(data_page); ++ } ++ ++ last_pg_num = pg_num; ++ ++ if (strncmp(&data[pg_off], dat->magic, dat->sig_len)) ++ continue; ++ ++ /* Does the UUID match? */ ++ if (uuid_pg_num > part->nr_sects >> 3) ++ continue; ++ ++ if (!uuid_data || uuid_pg_num != last_uuid_pg_num) { ++ if (uuid_data_page) ++ __free_page(uuid_data_page); ++ uuid_data_page = read_bdev_page(bdev, uuid_pg_num); ++ if (!uuid_data_page) { ++ result = -ENOMEM; ++ break; ++ } ++ uuid_data = page_address(uuid_data_page); ++ } ++ ++ last_uuid_pg_num = uuid_pg_num; ++ ++ PRINT_HEX_DUMP(KERN_EMERG, "part_matches_uuid considering ", ++ DUMP_PREFIX_NONE, 16, 1, ++ &uuid_data[uuid_pg_off], 16, 0); ++ ++ if (!memcmp(&uuid_data[uuid_pg_off], uuid, 16)) { ++ PRINTK("We have a match.\n"); ++ result = 1; ++ break; ++ } ++ } ++ ++ if (data_page) ++ __free_page(data_page); ++ ++ if (uuid_data_page) ++ __free_page(uuid_data_page); ++ ++out: ++ blkdev_put(bdev, FMODE_READ); ++ return result; ++} ++ ++void free_fs_info(struct fs_info *fs_info) ++{ ++ if (!fs_info || IS_ERR(fs_info)) ++ return; ++ ++ if (fs_info->last_mount) ++ kfree(fs_info->last_mount); ++ ++ kfree(fs_info); ++} ++EXPORT_SYMBOL_GPL(free_fs_info); ++ ++struct fs_info *fs_info_from_block_dev(struct block_device *bdev) ++{ ++ unsigned char *data = NULL; ++ struct page *data_page = NULL; ++ ++ int dev_offset, pg_num, pg_off; ++ int uuid_pg_num, uuid_pg_off, i; ++ unsigned char *uuid_data = NULL; ++ struct page *uuid_data_page = NULL; ++ ++ int last_pg_num = -1, last_uuid_pg_num = 0; ++ char buf[50]; ++ struct fs_info *fs_info = NULL; ++ ++ bdevname(bdev, buf); ++ ++ PRINTK(KERN_EMERG "uuid_from_block_dev looking for partition type " ++ "of %s.\n", buf); ++ ++ for (i = 0; uuid_list[i].name; i++) { ++ struct uuid_info *dat = &uuid_list[i]; ++ dev_offset = (dat->bkoff << 10) + dat->sboff; ++ pg_num = dev_offset >> 12; ++ pg_off = dev_offset & 0xfff; ++ uuid_pg_num = dat->uuid_offset >> 12; ++ uuid_pg_off = dat->uuid_offset & 0xfff; ++ ++ if ((((pg_num + 1) << 3) - 1) > bdev->bd_part->nr_sects >> 1) ++ continue; ++ ++ /* Ignore partition types with no UUID offset */ ++ if (!dat->uuid_offset) ++ continue; ++ ++ if (pg_num != last_pg_num) { ++ if (data_page) ++ __free_page(data_page); ++ data_page = read_bdev_page(bdev, pg_num); ++ if (!data_page) { ++ fs_info = ERR_PTR(-ENOMEM); ++ break; ++ } ++ data = page_address(data_page); ++ } ++ ++ last_pg_num = pg_num; ++ ++ if (strncmp(&data[pg_off], dat->magic, dat->sig_len)) ++ continue; ++ ++ PRINTK("This partition looks like %s.\n", dat->name); ++ ++ fs_info = kzalloc(sizeof(struct fs_info), GFP_KERNEL); ++ ++ if (!fs_info) { ++ PRINTK("Failed to allocate fs_info struct."); ++ fs_info = ERR_PTR(-ENOMEM); ++ break; ++ } ++ ++ /* UUID can't be off the end of the disk */ ++ if ((uuid_pg_num > bdev->bd_part->nr_sects >> 3) || ++ !dat->uuid_offset) ++ goto no_uuid; ++ ++ if (!uuid_data || uuid_pg_num != last_uuid_pg_num) { ++ if (uuid_data_page) ++ __free_page(uuid_data_page); ++ uuid_data_page = read_bdev_page(bdev, uuid_pg_num); ++ if (!uuid_data_page) { ++ fs_info = ERR_PTR(-ENOMEM); ++ break; ++ } ++ uuid_data = page_address(uuid_data_page); ++ } ++ ++ last_uuid_pg_num = uuid_pg_num; ++ memcpy(&fs_info->uuid, &uuid_data[uuid_pg_off], 16); ++ ++no_uuid: ++ PRINT_HEX_DUMP(KERN_EMERG, "fs_info_from_block_dev " ++ "returning uuid ", DUMP_PREFIX_NONE, 16, 1, ++ fs_info->uuid, 16, 0); ++ ++ if (dat->last_mount_size) { ++ int pg = dat->last_mount_offset >> 12, sz; ++ int off = dat->last_mount_offset & 0xfff; ++ struct page *last_mount = read_bdev_page(bdev, pg); ++ unsigned char *last_mount_data; ++ char *ptr; ++ ++ if (!last_mount) { ++ fs_info = ERR_PTR(-ENOMEM); ++ break; ++ } ++ last_mount_data = page_address(last_mount); ++ sz = dat->last_mount_size; ++ ptr = kmalloc(sz, GFP_KERNEL); ++ ++ if (!ptr) { ++ printk(KERN_EMERG "fs_info_from_block_dev " ++ "failed to get memory for last mount " ++ "timestamp."); ++ free_fs_info(fs_info); ++ fs_info = ERR_PTR(-ENOMEM); ++ } else { ++ fs_info->last_mount = ptr; ++ fs_info->last_mount_size = sz; ++ memcpy(ptr, &last_mount_data[off], sz); ++ } ++ ++ __free_page(last_mount); ++ } ++ break; ++ } ++ ++ if (data_page) ++ __free_page(data_page); ++ ++ if (uuid_data_page) ++ __free_page(uuid_data_page); ++ ++ return fs_info; ++} ++EXPORT_SYMBOL_GPL(fs_info_from_block_dev); ++ ++static int __init uuid_debug_setup(char *str) ++{ ++ int value; ++ ++ if (sscanf(str, "=%d", &value)) ++ debug_enabled = value; ++ ++ return 1; ++} ++ ++__setup("uuid_debug", uuid_debug_setup); +diff --git a/crypto/Kconfig b/crypto/Kconfig +index 81c185a..94cb5e8 100644 +--- a/crypto/Kconfig ++++ b/crypto/Kconfig +@@ -806,6 +806,13 @@ config CRYPTO_LZO + help + This is the LZO algorithm. + ++config CRYPTO_LZF ++ tristate "LZF compression algorithm" ++ select CRYPTO_ALGAPI ++ help ++ This is the LZF algorithm. It is especially useful for TuxOnIce, ++ because it achieves good compression quickly. ++ + comment "Random Number Generation" + + config CRYPTO_ANSI_CPRNG +diff --git a/crypto/Makefile b/crypto/Makefile +index 9e8f619..a06b213 100644 +--- a/crypto/Makefile ++++ b/crypto/Makefile +@@ -77,6 +77,7 @@ obj-$(CONFIG_CRYPTO_DEFLATE) += deflate.o + obj-$(CONFIG_CRYPTO_ZLIB) += zlib.o + obj-$(CONFIG_CRYPTO_MICHAEL_MIC) += michael_mic.o + obj-$(CONFIG_CRYPTO_CRC32C) += crc32c.o ++obj-$(CONFIG_CRYPTO_LZF) += lzf.o + obj-$(CONFIG_CRYPTO_AUTHENC) += authenc.o + obj-$(CONFIG_CRYPTO_LZO) += lzo.o + obj-$(CONFIG_CRYPTO_RNG2) += rng.o +diff --git a/crypto/lzf.c b/crypto/lzf.c +new file mode 100644 +index 0000000..ccaf83a +--- /dev/null ++++ b/crypto/lzf.c +@@ -0,0 +1,326 @@ ++/* ++ * Cryptoapi LZF compression module. ++ * ++ * Copyright (c) 2004-2008 Nigel Cunningham ++ * ++ * based on the deflate.c file: ++ * ++ * Copyright (c) 2003 James Morris ++ * ++ * and upon the LZF compression module donated to the TuxOnIce project with ++ * the following copyright: ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License as published by the Free ++ * Software Foundation; either version 2 of the License, or (at your option) ++ * any later version. ++ * Copyright (c) 2000-2003 Marc Alexander Lehmann ++ * ++ * Redistribution and use in source and binary forms, with or without modifica- ++ * tion, are permitted provided that the following conditions are met: ++ * ++ * 1. Redistributions of source code must retain the above copyright notice, ++ * this list of conditions and the following disclaimer. ++ * ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * 3. The name of the author may not be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED ++ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- ++ * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO ++ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- ++ * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ++ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ++ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- ++ * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED ++ * OF THE POSSIBILITY OF SUCH DAMAGE. ++ * ++ * Alternatively, the contents of this file may be used under the terms of ++ * the GNU General Public License version 2 (the "GPL"), in which case the ++ * provisions of the GPL are applicable instead of the above. If you wish to ++ * allow the use of your version of this file only under the terms of the ++ * GPL and not to allow others to use your version of this file under the ++ * BSD license, indicate your decision by deleting the provisions above and ++ * replace them with the notice and other provisions required by the GPL. If ++ * you do not delete the provisions above, a recipient may use your version ++ * of this file under either the BSD or the GPL. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++struct lzf_ctx { ++ void *hbuf; ++ unsigned int bufofs; ++}; ++ ++/* ++ * size of hashtable is (1 << hlog) * sizeof (char *) ++ * decompression is independent of the hash table size ++ * the difference between 15 and 14 is very small ++ * for small blocks (and 14 is also faster). ++ * For a low-memory configuration, use hlog == 13; ++ * For best compression, use 15 or 16. ++ */ ++static const int hlog = 13; ++ ++/* ++ * don't play with this unless you benchmark! ++ * decompression is not dependent on the hash function ++ * the hashing function might seem strange, just believe me ++ * it works ;) ++ */ ++static inline u16 first(const u8 *p) ++{ ++ return ((p[0]) << 8) + p[1]; ++} ++ ++static inline u16 next(u8 v, const u8 *p) ++{ ++ return ((v) << 8) + p[2]; ++} ++ ++static inline u32 idx(unsigned int h) ++{ ++ return (((h ^ (h << 5)) >> (3*8 - hlog)) + h*3) & ((1 << hlog) - 1); ++} ++ ++/* ++ * IDX works because it is very similar to a multiplicative hash, e.g. ++ * (h * 57321 >> (3*8 - hlog)) ++ * the next one is also quite good, albeit slow ;) ++ * (int)(cos(h & 0xffffff) * 1e6) ++ */ ++ ++static const int max_lit = (1 << 5); ++static const int max_off = (1 << 13); ++static const int max_ref = ((1 << 8) + (1 << 3)); ++ ++/* ++ * compressed format ++ * ++ * 000LLLLL ; literal ++ * LLLOOOOO oooooooo ; backref L ++ * 111OOOOO LLLLLLLL oooooooo ; backref L+7 ++ * ++ */ ++ ++static void lzf_compress_exit(struct crypto_tfm *tfm) ++{ ++ struct lzf_ctx *ctx = crypto_tfm_ctx(tfm); ++ ++ if (!ctx->hbuf) ++ return; ++ ++ vfree(ctx->hbuf); ++ ctx->hbuf = NULL; ++} ++ ++static int lzf_compress_init(struct crypto_tfm *tfm) ++{ ++ struct lzf_ctx *ctx = crypto_tfm_ctx(tfm); ++ ++ /* Get LZF ready to go */ ++ ctx->hbuf = vmalloc_32((1 << hlog) * sizeof(char *)); ++ if (ctx->hbuf) ++ return 0; ++ ++ printk(KERN_WARNING "Failed to allocate %ld bytes for lzf workspace\n", ++ (long) ((1 << hlog) * sizeof(char *))); ++ return -ENOMEM; ++} ++ ++static int lzf_compress(struct crypto_tfm *tfm, const u8 *in_data, ++ unsigned int in_len, u8 *out_data, unsigned int *out_len) ++{ ++ struct lzf_ctx *ctx = crypto_tfm_ctx(tfm); ++ const u8 **htab = ctx->hbuf; ++ const u8 **hslot; ++ const u8 *ip = in_data; ++ u8 *op = out_data; ++ const u8 *in_end = ip + in_len; ++ u8 *out_end = op + *out_len - 3; ++ const u8 *ref; ++ ++ unsigned int hval = first(ip); ++ unsigned long off; ++ int lit = 0; ++ ++ memset(htab, 0, sizeof(htab)); ++ ++ for (;;) { ++ if (ip < in_end - 2) { ++ hval = next(hval, ip); ++ hslot = htab + idx(hval); ++ ref = *hslot; ++ *hslot = ip; ++ ++ off = ip - ref - 1; ++ if (off < max_off ++ && ip + 4 < in_end && ref > in_data ++ && *(u16 *) ref == *(u16 *) ip && ref[2] == ip[2] ++ ) { ++ /* match found at *ref++ */ ++ unsigned int len = 2; ++ unsigned int maxlen = in_end - ip - len; ++ maxlen = maxlen > max_ref ? max_ref : maxlen; ++ ++ do { ++ len++; ++ } while (len < maxlen && ref[len] == ip[len]); ++ ++ if (op + lit + 1 + 3 >= out_end) { ++ *out_len = PAGE_SIZE; ++ return 0; ++ } ++ ++ if (lit) { ++ *op++ = lit - 1; ++ lit = -lit; ++ do { ++ *op++ = ip[lit]; ++ } while (++lit); ++ } ++ ++ len -= 2; ++ ip++; ++ ++ if (len < 7) { ++ *op++ = (off >> 8) + (len << 5); ++ } else { ++ *op++ = (off >> 8) + (7 << 5); ++ *op++ = len - 7; ++ } ++ ++ *op++ = off; ++ ++ ip += len; ++ hval = first(ip); ++ hval = next(hval, ip); ++ htab[idx(hval)] = ip; ++ ip++; ++ continue; ++ } ++ } else if (ip == in_end) ++ break; ++ ++ /* one more literal byte we must copy */ ++ lit++; ++ ip++; ++ ++ if (lit == max_lit) { ++ if (op + 1 + max_lit >= out_end) { ++ *out_len = PAGE_SIZE; ++ return 0; ++ } ++ ++ *op++ = max_lit - 1; ++ memcpy(op, ip - max_lit, max_lit); ++ op += max_lit; ++ lit = 0; ++ } ++ } ++ ++ if (lit) { ++ if (op + lit + 1 >= out_end) { ++ *out_len = PAGE_SIZE; ++ return 0; ++ } ++ ++ *op++ = lit - 1; ++ lit = -lit; ++ do { ++ *op++ = ip[lit]; ++ } while (++lit); ++ } ++ ++ *out_len = op - out_data; ++ return 0; ++} ++ ++static int lzf_decompress(struct crypto_tfm *tfm, const u8 *src, ++ unsigned int slen, u8 *dst, unsigned int *dlen) ++{ ++ u8 const *ip = src; ++ u8 *op = dst; ++ u8 const *const in_end = ip + slen; ++ u8 *const out_end = op + *dlen; ++ ++ *dlen = PAGE_SIZE; ++ do { ++ unsigned int ctrl = *ip++; ++ ++ if (ctrl < (1 << 5)) { ++ /* literal run */ ++ ctrl++; ++ ++ if (op + ctrl > out_end) ++ return 0; ++ memcpy(op, ip, ctrl); ++ op += ctrl; ++ ip += ctrl; ++ } else { /* back reference */ ++ ++ unsigned int len = ctrl >> 5; ++ ++ u8 *ref = op - ((ctrl & 0x1f) << 8) - 1; ++ ++ if (len == 7) ++ len += *ip++; ++ ++ ref -= *ip++; ++ len += 2; ++ ++ if (op + len > out_end || ref < (u8 *) dst) ++ return 0; ++ ++ do { ++ *op++ = *ref++; ++ } while (--len); ++ } ++ } while (op < out_end && ip < in_end); ++ ++ *dlen = op - (u8 *) dst; ++ return 0; ++} ++ ++static struct crypto_alg alg = { ++ .cra_name = "lzf", ++ .cra_flags = CRYPTO_ALG_TYPE_COMPRESS, ++ .cra_ctxsize = sizeof(struct lzf_ctx), ++ .cra_module = THIS_MODULE, ++ .cra_list = LIST_HEAD_INIT(alg.cra_list), ++ .cra_init = lzf_compress_init, ++ .cra_exit = lzf_compress_exit, ++ .cra_u = { .compress = { ++ .coa_compress = lzf_compress, ++ .coa_decompress = lzf_decompress } } ++}; ++ ++static int __init init(void) ++{ ++ return crypto_register_alg(&alg); ++} ++ ++static void __exit fini(void) ++{ ++ crypto_unregister_alg(&alg); ++} ++ ++module_init(init); ++module_exit(fini); ++ ++MODULE_LICENSE("GPL"); ++MODULE_DESCRIPTION("LZF Compression Algorithm"); ++MODULE_AUTHOR("Marc Alexander Lehmann & Nigel Cunningham"); +diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c +index a5142bd..3fed8b2 100644 +--- a/drivers/base/power/main.c ++++ b/drivers/base/power/main.c +@@ -66,6 +66,7 @@ void device_pm_lock(void) + { + mutex_lock(&dpm_list_mtx); + } ++EXPORT_SYMBOL_GPL(device_pm_lock); + + /** + * device_pm_unlock - Unlock the list of active devices used by the PM core. +@@ -74,6 +75,7 @@ void device_pm_unlock(void) + { + mutex_unlock(&dpm_list_mtx); + } ++EXPORT_SYMBOL_GPL(device_pm_unlock); + + /** + * device_pm_add - Add a device to the PM core's list of active devices. +diff --git a/drivers/char/vt.c b/drivers/char/vt.c +index 50faa1f..567839a 100644 +--- a/drivers/char/vt.c ++++ b/drivers/char/vt.c +@@ -2465,6 +2465,7 @@ int vt_kmsg_redirect(int new) + else + return kmsg_con; + } ++EXPORT_SYMBOL_GPL(vt_kmsg_redirect); + + /* + * Console on virtual terminal +diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c +index 8bf3770..f1d1e03 100644 +--- a/drivers/gpu/drm/drm_gem.c ++++ b/drivers/gpu/drm/drm_gem.c +@@ -138,7 +138,8 @@ drm_gem_object_alloc(struct drm_device *dev, size_t size) + goto free; + + obj->dev = dev; +- obj->filp = shmem_file_setup("drm mm object", size, VM_NORESERVE); ++ obj->filp = shmem_file_setup("drm mm object", size, ++ VM_NORESERVE | VM_ATOMIC_COPY); + if (IS_ERR(obj->filp)) + goto free; + +diff --git a/drivers/md/md.c b/drivers/md/md.c +index a20a71e..6f221e5 100644 +--- a/drivers/md/md.c ++++ b/drivers/md/md.c +@@ -6469,6 +6469,9 @@ void md_do_sync(mddev_t *mddev) + mddev->curr_resync = 2; + + try_again: ++ while (freezer_is_on()) ++ yield(); ++ + if (kthread_should_stop()) + set_bit(MD_RECOVERY_INTR, &mddev->recovery); + +@@ -6491,6 +6494,10 @@ void md_do_sync(mddev_t *mddev) + * time 'round when curr_resync == 2 + */ + continue; ++ ++ while (freezer_is_on()) ++ yield(); ++ + /* We need to wait 'interruptible' so as not to + * contribute to the load average, and not to + * be caught by 'softlockup' +@@ -6503,6 +6510,7 @@ void md_do_sync(mddev_t *mddev) + " share one or more physical units)\n", + desc, mdname(mddev), mdname(mddev2)); + mddev_put(mddev2); ++ try_to_freeze(); + if (signal_pending(current)) + flush_signals(current); + schedule(); +@@ -6612,6 +6620,9 @@ void md_do_sync(mddev_t *mddev) + || kthread_should_stop()); + } + ++ while (freezer_is_on()) ++ yield(); ++ + if (kthread_should_stop()) + goto interrupted; + +@@ -6656,6 +6667,9 @@ void md_do_sync(mddev_t *mddev) + last_mark = next; + } + ++ while (freezer_is_on()) ++ yield(); ++ + + if (kthread_should_stop()) + goto interrupted; +diff --git a/fs/block_dev.c b/fs/block_dev.c +index d11d028..b2388cc 100644 +--- a/fs/block_dev.c ++++ b/fs/block_dev.c +@@ -335,6 +335,93 @@ out_unlock: + } + EXPORT_SYMBOL(thaw_bdev); + ++#ifdef CONFIG_FS_FREEZER_DEBUG ++#define FS_PRINTK(fmt, args...) printk(fmt, ## args) ++#else ++#define FS_PRINTK(fmt, args...) ++#endif ++ ++/* #define DEBUG_FS_FREEZING */ ++ ++/** ++ * freeze_filesystems - lock all filesystems and force them into a consistent ++ * state ++ * @which: What combination of fuse & non-fuse to freeze. ++ */ ++void freeze_filesystems(int which) ++{ ++ struct super_block *sb; ++ ++ lockdep_off(); ++ ++ /* ++ * Freeze in reverse order so filesystems dependant upon others are ++ * frozen in the right order (eg. loopback on ext3). ++ */ ++ list_for_each_entry_reverse(sb, &super_blocks, s_list) { ++ FS_PRINTK(KERN_INFO "Considering %s.%s: (root %p, bdev %x)", ++ sb->s_type->name ? sb->s_type->name : "?", ++ sb->s_subtype ? sb->s_subtype : "", sb->s_root, ++ sb->s_bdev ? sb->s_bdev->bd_dev : 0); ++ ++ if (sb->s_type->fs_flags & FS_IS_FUSE && ++ sb->s_frozen == SB_UNFROZEN && ++ which & FS_FREEZER_FUSE) { ++ sb->s_frozen = SB_FREEZE_TRANS; ++ sb->s_flags |= MS_FROZEN; ++ FS_PRINTK("Fuse filesystem done.\n"); ++ continue; ++ } ++ ++ if (!sb->s_root || !sb->s_bdev || ++ (sb->s_frozen == SB_FREEZE_TRANS) || ++ (sb->s_flags & MS_RDONLY) || ++ (sb->s_flags & MS_FROZEN) || ++ !(which & FS_FREEZER_NORMAL)) { ++ FS_PRINTK(KERN_INFO "Nope.\n"); ++ continue; ++ } ++ ++ FS_PRINTK(KERN_INFO "Freezing %x... ", sb->s_bdev->bd_dev); ++ freeze_bdev(sb->s_bdev); ++ sb->s_flags |= MS_FROZEN; ++ FS_PRINTK(KERN_INFO "Done.\n"); ++ } ++ ++ lockdep_on(); ++} ++ ++/** ++ * thaw_filesystems - unlock all filesystems ++ * @which: What combination of fuse & non-fuse to thaw. ++ */ ++void thaw_filesystems(int which) ++{ ++ struct super_block *sb; ++ ++ lockdep_off(); ++ ++ list_for_each_entry(sb, &super_blocks, s_list) { ++ if (!(sb->s_flags & MS_FROZEN)) ++ continue; ++ ++ if (sb->s_type->fs_flags & FS_IS_FUSE) { ++ if (!(which & FS_FREEZER_FUSE)) ++ continue; ++ ++ sb->s_frozen = SB_UNFROZEN; ++ } else { ++ if (!(which & FS_FREEZER_NORMAL)) ++ continue; ++ ++ thaw_bdev(sb->s_bdev, sb); ++ } ++ sb->s_flags &= ~MS_FROZEN; ++ } ++ ++ lockdep_on(); ++} ++ + static int blkdev_writepage(struct page *page, struct writeback_control *wbc) + { + return block_write_full_page(page, blkdev_get_block, wbc); +diff --git a/fs/drop_caches.c b/fs/drop_caches.c +index 31f4b0e..ff7df7a 100644 +--- a/fs/drop_caches.c ++++ b/fs/drop_caches.c +@@ -8,6 +8,7 @@ + #include + #include + #include ++#include + + /* A global variable is a bit ugly, but it keeps the code simple */ + int sysctl_drop_caches; +@@ -33,7 +34,7 @@ static void drop_pagecache_sb(struct super_block *sb) + iput(toput_inode); + } + +-static void drop_pagecache(void) ++void drop_pagecache(void) + { + struct super_block *sb; + +@@ -61,6 +62,7 @@ static void drop_slab(void) + nr_objects = shrink_slab(1000, GFP_KERNEL, 1000); + } while (nr_objects > 10); + } ++EXPORT_SYMBOL_GPL(drop_pagecache); + + int drop_caches_sysctl_handler(ctl_table *table, int write, + void __user *buffer, size_t *length, loff_t *ppos) +diff --git a/fs/fuse/control.c b/fs/fuse/control.c +index 3773fd6..6272b60 100644 +--- a/fs/fuse/control.c ++++ b/fs/fuse/control.c +@@ -341,6 +341,7 @@ static void fuse_ctl_kill_sb(struct super_block *sb) + static struct file_system_type fuse_ctl_fs_type = { + .owner = THIS_MODULE, + .name = "fusectl", ++ .fs_flags = FS_IS_FUSE, + .get_sb = fuse_ctl_get_sb, + .kill_sb = fuse_ctl_kill_sb, + }; +diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c +index 51d9e33..12ad477 100644 +--- a/fs/fuse/dev.c ++++ b/fs/fuse/dev.c +@@ -7,6 +7,7 @@ + */ + + #include "fuse_i.h" ++#include "fuse.h" + + #include + #include +@@ -16,6 +17,7 @@ + #include + #include + #include ++#include + + MODULE_ALIAS_MISCDEV(FUSE_MINOR); + +@@ -758,6 +760,8 @@ static ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov, + if (!fc) + return -EPERM; + ++ FUSE_MIGHT_FREEZE(file->f_mapping->host->i_sb, "fuse_dev_read"); ++ + restart: + spin_lock(&fc->lock); + err = -EAGAIN; +@@ -999,6 +1003,9 @@ static ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov, + if (!fc) + return -EPERM; + ++ FUSE_MIGHT_FREEZE(iocb->ki_filp->f_mapping->host->i_sb, ++ "fuse_dev_write"); ++ + fuse_copy_init(&cs, fc, 0, NULL, iov, nr_segs); + if (nbytes < sizeof(struct fuse_out_header)) + return -EINVAL; +diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c +index 4787ae6..797b7dd 100644 +--- a/fs/fuse/dir.c ++++ b/fs/fuse/dir.c +@@ -7,12 +7,14 @@ + */ + + #include "fuse_i.h" ++#include "fuse.h" + + #include + #include + #include + #include + #include ++#include + + #if BITS_PER_LONG >= 64 + static inline void fuse_dentry_settime(struct dentry *entry, u64 time) +@@ -174,6 +176,9 @@ static int fuse_dentry_revalidate(struct dentry *entry, struct nameidata *nd) + return 0; + + fc = get_fuse_conn(inode); ++ ++ FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_dentry_revalidate"); ++ + req = fuse_get_req(fc); + if (IS_ERR(req)) + return 0; +@@ -268,6 +273,8 @@ int fuse_lookup_name(struct super_block *sb, u64 nodeid, struct qstr *name, + if (name->len > FUSE_NAME_MAX) + goto out; + ++ FUSE_MIGHT_FREEZE(sb, "fuse_lookup_name"); ++ + req = fuse_get_req(fc); + err = PTR_ERR(req); + if (IS_ERR(req)) +@@ -331,6 +338,8 @@ static struct dentry *fuse_lookup(struct inode *dir, struct dentry *entry, + if (err) + goto out_err; + ++ FUSE_MIGHT_FREEZE(dir->i_sb, "fuse_lookup"); ++ + err = -EIO; + if (inode && get_node_id(inode) == FUSE_ROOT_ID) + goto out_iput; +@@ -392,6 +401,8 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry, int mode, + if (IS_ERR(forget_req)) + return PTR_ERR(forget_req); + ++ FUSE_MIGHT_FREEZE(dir->i_sb, "fuse_create_open"); ++ + req = fuse_get_req(fc); + err = PTR_ERR(req); + if (IS_ERR(req)) +@@ -485,6 +496,8 @@ static int create_new_entry(struct fuse_conn *fc, struct fuse_req *req, + int err; + struct fuse_req *forget_req; + ++ FUSE_MIGHT_FREEZE(dir->i_sb, "create_new_entry"); ++ + forget_req = fuse_get_req(fc); + if (IS_ERR(forget_req)) { + fuse_put_request(fc, req); +@@ -587,7 +600,11 @@ static int fuse_mkdir(struct inode *dir, struct dentry *entry, int mode) + { + struct fuse_mkdir_in inarg; + struct fuse_conn *fc = get_fuse_conn(dir); +- struct fuse_req *req = fuse_get_req(fc); ++ struct fuse_req *req; ++ ++ FUSE_MIGHT_FREEZE(dir->i_sb, "fuse_mkdir"); ++ ++ req = fuse_get_req(fc); + if (IS_ERR(req)) + return PTR_ERR(req); + +@@ -611,7 +628,11 @@ static int fuse_symlink(struct inode *dir, struct dentry *entry, + { + struct fuse_conn *fc = get_fuse_conn(dir); + unsigned len = strlen(link) + 1; +- struct fuse_req *req = fuse_get_req(fc); ++ struct fuse_req *req; ++ ++ FUSE_MIGHT_FREEZE(dir->i_sb, "fuse_symlink"); ++ ++ req = fuse_get_req(fc); + if (IS_ERR(req)) + return PTR_ERR(req); + +@@ -628,7 +649,11 @@ static int fuse_unlink(struct inode *dir, struct dentry *entry) + { + int err; + struct fuse_conn *fc = get_fuse_conn(dir); +- struct fuse_req *req = fuse_get_req(fc); ++ struct fuse_req *req; ++ ++ FUSE_MIGHT_FREEZE(dir->i_sb, "fuse_unlink"); ++ ++ req = fuse_get_req(fc); + if (IS_ERR(req)) + return PTR_ERR(req); + +@@ -661,7 +686,11 @@ static int fuse_rmdir(struct inode *dir, struct dentry *entry) + { + int err; + struct fuse_conn *fc = get_fuse_conn(dir); +- struct fuse_req *req = fuse_get_req(fc); ++ struct fuse_req *req; ++ ++ FUSE_MIGHT_FREEZE(dir->i_sb, "fuse_rmdir"); ++ ++ req = fuse_get_req(fc); + if (IS_ERR(req)) + return PTR_ERR(req); + +diff --git a/fs/fuse/file.c b/fs/fuse/file.c +index a9f5e13..4647e11 100644 +--- a/fs/fuse/file.c ++++ b/fs/fuse/file.c +@@ -7,11 +7,13 @@ + */ + + #include "fuse_i.h" ++#include "fuse.h" + + #include + #include + #include + #include ++#include + #include + + static const struct file_operations fuse_direct_io_file_operations; +@@ -109,6 +111,8 @@ int fuse_do_open(struct fuse_conn *fc, u64 nodeid, struct file *file, + int err; + int opcode = isdir ? FUSE_OPENDIR : FUSE_OPEN; + ++ FUSE_MIGHT_FREEZE(file->f_path.dentry->d_inode->i_sb, "fuse_send_open"); ++ + ff = fuse_file_alloc(fc); + if (!ff) + return -ENOMEM; +@@ -316,6 +320,8 @@ static int fuse_flush(struct file *file, fl_owner_t id) + if (fc->no_flush) + return 0; + ++ FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_flush"); ++ + req = fuse_get_req_nofail(fc, file); + memset(&inarg, 0, sizeof(inarg)); + inarg.fh = ff->fh; +@@ -367,6 +373,8 @@ int fuse_fsync_common(struct file *file, struct dentry *de, int datasync, + if ((!isdir && fc->no_fsync) || (isdir && fc->no_fsyncdir)) + return 0; + ++ FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_fsync_common"); ++ + /* + * Start writeback against all dirty pages of the inode, then + * wait for all outstanding writes, before sending the FSYNC +@@ -474,6 +482,8 @@ static int fuse_readpage(struct file *file, struct page *page) + if (is_bad_inode(inode)) + goto out; + ++ FUSE_MIGHT_FREEZE(file->f_mapping->host->i_sb, "fuse_readpage"); ++ + /* + * Page writeback can extend beyond the liftime of the + * page-cache page, so make sure we read a properly synced +@@ -576,6 +586,9 @@ static int fuse_readpages_fill(void *_data, struct page *page) + struct inode *inode = data->inode; + struct fuse_conn *fc = get_fuse_conn(inode); + ++ FUSE_MIGHT_FREEZE(data->file->f_mapping->host->i_sb, ++ "fuse_readpages_fill"); ++ + fuse_wait_on_page_writeback(inode, page->index); + + if (req->num_pages && +@@ -606,6 +619,8 @@ static int fuse_readpages(struct file *file, struct address_space *mapping, + if (is_bad_inode(inode)) + goto out; + ++ FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_readpages"); ++ + data.file = file; + data.inode = inode; + data.req = fuse_get_req(fc); +@@ -719,6 +734,8 @@ static int fuse_buffered_write(struct file *file, struct inode *inode, + if (is_bad_inode(inode)) + return -EIO; + ++ FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_buffered_write"); ++ + /* + * Make sure writepages on the same page are not mixed up with + * plain writes. +@@ -878,6 +895,8 @@ static ssize_t fuse_perform_write(struct file *file, + struct fuse_req *req; + ssize_t count; + ++ FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_perform_write"); ++ + req = fuse_get_req(fc); + if (IS_ERR(req)) { + err = PTR_ERR(req); +@@ -1025,6 +1044,8 @@ ssize_t fuse_direct_io(struct file *file, const char __user *buf, + ssize_t res = 0; + struct fuse_req *req; + ++ FUSE_MIGHT_FREEZE(file->f_mapping->host->i_sb, "fuse_direct_io"); ++ + req = fuse_get_req(fc); + if (IS_ERR(req)) + return PTR_ERR(req); +@@ -1412,6 +1433,8 @@ static int fuse_getlk(struct file *file, struct file_lock *fl) + struct fuse_lk_out outarg; + int err; + ++ FUSE_MIGHT_FREEZE(file->f_mapping->host->i_sb, "fuse_getlk"); ++ + req = fuse_get_req(fc); + if (IS_ERR(req)) + return PTR_ERR(req); +@@ -1447,6 +1470,8 @@ static int fuse_setlk(struct file *file, struct file_lock *fl, int flock) + if (fl->fl_flags & FL_CLOSE) + return 0; + ++ FUSE_MIGHT_FREEZE(file->f_mapping->host->i_sb, "fuse_setlk"); ++ + req = fuse_get_req(fc); + if (IS_ERR(req)) + return PTR_ERR(req); +@@ -1513,6 +1538,8 @@ static sector_t fuse_bmap(struct address_space *mapping, sector_t block) + if (!inode->i_sb->s_bdev || fc->no_bmap) + return 0; + ++ FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_bmap"); ++ + req = fuse_get_req(fc); + if (IS_ERR(req)) + return 0; +diff --git a/fs/fuse/fuse.h b/fs/fuse/fuse.h +new file mode 100644 +index 0000000..170e49a +--- /dev/null ++++ b/fs/fuse/fuse.h +@@ -0,0 +1,13 @@ ++#define FUSE_MIGHT_FREEZE(superblock, desc) \ ++do { \ ++ int printed = 0; \ ++ while (superblock->s_frozen != SB_UNFROZEN) { \ ++ if (!printed) { \ ++ printk(KERN_INFO "%d frozen in " desc ".\n", \ ++ current->pid); \ ++ printed = 1; \ ++ } \ ++ try_to_freeze(); \ ++ yield(); \ ++ } \ ++} while (0) +diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c +index 1a822ce..9b69d61 100644 +--- a/fs/fuse/inode.c ++++ b/fs/fuse/inode.c +@@ -1062,7 +1062,7 @@ static void fuse_kill_sb_anon(struct super_block *sb) + static struct file_system_type fuse_fs_type = { + .owner = THIS_MODULE, + .name = "fuse", +- .fs_flags = FS_HAS_SUBTYPE, ++ .fs_flags = FS_HAS_SUBTYPE | FS_IS_FUSE, + .get_sb = fuse_get_sb, + .kill_sb = fuse_kill_sb_anon, + }; +@@ -1094,7 +1094,7 @@ static struct file_system_type fuseblk_fs_type = { + .name = "fuseblk", + .get_sb = fuse_get_sb_blk, + .kill_sb = fuse_kill_sb_blk, +- .fs_flags = FS_REQUIRES_DEV | FS_HAS_SUBTYPE, ++ .fs_flags = FS_REQUIRES_DEV | FS_HAS_SUBTYPE | FS_IS_FUSE, + }; + + static inline int register_fuseblk(void) +diff --git a/fs/namei.c b/fs/namei.c +index a4855af..3d57581 100644 +--- a/fs/namei.c ++++ b/fs/namei.c +@@ -2268,6 +2268,8 @@ int vfs_unlink(struct inode *dir, struct dentry *dentry) + if (!dir->i_op->unlink) + return -EPERM; + ++ vfs_check_frozen(dir->i_sb, SB_FREEZE_WRITE); ++ + vfs_dq_init(dir); + + mutex_lock(&dentry->d_inode->i_mutex); +diff --git a/fs/super.c b/fs/super.c +index aff046b..affb662 100644 +--- a/fs/super.c ++++ b/fs/super.c +@@ -42,6 +42,8 @@ + + + LIST_HEAD(super_blocks); ++EXPORT_SYMBOL_GPL(super_blocks); ++ + DEFINE_SPINLOCK(sb_lock); + + /** +diff --git a/include/linux/Kbuild b/include/linux/Kbuild +index 756f831..9953b39 100644 +--- a/include/linux/Kbuild ++++ b/include/linux/Kbuild +@@ -213,6 +213,7 @@ unifdef-y += filter.h + unifdef-y += flat.h + unifdef-y += futex.h + unifdef-y += fs.h ++unifdef-y += freezer.h + unifdef-y += gameport.h + unifdef-y += generic_serial.h + unifdef-y += hdlcdrv.h +diff --git a/include/linux/bio.h b/include/linux/bio.h +index 7fc5606..07e9b97 100644 +--- a/include/linux/bio.h ++++ b/include/linux/bio.h +@@ -175,8 +175,11 @@ enum bio_rw_flags { + BIO_RW_META, + BIO_RW_DISCARD, + BIO_RW_NOIDLE, ++ BIO_RW_TUXONICE, + }; + ++extern int trap_non_toi_io; ++ + /* + * First four bits must match between bio->bi_rw and rq->cmd_flags, make + * that explicit here. +diff --git a/include/linux/freezer.h b/include/linux/freezer.h +index 5a361f8..a66f2a9 100644 +--- a/include/linux/freezer.h ++++ b/include/linux/freezer.h +@@ -121,6 +121,19 @@ static inline void set_freezable(void) + current->flags &= ~PF_NOFREEZE; + } + ++extern int freezer_state; ++#define FREEZER_OFF 0 ++#define FREEZER_FILESYSTEMS_FROZEN 1 ++#define FREEZER_USERSPACE_FROZEN 2 ++#define FREEZER_FULLY_ON 3 ++ ++static inline int freezer_is_on(void) ++{ ++ return freezer_state == FREEZER_FULLY_ON; ++} ++ ++extern void thaw_kernel_threads(void); ++ + /* + * Tell the freezer that the current task should be frozen by it and that it + * should send a fake signal to the task to freeze it. +@@ -172,6 +185,8 @@ static inline int freeze_processes(void) { BUG(); return 0; } + static inline void thaw_processes(void) {} + + static inline int try_to_freeze(void) { return 0; } ++static inline int freezer_is_on(void) { return 0; } ++static inline void thaw_kernel_threads(void) { } + + static inline void freezer_do_not_count(void) {} + static inline void freezer_count(void) {} +diff --git a/include/linux/fs.h b/include/linux/fs.h +index ebb1cd5..e30e318 100644 +--- a/include/linux/fs.h ++++ b/include/linux/fs.h +@@ -173,6 +173,7 @@ struct inodes_stat_t { + #define FS_REQUIRES_DEV 1 + #define FS_BINARY_MOUNTDATA 2 + #define FS_HAS_SUBTYPE 4 ++#define FS_IS_FUSE 8 /* Fuse filesystem - bdev freeze these too */ + #define FS_REVAL_DOT 16384 /* Check the paths ".", ".." for staleness */ + #define FS_RENAME_DOES_D_MOVE 32768 /* FS will handle d_move() + * during rename() internally. +@@ -206,6 +207,7 @@ struct inodes_stat_t { + #define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */ + #define MS_I_VERSION (1<<23) /* Update inode I_version field */ + #define MS_STRICTATIME (1<<24) /* Always perform atime updates */ ++#define MS_FROZEN (1<<25) /* Frozen by freeze_filesystems() */ + #define MS_ACTIVE (1<<30) + #define MS_NOUSER (1<<31) + +@@ -232,6 +234,8 @@ struct inodes_stat_t { + #define S_NOCMTIME 128 /* Do not update file c/mtime */ + #define S_SWAPFILE 256 /* Do not truncate: swapon got its bmaps */ + #define S_PRIVATE 512 /* Inode is fs-internal */ ++#define S_ATOMIC_COPY 1024 /* Pages mapped with this inode need to be ++ atomically copied (gem) */ + + /* + * Note that nosuid etc flags are inode-specific: setting some file-system +@@ -379,6 +383,7 @@ struct inodes_stat_t { + #include + #include + #include ++#include + + #include + #include +@@ -1391,8 +1396,11 @@ enum { + SB_FREEZE_TRANS = 2, + }; + +-#define vfs_check_frozen(sb, level) \ +- wait_event((sb)->s_wait_unfrozen, ((sb)->s_frozen < (level))) ++#define vfs_check_frozen(sb, level) do { \ ++ freezer_do_not_count(); \ ++ wait_event((sb)->s_wait_unfrozen, ((sb)->s_frozen < (level))); \ ++ freezer_count(); \ ++} while (0) + + #define get_fs_excl() atomic_inc(¤t->fs_excl) + #define put_fs_excl() atomic_dec(¤t->fs_excl) +@@ -1947,6 +1955,13 @@ extern struct super_block *freeze_bdev(struct block_device *); + extern void emergency_thaw_all(void); + extern int thaw_bdev(struct block_device *bdev, struct super_block *sb); + extern int fsync_bdev(struct block_device *); ++extern int fsync_super(struct super_block *); ++extern int fsync_no_super(struct block_device *); ++#define FS_FREEZER_FUSE 1 ++#define FS_FREEZER_NORMAL 2 ++#define FS_FREEZER_ALL (FS_FREEZER_FUSE | FS_FREEZER_NORMAL) ++void freeze_filesystems(int which); ++void thaw_filesystems(int which); + #else + static inline void bd_forget(struct inode *inode) {} + static inline int sync_blockdev(struct block_device *bdev) { return 0; } +diff --git a/include/linux/mm.h b/include/linux/mm.h +index 60c467b..1e722c2 100644 +--- a/include/linux/mm.h ++++ b/include/linux/mm.h +@@ -97,6 +97,7 @@ extern unsigned int kobjsize(const void *objp); + #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */ + #define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */ + #define VM_MAPPED_COPY 0x01000000 /* T if mapped copy of data (nommu mmap) */ ++#define VM_ATOMIC_COPY 0x01000000 /* TOI should do atomic copy (mmu) */ + #define VM_INSERTPAGE 0x02000000 /* The vma has had "vm_insert_page()" done on it */ + #define VM_ALWAYSDUMP 0x04000000 /* Always include in core dumps */ + +@@ -1309,6 +1310,7 @@ int drop_caches_sysctl_handler(struct ctl_table *, int, + void __user *, size_t *, loff_t *); + unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask, + unsigned long lru_pages); ++void drop_pagecache(void); + + #ifndef CONFIG_MMU + #define randomize_va_space 0 +diff --git a/include/linux/netlink.h b/include/linux/netlink.h +index fde27c0..0d86cc7 100644 +--- a/include/linux/netlink.h ++++ b/include/linux/netlink.h +@@ -24,6 +24,8 @@ + /* leave room for NETLINK_DM (DM Events) */ + #define NETLINK_SCSITRANSPORT 18 /* SCSI Transports */ + #define NETLINK_ECRYPTFS 19 ++#define NETLINK_TOI_USERUI 20 /* TuxOnIce's userui */ ++#define NETLINK_TOI_USM 21 /* Userspace storage manager */ + + #define MAX_LINKS 32 + +diff --git a/include/linux/suspend.h b/include/linux/suspend.h +index 5e781d8..a1c07f3 100644 +--- a/include/linux/suspend.h ++++ b/include/linux/suspend.h +@@ -329,4 +329,70 @@ static inline void unlock_system_sleep(void) + } + #endif + ++enum { ++ TOI_CAN_HIBERNATE, ++ TOI_CAN_RESUME, ++ TOI_RESUME_DEVICE_OK, ++ TOI_NORESUME_SPECIFIED, ++ TOI_SANITY_CHECK_PROMPT, ++ TOI_CONTINUE_REQ, ++ TOI_RESUMED_BEFORE, ++ TOI_BOOT_TIME, ++ TOI_NOW_RESUMING, ++ TOI_IGNORE_LOGLEVEL, ++ TOI_TRYING_TO_RESUME, ++ TOI_LOADING_ALT_IMAGE, ++ TOI_STOP_RESUME, ++ TOI_IO_STOPPED, ++ TOI_NOTIFIERS_PREPARE, ++ TOI_CLUSTER_MODE, ++ TOI_BOOT_KERNEL, ++}; ++ ++#ifdef CONFIG_TOI ++ ++/* Used in init dir files */ ++extern unsigned long toi_state; ++#define set_toi_state(bit) (set_bit(bit, &toi_state)) ++#define clear_toi_state(bit) (clear_bit(bit, &toi_state)) ++#define test_toi_state(bit) (test_bit(bit, &toi_state)) ++extern int toi_running; ++ ++#define test_action_state(bit) (test_bit(bit, &toi_bkd.toi_action)) ++extern int try_tuxonice_hibernate(void); ++ ++#else /* !CONFIG_TOI */ ++ ++#define toi_state (0) ++#define set_toi_state(bit) do { } while (0) ++#define clear_toi_state(bit) do { } while (0) ++#define test_toi_state(bit) (0) ++#define toi_running (0) ++ ++static inline int try_tuxonice_hibernate(void) { return 0; } ++#define test_action_state(bit) (0) ++ ++#endif /* CONFIG_TOI */ ++ ++#ifdef CONFIG_HIBERNATION ++#ifdef CONFIG_TOI ++extern void try_tuxonice_resume(void); ++#else ++#define try_tuxonice_resume() do { } while (0) ++#endif ++ ++extern int resume_attempted; ++extern int software_resume(void); ++ ++static inline void check_resume_attempted(void) ++{ ++ if (resume_attempted) ++ return; ++ ++ software_resume(); ++} ++#else ++#define check_resume_attempted() do { } while (0) ++#define resume_attempted (0) ++#endif + #endif /* _LINUX_SUSPEND_H */ +diff --git a/include/linux/swap.h b/include/linux/swap.h +index a2602a8..06c4630 100644 +--- a/include/linux/swap.h ++++ b/include/linux/swap.h +@@ -196,6 +196,7 @@ struct swap_list_t { + extern unsigned long totalram_pages; + extern unsigned long totalreserve_pages; + extern unsigned int nr_free_buffer_pages(void); ++extern unsigned int nr_unallocated_buffer_pages(void); + extern unsigned int nr_free_pagecache_pages(void); + + /* Definition of global_page_state not available yet */ +@@ -325,8 +326,10 @@ extern void swapcache_free(swp_entry_t, struct page *page); + extern int free_swap_and_cache(swp_entry_t); + extern int swap_type_of(dev_t, sector_t, struct block_device **); + extern unsigned int count_swap_pages(int, int); ++extern sector_t map_swap_entry(swp_entry_t entry, struct block_device **); + extern sector_t map_swap_page(struct page *, struct block_device **); + extern sector_t swapdev_block(int, pgoff_t); ++extern struct swap_info_struct *get_swap_info_struct(unsigned); + extern int reuse_swap_page(struct page *); + extern int try_to_free_swap(struct page *); + struct backing_dev_info; +diff --git a/include/linux/uuid.h b/include/linux/uuid.h +new file mode 100644 +index 0000000..a968f0f +--- /dev/null ++++ b/include/linux/uuid.h +@@ -0,0 +1,18 @@ ++#include ++ ++struct hd_struct; ++struct block_device; ++ ++struct fs_info { ++ char uuid[16]; ++ char *last_mount; ++ int last_mount_size; ++}; ++ ++int part_matches_uuid(struct hd_struct *part, const char *uuid); ++dev_t blk_lookup_uuid(const char *uuid); ++struct fs_info *fs_info_from_block_dev(struct block_device *bdev); ++void free_fs_info(struct fs_info *fs_info); ++int bdev_matches_key(struct block_device *bdev, const char *key); ++struct block_device *next_bdev_of_type(struct block_device *last, ++ const char *key); +diff --git a/init/do_mounts.c b/init/do_mounts.c +index bb008d0..5273dc9 100644 +--- a/init/do_mounts.c ++++ b/init/do_mounts.c +@@ -143,6 +143,7 @@ fail: + done: + return res; + } ++EXPORT_SYMBOL_GPL(name_to_dev_t); + + static int __init root_dev_setup(char *line) + { +@@ -413,6 +414,8 @@ void __init prepare_namespace(void) + if (is_floppy && rd_doload && rd_load_disk(0)) + ROOT_DEV = Root_RAM0; + ++ check_resume_attempted(); ++ + mount_root(); + out: + devtmpfs_mount("dev"); +diff --git a/init/do_mounts_initrd.c b/init/do_mounts_initrd.c +index 614241b..f3ea292 100644 +--- a/init/do_mounts_initrd.c ++++ b/init/do_mounts_initrd.c +@@ -6,6 +6,7 @@ + #include + #include + #include ++#include + #include + + #include "do_mounts.h" +@@ -68,6 +69,11 @@ static void __init handle_initrd(void) + + current->flags &= ~PF_FREEZER_SKIP; + ++ if (!resume_attempted) ++ printk(KERN_ERR "TuxOnIce: No attempt was made to resume from " ++ "any image that might exist.\n"); ++ clear_toi_state(TOI_BOOT_TIME); ++ + /* move initrd to rootfs' /old */ + sys_fchdir(old_fd); + sys_mount("/", ".", NULL, MS_MOVE, NULL); +diff --git a/init/main.c b/init/main.c +index 4cb47a1..36eac80 100644 +--- a/init/main.c ++++ b/init/main.c +@@ -116,6 +116,7 @@ extern void softirq_init(void); + char __initdata boot_command_line[COMMAND_LINE_SIZE]; + /* Untouched saved command line (eg. for /proc) */ + char *saved_command_line; ++EXPORT_SYMBOL_GPL(saved_command_line); + /* Command line for parameter parsing */ + static char *static_command_line; + +diff --git a/kernel/cpu.c b/kernel/cpu.c +index 677f253..aad27c8 100644 +--- a/kernel/cpu.c ++++ b/kernel/cpu.c +@@ -402,6 +402,7 @@ int disable_nonboot_cpus(void) + stop_machine_destroy(); + return error; + } ++EXPORT_SYMBOL_GPL(disable_nonboot_cpus); + + void __weak arch_enable_nonboot_cpus_begin(void) + { +@@ -440,6 +441,7 @@ void __ref enable_nonboot_cpus(void) + out: + cpu_maps_update_done(); + } ++EXPORT_SYMBOL_GPL(enable_nonboot_cpus); + + static int alloc_frozen_cpus(void) + { +diff --git a/kernel/fork.c b/kernel/fork.c +index f88bd98..17bbf09 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -86,6 +86,7 @@ int max_threads; /* tunable limit on nr_threads */ + DEFINE_PER_CPU(unsigned long, process_counts) = 0; + + __cacheline_aligned DEFINE_RWLOCK(tasklist_lock); /* outer */ ++EXPORT_SYMBOL_GPL(tasklist_lock); + + int nr_processes(void) + { +diff --git a/kernel/kmod.c b/kernel/kmod.c +index bf0e231..de63918 100644 +--- a/kernel/kmod.c ++++ b/kernel/kmod.c +@@ -326,6 +326,7 @@ int usermodehelper_disable(void) + usermodehelper_disabled = 0; + return -EAGAIN; + } ++EXPORT_SYMBOL_GPL(usermodehelper_disable); + + /** + * usermodehelper_enable - allow new helpers to be started again +@@ -334,6 +335,7 @@ void usermodehelper_enable(void) + { + usermodehelper_disabled = 0; + } ++EXPORT_SYMBOL_GPL(usermodehelper_enable); + + static void helper_lock(void) + { +diff --git a/kernel/pid.c b/kernel/pid.c +index 2e17c9c..f83eb67 100644 +--- a/kernel/pid.c ++++ b/kernel/pid.c +@@ -382,6 +382,7 @@ struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns) + { + return pid_task(find_pid_ns(nr, ns), PIDTYPE_PID); + } ++EXPORT_SYMBOL_GPL(find_task_by_pid_ns); + + struct task_struct *find_task_by_vpid(pid_t vnr) + { +diff --git a/kernel/power/Kconfig b/kernel/power/Kconfig +index 91e09d3..733ff64 100644 +--- a/kernel/power/Kconfig ++++ b/kernel/power/Kconfig +@@ -38,6 +38,13 @@ config CAN_PM_TRACE + def_bool y + depends on PM_DEBUG && PM_SLEEP && EXPERIMENTAL + ++config FS_FREEZER_DEBUG ++ bool "Filesystem freezer debugging" ++ depends on PM_DEBUG ++ default n ++ ---help--- ++ This option enables debugging of the filesystem freezing code. ++ + config PM_TRACE + bool + help +@@ -183,6 +190,238 @@ config PM_STD_PARTITION + suspended image to. It will simply pick the first available swap + device. + ++menuconfig TOI_CORE ++ tristate "Enhanced Hibernation (TuxOnIce)" ++ depends on HIBERNATION ++ default y ++ ---help--- ++ TuxOnIce is the 'new and improved' suspend support. ++ ++ See the TuxOnIce home page (tuxonice.net) ++ for FAQs, HOWTOs and other documentation. ++ ++ comment "Image Storage (you need at least one allocator)" ++ depends on TOI_CORE ++ ++ config TOI_FILE ++ tristate "File Allocator" ++ depends on TOI_CORE ++ default y ++ ---help--- ++ This option enables support for storing an image in a ++ simple file. You might want this if your swap is ++ sometimes full enough that you don't have enough spare ++ space to store an image. ++ ++ config TOI_SWAP ++ tristate "Swap Allocator" ++ depends on TOI_CORE && SWAP ++ default y ++ ---help--- ++ This option enables support for storing an image in your ++ swap space. ++ ++ comment "General Options" ++ depends on TOI_CORE ++ ++ config TOI_CRYPTO ++ tristate "Compression support" ++ depends on TOI_CORE && CRYPTO ++ default y ++ ---help--- ++ This option adds support for using cryptoapi compression ++ algorithms. Compression is particularly useful as it can ++ more than double your suspend and resume speed (depending ++ upon how well your image compresses). ++ ++ You probably want this, so say Y here. ++ ++ comment "No compression support available without Cryptoapi support." ++ depends on TOI_CORE && !CRYPTO ++ ++ config TOI_USERUI ++ tristate "Userspace User Interface support" ++ depends on TOI_CORE && NET && (VT || SERIAL_CONSOLE) ++ default y ++ ---help--- ++ This option enabled support for a userspace based user interface ++ to TuxOnIce, which allows you to have a nice display while suspending ++ and resuming, and also enables features such as pressing escape to ++ cancel a cycle or interactive debugging. ++ ++ config TOI_USERUI_DEFAULT_PATH ++ string "Default userui program location" ++ default "/usr/local/sbin/tuxoniceui_text" ++ depends on TOI_USERUI ++ ---help--- ++ This entry allows you to specify a default path to the userui binary. ++ ++ config TOI_KEEP_IMAGE ++ bool "Allow Keep Image Mode" ++ depends on TOI_CORE ++ ---help--- ++ This option allows you to keep and image and reuse it. It is intended ++ __ONLY__ for use with systems where all filesystems are mounted read- ++ only (kiosks, for example). To use it, compile this option in and boot ++ normally. Set the KEEP_IMAGE flag in /sys/power/tuxonice and suspend. ++ When you resume, the image will not be removed. You will be unable to turn ++ off swap partitions (assuming you are using the swap allocator), but future ++ suspends simply do a power-down. The image can be updated using the ++ kernel command line parameter suspend_act= to turn off the keep image ++ bit. Keep image mode is a little less user friendly on purpose - it ++ should not be used without thought! ++ ++ config TOI_REPLACE_SWSUSP ++ bool "Replace swsusp by default" ++ default y ++ depends on TOI_CORE ++ ---help--- ++ TuxOnIce can replace swsusp. This option makes that the default state, ++ requiring you to echo 0 > /sys/power/tuxonice/replace_swsusp if you want ++ to use the vanilla kernel functionality. Note that your initrd/ramfs will ++ need to do this before trying to resume, too. ++ With overriding swsusp enabled, echoing disk to /sys/power/state will ++ start a TuxOnIce cycle. If resume= doesn't specify an allocator and both ++ the swap and file allocators are compiled in, the swap allocator will be ++ used by default. ++ ++ config TOI_IGNORE_LATE_INITCALL ++ bool "Wait for initrd/ramfs to run, by default" ++ default n ++ depends on TOI_CORE ++ ---help--- ++ When booting, TuxOnIce can check for an image and start to resume prior ++ to any initrd/ramfs running (via a late initcall). ++ ++ If you don't have an initrd/ramfs, this is what you want to happen - ++ otherwise you won't be able to safely resume. You should set this option ++ to 'No'. ++ ++ If, however, you want your initrd/ramfs to run anyway before resuming, ++ you need to tell TuxOnIce to ignore that earlier opportunity to resume. ++ This can be done either by using this compile time option, or by ++ overriding this option with the boot-time parameter toi_initramfs_resume_only=1. ++ ++ Note that if TuxOnIce can't resume at the earlier opportunity, the ++ value of this option won't matter - the initramfs/initrd (if any) will ++ run anyway. ++ ++ menuconfig TOI_CLUSTER ++ tristate "Cluster support" ++ default n ++ depends on TOI_CORE && NET && BROKEN ++ ---help--- ++ Support for linking multiple machines in a cluster so that they suspend ++ and resume together. ++ ++ config TOI_DEFAULT_CLUSTER_INTERFACE ++ string "Default cluster interface" ++ depends on TOI_CLUSTER ++ ---help--- ++ The default interface on which to communicate with other nodes in ++ the cluster. ++ ++ If no value is set here, cluster support will be disabled by default. ++ ++ config TOI_DEFAULT_CLUSTER_KEY ++ string "Default cluster key" ++ default "Default" ++ depends on TOI_CLUSTER ++ ---help--- ++ The default key used by this node. All nodes in the same cluster ++ have the same key. Multiple clusters may coexist on the same lan ++ by using different values for this key. ++ ++ config TOI_CLUSTER_IMAGE_TIMEOUT ++ int "Timeout when checking for image" ++ default 15 ++ depends on TOI_CLUSTER ++ ---help--- ++ Timeout (seconds) before continuing to boot when waiting to see ++ whether other nodes might have an image. Set to -1 to wait ++ indefinitely. In WAIT_UNTIL_NODES is non zero, we might continue ++ booting sooner than this timeout. ++ ++ config TOI_CLUSTER_WAIT_UNTIL_NODES ++ int "Nodes without image before continuing" ++ default 0 ++ depends on TOI_CLUSTER ++ ---help--- ++ When booting and no image is found, we wait to see if other nodes ++ have an image before continuing to boot. This value lets us ++ continue after seeing a certain number of nodes without an image, ++ instead of continuing to wait for the timeout. Set to 0 to only ++ use the timeout. ++ ++ config TOI_DEFAULT_CLUSTER_PRE_HIBERNATE ++ string "Default pre-hibernate script" ++ depends on TOI_CLUSTER ++ ---help--- ++ The default script to be called when starting to hibernate. ++ ++ config TOI_DEFAULT_CLUSTER_POST_HIBERNATE ++ string "Default post-hibernate script" ++ depends on TOI_CLUSTER ++ ---help--- ++ The default script to be called after resuming from hibernation. ++ ++ config TOI_DEFAULT_WAIT ++ int "Default waiting time for emergency boot messages" ++ default "25" ++ range -1 32768 ++ depends on TOI_CORE ++ help ++ TuxOnIce can display warnings very early in the process of resuming, ++ if (for example) it appears that you have booted a kernel that doesn't ++ match an image on disk. It can then give you the opportunity to either ++ continue booting that kernel, or reboot the machine. This option can be ++ used to control how long to wait in such circumstances. -1 means wait ++ forever. 0 means don't wait at all (do the default action, which will ++ generally be to continue booting and remove the image). Values of 1 or ++ more indicate a number of seconds (up to 255) to wait before doing the ++ default. ++ ++ config TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE ++ int "Default extra pages allowance" ++ default "2000" ++ range 500 32768 ++ depends on TOI_CORE ++ help ++ This value controls the default for the allowance TuxOnIce makes for ++ drivers to allocate extra memory during the atomic copy. The default ++ value of 2000 will be okay in most cases. If you are using ++ DRI, the easiest way to find what value to use is to try to hibernate ++ and look at how many pages were actually needed in the sysfs entry ++ /sys/power/tuxonice/debug_info (first number on the last line), adding ++ a little extra because the value is not always the same. ++ ++ config TOI_CHECKSUM ++ bool "Checksum pageset2" ++ default n ++ depends on TOI_CORE ++ select CRYPTO ++ select CRYPTO_ALGAPI ++ select CRYPTO_MD4 ++ ---help--- ++ Adds support for checksumming pageset2 pages, to ensure you really get an ++ atomic copy. Since some filesystems (XFS especially) change metadata even ++ when there's no other activity, we need this to check for pages that have ++ been changed while we were saving the page cache. If your debugging output ++ always says no pages were resaved, you may be able to safely disable this ++ option. ++ ++config TOI ++ bool ++ depends on TOI_CORE!=n ++ default y ++ ++config TOI_EXPORTS ++ bool ++ depends on TOI_SWAP=m || TOI_FILE=m || \ ++ TOI_CRYPTO=m || TOI_CLUSTER=m || \ ++ TOI_USERUI=m || TOI_CORE=m ++ default y ++ + config APM_EMULATION + tristate "Advanced Power Management Emulation" + depends on PM && SYS_SUPPORTS_APM_EMULATION +diff --git a/kernel/power/Makefile b/kernel/power/Makefile +index 4319181..18c4733 100644 +--- a/kernel/power/Makefile ++++ b/kernel/power/Makefile +@@ -3,6 +3,35 @@ ifeq ($(CONFIG_PM_DEBUG),y) + EXTRA_CFLAGS += -DDEBUG + endif + ++tuxonice_core-y := tuxonice_modules.o ++ ++obj-$(CONFIG_TOI) += tuxonice_builtin.o ++ ++tuxonice_core-$(CONFIG_PM_DEBUG) += tuxonice_alloc.o ++ ++# Compile these in after allocation debugging, if used. ++ ++tuxonice_core-y += tuxonice_sysfs.o tuxonice_highlevel.o \ ++ tuxonice_io.o tuxonice_pagedir.o tuxonice_prepare_image.o \ ++ tuxonice_extent.o tuxonice_pageflags.o tuxonice_ui.o \ ++ tuxonice_power_off.o tuxonice_atomic_copy.o ++ ++tuxonice_core-$(CONFIG_TOI_CHECKSUM) += tuxonice_checksum.o ++ ++tuxonice_core-$(CONFIG_NET) += tuxonice_storage.o tuxonice_netlink.o ++ ++obj-$(CONFIG_TOI_CORE) += tuxonice_core.o ++obj-$(CONFIG_TOI_CRYPTO) += tuxonice_compress.o ++ ++tuxonice_bio-y := tuxonice_bio_core.o tuxonice_bio_chains.o \ ++ tuxonice_bio_signature.o ++ ++obj-$(CONFIG_TOI_SWAP) += tuxonice_bio.o tuxonice_swap.o ++obj-$(CONFIG_TOI_FILE) += tuxonice_bio.o tuxonice_file.o ++obj-$(CONFIG_TOI_CLUSTER) += tuxonice_cluster.o ++ ++obj-$(CONFIG_TOI_USERUI) += tuxonice_userui.o ++ + obj-$(CONFIG_PM) += main.o + obj-$(CONFIG_PM_SLEEP) += console.o + obj-$(CONFIG_FREEZER) += process.o +diff --git a/kernel/power/console.c b/kernel/power/console.c +index 218e5af..95a6bdc 100644 +--- a/kernel/power/console.c ++++ b/kernel/power/console.c +@@ -24,6 +24,7 @@ int pm_prepare_console(void) + orig_kmsg = vt_kmsg_redirect(SUSPEND_CONSOLE); + return 0; + } ++EXPORT_SYMBOL_GPL(pm_prepare_console); + + void pm_restore_console(void) + { +@@ -32,4 +33,5 @@ void pm_restore_console(void) + vt_kmsg_redirect(orig_kmsg); + } + } ++EXPORT_SYMBOL_GPL(pm_restore_console); + #endif +diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c +index bbfe472..07c550b 100644 +--- a/kernel/power/hibernate.c ++++ b/kernel/power/hibernate.c +@@ -25,11 +25,12 @@ + #include + #include + +-#include "power.h" ++#include "tuxonice.h" + + + static int noresume = 0; +-static char resume_file[256] = CONFIG_PM_STD_PARTITION; ++char resume_file[256] = CONFIG_PM_STD_PARTITION; ++EXPORT_SYMBOL_GPL(resume_file); + dev_t swsusp_resume_device; + sector_t swsusp_resume_block; + int in_suspend __nosavedata = 0; +@@ -116,55 +117,60 @@ static int hibernation_test(int level) { return 0; } + * hibernation + */ + +-static int platform_begin(int platform_mode) ++int platform_begin(int platform_mode) + { + return (platform_mode && hibernation_ops) ? + hibernation_ops->begin() : 0; + } ++EXPORT_SYMBOL_GPL(platform_begin); + + /** + * platform_end - tell the platform driver that we've entered the + * working state + */ + +-static void platform_end(int platform_mode) ++void platform_end(int platform_mode) + { + if (platform_mode && hibernation_ops) + hibernation_ops->end(); + } ++EXPORT_SYMBOL_GPL(platform_end); + + /** + * platform_pre_snapshot - prepare the machine for hibernation using the + * platform driver if so configured and return an error code if it fails + */ + +-static int platform_pre_snapshot(int platform_mode) ++int platform_pre_snapshot(int platform_mode) + { + return (platform_mode && hibernation_ops) ? + hibernation_ops->pre_snapshot() : 0; + } ++EXPORT_SYMBOL_GPL(platform_pre_snapshot); + + /** + * platform_leave - prepare the machine for switching to the normal mode + * of operation using the platform driver (called with interrupts disabled) + */ + +-static void platform_leave(int platform_mode) ++void platform_leave(int platform_mode) + { + if (platform_mode && hibernation_ops) + hibernation_ops->leave(); + } ++EXPORT_SYMBOL_GPL(platform_leave); + + /** + * platform_finish - switch the machine to the normal mode of operation + * using the platform driver (must be called after platform_prepare()) + */ + +-static void platform_finish(int platform_mode) ++void platform_finish(int platform_mode) + { + if (platform_mode && hibernation_ops) + hibernation_ops->finish(); + } ++EXPORT_SYMBOL_GPL(platform_finish); + + /** + * platform_pre_restore - prepare the platform for the restoration from a +@@ -172,11 +178,12 @@ static void platform_finish(int platform_mode) + * called, platform_restore_cleanup() must be called. + */ + +-static int platform_pre_restore(int platform_mode) ++int platform_pre_restore(int platform_mode) + { + return (platform_mode && hibernation_ops) ? + hibernation_ops->pre_restore() : 0; + } ++EXPORT_SYMBOL_GPL(platform_pre_restore); + + /** + * platform_restore_cleanup - switch the platform to the normal mode of +@@ -185,22 +192,24 @@ static int platform_pre_restore(int platform_mode) + * regardless of the result of platform_pre_restore(). + */ + +-static void platform_restore_cleanup(int platform_mode) ++void platform_restore_cleanup(int platform_mode) + { + if (platform_mode && hibernation_ops) + hibernation_ops->restore_cleanup(); + } ++EXPORT_SYMBOL_GPL(platform_restore_cleanup); + + /** + * platform_recover - recover the platform from a failure to suspend + * devices. + */ + +-static void platform_recover(int platform_mode) ++void platform_recover(int platform_mode) + { + if (platform_mode && hibernation_ops && hibernation_ops->recover) + hibernation_ops->recover(); + } ++EXPORT_SYMBOL_GPL(platform_recover); + + /** + * swsusp_show_speed - print the time elapsed between two events. +@@ -525,6 +534,7 @@ int hibernation_platform_enter(void) + + return error; + } ++EXPORT_SYMBOL_GPL(hibernation_platform_enter); + + /** + * power_down - Shut the machine down for hibernation. +@@ -576,6 +586,9 @@ int hibernate(void) + { + int error; + ++ if (test_action_state(TOI_REPLACE_SWSUSP)) ++ return try_tuxonice_hibernate(); ++ + mutex_lock(&pm_mutex); + /* The snapshot device should not be opened while we're running */ + if (!atomic_add_unless(&snapshot_device_available, -1, 0)) { +@@ -656,11 +669,19 @@ int hibernate(void) + * + */ + +-static int software_resume(void) ++int software_resume(void) + { + int error; + unsigned int flags; + ++ resume_attempted = 1; ++ ++ /* ++ * We can't know (until an image header - if any - is loaded), whether ++ * we did override swsusp. We therefore ensure that both are tried. ++ */ ++ try_tuxonice_resume(); ++ + /* + * If the user said "noresume".. bail out early. + */ +@@ -989,6 +1010,7 @@ static int __init resume_offset_setup(char *str) + static int __init noresume_setup(char *str) + { + noresume = 1; ++ set_toi_state(TOI_NORESUME_SPECIFIED); + return 1; + } + +diff --git a/kernel/power/main.c b/kernel/power/main.c +index 0998c71..9509733 100644 +--- a/kernel/power/main.c ++++ b/kernel/power/main.c +@@ -16,6 +16,7 @@ + #include "power.h" + + DEFINE_MUTEX(pm_mutex); ++EXPORT_SYMBOL_GPL(pm_mutex); + + unsigned int pm_flags; + EXPORT_SYMBOL(pm_flags); +@@ -24,7 +25,8 @@ EXPORT_SYMBOL(pm_flags); + + /* Routines for PM-transition notifications */ + +-static BLOCKING_NOTIFIER_HEAD(pm_chain_head); ++BLOCKING_NOTIFIER_HEAD(pm_chain_head); ++EXPORT_SYMBOL_GPL(pm_chain_head); + + int register_pm_notifier(struct notifier_block *nb) + { +@@ -43,6 +45,7 @@ int pm_notifier_call_chain(unsigned long val) + return (blocking_notifier_call_chain(&pm_chain_head, val, NULL) + == NOTIFY_BAD) ? -EINVAL : 0; + } ++EXPORT_SYMBOL_GPL(pm_notifier_call_chain); + + #ifdef CONFIG_PM_DEBUG + int pm_test_level = TEST_NONE; +@@ -110,6 +113,7 @@ power_attr(pm_test); + #endif /* CONFIG_PM_SLEEP */ + + struct kobject *power_kobj; ++EXPORT_SYMBOL_GPL(power_kobj); + + /** + * state - control system power state. +diff --git a/kernel/power/power.h b/kernel/power/power.h +index 46c5a26..d8c8f32 100644 +--- a/kernel/power/power.h ++++ b/kernel/power/power.h +@@ -31,8 +31,12 @@ static inline char *check_image_kernel(struct swsusp_info *info) + return arch_hibernation_header_restore(info) ? + "architecture specific data" : NULL; + } ++#else ++extern char *check_image_kernel(struct swsusp_info *info); + #endif /* CONFIG_ARCH_HIBERNATION_HEADER */ ++extern int init_header(struct swsusp_info *info); + ++extern char resume_file[256]; + /* + * Keep some memory free so that I/O operations can succeed without paging + * [Might this be more than 4 MB?] +@@ -49,6 +53,7 @@ static inline char *check_image_kernel(struct swsusp_info *info) + extern int hibernation_snapshot(int platform_mode); + extern int hibernation_restore(int platform_mode); + extern int hibernation_platform_enter(void); ++extern void platform_recover(int platform_mode); + #endif + + extern int pfn_is_nosave(unsigned long); +@@ -63,6 +68,8 @@ static struct kobj_attribute _name##_attr = { \ + .store = _name##_store, \ + } + ++extern struct pbe *restore_pblist; ++ + /* Preferred image size in bytes (default 500 MB) */ + extern unsigned long image_size; + extern int in_suspend; +@@ -236,3 +243,86 @@ static inline void suspend_thaw_processes(void) + { + } + #endif ++ ++extern struct page *saveable_page(struct zone *z, unsigned long p); ++#ifdef CONFIG_HIGHMEM ++extern struct page *saveable_highmem_page(struct zone *z, unsigned long p); ++#else ++static ++inline struct page *saveable_highmem_page(struct zone *z, unsigned long p) ++{ ++ return NULL; ++} ++#endif ++ ++#define PBES_PER_PAGE (PAGE_SIZE / sizeof(struct pbe)) ++extern struct list_head nosave_regions; ++ ++/** ++ * This structure represents a range of page frames the contents of which ++ * should not be saved during the suspend. ++ */ ++ ++struct nosave_region { ++ struct list_head list; ++ unsigned long start_pfn; ++ unsigned long end_pfn; ++}; ++ ++#ifndef PHYS_PFN_OFFSET ++#define PHYS_PFN_OFFSET 0 ++#endif ++ ++#define ZONE_START(thiszone) ((thiszone)->zone_start_pfn - PHYS_PFN_OFFSET) ++ ++#define BM_END_OF_MAP (~0UL) ++ ++#define BM_BITS_PER_BLOCK (PAGE_SIZE * BITS_PER_BYTE) ++ ++struct bm_block { ++ struct list_head hook; /* hook into a list of bitmap blocks */ ++ unsigned long start_pfn; /* pfn represented by the first bit */ ++ unsigned long end_pfn; /* pfn represented by the last bit plus 1 */ ++ unsigned long *data; /* bitmap representing pages */ ++}; ++ ++/* struct bm_position is used for browsing memory bitmaps */ ++ ++struct bm_position { ++ struct bm_block *block; ++ int bit; ++}; ++ ++struct memory_bitmap { ++ struct list_head blocks; /* list of bitmap blocks */ ++ struct linked_page *p_list; /* list of pages used to store zone ++ * bitmap objects and bitmap block ++ * objects ++ */ ++ struct bm_position cur; /* most recently used bit position */ ++ struct bm_position iter; /* most recently used bit position ++ * when iterating over a bitmap. ++ */ ++}; ++ ++extern int memory_bm_create(struct memory_bitmap *bm, gfp_t gfp_mask, ++ int safe_needed); ++extern void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free); ++extern void memory_bm_set_bit(struct memory_bitmap *bm, unsigned long pfn); ++extern void memory_bm_clear_bit(struct memory_bitmap *bm, unsigned long pfn); ++extern int memory_bm_test_bit(struct memory_bitmap *bm, unsigned long pfn); ++extern unsigned long memory_bm_next_pfn(struct memory_bitmap *bm); ++extern void memory_bm_position_reset(struct memory_bitmap *bm); ++extern void memory_bm_clear(struct memory_bitmap *bm); ++extern void memory_bm_copy(struct memory_bitmap *source, ++ struct memory_bitmap *dest); ++extern void memory_bm_dup(struct memory_bitmap *source, ++ struct memory_bitmap *dest); ++ ++#ifdef CONFIG_TOI ++struct toi_module_ops; ++extern int memory_bm_read(struct memory_bitmap *bm, int (*rw_chunk) ++ (int rw, struct toi_module_ops *owner, char *buffer, int buffer_size)); ++extern int memory_bm_write(struct memory_bitmap *bm, int (*rw_chunk) ++ (int rw, struct toi_module_ops *owner, char *buffer, int buffer_size)); ++#endif +diff --git a/kernel/power/process.c b/kernel/power/process.c +index 5ade1bd..e24a702 100644 +--- a/kernel/power/process.c ++++ b/kernel/power/process.c +@@ -15,6 +15,13 @@ + #include + #include + #include ++#include ++ ++int freezer_state; ++EXPORT_SYMBOL_GPL(freezer_state); ++ ++int freezer_sync; ++EXPORT_SYMBOL_GPL(freezer_sync); + + /* + * Timeout for stopping processes +@@ -93,7 +100,8 @@ static int try_to_freeze_tasks(bool sig_only) + do_each_thread(g, p) { + task_lock(p); + if (freezing(p) && !freezer_should_skip(p)) +- printk(KERN_ERR " %s\n", p->comm); ++ printk(KERN_ERR " %s (%d) failed to freeze.\n", ++ p->comm, p->pid); + cancel_freezing(p); + task_unlock(p); + } while_each_thread(g, p); +@@ -113,17 +121,26 @@ int freeze_processes(void) + { + int error; + +- printk("Freezing user space processes ... "); ++ printk(KERN_INFO "Stopping fuse filesystems.\n"); ++ freeze_filesystems(FS_FREEZER_FUSE); ++ freezer_state = FREEZER_FILESYSTEMS_FROZEN; ++ printk(KERN_INFO "Freezing user space processes ... "); + error = try_to_freeze_tasks(true); + if (error) + goto Exit; + printk("done.\n"); + +- printk("Freezing remaining freezable tasks ... "); ++ if (freezer_sync) ++ sys_sync(); ++ printk(KERN_INFO "Stopping normal filesystems.\n"); ++ freeze_filesystems(FS_FREEZER_NORMAL); ++ freezer_state = FREEZER_USERSPACE_FROZEN; ++ printk(KERN_INFO "Freezing remaining freezable tasks ... "); + error = try_to_freeze_tasks(false); + if (error) + goto Exit; + printk("done."); ++ freezer_state = FREEZER_FULLY_ON; + + oom_killer_disable(); + Exit: +@@ -132,6 +149,7 @@ int freeze_processes(void) + + return error; + } ++EXPORT_SYMBOL_GPL(freeze_processes); + + static void thaw_tasks(bool nosig_only) + { +@@ -155,12 +173,39 @@ static void thaw_tasks(bool nosig_only) + + void thaw_processes(void) + { ++ int old_state = freezer_state; ++ ++ if (old_state == FREEZER_OFF) ++ return; ++ ++ freezer_state = FREEZER_OFF; ++ + oom_killer_enable(); + ++ printk(KERN_INFO "Restarting all filesystems ...\n"); ++ thaw_filesystems(FS_FREEZER_ALL); ++ ++ printk(KERN_INFO "Restarting tasks ... "); ++ if (old_state == FREEZER_FULLY_ON) ++ thaw_tasks(true); ++ + printk("Restarting tasks ... "); +- thaw_tasks(true); + thaw_tasks(false); + schedule(); + printk("done.\n"); + } ++EXPORT_SYMBOL_GPL(thaw_processes); + ++void thaw_kernel_threads(void) ++{ ++ freezer_state = FREEZER_USERSPACE_FROZEN; ++ printk(KERN_INFO "Restarting normal filesystems.\n"); ++ thaw_filesystems(FS_FREEZER_NORMAL); ++ thaw_tasks(true); ++} ++ ++/* ++ * It's ugly putting this EXPORT down here, but it's necessary so that it ++ * doesn't matter whether the fs-freezing patch is applied or not. ++ */ ++EXPORT_SYMBOL_GPL(thaw_kernel_threads); +diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c +index 36cb168..7f6da8f 100644 +--- a/kernel/power/snapshot.c ++++ b/kernel/power/snapshot.c +@@ -34,6 +34,8 @@ + #include + + #include "power.h" ++#include "tuxonice_builtin.h" ++#include "tuxonice_pagedir.h" + + static int swsusp_page_is_free(struct page *); + static void swsusp_set_page_forbidden(struct page *); +@@ -53,6 +55,10 @@ unsigned long image_size = 500 * 1024 * 1024; + * directly to their "original" page frames. + */ + struct pbe *restore_pblist; ++EXPORT_SYMBOL_GPL(restore_pblist); ++ ++int resume_attempted; ++EXPORT_SYMBOL_GPL(resume_attempted); + + /* Pointer to an auxiliary buffer (1 page) */ + static void *buffer; +@@ -95,6 +101,9 @@ static void *get_image_page(gfp_t gfp_mask, int safe_needed) + + unsigned long get_safe_page(gfp_t gfp_mask) + { ++ if (toi_running) ++ return toi_get_nonconflicting_page(); ++ + return (unsigned long)get_image_page(gfp_mask, PG_SAFE); + } + +@@ -231,47 +240,22 @@ static void *chain_alloc(struct chain_allocator *ca, unsigned int size) + * the represented memory area. + */ + +-#define BM_END_OF_MAP (~0UL) +- +-#define BM_BITS_PER_BLOCK (PAGE_SIZE * BITS_PER_BYTE) +- +-struct bm_block { +- struct list_head hook; /* hook into a list of bitmap blocks */ +- unsigned long start_pfn; /* pfn represented by the first bit */ +- unsigned long end_pfn; /* pfn represented by the last bit plus 1 */ +- unsigned long *data; /* bitmap representing pages */ +-}; +- + static inline unsigned long bm_block_bits(struct bm_block *bb) + { + return bb->end_pfn - bb->start_pfn; + } + +-/* strcut bm_position is used for browsing memory bitmaps */ +- +-struct bm_position { +- struct bm_block *block; +- int bit; +-}; +- +-struct memory_bitmap { +- struct list_head blocks; /* list of bitmap blocks */ +- struct linked_page *p_list; /* list of pages used to store zone +- * bitmap objects and bitmap block +- * objects +- */ +- struct bm_position cur; /* most recently used bit position */ +-}; +- + /* Functions that operate on memory bitmaps */ + +-static void memory_bm_position_reset(struct memory_bitmap *bm) ++void memory_bm_position_reset(struct memory_bitmap *bm) + { + bm->cur.block = list_entry(bm->blocks.next, struct bm_block, hook); + bm->cur.bit = 0; +-} + +-static void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free); ++ bm->iter.block = list_entry(bm->blocks.next, struct bm_block, hook); ++ bm->iter.bit = 0; ++} ++EXPORT_SYMBOL_GPL(memory_bm_position_reset); + + /** + * create_bm_block_list - create a list of block bitmap objects +@@ -379,7 +363,7 @@ static int create_mem_extents(struct list_head *list, gfp_t gfp_mask) + /** + * memory_bm_create - allocate memory for a memory bitmap + */ +-static int ++int + memory_bm_create(struct memory_bitmap *bm, gfp_t gfp_mask, int safe_needed) + { + struct chain_allocator ca; +@@ -435,11 +419,12 @@ memory_bm_create(struct memory_bitmap *bm, gfp_t gfp_mask, int safe_needed) + memory_bm_free(bm, PG_UNSAFE_CLEAR); + goto Exit; + } ++EXPORT_SYMBOL_GPL(memory_bm_create); + + /** + * memory_bm_free - free memory occupied by the memory bitmap @bm + */ +-static void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free) ++void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free) + { + struct bm_block *bb; + +@@ -451,6 +436,7 @@ static void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free) + + INIT_LIST_HEAD(&bm->blocks); + } ++EXPORT_SYMBOL_GPL(memory_bm_free); + + /** + * memory_bm_find_bit - find the bit in the bitmap @bm that corresponds +@@ -489,7 +475,7 @@ static int memory_bm_find_bit(struct memory_bitmap *bm, unsigned long pfn, + return 0; + } + +-static void memory_bm_set_bit(struct memory_bitmap *bm, unsigned long pfn) ++void memory_bm_set_bit(struct memory_bitmap *bm, unsigned long pfn) + { + void *addr; + unsigned int bit; +@@ -499,6 +485,7 @@ static void memory_bm_set_bit(struct memory_bitmap *bm, unsigned long pfn) + BUG_ON(error); + set_bit(bit, addr); + } ++EXPORT_SYMBOL_GPL(memory_bm_set_bit); + + static int mem_bm_set_bit_check(struct memory_bitmap *bm, unsigned long pfn) + { +@@ -512,7 +499,7 @@ static int mem_bm_set_bit_check(struct memory_bitmap *bm, unsigned long pfn) + return error; + } + +-static void memory_bm_clear_bit(struct memory_bitmap *bm, unsigned long pfn) ++void memory_bm_clear_bit(struct memory_bitmap *bm, unsigned long pfn) + { + void *addr; + unsigned int bit; +@@ -522,8 +509,9 @@ static void memory_bm_clear_bit(struct memory_bitmap *bm, unsigned long pfn) + BUG_ON(error); + clear_bit(bit, addr); + } ++EXPORT_SYMBOL_GPL(memory_bm_clear_bit); + +-static int memory_bm_test_bit(struct memory_bitmap *bm, unsigned long pfn) ++int memory_bm_test_bit(struct memory_bitmap *bm, unsigned long pfn) + { + void *addr; + unsigned int bit; +@@ -533,6 +521,7 @@ static int memory_bm_test_bit(struct memory_bitmap *bm, unsigned long pfn) + BUG_ON(error); + return test_bit(bit, addr); + } ++EXPORT_SYMBOL_GPL(memory_bm_test_bit); + + static bool memory_bm_pfn_present(struct memory_bitmap *bm, unsigned long pfn) + { +@@ -551,43 +540,178 @@ static bool memory_bm_pfn_present(struct memory_bitmap *bm, unsigned long pfn) + * this function. + */ + +-static unsigned long memory_bm_next_pfn(struct memory_bitmap *bm) ++unsigned long memory_bm_next_pfn(struct memory_bitmap *bm) + { + struct bm_block *bb; + int bit; + +- bb = bm->cur.block; ++ bb = bm->iter.block; + do { +- bit = bm->cur.bit; ++ bit = bm->iter.bit; + bit = find_next_bit(bb->data, bm_block_bits(bb), bit); + if (bit < bm_block_bits(bb)) + goto Return_pfn; + + bb = list_entry(bb->hook.next, struct bm_block, hook); +- bm->cur.block = bb; +- bm->cur.bit = 0; ++ bm->iter.block = bb; ++ bm->iter.bit = 0; + } while (&bb->hook != &bm->blocks); + + memory_bm_position_reset(bm); + return BM_END_OF_MAP; + + Return_pfn: +- bm->cur.bit = bit + 1; ++ bm->iter.bit = bit + 1; + return bb->start_pfn + bit; + } ++EXPORT_SYMBOL_GPL(memory_bm_next_pfn); + +-/** +- * This structure represents a range of page frames the contents of which +- * should not be saved during the suspend. +- */ ++void memory_bm_clear(struct memory_bitmap *bm) ++{ ++ unsigned long pfn; + +-struct nosave_region { +- struct list_head list; +- unsigned long start_pfn; +- unsigned long end_pfn; +-}; ++ memory_bm_position_reset(bm); ++ pfn = memory_bm_next_pfn(bm); ++ while (pfn != BM_END_OF_MAP) { ++ memory_bm_clear_bit(bm, pfn); ++ pfn = memory_bm_next_pfn(bm); ++ } ++} ++EXPORT_SYMBOL_GPL(memory_bm_clear); ++ ++void memory_bm_copy(struct memory_bitmap *source, struct memory_bitmap *dest) ++{ ++ unsigned long pfn; ++ ++ memory_bm_position_reset(source); ++ pfn = memory_bm_next_pfn(source); ++ while (pfn != BM_END_OF_MAP) { ++ memory_bm_set_bit(dest, pfn); ++ pfn = memory_bm_next_pfn(source); ++ } ++} ++EXPORT_SYMBOL_GPL(memory_bm_copy); ++ ++void memory_bm_dup(struct memory_bitmap *source, struct memory_bitmap *dest) ++{ ++ memory_bm_clear(dest); ++ memory_bm_copy(source, dest); ++} ++EXPORT_SYMBOL_GPL(memory_bm_dup); ++ ++#ifdef CONFIG_TOI ++#define DEFINE_MEMORY_BITMAP(name) \ ++struct memory_bitmap *name; \ ++EXPORT_SYMBOL_GPL(name) ++ ++DEFINE_MEMORY_BITMAP(pageset1_map); ++DEFINE_MEMORY_BITMAP(pageset1_copy_map); ++DEFINE_MEMORY_BITMAP(pageset2_map); ++DEFINE_MEMORY_BITMAP(page_resave_map); ++DEFINE_MEMORY_BITMAP(io_map); ++DEFINE_MEMORY_BITMAP(nosave_map); ++DEFINE_MEMORY_BITMAP(free_map); ++ ++int memory_bm_write(struct memory_bitmap *bm, int (*rw_chunk) ++ (int rw, struct toi_module_ops *owner, char *buffer, int buffer_size)) ++{ ++ int result = 0; ++ unsigned int nr = 0; ++ struct bm_block *bb; ++ ++ if (!bm) ++ return result; + +-static LIST_HEAD(nosave_regions); ++ list_for_each_entry(bb, &bm->blocks, hook) ++ nr++; ++ ++ result = (*rw_chunk)(WRITE, NULL, (char *) &nr, sizeof(unsigned int)); ++ if (result) ++ return result; ++ ++ list_for_each_entry(bb, &bm->blocks, hook) { ++ result = (*rw_chunk)(WRITE, NULL, (char *) &bb->start_pfn, ++ 2 * sizeof(unsigned long)); ++ if (result) ++ return result; ++ ++ result = (*rw_chunk)(WRITE, NULL, (char *) bb->data, PAGE_SIZE); ++ if (result) ++ return result; ++ } ++ ++ return 0; ++} ++EXPORT_SYMBOL_GPL(memory_bm_write); ++ ++int memory_bm_read(struct memory_bitmap *bm, int (*rw_chunk) ++ (int rw, struct toi_module_ops *owner, char *buffer, int buffer_size)) ++{ ++ int result = 0; ++ unsigned int nr, i; ++ struct bm_block *bb; ++ ++ if (!bm) ++ return result; ++ ++ result = memory_bm_create(bm, GFP_KERNEL, 0); ++ ++ if (result) ++ return result; ++ ++ result = (*rw_chunk)(READ, NULL, (char *) &nr, sizeof(unsigned int)); ++ if (result) ++ goto Free; ++ ++ for (i = 0; i < nr; i++) { ++ unsigned long pfn; ++ ++ result = (*rw_chunk)(READ, NULL, (char *) &pfn, ++ sizeof(unsigned long)); ++ if (result) ++ goto Free; ++ ++ list_for_each_entry(bb, &bm->blocks, hook) ++ if (bb->start_pfn == pfn) ++ break; ++ ++ if (&bb->hook == &bm->blocks) { ++ printk(KERN_ERR ++ "TuxOnIce: Failed to load memory bitmap.\n"); ++ result = -EINVAL; ++ goto Free; ++ } ++ ++ result = (*rw_chunk)(READ, NULL, (char *) &pfn, ++ sizeof(unsigned long)); ++ if (result) ++ goto Free; ++ ++ if (pfn != bb->end_pfn) { ++ printk(KERN_ERR ++ "TuxOnIce: Failed to load memory bitmap. " ++ "End PFN doesn't match what was saved.\n"); ++ result = -EINVAL; ++ goto Free; ++ } ++ ++ result = (*rw_chunk)(READ, NULL, (char *) bb->data, PAGE_SIZE); ++ ++ if (result) ++ goto Free; ++ } ++ ++ return 0; ++ ++Free: ++ memory_bm_free(bm, PG_ANY); ++ return result; ++} ++EXPORT_SYMBOL_GPL(memory_bm_read); ++#endif ++ ++LIST_HEAD(nosave_regions); ++EXPORT_SYMBOL_GPL(nosave_regions); + + /** + * register_nosave_region - register a range of page frames the contents +@@ -823,7 +947,7 @@ static unsigned int count_free_highmem_pages(void) + * We should save the page if it isn't Nosave or NosaveFree, or Reserved, + * and it isn't a part of a free chunk of pages. + */ +-static struct page *saveable_highmem_page(struct zone *zone, unsigned long pfn) ++struct page *saveable_highmem_page(struct zone *zone, unsigned long pfn) + { + struct page *page; + +@@ -842,6 +966,7 @@ static struct page *saveable_highmem_page(struct zone *zone, unsigned long pfn) + + return page; + } ++EXPORT_SYMBOL_GPL(saveable_highmem_page); + + /** + * count_highmem_pages - compute the total number of saveable highmem +@@ -867,11 +992,6 @@ static unsigned int count_highmem_pages(void) + } + return n; + } +-#else +-static inline void *saveable_highmem_page(struct zone *z, unsigned long p) +-{ +- return NULL; +-} + #endif /* CONFIG_HIGHMEM */ + + /** +@@ -882,7 +1002,7 @@ static inline void *saveable_highmem_page(struct zone *z, unsigned long p) + * of pages statically defined as 'unsaveable', and it isn't a part of + * a free chunk of pages. + */ +-static struct page *saveable_page(struct zone *zone, unsigned long pfn) ++struct page *saveable_page(struct zone *zone, unsigned long pfn) + { + struct page *page; + +@@ -904,6 +1024,7 @@ static struct page *saveable_page(struct zone *zone, unsigned long pfn) + + return page; + } ++EXPORT_SYMBOL_GPL(saveable_page); + + /** + * count_data_pages - compute the total number of saveable non-highmem +@@ -1500,6 +1621,9 @@ asmlinkage int swsusp_save(void) + { + unsigned int nr_pages, nr_highmem; + ++ if (toi_running) ++ return toi_post_context_save(); ++ + printk(KERN_INFO "PM: Creating hibernation image: \n"); + + drain_local_pages(NULL); +@@ -1540,14 +1664,14 @@ asmlinkage int swsusp_save(void) + } + + #ifndef CONFIG_ARCH_HIBERNATION_HEADER +-static int init_header_complete(struct swsusp_info *info) ++int init_header_complete(struct swsusp_info *info) + { + memcpy(&info->uts, init_utsname(), sizeof(struct new_utsname)); + info->version_code = LINUX_VERSION_CODE; + return 0; + } + +-static char *check_image_kernel(struct swsusp_info *info) ++char *check_image_kernel(struct swsusp_info *info) + { + if (info->version_code != LINUX_VERSION_CODE) + return "kernel version"; +@@ -1561,6 +1685,7 @@ static char *check_image_kernel(struct swsusp_info *info) + return "machine"; + return NULL; + } ++EXPORT_SYMBOL_GPL(check_image_kernel); + #endif /* CONFIG_ARCH_HIBERNATION_HEADER */ + + unsigned long snapshot_get_image_size(void) +@@ -1568,7 +1693,7 @@ unsigned long snapshot_get_image_size(void) + return nr_copy_pages + nr_meta_pages + 1; + } + +-static int init_header(struct swsusp_info *info) ++int init_header(struct swsusp_info *info) + { + memset(info, 0, sizeof(struct swsusp_info)); + info->num_physpages = num_physpages; +@@ -1578,6 +1703,7 @@ static int init_header(struct swsusp_info *info) + info->size <<= PAGE_SHIFT; + return init_header_complete(info); + } ++EXPORT_SYMBOL_GPL(init_header); + + /** + * pack_pfns - pfns corresponding to the set bits found in the bitmap @bm +diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c +index 6f10dfc..cecd9a8 100644 +--- a/kernel/power/suspend.c ++++ b/kernel/power/suspend.c +@@ -226,6 +226,7 @@ int suspend_devices_and_enter(suspend_state_t state) + suspend_ops->recover(); + goto Resume_devices; + } ++EXPORT_SYMBOL_GPL(suspend_devices_and_enter); + + /** + * suspend_finish - Do final work before exiting suspend sequence. +diff --git a/kernel/power/tuxonice.h b/kernel/power/tuxonice.h +new file mode 100644 +index 0000000..e7bc111 +--- /dev/null ++++ b/kernel/power/tuxonice.h +@@ -0,0 +1,211 @@ ++/* ++ * kernel/power/tuxonice.h ++ * ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * It contains declarations used throughout swsusp. ++ * ++ */ ++ ++#ifndef KERNEL_POWER_TOI_H ++#define KERNEL_POWER_TOI_H ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include "tuxonice_pageflags.h" ++#include "power.h" ++ ++#define TOI_CORE_VERSION "3.1" ++#define TOI_HEADER_VERSION 2 ++#define MY_BOOT_KERNEL_DATA_VERSION 3 ++ ++struct toi_boot_kernel_data { ++ int version; ++ int size; ++ unsigned long toi_action; ++ unsigned long toi_debug_state; ++ u32 toi_default_console_level; ++ int toi_io_time[2][2]; ++ char toi_nosave_commandline[COMMAND_LINE_SIZE]; ++ unsigned long pages_used[33]; ++ unsigned long compress_bytes_in; ++ unsigned long compress_bytes_out; ++}; ++ ++extern struct toi_boot_kernel_data toi_bkd; ++ ++/* Location of book kernel data struct in kernel being resumed */ ++extern unsigned long boot_kernel_data_buffer; ++ ++/* == Action states == */ ++ ++enum { ++ TOI_REBOOT, ++ TOI_PAUSE, ++ TOI_LOGALL, ++ TOI_CAN_CANCEL, ++ TOI_KEEP_IMAGE, ++ TOI_FREEZER_TEST, ++ TOI_SINGLESTEP, ++ TOI_PAUSE_NEAR_PAGESET_END, ++ TOI_TEST_FILTER_SPEED, ++ TOI_TEST_BIO, ++ TOI_NO_PAGESET2, ++ TOI_IGNORE_ROOTFS, ++ TOI_REPLACE_SWSUSP, ++ TOI_PAGESET2_FULL, ++ TOI_ABORT_ON_RESAVE_NEEDED, ++ TOI_NO_MULTITHREADED_IO, ++ TOI_NO_DIRECT_LOAD, /* Obsolete */ ++ TOI_LATE_CPU_HOTPLUG, ++ TOI_GET_MAX_MEM_ALLOCD, ++ TOI_NO_FLUSHER_THREAD, ++ TOI_NO_PS2_IF_UNNEEDED ++}; ++ ++#define clear_action_state(bit) (test_and_clear_bit(bit, &toi_bkd.toi_action)) ++ ++/* == Result states == */ ++ ++enum { ++ TOI_ABORTED, ++ TOI_ABORT_REQUESTED, ++ TOI_NOSTORAGE_AVAILABLE, ++ TOI_INSUFFICIENT_STORAGE, ++ TOI_FREEZING_FAILED, ++ TOI_KEPT_IMAGE, ++ TOI_WOULD_EAT_MEMORY, ++ TOI_UNABLE_TO_FREE_ENOUGH_MEMORY, ++ TOI_PM_SEM, ++ TOI_DEVICE_REFUSED, ++ TOI_SYSDEV_REFUSED, ++ TOI_EXTRA_PAGES_ALLOW_TOO_SMALL, ++ TOI_UNABLE_TO_PREPARE_IMAGE, ++ TOI_FAILED_MODULE_INIT, ++ TOI_FAILED_MODULE_CLEANUP, ++ TOI_FAILED_IO, ++ TOI_OUT_OF_MEMORY, ++ TOI_IMAGE_ERROR, ++ TOI_PLATFORM_PREP_FAILED, ++ TOI_CPU_HOTPLUG_FAILED, ++ TOI_ARCH_PREPARE_FAILED, ++ TOI_RESAVE_NEEDED, ++ TOI_CANT_SUSPEND, ++ TOI_NOTIFIERS_PREPARE_FAILED, ++ TOI_PRE_SNAPSHOT_FAILED, ++ TOI_PRE_RESTORE_FAILED, ++ TOI_USERMODE_HELPERS_ERR, ++ TOI_CANT_USE_ALT_RESUME, ++ TOI_HEADER_TOO_BIG, ++ TOI_NUM_RESULT_STATES /* Used in printing debug info only */ ++}; ++ ++extern unsigned long toi_result; ++ ++#define set_result_state(bit) (test_and_set_bit(bit, &toi_result)) ++#define set_abort_result(bit) (test_and_set_bit(TOI_ABORTED, &toi_result), \ ++ test_and_set_bit(bit, &toi_result)) ++#define clear_result_state(bit) (test_and_clear_bit(bit, &toi_result)) ++#define test_result_state(bit) (test_bit(bit, &toi_result)) ++ ++/* == Debug sections and levels == */ ++ ++/* debugging levels. */ ++enum { ++ TOI_STATUS = 0, ++ TOI_ERROR = 2, ++ TOI_LOW, ++ TOI_MEDIUM, ++ TOI_HIGH, ++ TOI_VERBOSE, ++}; ++ ++enum { ++ TOI_ANY_SECTION, ++ TOI_EAT_MEMORY, ++ TOI_IO, ++ TOI_HEADER, ++ TOI_WRITER, ++ TOI_MEMORY, ++}; ++ ++#define set_debug_state(bit) (test_and_set_bit(bit, &toi_bkd.toi_debug_state)) ++#define clear_debug_state(bit) \ ++ (test_and_clear_bit(bit, &toi_bkd.toi_debug_state)) ++#define test_debug_state(bit) (test_bit(bit, &toi_bkd.toi_debug_state)) ++ ++/* == Steps in hibernating == */ ++ ++enum { ++ STEP_HIBERNATE_PREPARE_IMAGE, ++ STEP_HIBERNATE_SAVE_IMAGE, ++ STEP_HIBERNATE_POWERDOWN, ++ STEP_RESUME_CAN_RESUME, ++ STEP_RESUME_LOAD_PS1, ++ STEP_RESUME_DO_RESTORE, ++ STEP_RESUME_READ_PS2, ++ STEP_RESUME_GO, ++ STEP_RESUME_ALT_IMAGE, ++ STEP_CLEANUP, ++ STEP_QUIET_CLEANUP ++}; ++ ++/* == TuxOnIce states == ++ (see also include/linux/suspend.h) */ ++ ++#define get_toi_state() (toi_state) ++#define restore_toi_state(saved_state) \ ++ do { toi_state = saved_state; } while (0) ++ ++/* == Module support == */ ++ ++struct toi_core_fns { ++ int (*post_context_save)(void); ++ unsigned long (*get_nonconflicting_page)(void); ++ int (*try_hibernate)(void); ++ void (*try_resume)(void); ++}; ++ ++extern struct toi_core_fns *toi_core_fns; ++ ++/* == All else == */ ++#define KB(x) ((x) << (PAGE_SHIFT - 10)) ++#define MB(x) ((x) >> (20 - PAGE_SHIFT)) ++ ++extern int toi_start_anything(int toi_or_resume); ++extern void toi_finish_anything(int toi_or_resume); ++ ++extern int save_image_part1(void); ++extern int toi_atomic_restore(void); ++ ++extern int toi_try_hibernate(void); ++extern void toi_try_resume(void); ++ ++extern int __toi_post_context_save(void); ++ ++extern unsigned int nr_hibernates; ++extern char alt_resume_param[256]; ++ ++extern void copyback_post(void); ++extern int toi_hibernate(void); ++extern unsigned long extra_pd1_pages_used; ++ ++#define SECTOR_SIZE 512 ++ ++extern void toi_early_boot_message(int can_erase_image, int default_answer, ++ char *warning_reason, ...); ++ ++extern int do_check_can_resume(void); ++extern int do_toi_step(int step); ++extern int toi_launch_userspace_program(char *command, int channel_no, ++ enum umh_wait wait, int debug); ++ ++extern char tuxonice_signature[9]; ++extern int freezer_sync; ++#endif +diff --git a/kernel/power/tuxonice_alloc.c b/kernel/power/tuxonice_alloc.c +new file mode 100644 +index 0000000..891c5b2 +--- /dev/null ++++ b/kernel/power/tuxonice_alloc.c +@@ -0,0 +1,313 @@ ++/* ++ * kernel/power/tuxonice_alloc.c ++ * ++ * Copyright (C) 2008-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ */ ++ ++#ifdef CONFIG_PM_DEBUG ++#include ++#include ++#include "tuxonice_modules.h" ++#include "tuxonice_alloc.h" ++#include "tuxonice_sysfs.h" ++#include "tuxonice.h" ++ ++#define TOI_ALLOC_PATHS 40 ++ ++static DEFINE_MUTEX(toi_alloc_mutex); ++ ++static struct toi_module_ops toi_alloc_ops; ++ ++static int toi_fail_num; ++static int trace_allocs; ++static atomic_t toi_alloc_count[TOI_ALLOC_PATHS], ++ toi_free_count[TOI_ALLOC_PATHS], ++ toi_test_count[TOI_ALLOC_PATHS], ++ toi_fail_count[TOI_ALLOC_PATHS]; ++static int toi_cur_allocd[TOI_ALLOC_PATHS], toi_max_allocd[TOI_ALLOC_PATHS]; ++static int cur_allocd, max_allocd; ++ ++static char *toi_alloc_desc[TOI_ALLOC_PATHS] = { ++ "", /* 0 */ ++ "get_io_info_struct", ++ "extent", ++ "extent (loading chain)", ++ "userui channel", ++ "userui arg", /* 5 */ ++ "attention list metadata", ++ "extra pagedir memory metadata", ++ "bdev metadata", ++ "extra pagedir memory", ++ "header_locations_read", /* 10 */ ++ "bio queue", ++ "prepare_readahead", ++ "i/o buffer", ++ "writer buffer in bio_init", ++ "checksum buffer", /* 15 */ ++ "compression buffer", ++ "filewriter signature op", ++ "set resume param alloc1", ++ "set resume param alloc2", ++ "debugging info buffer", /* 20 */ ++ "check can resume buffer", ++ "write module config buffer", ++ "read module config buffer", ++ "write image header buffer", ++ "read pageset1 buffer", /* 25 */ ++ "get_have_image_data buffer", ++ "checksum page", ++ "worker rw loop", ++ "get nonconflicting page", ++ "ps1 load addresses", /* 30 */ ++ "remove swap image", ++ "swap image exists", ++ "swap parse sig location", ++ "sysfs kobj", ++ "swap mark resume attempted buffer", /* 35 */ ++ "cluster member", ++ "boot kernel data buffer", ++ "setting swap signature", ++ "block i/o bdev struct" ++}; ++ ++#define MIGHT_FAIL(FAIL_NUM, FAIL_VAL) \ ++ do { \ ++ BUG_ON(FAIL_NUM >= TOI_ALLOC_PATHS); \ ++ \ ++ if (FAIL_NUM == toi_fail_num) { \ ++ atomic_inc(&toi_test_count[FAIL_NUM]); \ ++ toi_fail_num = 0; \ ++ return FAIL_VAL; \ ++ } \ ++ } while (0) ++ ++static void alloc_update_stats(int fail_num, void *result, int size) ++{ ++ if (!result) { ++ atomic_inc(&toi_fail_count[fail_num]); ++ return; ++ } ++ ++ atomic_inc(&toi_alloc_count[fail_num]); ++ if (unlikely(test_action_state(TOI_GET_MAX_MEM_ALLOCD))) { ++ mutex_lock(&toi_alloc_mutex); ++ toi_cur_allocd[fail_num]++; ++ cur_allocd += size; ++ if (unlikely(cur_allocd > max_allocd)) { ++ int i; ++ ++ for (i = 0; i < TOI_ALLOC_PATHS; i++) ++ toi_max_allocd[i] = toi_cur_allocd[i]; ++ max_allocd = cur_allocd; ++ } ++ mutex_unlock(&toi_alloc_mutex); ++ } ++} ++ ++static void free_update_stats(int fail_num, int size) ++{ ++ BUG_ON(fail_num >= TOI_ALLOC_PATHS); ++ atomic_inc(&toi_free_count[fail_num]); ++ if (unlikely(atomic_read(&toi_free_count[fail_num]) > ++ atomic_read(&toi_alloc_count[fail_num]))) ++ dump_stack(); ++ if (unlikely(test_action_state(TOI_GET_MAX_MEM_ALLOCD))) { ++ mutex_lock(&toi_alloc_mutex); ++ cur_allocd -= size; ++ toi_cur_allocd[fail_num]--; ++ mutex_unlock(&toi_alloc_mutex); ++ } ++} ++ ++void *toi_kzalloc(int fail_num, size_t size, gfp_t flags) ++{ ++ void *result; ++ ++ if (toi_alloc_ops.enabled) ++ MIGHT_FAIL(fail_num, NULL); ++ result = kzalloc(size, flags); ++ if (toi_alloc_ops.enabled) ++ alloc_update_stats(fail_num, result, size); ++ if (fail_num == trace_allocs) ++ dump_stack(); ++ return result; ++} ++EXPORT_SYMBOL_GPL(toi_kzalloc); ++ ++unsigned long toi_get_free_pages(int fail_num, gfp_t mask, ++ unsigned int order) ++{ ++ unsigned long result; ++ ++ if (toi_alloc_ops.enabled) ++ MIGHT_FAIL(fail_num, 0); ++ result = __get_free_pages(mask, order); ++ if (toi_alloc_ops.enabled) ++ alloc_update_stats(fail_num, (void *) result, ++ PAGE_SIZE << order); ++ if (fail_num == trace_allocs) ++ dump_stack(); ++ return result; ++} ++EXPORT_SYMBOL_GPL(toi_get_free_pages); ++ ++struct page *toi_alloc_page(int fail_num, gfp_t mask) ++{ ++ struct page *result; ++ ++ if (toi_alloc_ops.enabled) ++ MIGHT_FAIL(fail_num, NULL); ++ result = alloc_page(mask); ++ if (toi_alloc_ops.enabled) ++ alloc_update_stats(fail_num, (void *) result, PAGE_SIZE); ++ if (fail_num == trace_allocs) ++ dump_stack(); ++ return result; ++} ++EXPORT_SYMBOL_GPL(toi_alloc_page); ++ ++unsigned long toi_get_zeroed_page(int fail_num, gfp_t mask) ++{ ++ unsigned long result; ++ ++ if (fail_num == trace_allocs) ++ dump_stack(); ++ if (toi_alloc_ops.enabled) ++ MIGHT_FAIL(fail_num, 0); ++ result = get_zeroed_page(mask); ++ if (toi_alloc_ops.enabled) ++ alloc_update_stats(fail_num, (void *) result, PAGE_SIZE); ++ if (fail_num == trace_allocs) ++ dump_stack(); ++ return result; ++} ++EXPORT_SYMBOL_GPL(toi_get_zeroed_page); ++ ++void toi_kfree(int fail_num, const void *arg, int size) ++{ ++ if (arg && toi_alloc_ops.enabled) ++ free_update_stats(fail_num, size); ++ ++ if (fail_num == trace_allocs) ++ dump_stack(); ++ kfree(arg); ++} ++EXPORT_SYMBOL_GPL(toi_kfree); ++ ++void toi_free_page(int fail_num, unsigned long virt) ++{ ++ if (virt && toi_alloc_ops.enabled) ++ free_update_stats(fail_num, PAGE_SIZE); ++ ++ if (fail_num == trace_allocs) ++ dump_stack(); ++ free_page(virt); ++} ++EXPORT_SYMBOL_GPL(toi_free_page); ++ ++void toi__free_page(int fail_num, struct page *page) ++{ ++ if (page && toi_alloc_ops.enabled) ++ free_update_stats(fail_num, PAGE_SIZE); ++ ++ if (fail_num == trace_allocs) ++ dump_stack(); ++ __free_page(page); ++} ++EXPORT_SYMBOL_GPL(toi__free_page); ++ ++void toi_free_pages(int fail_num, struct page *page, int order) ++{ ++ if (page && toi_alloc_ops.enabled) ++ free_update_stats(fail_num, PAGE_SIZE << order); ++ ++ if (fail_num == trace_allocs) ++ dump_stack(); ++ __free_pages(page, order); ++} ++ ++void toi_alloc_print_debug_stats(void) ++{ ++ int i, header_done = 0; ++ ++ if (!toi_alloc_ops.enabled) ++ return; ++ ++ for (i = 0; i < TOI_ALLOC_PATHS; i++) ++ if (atomic_read(&toi_alloc_count[i]) != ++ atomic_read(&toi_free_count[i])) { ++ if (!header_done) { ++ printk(KERN_INFO "Idx Allocs Frees Tests " ++ " Fails Max Description\n"); ++ header_done = 1; ++ } ++ ++ printk(KERN_INFO "%3d %7d %7d %7d %7d %7d %s\n", i, ++ atomic_read(&toi_alloc_count[i]), ++ atomic_read(&toi_free_count[i]), ++ atomic_read(&toi_test_count[i]), ++ atomic_read(&toi_fail_count[i]), ++ toi_max_allocd[i], ++ toi_alloc_desc[i]); ++ } ++} ++EXPORT_SYMBOL_GPL(toi_alloc_print_debug_stats); ++ ++static int toi_alloc_initialise(int starting_cycle) ++{ ++ int i; ++ ++ if (!starting_cycle) ++ return 0; ++ ++ for (i = 0; i < TOI_ALLOC_PATHS; i++) { ++ atomic_set(&toi_alloc_count[i], 0); ++ atomic_set(&toi_free_count[i], 0); ++ atomic_set(&toi_test_count[i], 0); ++ atomic_set(&toi_fail_count[i], 0); ++ toi_cur_allocd[i] = 0; ++ toi_max_allocd[i] = 0; ++ }; ++ ++ max_allocd = 0; ++ cur_allocd = 0; ++ return 0; ++} ++ ++static struct toi_sysfs_data sysfs_params[] = { ++ SYSFS_INT("failure_test", SYSFS_RW, &toi_fail_num, 0, 99, 0, NULL), ++ SYSFS_INT("trace", SYSFS_RW, &trace_allocs, 0, TOI_ALLOC_PATHS, 0, ++ NULL), ++ SYSFS_BIT("find_max_mem_allocated", SYSFS_RW, &toi_bkd.toi_action, ++ TOI_GET_MAX_MEM_ALLOCD, 0), ++ SYSFS_INT("enabled", SYSFS_RW, &toi_alloc_ops.enabled, 0, 1, 0, ++ NULL) ++}; ++ ++static struct toi_module_ops toi_alloc_ops = { ++ .type = MISC_HIDDEN_MODULE, ++ .name = "allocation debugging", ++ .directory = "alloc", ++ .module = THIS_MODULE, ++ .early = 1, ++ .initialise = toi_alloc_initialise, ++ ++ .sysfs_data = sysfs_params, ++ .num_sysfs_entries = sizeof(sysfs_params) / ++ sizeof(struct toi_sysfs_data), ++}; ++ ++int toi_alloc_init(void) ++{ ++ int result = toi_register_module(&toi_alloc_ops); ++ return result; ++} ++ ++void toi_alloc_exit(void) ++{ ++ toi_unregister_module(&toi_alloc_ops); ++} ++#endif +diff --git a/kernel/power/tuxonice_alloc.h b/kernel/power/tuxonice_alloc.h +new file mode 100644 +index 0000000..6cd19ba +--- /dev/null ++++ b/kernel/power/tuxonice_alloc.h +@@ -0,0 +1,51 @@ ++/* ++ * kernel/power/tuxonice_alloc.h ++ * ++ * Copyright (C) 2008-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ */ ++ ++#define TOI_WAIT_GFP (GFP_NOFS | __GFP_NOWARN) ++#define TOI_ATOMIC_GFP (GFP_ATOMIC | __GFP_NOWARN) ++ ++#ifdef CONFIG_PM_DEBUG ++extern void *toi_kzalloc(int fail_num, size_t size, gfp_t flags); ++extern void toi_kfree(int fail_num, const void *arg, int size); ++ ++extern unsigned long toi_get_free_pages(int fail_num, gfp_t mask, ++ unsigned int order); ++#define toi_get_free_page(FAIL_NUM, MASK) toi_get_free_pages(FAIL_NUM, MASK, 0) ++extern unsigned long toi_get_zeroed_page(int fail_num, gfp_t mask); ++extern void toi_free_page(int fail_num, unsigned long buf); ++extern void toi__free_page(int fail_num, struct page *page); ++extern void toi_free_pages(int fail_num, struct page *page, int order); ++extern struct page *toi_alloc_page(int fail_num, gfp_t mask); ++extern int toi_alloc_init(void); ++extern void toi_alloc_exit(void); ++ ++extern void toi_alloc_print_debug_stats(void); ++ ++#else /* CONFIG_PM_DEBUG */ ++ ++#define toi_kzalloc(FAIL, SIZE, FLAGS) (kzalloc(SIZE, FLAGS)) ++#define toi_kfree(FAIL, ALLOCN, SIZE) (kfree(ALLOCN)) ++ ++#define toi_get_free_pages(FAIL, FLAGS, ORDER) __get_free_pages(FLAGS, ORDER) ++#define toi_get_free_page(FAIL, FLAGS) __get_free_page(FLAGS) ++#define toi_get_zeroed_page(FAIL, FLAGS) get_zeroed_page(FLAGS) ++#define toi_free_page(FAIL, ALLOCN) do { free_page(ALLOCN); } while (0) ++#define toi__free_page(FAIL, PAGE) __free_page(PAGE) ++#define toi_free_pages(FAIL, PAGE, ORDER) __free_pages(PAGE, ORDER) ++#define toi_alloc_page(FAIL, MASK) alloc_page(MASK) ++static inline int toi_alloc_init(void) ++{ ++ return 0; ++} ++ ++static inline void toi_alloc_exit(void) { } ++ ++static inline void toi_alloc_print_debug_stats(void) { } ++ ++#endif +diff --git a/kernel/power/tuxonice_atomic_copy.c b/kernel/power/tuxonice_atomic_copy.c +new file mode 100644 +index 0000000..1807f8b +--- /dev/null ++++ b/kernel/power/tuxonice_atomic_copy.c +@@ -0,0 +1,418 @@ ++/* ++ * kernel/power/tuxonice_atomic_copy.c ++ * ++ * Copyright 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * Distributed under GPLv2. ++ * ++ * Routines for doing the atomic save/restore. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include "tuxonice.h" ++#include "tuxonice_storage.h" ++#include "tuxonice_power_off.h" ++#include "tuxonice_ui.h" ++#include "tuxonice_io.h" ++#include "tuxonice_prepare_image.h" ++#include "tuxonice_pageflags.h" ++#include "tuxonice_checksum.h" ++#include "tuxonice_builtin.h" ++#include "tuxonice_atomic_copy.h" ++#include "tuxonice_alloc.h" ++#include "tuxonice_modules.h" ++ ++unsigned long extra_pd1_pages_used; ++ ++/** ++ * free_pbe_list - free page backup entries used by the atomic copy code. ++ * @list: List to free. ++ * @highmem: Whether the list is in highmem. ++ * ++ * Normally, this function isn't used. If, however, we need to abort before ++ * doing the atomic copy, we use this to free the pbes previously allocated. ++ **/ ++static void free_pbe_list(struct pbe **list, int highmem) ++{ ++ while (*list) { ++ int i; ++ struct pbe *free_pbe, *next_page = NULL; ++ struct page *page; ++ ++ if (highmem) { ++ page = (struct page *) *list; ++ free_pbe = (struct pbe *) kmap(page); ++ } else { ++ page = virt_to_page(*list); ++ free_pbe = *list; ++ } ++ ++ for (i = 0; i < PBES_PER_PAGE; i++) { ++ if (!free_pbe) ++ break; ++ if (highmem) ++ toi__free_page(29, free_pbe->address); ++ else ++ toi_free_page(29, ++ (unsigned long) free_pbe->address); ++ free_pbe = free_pbe->next; ++ } ++ ++ if (highmem) { ++ if (free_pbe) ++ next_page = free_pbe; ++ kunmap(page); ++ } else { ++ if (free_pbe) ++ next_page = free_pbe; ++ } ++ ++ toi__free_page(29, page); ++ *list = (struct pbe *) next_page; ++ }; ++} ++ ++/** ++ * copyback_post - post atomic-restore actions ++ * ++ * After doing the atomic restore, we have a few more things to do: ++ * 1) We want to retain some values across the restore, so we now copy ++ * these from the nosave variables to the normal ones. ++ * 2) Set the status flags. ++ * 3) Resume devices. ++ * 4) Tell userui so it can redraw & restore settings. ++ * 5) Reread the page cache. ++ **/ ++void copyback_post(void) ++{ ++ struct toi_boot_kernel_data *bkd = ++ (struct toi_boot_kernel_data *) boot_kernel_data_buffer; ++ ++ /* ++ * The boot kernel's data may be larger (newer version) or ++ * smaller (older version) than ours. Copy the minimum ++ * of the two sizes, so that we don't overwrite valid values ++ * from pre-atomic copy. ++ */ ++ ++ memcpy(&toi_bkd, (char *) boot_kernel_data_buffer, ++ min_t(int, sizeof(struct toi_boot_kernel_data), ++ bkd->size)); ++ ++ if (toi_activate_storage(1)) ++ panic("Failed to reactivate our storage."); ++ ++ toi_post_atomic_restore_modules(bkd); ++ ++ toi_cond_pause(1, "About to reload secondary pagedir."); ++ ++ if (read_pageset2(0)) ++ panic("Unable to successfully reread the page cache."); ++ ++ /* ++ * If the user wants to sleep again after resuming from full-off, ++ * it's most likely to be in order to suspend to ram, so we'll ++ * do this check after loading pageset2, to give them the fastest ++ * wakeup when they are ready to use the computer again. ++ */ ++ toi_check_resleep(); ++} ++ ++/** ++ * toi_copy_pageset1 - do the atomic copy of pageset1 ++ * ++ * Make the atomic copy of pageset1. We can't use copy_page (as we once did) ++ * because we can't be sure what side effects it has. On my old Duron, with ++ * 3DNOW, kernel_fpu_begin increments preempt count, making our preempt ++ * count at resume time 4 instead of 3. ++ * ++ * We don't want to call kmap_atomic unconditionally because it has the side ++ * effect of incrementing the preempt count, which will leave it one too high ++ * post resume (the page containing the preempt count will be copied after ++ * its incremented. This is essentially the same problem. ++ **/ ++void toi_copy_pageset1(void) ++{ ++ int i; ++ unsigned long source_index, dest_index; ++ ++ memory_bm_position_reset(pageset1_map); ++ memory_bm_position_reset(pageset1_copy_map); ++ ++ source_index = memory_bm_next_pfn(pageset1_map); ++ dest_index = memory_bm_next_pfn(pageset1_copy_map); ++ ++ for (i = 0; i < pagedir1.size; i++) { ++ unsigned long *origvirt, *copyvirt; ++ struct page *origpage, *copypage; ++ int loop = (PAGE_SIZE / sizeof(unsigned long)) - 1, ++ was_present1, was_present2; ++ ++ origpage = pfn_to_page(source_index); ++ copypage = pfn_to_page(dest_index); ++ ++ origvirt = PageHighMem(origpage) ? ++ kmap_atomic(origpage, KM_USER0) : ++ page_address(origpage); ++ ++ copyvirt = PageHighMem(copypage) ? ++ kmap_atomic(copypage, KM_USER1) : ++ page_address(copypage); ++ ++ was_present1 = kernel_page_present(origpage); ++ if (!was_present1) ++ kernel_map_pages(origpage, 1, 1); ++ ++ was_present2 = kernel_page_present(copypage); ++ if (!was_present2) ++ kernel_map_pages(copypage, 1, 1); ++ ++ while (loop >= 0) { ++ *(copyvirt + loop) = *(origvirt + loop); ++ loop--; ++ } ++ ++ if (!was_present1) ++ kernel_map_pages(origpage, 1, 0); ++ ++ if (!was_present2) ++ kernel_map_pages(copypage, 1, 0); ++ ++ if (PageHighMem(origpage)) ++ kunmap_atomic(origvirt, KM_USER0); ++ ++ if (PageHighMem(copypage)) ++ kunmap_atomic(copyvirt, KM_USER1); ++ ++ source_index = memory_bm_next_pfn(pageset1_map); ++ dest_index = memory_bm_next_pfn(pageset1_copy_map); ++ } ++} ++ ++/** ++ * __toi_post_context_save - steps after saving the cpu context ++ * ++ * Steps taken after saving the CPU state to make the actual ++ * atomic copy. ++ * ++ * Called from swsusp_save in snapshot.c via toi_post_context_save. ++ **/ ++int __toi_post_context_save(void) ++{ ++ unsigned long old_ps1_size = pagedir1.size; ++ ++ check_checksums(); ++ ++ free_checksum_pages(); ++ ++ toi_recalculate_image_contents(1); ++ ++ extra_pd1_pages_used = pagedir1.size > old_ps1_size ? ++ pagedir1.size - old_ps1_size : 0; ++ ++ if (extra_pd1_pages_used > extra_pd1_pages_allowance) { ++ printk(KERN_INFO "Pageset1 has grown by %lu pages. " ++ "extra_pages_allowance is currently only %lu.\n", ++ pagedir1.size - old_ps1_size, ++ extra_pd1_pages_allowance); ++ ++ /* ++ * Highlevel code will see this, clear the state and ++ * retry if we haven't already done so twice. ++ */ ++ set_abort_result(TOI_EXTRA_PAGES_ALLOW_TOO_SMALL); ++ return 1; ++ } ++ ++ if (!test_action_state(TOI_TEST_FILTER_SPEED) && ++ !test_action_state(TOI_TEST_BIO)) ++ toi_copy_pageset1(); ++ ++ return 0; ++} ++ ++/** ++ * toi_hibernate - high level code for doing the atomic copy ++ * ++ * High-level code which prepares to do the atomic copy. Loosely based ++ * on the swsusp version, but with the following twists: ++ * - We set toi_running so the swsusp code uses our code paths. ++ * - We give better feedback regarding what goes wrong if there is a ++ * problem. ++ * - We use an extra function to call the assembly, just in case this code ++ * is in a module (return address). ++ **/ ++int toi_hibernate(void) ++{ ++ int error; ++ ++ toi_running = 1; /* For the swsusp code we use :< */ ++ ++ error = toi_lowlevel_builtin(); ++ ++ toi_running = 0; ++ return error; ++} ++ ++/** ++ * toi_atomic_restore - prepare to do the atomic restore ++ * ++ * Get ready to do the atomic restore. This part gets us into the same ++ * state we are in prior to do calling do_toi_lowlevel while ++ * hibernating: hot-unplugging secondary cpus and freeze processes, ++ * before starting the thread that will do the restore. ++ **/ ++int toi_atomic_restore(void) ++{ ++ int error; ++ ++ toi_running = 1; ++ ++ toi_prepare_status(DONT_CLEAR_BAR, "Atomic restore."); ++ ++ memcpy(&toi_bkd.toi_nosave_commandline, saved_command_line, ++ strlen(saved_command_line)); ++ ++ toi_pre_atomic_restore_modules(&toi_bkd); ++ ++ if (add_boot_kernel_data_pbe()) ++ goto Failed; ++ ++ toi_prepare_status(DONT_CLEAR_BAR, "Doing atomic copy/restore."); ++ ++ if (toi_go_atomic(PMSG_QUIESCE, 0)) ++ goto Failed; ++ ++ /* We'll ignore saved state, but this gets preempt count (etc) right */ ++ save_processor_state(); ++ ++ error = swsusp_arch_resume(); ++ /* ++ * Code below is only ever reached in case of failure. Otherwise ++ * execution continues at place where swsusp_arch_suspend was called. ++ * ++ * We don't know whether it's safe to continue (this shouldn't happen), ++ * so lets err on the side of caution. ++ */ ++ BUG(); ++ ++Failed: ++ free_pbe_list(&restore_pblist, 0); ++#ifdef CONFIG_HIGHMEM ++ free_pbe_list(&restore_highmem_pblist, 1); ++#endif ++ toi_running = 0; ++ return 1; ++} ++ ++/** ++ * toi_go_atomic - do the actual atomic copy/restore ++ * @state: The state to use for dpm_suspend_start & power_down calls. ++ * @suspend_time: Whether we're suspending or resuming. ++ **/ ++int toi_go_atomic(pm_message_t state, int suspend_time) ++{ ++ if (suspend_time && platform_begin(1)) { ++ set_abort_result(TOI_PLATFORM_PREP_FAILED); ++ return 1; ++ } ++ ++ suspend_console(); ++ ++ if (dpm_suspend_start(state)) { ++ set_abort_result(TOI_DEVICE_REFUSED); ++ toi_end_atomic(ATOMIC_STEP_DEVICE_RESUME, suspend_time, 3); ++ return 1; ++ } ++ ++ if (suspend_time && arch_prepare_suspend()) { ++ set_abort_result(TOI_ARCH_PREPARE_FAILED); ++ toi_end_atomic(ATOMIC_STEP_DEVICE_RESUME, suspend_time, 1); ++ return 1; ++ } ++ ++ /* At this point, dpm_suspend_start() has been called, but *not* ++ * dpm_suspend_noirq(). We *must* dpm_suspend_noirq() now. ++ * Otherwise, drivers for some devices (e.g. interrupt controllers) ++ * become desynchronized with the actual state of the hardware ++ * at resume time, and evil weirdness ensues. ++ */ ++ ++ if (dpm_suspend_noirq(state)) { ++ set_abort_result(TOI_DEVICE_REFUSED); ++ toi_end_atomic(ATOMIC_STEP_DEVICE_RESUME, suspend_time, 1); ++ return 1; ++ } ++ ++ if (suspend_time && platform_pre_snapshot(1)) { ++ set_abort_result(TOI_PRE_SNAPSHOT_FAILED); ++ toi_end_atomic(ATOMIC_STEP_PLATFORM_FINISH, suspend_time, 1); ++ return 1; ++ } ++ ++ if (!suspend_time && platform_pre_restore(1)) { ++ set_abort_result(TOI_PRE_RESTORE_FAILED); ++ toi_end_atomic(ATOMIC_STEP_PLATFORM_FINISH, suspend_time, 1); ++ return 1; ++ } ++ ++ if (test_action_state(TOI_LATE_CPU_HOTPLUG)) { ++ if (disable_nonboot_cpus()) { ++ set_abort_result(TOI_CPU_HOTPLUG_FAILED); ++ toi_end_atomic(ATOMIC_STEP_CPU_HOTPLUG, ++ suspend_time, 1); ++ return 1; ++ } ++ } ++ ++ local_irq_disable(); ++ ++ if (sysdev_suspend(state)) { ++ set_abort_result(TOI_SYSDEV_REFUSED); ++ toi_end_atomic(ATOMIC_STEP_IRQS, suspend_time, 1); ++ return 1; ++ } ++ ++ return 0; ++} ++ ++/** ++ * toi_end_atomic - post atomic copy/restore routines ++ * @stage: What step to start at. ++ * @suspend_time: Whether we're suspending or resuming. ++ * @error: Whether we're recovering from an error. ++ **/ ++void toi_end_atomic(int stage, int suspend_time, int error) ++{ ++ switch (stage) { ++ case ATOMIC_ALL_STEPS: ++ if (!suspend_time) ++ platform_leave(1); ++ sysdev_resume(); ++ case ATOMIC_STEP_IRQS: ++ local_irq_enable(); ++ case ATOMIC_STEP_CPU_HOTPLUG: ++ if (test_action_state(TOI_LATE_CPU_HOTPLUG)) ++ enable_nonboot_cpus(); ++ platform_restore_cleanup(1); ++ case ATOMIC_STEP_PLATFORM_FINISH: ++ platform_finish(1); ++ dpm_resume_noirq(suspend_time ? ++ (error ? PMSG_RECOVER : PMSG_THAW) : PMSG_RESTORE); ++ case ATOMIC_STEP_DEVICE_RESUME: ++ if (suspend_time && (error & 2)) ++ platform_recover(1); ++ dpm_resume_end(suspend_time ? ++ ((error & 1) ? PMSG_RECOVER : PMSG_THAW) : ++ PMSG_RESTORE); ++ resume_console(); ++ platform_end(1); ++ ++ toi_prepare_status(DONT_CLEAR_BAR, "Post atomic."); ++ } ++} +diff --git a/kernel/power/tuxonice_atomic_copy.h b/kernel/power/tuxonice_atomic_copy.h +new file mode 100644 +index 0000000..e61b27b +--- /dev/null ++++ b/kernel/power/tuxonice_atomic_copy.h +@@ -0,0 +1,20 @@ ++/* ++ * kernel/power/tuxonice_atomic_copy.h ++ * ++ * Copyright 2008-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * Distributed under GPLv2. ++ * ++ * Routines for doing the atomic save/restore. ++ */ ++ ++enum { ++ ATOMIC_ALL_STEPS, ++ ATOMIC_STEP_IRQS, ++ ATOMIC_STEP_CPU_HOTPLUG, ++ ATOMIC_STEP_PLATFORM_FINISH, ++ ATOMIC_STEP_DEVICE_RESUME, ++}; ++ ++int toi_go_atomic(pm_message_t state, int toi_time); ++void toi_end_atomic(int stage, int toi_time, int error); +diff --git a/kernel/power/tuxonice_bio.h b/kernel/power/tuxonice_bio.h +new file mode 100644 +index 0000000..9627ccc +--- /dev/null ++++ b/kernel/power/tuxonice_bio.h +@@ -0,0 +1,77 @@ ++/* ++ * kernel/power/tuxonice_bio.h ++ * ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * Distributed under GPLv2. ++ * ++ * This file contains declarations for functions exported from ++ * tuxonice_bio.c, which contains low level io functions. ++ */ ++ ++#include ++#include "tuxonice_extent.h" ++ ++void toi_put_extent_chain(struct hibernate_extent_chain *chain); ++int toi_add_to_extent_chain(struct hibernate_extent_chain *chain, ++ unsigned long start, unsigned long end); ++ ++struct hibernate_extent_saved_state { ++ int extent_num; ++ struct hibernate_extent *extent_ptr; ++ unsigned long offset; ++}; ++ ++struct toi_bdev_info { ++ struct toi_bdev_info *next; ++ struct hibernate_extent_chain blocks; ++ struct block_device *bdev; ++ struct toi_module_ops *allocator; ++ int allocator_index; ++ struct hibernate_extent_chain allocations; ++ char name[266]; /* "swap on " or "file " + up to 256 chars */ ++ ++ /* Saved in header */ ++ char uuid[17]; ++ dev_t dev_t; ++ int prio; ++ int bmap_shift; ++ int blocks_per_page; ++ unsigned long pages_used; ++ struct hibernate_extent_saved_state saved_state[4]; ++}; ++ ++struct toi_extent_iterate_state { ++ struct toi_bdev_info *current_chain; ++ int num_chains; ++ int saved_chain_number[4]; ++ struct toi_bdev_info *saved_chain_ptr[4]; ++}; ++ ++/* ++ * Our exported interface so the swapwriter and filewriter don't ++ * need these functions duplicated. ++ */ ++struct toi_bio_ops { ++ int (*bdev_page_io) (int rw, struct block_device *bdev, long pos, ++ struct page *page); ++ int (*register_storage)(struct toi_bdev_info *new); ++ void (*free_storage)(void); ++}; ++ ++struct toi_allocator_ops { ++ unsigned long (*toi_swap_storage_available) (void); ++}; ++ ++extern struct toi_bio_ops toi_bio_ops; ++ ++extern char *toi_writer_buffer; ++extern int toi_writer_buffer_posn; ++ ++struct toi_bio_allocator_ops { ++ int (*register_storage) (void); ++ unsigned long (*storage_available)(void); ++ int (*allocate_storage) (struct toi_bdev_info *, unsigned long); ++ int (*bmap) (struct toi_bdev_info *); ++ void (*free_storage) (struct toi_bdev_info *); ++}; +diff --git a/kernel/power/tuxonice_bio_chains.c b/kernel/power/tuxonice_bio_chains.c +new file mode 100644 +index 0000000..2ac2042 +--- /dev/null ++++ b/kernel/power/tuxonice_bio_chains.c +@@ -0,0 +1,1044 @@ ++/* ++ * kernel/power/tuxonice_bio_devinfo.c ++ * ++ * Copyright (C) 2009-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * Distributed under GPLv2. ++ * ++ */ ++ ++#include ++#include "tuxonice_bio.h" ++#include "tuxonice_bio_internal.h" ++#include "tuxonice_alloc.h" ++#include "tuxonice_ui.h" ++#include "tuxonice.h" ++#include "tuxonice_io.h" ++ ++static struct toi_bdev_info *prio_chain_head; ++static int num_chains; ++ ++/* Pointer to current entry being loaded/saved. */ ++struct toi_extent_iterate_state toi_writer_posn; ++ ++#define metadata_size (sizeof(struct toi_bdev_info) - \ ++ offsetof(struct toi_bdev_info, uuid)) ++ ++/* ++ * After section 0 (header) comes 2 => next_section[0] = 2 ++ */ ++static int next_section[3] = { 2, 3, 1 }; ++ ++/** ++ * dump_block_chains - print the contents of the bdev info array. ++ **/ ++void dump_block_chains(void) ++{ ++ int i = 0; ++ int j; ++ struct toi_bdev_info *cur_chain = prio_chain_head; ++ ++ while (cur_chain) { ++ struct hibernate_extent *this = cur_chain->blocks.first; ++ ++ printk(KERN_DEBUG "Chain %d (prio %d):", i, cur_chain->prio); ++ ++ while (this) { ++ printk(KERN_CONT " [%lu-%lu]%s", this->start, ++ this->end, this->next ? "," : ""); ++ this = this->next; ++ } ++ ++ printk("\n"); ++ cur_chain = cur_chain->next; ++ i++; ++ } ++ ++ printk(KERN_DEBUG "Saved states:\n"); ++ for (i = 0; i < 4; i++) { ++ printk(KERN_DEBUG "Slot %d: Chain %d.\n", ++ i, toi_writer_posn.saved_chain_number[i]); ++ ++ cur_chain = prio_chain_head; ++ j = 0; ++ while (cur_chain) { ++ printk(KERN_DEBUG " Chain %d: Extent %d. Offset %lu.\n", ++ j, cur_chain->saved_state[i].extent_num, ++ cur_chain->saved_state[i].offset); ++ cur_chain = cur_chain->next; ++ j++; ++ } ++ printk(KERN_CONT "\n"); ++ } ++} ++ ++/** ++ * ++ **/ ++static void toi_extent_chain_next(void) ++{ ++ struct toi_bdev_info *this = toi_writer_posn.current_chain; ++ ++ if (!this->blocks.current_extent) ++ return; ++ ++ if (this->blocks.current_offset == this->blocks.current_extent->end) { ++ if (this->blocks.current_extent->next) { ++ this->blocks.current_extent = ++ this->blocks.current_extent->next; ++ this->blocks.current_offset = ++ this->blocks.current_extent->start; ++ } else { ++ this->blocks.current_extent = NULL; ++ this->blocks.current_offset = 0; ++ } ++ } else ++ this->blocks.current_offset++; ++} ++ ++/** ++ * ++ */ ++ ++static struct toi_bdev_info *__find_next_chain_same_prio(void) ++{ ++ struct toi_bdev_info *start_chain = toi_writer_posn.current_chain; ++ struct toi_bdev_info *this = start_chain; ++ int orig_prio = this->prio; ++ ++ do { ++ this = this->next; ++ ++ if (!this) ++ this = prio_chain_head; ++ ++ /* Back on original chain? Use it again. */ ++ if (this == start_chain) ++ return start_chain; ++ ++ } while (!this->blocks.current_extent || this->prio != orig_prio); ++ ++ return this; ++} ++ ++static void find_next_chain(void) ++{ ++ struct toi_bdev_info *this; ++ ++ this = __find_next_chain_same_prio(); ++ ++ /* ++ * If we didn't get another chain of the same priority that we ++ * can use, look for the next priority. ++ */ ++ while (this && !this->blocks.current_extent) ++ this = this->next; ++ ++ toi_writer_posn.current_chain = this; ++} ++ ++/** ++ * toi_extent_state_next - go to the next extent ++ * @blocks: The number of values to progress. ++ * @stripe_mode: Whether to spread usage across all chains. ++ * ++ * Given a state, progress to the next valid entry. We may begin in an ++ * invalid state, as we do when invoked after extent_state_goto_start below. ++ * ++ * When using compression and expected_compression > 0, we let the image size ++ * be larger than storage, so we can validly run out of data to return. ++ **/ ++static unsigned long toi_extent_state_next(int blocks, int current_stream) ++{ ++ int i; ++ ++ if (!toi_writer_posn.current_chain) ++ return -ENOSPC; ++ ++ /* Assume chains always have lengths that are multiples of @blocks */ ++ for (i = 0; i < blocks; i++) ++ toi_extent_chain_next(); ++ ++ /* The header stream is not striped */ ++ if (current_stream || ++ !toi_writer_posn.current_chain->blocks.current_extent) ++ find_next_chain(); ++ ++ return toi_writer_posn.current_chain ? 0 : -ENOSPC; ++} ++ ++static void toi_insert_chain_in_prio_list(struct toi_bdev_info *this) ++{ ++ struct toi_bdev_info **prev_ptr; ++ struct toi_bdev_info *cur; ++ ++ /* Loop through the existing chain, finding where to insert it */ ++ prev_ptr = &prio_chain_head; ++ cur = prio_chain_head; ++ ++ while (cur && cur->prio >= this->prio) { ++ prev_ptr = &cur->next; ++ cur = cur->next; ++ } ++ ++ this->next = *prev_ptr; ++ *prev_ptr = this; ++ ++ this = prio_chain_head; ++ while (this) ++ this = this->next; ++ num_chains++; ++} ++ ++/** ++ * toi_extent_state_goto_start - reinitialize an extent chain iterator ++ * @state: Iterator to reinitialize ++ **/ ++void toi_extent_state_goto_start(void) ++{ ++ struct toi_bdev_info *this = prio_chain_head; ++ ++ while (this) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "Setting current extent to %p.", this->blocks.first); ++ this->blocks.current_extent = this->blocks.first; ++ if (this->blocks.current_extent) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "Setting current offset to %lu.", ++ this->blocks.current_extent->start); ++ this->blocks.current_offset = ++ this->blocks.current_extent->start; ++ } ++ ++ this = this->next; ++ } ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Setting current chain to %p.", ++ prio_chain_head); ++ toi_writer_posn.current_chain = prio_chain_head; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Leaving extent state goto start."); ++} ++ ++/** ++ * toi_extent_state_save - save state of the iterator ++ * @state: Current state of the chain ++ * @saved_state: Iterator to populate ++ * ++ * Given a state and a struct hibernate_extent_state_store, save the current ++ * position in a format that can be used with relocated chains (at ++ * resume time). ++ **/ ++void toi_extent_state_save(int slot) ++{ ++ struct toi_bdev_info *cur_chain = prio_chain_head; ++ struct hibernate_extent *extent; ++ struct hibernate_extent_saved_state *chain_state; ++ int i = 0; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_extent_state_save, slot %d.", ++ slot); ++ ++ if (!toi_writer_posn.current_chain) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "No current chain => " ++ "chain_num = -1."); ++ toi_writer_posn.saved_chain_number[slot] = -1; ++ return; ++ } ++ ++ while (cur_chain) { ++ i++; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Saving chain %d (%p) " ++ "state, slot %d.", i, cur_chain, slot); ++ ++ chain_state = &cur_chain->saved_state[slot]; ++ ++ chain_state->offset = cur_chain->blocks.current_offset; ++ ++ if (toi_writer_posn.current_chain == cur_chain) { ++ toi_writer_posn.saved_chain_number[slot] = i; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "This is the chain " ++ "we were on => chain_num is %d.", i); ++ } ++ ++ if (!cur_chain->blocks.current_extent) { ++ chain_state->extent_num = 0; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "No current extent " ++ "for this chain => extent_num %d is 0.", ++ i); ++ cur_chain = cur_chain->next; ++ continue; ++ } ++ ++ extent = cur_chain->blocks.first; ++ chain_state->extent_num = 1; ++ ++ while (extent != cur_chain->blocks.current_extent) { ++ chain_state->extent_num++; ++ extent = extent->next; ++ } ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "extent num %d is %d.", i, ++ chain_state->extent_num); ++ ++ cur_chain = cur_chain->next; ++ } ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "Completed saving extent state slot %d.", slot); ++} ++ ++/** ++ * toi_extent_state_restore - restore the position saved by extent_state_save ++ * @state: State to populate ++ * @saved_state: Iterator saved to restore ++ **/ ++void toi_extent_state_restore(int slot) ++{ ++ int i = 0; ++ struct toi_bdev_info *cur_chain = prio_chain_head; ++ struct hibernate_extent_saved_state *chain_state; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "toi_extent_state_restore - slot %d.", slot); ++ ++ if (toi_writer_posn.saved_chain_number[slot] == -1) { ++ toi_writer_posn.current_chain = NULL; ++ return; ++ } ++ ++ while (cur_chain) { ++ int posn; ++ int j; ++ i++; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Restoring chain %d (%p) " ++ "state, slot %d.", i, cur_chain, slot); ++ ++ chain_state = &cur_chain->saved_state[slot]; ++ ++ posn = chain_state->extent_num; ++ ++ cur_chain->blocks.current_extent = cur_chain->blocks.first; ++ cur_chain->blocks.current_offset = chain_state->offset; ++ ++ if (i == toi_writer_posn.saved_chain_number[slot]) { ++ toi_writer_posn.current_chain = cur_chain; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "Found current chain."); ++ } ++ ++ for (j = 0; j < 4; j++) ++ if (i == toi_writer_posn.saved_chain_number[j]) { ++ toi_writer_posn.saved_chain_ptr[j] = cur_chain; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "Found saved chain ptr %d (%p) (offset" ++ " %d).", j, cur_chain, ++ cur_chain->saved_state[j].offset); ++ } ++ ++ if (posn) { ++ while (--posn) ++ cur_chain->blocks.current_extent = ++ cur_chain->blocks.current_extent->next; ++ } else ++ cur_chain->blocks.current_extent = NULL; ++ ++ cur_chain = cur_chain->next; ++ } ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Done."); ++ if (test_action_state(TOI_LOGALL)) ++ dump_block_chains(); ++} ++ ++/* ++ * Storage needed ++ * ++ * Returns amount of space in the image header required ++ * for the chain data. This ignores the links between ++ * pages, which we factor in when allocating the space. ++ */ ++int toi_bio_devinfo_storage_needed(void) ++{ ++ int result = sizeof(num_chains); ++ struct toi_bdev_info *chain = prio_chain_head; ++ ++ while (chain) { ++ result += metadata_size; ++ ++ /* Chain size */ ++ result += sizeof(int); ++ ++ /* Extents */ ++ result += (2 * sizeof(unsigned long) * ++ chain->blocks.num_extents); ++ ++ chain = chain->next; ++ } ++ ++ result += 4 * sizeof(int); ++ return result; ++} ++ ++static unsigned long chain_pages_used(struct toi_bdev_info *chain) ++{ ++ struct hibernate_extent *this = chain->blocks.first; ++ struct hibernate_extent_saved_state *state = &chain->saved_state[3]; ++ unsigned long size = 0; ++ int extent_idx = 1; ++ ++ if (!state->extent_num) { ++ if (!this) ++ return 0; ++ else ++ return chain->blocks.size; ++ } ++ ++ while (extent_idx < state->extent_num) { ++ size += (this->end - this->start + 1); ++ this = this->next; ++ extent_idx++; ++ } ++ ++ /* We didn't use the one we're sitting on, so don't count it */ ++ return size + state->offset - this->start; ++} ++ ++/** ++ * toi_serialise_extent_chain - write a chain in the image ++ * @chain: Chain to write. ++ **/ ++static int toi_serialise_extent_chain(struct toi_bdev_info *chain) ++{ ++ struct hibernate_extent *this; ++ int ret; ++ int i = 1; ++ ++ chain->pages_used = chain_pages_used(chain); ++ ++ if (test_action_state(TOI_LOGALL)) ++ dump_block_chains(); ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Serialising chain (dev_t %lx).", ++ chain->dev_t); ++ /* Device info - dev_t, prio, bmap_shift, blocks per page, positions */ ++ ret = toiActiveAllocator->rw_header_chunk(WRITE, &toi_blockwriter_ops, ++ (char *) &chain->uuid, metadata_size); ++ if (ret) ++ return ret; ++ ++ /* Num extents */ ++ ret = toiActiveAllocator->rw_header_chunk(WRITE, &toi_blockwriter_ops, ++ (char *) &chain->blocks.num_extents, sizeof(int)); ++ if (ret) ++ return ret; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "%d extents.", ++ chain->blocks.num_extents); ++ ++ this = chain->blocks.first; ++ while (this) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Extent %d.", i); ++ ret = toiActiveAllocator->rw_header_chunk(WRITE, ++ &toi_blockwriter_ops, ++ (char *) this, 2 * sizeof(this->start)); ++ if (ret) ++ return ret; ++ this = this->next; ++ i++; ++ } ++ ++ return ret; ++} ++ ++int toi_serialise_extent_chains(void) ++{ ++ struct toi_bdev_info *this = prio_chain_head; ++ int result; ++ ++ /* Write the number of chains */ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Write number of chains (%d)", ++ num_chains); ++ result = toiActiveAllocator->rw_header_chunk(WRITE, ++ &toi_blockwriter_ops, (char *) &num_chains, ++ sizeof(int)); ++ if (result) ++ return result; ++ ++ /* Then the chains themselves */ ++ while (this) { ++ result = toi_serialise_extent_chain(this); ++ if (result) ++ return result; ++ this = this->next; ++ } ++ ++ /* ++ * Finally, the chain we should be on at the start of each ++ * section. ++ */ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Saved chain numbers."); ++ result = toiActiveAllocator->rw_header_chunk(WRITE, ++ &toi_blockwriter_ops, ++ (char *) &toi_writer_posn.saved_chain_number[0], ++ 4 * sizeof(int)); ++ ++ return result; ++} ++ ++int toi_register_storage_chain(struct toi_bdev_info *new) ++{ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Inserting chain %p into list.", ++ new); ++ toi_insert_chain_in_prio_list(new); ++ return 0; ++} ++ ++static void free_bdev_info(struct toi_bdev_info *chain) ++{ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Free chain %p.", chain); ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, " - Block extents."); ++ toi_put_extent_chain(&chain->blocks); ++ ++ /* ++ * The allocator may need to do more than just free the chains ++ * (swap_free, for example). Don't call from boot kernel. ++ */ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, " - Allocator extents."); ++ if (chain->allocator) ++ chain->allocator->bio_allocator_ops->free_storage(chain); ++ ++ /* ++ * Dropping out of reading atomic copy? Need to undo ++ * toi_open_by_devnum. ++ */ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, " - Bdev."); ++ if (chain->bdev && !IS_ERR(chain->bdev) && ++ chain->bdev != resume_block_device && ++ chain->bdev != header_block_device && ++ test_toi_state(TOI_TRYING_TO_RESUME)) ++ toi_close_bdev(chain->bdev); ++ ++ /* Poison */ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, " - Struct."); ++ toi_kfree(39, chain, sizeof(*chain)); ++ ++ if (prio_chain_head == chain) ++ prio_chain_head = NULL; ++ ++ num_chains--; ++} ++ ++void free_all_bdev_info(void) ++{ ++ struct toi_bdev_info *this = prio_chain_head; ++ ++ while (this) { ++ struct toi_bdev_info *next = this->next; ++ free_bdev_info(this); ++ this = next; ++ } ++ ++ memset((char *) &toi_writer_posn, 0, sizeof(toi_writer_posn)); ++ prio_chain_head = NULL; ++} ++ ++static void set_up_start_position(void) ++{ ++ toi_writer_posn.current_chain = prio_chain_head; ++ go_next_page(0, 0); ++} ++ ++/** ++ * toi_load_extent_chain - read back a chain saved in the image ++ * @chain: Chain to load ++ * ++ * The linked list of extents is reconstructed from the disk. chain will point ++ * to the first entry. ++ **/ ++int toi_load_extent_chain(int index, int *num_loaded) ++{ ++ struct toi_bdev_info *chain = toi_kzalloc(39, ++ sizeof(struct toi_bdev_info), GFP_ATOMIC); ++ struct hibernate_extent *this, *last = NULL; ++ int i, ret; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Loading extent chain %d.", index); ++ /* Get dev_t, prio, bmap_shift, blocks per page, positions */ ++ ret = toiActiveAllocator->rw_header_chunk_noreadahead(READ, NULL, ++ (char *) &chain->uuid, metadata_size); ++ ++ if (ret) { ++ printk(KERN_ERR "Failed to read the size of extent chain.\n"); ++ toi_kfree(39, chain, sizeof(*chain)); ++ return 1; ++ } ++ ++ toi_bkd.pages_used[index] = chain->pages_used; ++ ++ ret = toiActiveAllocator->rw_header_chunk_noreadahead(READ, NULL, ++ (char *) &chain->blocks.num_extents, sizeof(int)); ++ if (ret) { ++ printk(KERN_ERR "Failed to read the size of extent chain.\n"); ++ toi_kfree(39, chain, sizeof(*chain)); ++ return 1; ++ } ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "%d extents.", ++ chain->blocks.num_extents); ++ ++ for (i = 0; i < chain->blocks.num_extents; i++) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Extent %d.", i + 1); ++ ++ this = toi_kzalloc(2, sizeof(struct hibernate_extent), ++ TOI_ATOMIC_GFP); ++ if (!this) { ++ printk(KERN_INFO "Failed to allocate a new extent.\n"); ++ free_bdev_info(chain); ++ return -ENOMEM; ++ } ++ this->next = NULL; ++ /* Get the next page */ ++ ret = toiActiveAllocator->rw_header_chunk_noreadahead(READ, ++ NULL, (char *) this, 2 * sizeof(this->start)); ++ if (ret) { ++ printk(KERN_INFO "Failed to read an extent.\n"); ++ toi_kfree(2, this, sizeof(struct hibernate_extent)); ++ free_bdev_info(chain); ++ return 1; ++ } ++ ++ if (last) ++ last->next = this; ++ else { ++ char b1[32], b2[32], b3[32]; ++ /* ++ * Open the bdev ++ */ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "Chain dev_t is %s. Resume dev t is %s. Header" ++ " bdev_t is %s.\n", ++ format_dev_t(b1, chain->dev_t), ++ format_dev_t(b2, resume_dev_t), ++ format_dev_t(b3, toi_sig_data->header_dev_t)); ++ ++ if (chain->dev_t == resume_dev_t) ++ chain->bdev = resume_block_device; ++ else if (chain->dev_t == toi_sig_data->header_dev_t) ++ chain->bdev = header_block_device; ++ else { ++ chain->bdev = toi_open_bdev(chain->uuid, ++ chain->dev_t, 1); ++ if (IS_ERR(chain->bdev)) { ++ free_bdev_info(chain); ++ return -ENODEV; ++ } ++ } ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Chain bmap shift " ++ "is %d and blocks per page is %d.", ++ chain->bmap_shift, ++ chain->blocks_per_page); ++ ++ chain->blocks.first = this; ++ ++ /* ++ * Couldn't do this earlier, but can't do ++ * goto_start now - we may have already used blocks ++ * in the first chain. ++ */ ++ chain->blocks.current_extent = this; ++ chain->blocks.current_offset = this->start; ++ ++ /* ++ * Can't wait until we've read the whole chain ++ * before we insert it in the list. We might need ++ * this chain to read the next page in the header ++ */ ++ toi_insert_chain_in_prio_list(chain); ++ } ++ ++ /* ++ * We have to wait until 2 extents are loaded before setting up ++ * properly because if the first extent has only one page, we ++ * will need to put the position on the second extent. Sounds ++ * obvious, but it wasn't! ++ */ ++ (*num_loaded)++; ++ if ((*num_loaded) == 2) ++ set_up_start_position(); ++ last = this; ++ } ++ ++ /* ++ * Shouldn't get empty chains, but it's not impossible. Link them in so ++ * they get freed properly later. ++ */ ++ if (!chain->blocks.num_extents) ++ toi_insert_chain_in_prio_list(chain); ++ ++ if (!chain->blocks.current_extent) { ++ chain->blocks.current_extent = chain->blocks.first; ++ if (chain->blocks.current_extent) ++ chain->blocks.current_offset = ++ chain->blocks.current_extent->start; ++ } ++ return 0; ++} ++ ++int toi_load_extent_chains(void) ++{ ++ int result; ++ int to_load; ++ int i; ++ int extents_loaded = 0; ++ ++ result = toiActiveAllocator->rw_header_chunk_noreadahead(READ, NULL, ++ (char *) &to_load, ++ sizeof(int)); ++ if (result) ++ return result; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "%d chains to read.", to_load); ++ ++ for (i = 0; i < to_load; i++) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, " >> Loading chain %d/%d.", ++ i, to_load); ++ result = toi_load_extent_chain(i, &extents_loaded); ++ if (result) ++ return result; ++ } ++ ++ /* If we never got to a second extent, we still need to do this. */ ++ if (extents_loaded == 1) ++ set_up_start_position(); ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Save chain numbers."); ++ result = toiActiveAllocator->rw_header_chunk_noreadahead(READ, ++ &toi_blockwriter_ops, ++ (char *) &toi_writer_posn.saved_chain_number[0], ++ 4 * sizeof(int)); ++ ++ return result; ++} ++ ++static int toi_end_of_stream(int writing, int section_barrier) ++{ ++ struct toi_bdev_info *cur_chain = toi_writer_posn.current_chain; ++ int compare_to = next_section[current_stream]; ++ struct toi_bdev_info *compare_chain = ++ toi_writer_posn.saved_chain_ptr[compare_to]; ++ int compare_offset = compare_chain ? ++ compare_chain->saved_state[compare_to].offset : 0; ++ ++ if (!section_barrier) ++ return 0; ++ ++ if (!cur_chain) ++ return 1; ++ ++ if (cur_chain == compare_chain && ++ cur_chain->blocks.current_offset == compare_offset) { ++ if (writing) { ++ if (!current_stream) { ++ debug_broken_header(); ++ return 1; ++ } ++ } else { ++ more_readahead = 0; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "Reached the end of stream %d " ++ "(not an error).", current_stream); ++ return 1; ++ } ++ } ++ ++ return 0; ++} ++ ++/** ++ * go_next_page - skip blocks to the start of the next page ++ * @writing: Whether we're reading or writing the image. ++ * ++ * Go forward one page. ++ **/ ++int go_next_page(int writing, int section_barrier) ++{ ++ struct toi_bdev_info *cur_chain = toi_writer_posn.current_chain; ++ int max = cur_chain ? cur_chain->blocks_per_page : 1; ++ ++ /* Nope. Go foward a page - or maybe two. Don't stripe the header, ++ * so that bad fragmentation doesn't put the extent data containing ++ * the location of the second page out of the first header page. ++ */ ++ if (toi_extent_state_next(max, current_stream)) { ++ /* Don't complain if readahead falls off the end */ ++ if (writing && section_barrier) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Extent state eof. " ++ "Expected compression ratio too optimistic?"); ++ if (test_action_state(TOI_LOGALL)) ++ dump_block_chains(); ++ } ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Ran out of extents to " ++ "read/write. (Not necessarily a fatal error."); ++ return -ENOSPC; ++ } ++ ++ return 0; ++} ++ ++int devices_of_same_priority(struct toi_bdev_info *this) ++{ ++ struct toi_bdev_info *check = prio_chain_head; ++ int i = 0; ++ ++ while (check) { ++ if (check->prio == this->prio) ++ i++; ++ check = check->next; ++ } ++ ++ return i; ++} ++ ++/** ++ * toi_bio_rw_page - do i/o on the next disk page in the image ++ * @writing: Whether reading or writing. ++ * @page: Page to do i/o on. ++ * @is_readahead: Whether we're doing readahead ++ * @free_group: The group used in allocating the page ++ * ++ * Submit a page for reading or writing, possibly readahead. ++ * Pass the group used in allocating the page as well, as it should ++ * be freed on completion of the bio if we're writing the page. ++ **/ ++int toi_bio_rw_page(int writing, struct page *page, ++ int is_readahead, int free_group) ++{ ++ int result = toi_end_of_stream(writing, 1); ++ struct toi_bdev_info *dev_info = toi_writer_posn.current_chain; ++ ++ if (result) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Seeking to read/write " ++ "another page when stream has ended."); ++ return -ENOSPC; ++ } ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "%sing device %lx, sector %d << %d.", ++ writing ? "Writ" : "Read", ++ dev_info->bdev, dev_info->blocks.current_offset, ++ dev_info->bmap_shift); ++ ++ result = toi_do_io(writing, dev_info->bdev, ++ dev_info->blocks.current_offset << dev_info->bmap_shift, ++ page, is_readahead, 0, free_group); ++ ++ /* Ignore the result here - will check end of stream if come in again */ ++ go_next_page(writing, 1); ++ ++ if (result) ++ printk(KERN_ERR "toi_do_io returned %d.\n", result); ++ return result; ++} ++ ++dev_t get_header_dev_t(void) ++{ ++ return prio_chain_head->dev_t; ++} ++ ++struct block_device *get_header_bdev(void) ++{ ++ return prio_chain_head->bdev; ++} ++ ++unsigned long get_headerblock(void) ++{ ++ return prio_chain_head->blocks.first->start << ++ prio_chain_head->bmap_shift; ++} ++ ++int get_main_pool_phys_params(void) ++{ ++ struct toi_bdev_info *this = prio_chain_head; ++ int result; ++ ++ while (this) { ++ result = this->allocator->bio_allocator_ops->bmap(this); ++ if (result) ++ return result; ++ this = this->next; ++ } ++ ++ return 0; ++} ++ ++static int apply_header_reservation(void) ++{ ++ int i; ++ ++ if (!header_pages_reserved) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "No header pages reserved at the moment."); ++ return 0; ++ } ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Applying header reservation."); ++ ++ /* Apply header space reservation */ ++ toi_extent_state_goto_start(); ++ ++ for (i = 0; i < header_pages_reserved; i++) ++ if (go_next_page(1, 0)) ++ return -ENOSPC; ++ ++ /* The end of header pages will be the start of pageset 2 */ ++ toi_extent_state_save(2); ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "Finished applying header reservation."); ++ return 0; ++} ++ ++static int toi_bio_register_storage(void) ++{ ++ int result = 0; ++ struct toi_module_ops *this_module; ++ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (!this_module->enabled || ++ this_module->type != BIO_ALLOCATOR_MODULE) ++ continue; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "Registering storage from %s.", ++ this_module->name); ++ result = this_module->bio_allocator_ops->register_storage(); ++ if (result) ++ break; ++ } ++ ++ return result; ++} ++ ++int toi_bio_allocate_storage(unsigned long request) ++{ ++ struct toi_bdev_info *chain = prio_chain_head; ++ unsigned long to_get = request; ++ unsigned long extra_pages, needed; ++ int no_free = 0; ++ ++ if (!chain) { ++ int result = toi_bio_register_storage(); ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_allocate_storage: " ++ "Registering storage."); ++ if (result) ++ return 0; ++ chain = prio_chain_head; ++ if (!chain) { ++ printk("TuxOnIce: No storage was registered.\n"); ++ return 0; ++ } ++ } ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_allocate_storage: " ++ "Request is %lu pages.", request); ++ extra_pages = DIV_ROUND_UP(request * (sizeof(unsigned long) ++ + sizeof(int)), PAGE_SIZE); ++ needed = request + extra_pages + header_pages_reserved; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Adding %lu extra pages and %lu " ++ "for header => %lu.", ++ extra_pages, header_pages_reserved, needed); ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Already allocated %lu pages.", ++ raw_pages_allocd); ++ ++ to_get = needed > raw_pages_allocd ? needed - raw_pages_allocd : 0; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Need to get %lu pages.", to_get); ++ ++ if (!to_get) ++ return apply_header_reservation(); ++ ++ while (to_get && chain) { ++ int num_group = devices_of_same_priority(chain); ++ int divisor = num_group - no_free; ++ int i; ++ unsigned long portion = DIV_ROUND_UP(to_get, divisor); ++ unsigned long got = 0; ++ unsigned long got_this_round = 0; ++ struct toi_bdev_info *top = chain; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ " Start of loop. To get is %lu. Divisor is %d.", ++ to_get, divisor); ++ no_free = 0; ++ ++ /* ++ * We're aiming to spread the allocated storage as evenly ++ * as possible, but we also want to get all the storage we ++ * can off this priority. ++ */ ++ for (i = 0; i < num_group; i++) { ++ struct toi_bio_allocator_ops *ops = ++ chain->allocator->bio_allocator_ops; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ " Asking for %lu pages from chain %p.", ++ portion, chain); ++ got = ops->allocate_storage(chain, portion); ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ " Got %lu pages from allocator %p.", ++ got, chain); ++ if (!got) ++ no_free++; ++ got_this_round += got; ++ chain = chain->next; ++ } ++ toi_message(TOI_IO, TOI_VERBOSE, 0, " Loop finished. Got a " ++ "total of %lu pages from %d allocators.", ++ got_this_round, divisor - no_free); ++ ++ raw_pages_allocd += got_this_round; ++ to_get = needed > raw_pages_allocd ? needed - raw_pages_allocd : ++ 0; ++ ++ /* ++ * If we got anything from chains of this priority and we ++ * still have storage to allocate, go over this priority ++ * again. ++ */ ++ if (got_this_round && to_get) ++ chain = top; ++ else ++ no_free = 0; ++ } ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Finished allocating. Calling " ++ "get_main_pool_phys_params"); ++ /* Now let swap allocator bmap the pages */ ++ get_main_pool_phys_params(); ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Done. Reserving header."); ++ return apply_header_reservation(); ++} ++ ++void toi_bio_chains_post_atomic(struct toi_boot_kernel_data *bkd) ++{ ++ int i = 0; ++ struct toi_bdev_info *cur_chain = prio_chain_head; ++ ++ while (cur_chain) { ++ cur_chain->pages_used = bkd->pages_used[i]; ++ cur_chain = cur_chain->next; ++ i++; ++ } ++} ++ ++int toi_bio_chains_debug_info(char *buffer, int size) ++{ ++ /* Show what we actually used */ ++ struct toi_bdev_info *cur_chain = prio_chain_head; ++ int len = 0; ++ ++ while (cur_chain) { ++ len += scnprintf(buffer + len, size - len, " Used %lu pages " ++ "from %s.\n", cur_chain->pages_used, ++ cur_chain->name); ++ cur_chain = cur_chain->next; ++ } ++ ++ return len; ++} +diff --git a/kernel/power/tuxonice_bio_core.c b/kernel/power/tuxonice_bio_core.c +new file mode 100644 +index 0000000..b8ae996 +--- /dev/null ++++ b/kernel/power/tuxonice_bio_core.c +@@ -0,0 +1,1810 @@ ++/* ++ * kernel/power/tuxonice_bio.c ++ * ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * Distributed under GPLv2. ++ * ++ * This file contains block io functions for TuxOnIce. These are ++ * used by the swapwriter and it is planned that they will also ++ * be used by the NFSwriter. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "tuxonice.h" ++#include "tuxonice_sysfs.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_prepare_image.h" ++#include "tuxonice_bio.h" ++#include "tuxonice_ui.h" ++#include "tuxonice_alloc.h" ++#include "tuxonice_io.h" ++#include "tuxonice_builtin.h" ++#include "tuxonice_bio_internal.h" ++ ++#define MEMORY_ONLY 1 ++#define THROTTLE_WAIT 2 ++ ++/* #define MEASURE_MUTEX_CONTENTION */ ++#ifndef MEASURE_MUTEX_CONTENTION ++#define my_mutex_lock(index, the_lock) mutex_lock(the_lock) ++#define my_mutex_unlock(index, the_lock) mutex_unlock(the_lock) ++#else ++unsigned long mutex_times[2][2][NR_CPUS]; ++#define my_mutex_lock(index, the_lock) do { \ ++ int have_mutex; \ ++ have_mutex = mutex_trylock(the_lock); \ ++ if (!have_mutex) { \ ++ mutex_lock(the_lock); \ ++ mutex_times[index][0][smp_processor_id()]++; \ ++ } else { \ ++ mutex_times[index][1][smp_processor_id()]++; \ ++ } ++ ++#define my_mutex_unlock(index, the_lock) \ ++ mutex_unlock(the_lock); \ ++} while (0) ++#endif ++ ++static int page_idx, reset_idx; ++ ++static int target_outstanding_io = 1024; ++static int max_outstanding_writes, max_outstanding_reads; ++ ++static struct page *bio_queue_head, *bio_queue_tail; ++static atomic_t toi_bio_queue_size; ++static DEFINE_SPINLOCK(bio_queue_lock); ++ ++static int free_mem_throttle, throughput_throttle; ++int more_readahead = 1; ++static struct page *readahead_list_head, *readahead_list_tail; ++ ++static struct page *waiting_on; ++ ++static atomic_t toi_io_in_progress, toi_io_done; ++static DECLARE_WAIT_QUEUE_HEAD(num_in_progress_wait); ++ ++int current_stream; ++/* Not static, so that the allocators can setup and complete ++ * writing the header */ ++char *toi_writer_buffer; ++int toi_writer_buffer_posn; ++ ++static DEFINE_MUTEX(toi_bio_mutex); ++static DEFINE_MUTEX(toi_bio_readahead_mutex); ++ ++static struct task_struct *toi_queue_flusher; ++static int toi_bio_queue_flush_pages(int dedicated_thread); ++ ++struct toi_module_ops toi_blockwriter_ops; ++ ++#define TOTAL_OUTSTANDING_IO (atomic_read(&toi_io_in_progress) + \ ++ atomic_read(&toi_bio_queue_size)) ++ ++unsigned long raw_pages_allocd, header_pages_reserved; ++ ++/** ++ * set_free_mem_throttle - set the point where we pause to avoid oom. ++ * ++ * Initially, this value is zero, but when we first fail to allocate memory, ++ * we set it (plus a buffer) and thereafter throttle i/o once that limit is ++ * reached. ++ **/ ++static void set_free_mem_throttle(void) ++{ ++ int new_throttle = nr_unallocated_buffer_pages() + 256; ++ ++ if (new_throttle > free_mem_throttle) ++ free_mem_throttle = new_throttle; ++} ++ ++#define NUM_REASONS 7 ++static atomic_t reasons[NUM_REASONS]; ++static char *reason_name[NUM_REASONS] = { ++ "readahead not ready", ++ "bio allocation", ++ "synchronous I/O", ++ "toi_bio_get_new_page", ++ "memory low", ++ "readahead buffer allocation", ++ "throughput_throttle", ++}; ++ ++/* User Specified Parameters. */ ++unsigned long resume_firstblock; ++dev_t resume_dev_t; ++struct block_device *resume_block_device; ++static atomic_t resume_bdev_open_count; ++ ++struct block_device *header_block_device; ++ ++/** ++ * toi_open_bdev: Open a bdev at resume time. ++ * ++ * index: The swap index. May be MAX_SWAPFILES for the resume_dev_t ++ * (the user can have resume= pointing at a swap partition/file that isn't ++ * swapon'd when they hibernate. MAX_SWAPFILES+1 for the first page of the ++ * header. It will be from a swap partition that was enabled when we hibernated, ++ * but we don't know it's real index until we read that first page. ++ * dev_t: The device major/minor. ++ * display_errs: Whether to try to do this quietly. ++ * ++ * We stored a dev_t in the image header. Open the matching device without ++ * requiring /dev/ in most cases and record the details needed ++ * to close it later and avoid duplicating work. ++ */ ++struct block_device *toi_open_bdev(char *uuid, dev_t default_device, ++ int display_errs) ++{ ++ struct block_device *bdev; ++ dev_t device = default_device; ++ char buf[32]; ++ ++ if (uuid) { ++ device = blk_lookup_uuid(uuid); ++ if (!device) { ++ device = default_device; ++ printk(KERN_DEBUG "Unable to resolve uuid. Falling back" ++ " to dev_t.\n"); ++ } else ++ printk(KERN_DEBUG "Resolved uuid to device %s.\n", ++ format_dev_t(buf, device)); ++ } ++ ++ if (!device) { ++ printk(KERN_ERR "TuxOnIce attempting to open a " ++ "blank dev_t!\n"); ++ dump_stack(); ++ return NULL; ++ } ++ bdev = toi_open_by_devnum(device); ++ ++ if (IS_ERR(bdev) || !bdev) { ++ if (display_errs) ++ toi_early_boot_message(1, TOI_CONTINUE_REQ, ++ "Failed to get access to block device " ++ "\"%x\" (error %d).\n Maybe you need " ++ "to run mknod and/or lvmsetup in an " ++ "initrd/ramfs?", device, bdev); ++ return ERR_PTR(-EINVAL); ++ } ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "TuxOnIce got bdev %p for dev_t %x.", ++ bdev, device); ++ ++ return bdev; ++} ++ ++static void toi_bio_reserve_header_space(unsigned long request) ++{ ++ header_pages_reserved = request; ++} ++ ++/** ++ * do_bio_wait - wait for some TuxOnIce I/O to complete ++ * @reason: The array index of the reason we're waiting. ++ * ++ * Wait for a particular page of I/O if we're after a particular page. ++ * If we're not after a particular page, wait instead for all in flight ++ * I/O to be completed or for us to have enough free memory to be able ++ * to submit more I/O. ++ * ++ * If we wait, we also update our statistics regarding why we waited. ++ **/ ++static void do_bio_wait(int reason) ++{ ++ struct page *was_waiting_on = waiting_on; ++ ++ /* On SMP, waiting_on can be reset, so we make a copy */ ++ if (was_waiting_on) { ++ wait_on_page_locked(was_waiting_on); ++ atomic_inc(&reasons[reason]); ++ } else { ++ atomic_inc(&reasons[reason]); ++ ++ wait_event(num_in_progress_wait, ++ !atomic_read(&toi_io_in_progress) || ++ nr_unallocated_buffer_pages() > free_mem_throttle); ++ } ++} ++ ++/** ++ * throttle_if_needed - wait for I/O completion if throttle points are reached ++ * @flags: What to check and how to act. ++ * ++ * Check whether we need to wait for some I/O to complete. We always check ++ * whether we have enough memory available, but may also (depending upon ++ * @reason) check if the throughput throttle limit has been reached. ++ **/ ++static int throttle_if_needed(int flags) ++{ ++ int free_pages = nr_unallocated_buffer_pages(); ++ ++ /* Getting low on memory and I/O is in progress? */ ++ while (unlikely(free_pages < free_mem_throttle) && ++ atomic_read(&toi_io_in_progress) && ++ !test_result_state(TOI_ABORTED)) { ++ if (!(flags & THROTTLE_WAIT)) ++ return -ENOMEM; ++ do_bio_wait(4); ++ free_pages = nr_unallocated_buffer_pages(); ++ } ++ ++ while (!(flags & MEMORY_ONLY) && throughput_throttle && ++ TOTAL_OUTSTANDING_IO >= throughput_throttle && ++ !test_result_state(TOI_ABORTED)) { ++ int result = toi_bio_queue_flush_pages(0); ++ if (result) ++ return result; ++ atomic_inc(&reasons[6]); ++ wait_event(num_in_progress_wait, ++ !atomic_read(&toi_io_in_progress) || ++ TOTAL_OUTSTANDING_IO < throughput_throttle); ++ } ++ ++ return 0; ++} ++ ++/** ++ * update_throughput_throttle - update the raw throughput throttle ++ * @jif_index: The number of times this function has been called. ++ * ++ * This function is called four times per second by the core, and used to limit ++ * the amount of I/O we submit at once, spreading out our waiting through the ++ * whole job and letting userui get an opportunity to do its work. ++ * ++ * We don't start limiting I/O until 1/4s has gone so that we get a ++ * decent sample for our initial limit, and keep updating it because ++ * throughput may vary (on rotating media, eg) with our block number. ++ * ++ * We throttle to 1/10s worth of I/O. ++ **/ ++static void update_throughput_throttle(int jif_index) ++{ ++ int done = atomic_read(&toi_io_done); ++ throughput_throttle = done * 2 / 5 / jif_index; ++} ++ ++/** ++ * toi_finish_all_io - wait for all outstanding i/o to complete ++ * ++ * Flush any queued but unsubmitted I/O and wait for it all to complete. ++ **/ ++static int toi_finish_all_io(void) ++{ ++ int result = toi_bio_queue_flush_pages(0); ++ wait_event(num_in_progress_wait, !TOTAL_OUTSTANDING_IO); ++ return result; ++} ++ ++/** ++ * toi_end_bio - bio completion function. ++ * @bio: bio that has completed. ++ * @err: Error value. Yes, like end_swap_bio_read, we ignore it. ++ * ++ * Function called by the block driver from interrupt context when I/O is ++ * completed. If we were writing the page, we want to free it and will have ++ * set bio->bi_private to the parameter we should use in telling the page ++ * allocation accounting code what the page was allocated for. If we're ++ * reading the page, it will be in the singly linked list made from ++ * page->private pointers. ++ **/ ++static void toi_end_bio(struct bio *bio, int err) ++{ ++ struct page *page = bio->bi_io_vec[0].bv_page; ++ ++ BUG_ON(!test_bit(BIO_UPTODATE, &bio->bi_flags)); ++ ++ unlock_page(page); ++ bio_put(bio); ++ ++ if (waiting_on == page) ++ waiting_on = NULL; ++ ++ put_page(page); ++ ++ if (bio->bi_private) ++ toi__free_page((int) ((unsigned long) bio->bi_private) , page); ++ ++ bio_put(bio); ++ ++ atomic_dec(&toi_io_in_progress); ++ atomic_inc(&toi_io_done); ++ ++ wake_up(&num_in_progress_wait); ++} ++ ++/** ++ * submit - submit BIO request ++ * @writing: READ or WRITE. ++ * @dev: The block device we're using. ++ * @first_block: The first sector we're using. ++ * @page: The page being used for I/O. ++ * @free_group: If writing, the group that was used in allocating the page ++ * and which will be used in freeing the page from the completion ++ * routine. ++ * ++ * Based on Patrick Mochell's pmdisk code from long ago: "Straight from the ++ * textbook - allocate and initialize the bio. If we're writing, make sure ++ * the page is marked as dirty. Then submit it and carry on." ++ * ++ * If we're just testing the speed of our own code, we fake having done all ++ * the hard work and all toi_end_bio immediately. ++ **/ ++static int submit(int writing, struct block_device *dev, sector_t first_block, ++ struct page *page, int free_group) ++{ ++ struct bio *bio = NULL; ++ int cur_outstanding_io, result; ++ ++ /* ++ * Shouldn't throttle if reading - can deadlock in the single ++ * threaded case as pages are only freed when we use the ++ * readahead. ++ */ ++ if (writing) { ++ result = throttle_if_needed(MEMORY_ONLY | THROTTLE_WAIT); ++ if (result) ++ return result; ++ } ++ ++ while (!bio) { ++ bio = bio_alloc(TOI_ATOMIC_GFP, 1); ++ if (!bio) { ++ set_free_mem_throttle(); ++ do_bio_wait(1); ++ } ++ } ++ ++ bio->bi_bdev = dev; ++ bio->bi_sector = first_block; ++ bio->bi_private = (void *) ((unsigned long) free_group); ++ bio->bi_end_io = toi_end_bio; ++ ++ if (bio_add_page(bio, page, PAGE_SIZE, 0) < PAGE_SIZE) { ++ printk(KERN_DEBUG "ERROR: adding page to bio at %lld\n", ++ (unsigned long long) first_block); ++ bio_put(bio); ++ return -EFAULT; ++ } ++ ++ bio_get(bio); ++ ++ cur_outstanding_io = atomic_add_return(1, &toi_io_in_progress); ++ if (writing) { ++ if (cur_outstanding_io > max_outstanding_writes) ++ max_outstanding_writes = cur_outstanding_io; ++ } else { ++ if (cur_outstanding_io > max_outstanding_reads) ++ max_outstanding_reads = cur_outstanding_io; ++ } ++ ++ ++ if (unlikely(test_action_state(TOI_TEST_BIO))) { ++ /* Fake having done the hard work */ ++ set_bit(BIO_UPTODATE, &bio->bi_flags); ++ toi_end_bio(bio, 0); ++ } else ++ submit_bio(writing | (1 << BIO_RW_SYNCIO) | ++ (1 << BIO_RW_TUXONICE) | ++ (1 << BIO_RW_UNPLUG), bio); ++ ++ return 0; ++} ++ ++/** ++ * toi_do_io: Prepare to do some i/o on a page and submit or batch it. ++ * ++ * @writing: Whether reading or writing. ++ * @bdev: The block device which we're using. ++ * @block0: The first sector we're reading or writing. ++ * @page: The page on which I/O is being done. ++ * @readahead_index: If doing readahead, the index (reset this flag when done). ++ * @syncio: Whether the i/o is being done synchronously. ++ * ++ * Prepare and start a read or write operation. ++ * ++ * Note that we always work with our own page. If writing, we might be given a ++ * compression buffer that will immediately be used to start compressing the ++ * next page. For reading, we do readahead and therefore don't know the final ++ * address where the data needs to go. ++ **/ ++int toi_do_io(int writing, struct block_device *bdev, long block0, ++ struct page *page, int is_readahead, int syncio, int free_group) ++{ ++ page->private = 0; ++ ++ /* Do here so we don't race against toi_bio_get_next_page_read */ ++ lock_page(page); ++ ++ if (is_readahead) { ++ if (readahead_list_head) ++ readahead_list_tail->private = (unsigned long) page; ++ else ++ readahead_list_head = page; ++ ++ readahead_list_tail = page; ++ } ++ ++ /* Done before submitting to avoid races. */ ++ if (syncio) ++ waiting_on = page; ++ ++ /* Submit the page */ ++ get_page(page); ++ ++ if (submit(writing, bdev, block0, page, free_group)) ++ return -EFAULT; ++ ++ if (syncio) ++ do_bio_wait(2); ++ ++ return 0; ++} ++ ++/** ++ * toi_bdev_page_io - simpler interface to do directly i/o on a single page ++ * @writing: Whether reading or writing. ++ * @bdev: Block device on which we're operating. ++ * @pos: Sector at which page to read or write starts. ++ * @page: Page to be read/written. ++ * ++ * A simple interface to submit a page of I/O and wait for its completion. ++ * The caller must free the page used. ++ **/ ++static int toi_bdev_page_io(int writing, struct block_device *bdev, ++ long pos, struct page *page) ++{ ++ return toi_do_io(writing, bdev, pos, page, 0, 1, 0); ++} ++ ++/** ++ * toi_bio_memory_needed - report the amount of memory needed for block i/o ++ * ++ * We want to have at least enough memory so as to have target_outstanding_io ++ * or more transactions on the fly at once. If we can do more, fine. ++ **/ ++static int toi_bio_memory_needed(void) ++{ ++ return target_outstanding_io * (PAGE_SIZE + sizeof(struct request) + ++ sizeof(struct bio)); ++} ++ ++/** ++ * toi_bio_print_debug_stats - put out debugging info in the buffer provided ++ * @buffer: A buffer of size @size into which text should be placed. ++ * @size: The size of @buffer. ++ * ++ * Fill a buffer with debugging info. This is used for both our debug_info sysfs ++ * entry and for recording the same info in dmesg. ++ **/ ++static int toi_bio_print_debug_stats(char *buffer, int size) ++{ ++ int len = 0; ++ ++ if (toiActiveAllocator != &toi_blockwriter_ops) { ++ len = scnprintf(buffer, size, ++ "- Block I/O inactive.\n"); ++ return len; ++ } ++ ++ len = scnprintf(buffer, size, "- Block I/O active.\n"); ++ ++ len += toi_bio_chains_debug_info(buffer + len, size - len); ++ ++ len += scnprintf(buffer + len, size - len, ++ "- Max outstanding reads %d. Max writes %d.\n", ++ max_outstanding_reads, max_outstanding_writes); ++ ++ len += scnprintf(buffer + len, size - len, ++ " Memory_needed: %d x (%lu + %u + %u) = %d bytes.\n", ++ target_outstanding_io, ++ PAGE_SIZE, (unsigned int) sizeof(struct request), ++ (unsigned int) sizeof(struct bio), toi_bio_memory_needed()); ++ ++#ifdef MEASURE_MUTEX_CONTENTION ++ { ++ int i; ++ ++ len += scnprintf(buffer + len, size - len, ++ " Mutex contention while reading:\n Contended Free\n"); ++ ++ for_each_online_cpu(i) ++ len += scnprintf(buffer + len, size - len, ++ " %9lu %9lu\n", ++ mutex_times[0][0][i], mutex_times[0][1][i]); ++ ++ len += scnprintf(buffer + len, size - len, ++ " Mutex contention while writing:\n Contended Free\n"); ++ ++ for_each_online_cpu(i) ++ len += scnprintf(buffer + len, size - len, ++ " %9lu %9lu\n", ++ mutex_times[1][0][i], mutex_times[1][1][i]); ++ ++ } ++#endif ++ ++ return len + scnprintf(buffer + len, size - len, ++ " Free mem throttle point reached %d.\n", free_mem_throttle); ++} ++ ++static int total_header_bytes; ++static int unowned; ++ ++void debug_broken_header(void) ++{ ++ printk(KERN_DEBUG "Image header too big for size allocated!\n"); ++ print_toi_header_storage_for_modules(); ++ printk(KERN_DEBUG "Page flags : %d.\n", toi_pageflags_space_needed()); ++ printk(KERN_DEBUG "toi_header : %zu.\n", sizeof(struct toi_header)); ++ printk(KERN_DEBUG "Total unowned : %d.\n", unowned); ++ printk(KERN_DEBUG "Total used : %d (%ld pages).\n", total_header_bytes, ++ DIV_ROUND_UP(total_header_bytes, PAGE_SIZE)); ++ printk(KERN_DEBUG "Space needed now : %ld.\n", ++ get_header_storage_needed()); ++ dump_block_chains(); ++ abort_hibernate(TOI_HEADER_TOO_BIG, "Header reservation too small."); ++} ++ ++/** ++ * toi_rw_init - prepare to read or write a stream in the image ++ * @writing: Whether reading or writing. ++ * @stream number: Section of the image being processed. ++ * ++ * Prepare to read or write a section ('stream') in the image. ++ **/ ++static int toi_rw_init(int writing, int stream_number) ++{ ++ if (stream_number) ++ toi_extent_state_restore(stream_number); ++ else ++ toi_extent_state_goto_start(); ++ ++ if (writing) { ++ reset_idx = 0; ++ if (!current_stream) ++ page_idx = 0; ++ } else { ++ reset_idx = 1; ++ } ++ ++ atomic_set(&toi_io_done, 0); ++ if (!toi_writer_buffer) ++ toi_writer_buffer = (char *) toi_get_zeroed_page(11, ++ TOI_ATOMIC_GFP); ++ toi_writer_buffer_posn = writing ? 0 : PAGE_SIZE; ++ ++ current_stream = stream_number; ++ ++ more_readahead = 1; ++ ++ return toi_writer_buffer ? 0 : -ENOMEM; ++} ++ ++/** ++ * toi_bio_queue_write - queue a page for writing ++ * @full_buffer: Pointer to a page to be queued ++ * ++ * Add a page to the queue to be submitted. If we're the queue flusher, ++ * we'll do this once we've dropped toi_bio_mutex, so other threads can ++ * continue to submit I/O while we're on the slow path doing the actual ++ * submission. ++ **/ ++static void toi_bio_queue_write(char **full_buffer) ++{ ++ struct page *page = virt_to_page(*full_buffer); ++ unsigned long flags; ++ ++ *full_buffer = NULL; ++ page->private = 0; ++ ++ spin_lock_irqsave(&bio_queue_lock, flags); ++ if (!bio_queue_head) ++ bio_queue_head = page; ++ else ++ bio_queue_tail->private = (unsigned long) page; ++ ++ bio_queue_tail = page; ++ atomic_inc(&toi_bio_queue_size); ++ ++ spin_unlock_irqrestore(&bio_queue_lock, flags); ++ wake_up(&toi_io_queue_flusher); ++} ++ ++/** ++ * toi_rw_cleanup - Cleanup after i/o. ++ * @writing: Whether we were reading or writing. ++ * ++ * Flush all I/O and clean everything up after reading or writing a ++ * section of the image. ++ **/ ++static int toi_rw_cleanup(int writing) ++{ ++ int i, result = 0; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_rw_cleanup."); ++ if (writing) { ++ if (toi_writer_buffer_posn && !test_result_state(TOI_ABORTED)) ++ toi_bio_queue_write(&toi_writer_buffer); ++ ++ while (bio_queue_head && !result) ++ result = toi_bio_queue_flush_pages(0); ++ ++ if (result) ++ return result; ++ ++ if (current_stream == 2) ++ toi_extent_state_save(1); ++ else if (current_stream == 1) ++ toi_extent_state_save(3); ++ } ++ ++ result = toi_finish_all_io(); ++ ++ while (readahead_list_head) { ++ void *next = (void *) readahead_list_head->private; ++ toi__free_page(12, readahead_list_head); ++ readahead_list_head = next; ++ } ++ ++ readahead_list_tail = NULL; ++ ++ if (!current_stream) ++ return result; ++ ++ for (i = 0; i < NUM_REASONS; i++) { ++ if (!atomic_read(&reasons[i])) ++ continue; ++ printk(KERN_DEBUG "Waited for i/o due to %s %d times.\n", ++ reason_name[i], atomic_read(&reasons[i])); ++ atomic_set(&reasons[i], 0); ++ } ++ ++ current_stream = 0; ++ return result; ++} ++ ++/** ++ * toi_start_one_readahead - start one page of readahead ++ * @dedicated_thread: Is this a thread dedicated to doing readahead? ++ * ++ * Start one new page of readahead. If this is being called by a thread ++ * whose only just is to submit readahead, don't quit because we failed ++ * to allocate a page. ++ **/ ++static int toi_start_one_readahead(int dedicated_thread) ++{ ++ char *buffer = NULL; ++ int oom = 0, result; ++ ++ result = throttle_if_needed(dedicated_thread ? THROTTLE_WAIT : 0); ++ if (result) ++ return result; ++ ++ mutex_lock(&toi_bio_readahead_mutex); ++ ++ while (!buffer) { ++ buffer = (char *) toi_get_zeroed_page(12, ++ TOI_ATOMIC_GFP); ++ if (!buffer) { ++ if (oom && !dedicated_thread) { ++ mutex_unlock(&toi_bio_readahead_mutex); ++ return -ENOMEM; ++ } ++ ++ oom = 1; ++ set_free_mem_throttle(); ++ do_bio_wait(5); ++ } ++ } ++ ++ result = toi_bio_rw_page(READ, virt_to_page(buffer), 1, 0); ++ if (result == -ENOSPC) ++ toi__free_page(12, virt_to_page(buffer)); ++ mutex_unlock(&toi_bio_readahead_mutex); ++ if (result) { ++ if (result == -ENOSPC) ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "Last readahead page submitted."); ++ else ++ printk(KERN_DEBUG "toi_bio_rw_page returned %d.\n", ++ result); ++ } ++ return result; ++} ++ ++/** ++ * toi_start_new_readahead - start new readahead ++ * @dedicated_thread: Are we dedicated to this task? ++ * ++ * Start readahead of image pages. ++ * ++ * We can be called as a thread dedicated to this task (may be helpful on ++ * systems with lots of CPUs), in which case we don't exit until there's no ++ * more readahead. ++ * ++ * If this is not called by a dedicated thread, we top up our queue until ++ * there's no more readahead to submit, we've submitted the number given ++ * in target_outstanding_io or the number in progress exceeds the target ++ * outstanding I/O value. ++ * ++ * No mutex needed because this is only ever called by the first cpu. ++ **/ ++static int toi_start_new_readahead(int dedicated_thread) ++{ ++ int last_result, num_submitted = 0; ++ ++ /* Start a new readahead? */ ++ if (!more_readahead) ++ return 0; ++ ++ do { ++ last_result = toi_start_one_readahead(dedicated_thread); ++ ++ if (last_result) { ++ if (last_result == -ENOMEM || last_result == -ENOSPC) ++ return 0; ++ ++ printk(KERN_DEBUG ++ "Begin read chunk returned %d.\n", ++ last_result); ++ } else ++ num_submitted++; ++ ++ } while (more_readahead && !last_result && ++ (dedicated_thread || ++ (num_submitted < target_outstanding_io && ++ atomic_read(&toi_io_in_progress) < target_outstanding_io))); ++ ++ return last_result; ++} ++ ++/** ++ * bio_io_flusher - start the dedicated I/O flushing routine ++ * @writing: Whether we're writing the image. ++ **/ ++static int bio_io_flusher(int writing) ++{ ++ ++ if (writing) ++ return toi_bio_queue_flush_pages(1); ++ else ++ return toi_start_new_readahead(1); ++} ++ ++/** ++ * toi_bio_get_next_page_read - read a disk page, perhaps with readahead ++ * @no_readahead: Whether we can use readahead ++ * ++ * Read a page from disk, submitting readahead and cleaning up finished i/o ++ * while we wait for the page we're after. ++ **/ ++static int toi_bio_get_next_page_read(int no_readahead) ++{ ++ unsigned long *virt; ++ struct page *next; ++ ++ /* ++ * When reading the second page of the header, we have to ++ * delay submitting the read until after we've gotten the ++ * extents out of the first page. ++ */ ++ if (unlikely(no_readahead && toi_start_one_readahead(0))) { ++ printk(KERN_EMERG "No readahead and toi_start_one_readahead " ++ "returned non-zero.\n"); ++ return -EIO; ++ } ++ ++ if (unlikely(!readahead_list_head)) { ++ /* ++ * If the last page finishes exactly on the page ++ * boundary, we will be called one extra time and ++ * have no data to return. In this case, we should ++ * not BUG(), like we used to! ++ */ ++ if (!more_readahead) { ++ printk(KERN_EMERG "No more readahead.\n"); ++ return -ENOSPC; ++ } ++ if (unlikely(toi_start_one_readahead(0))) { ++ printk(KERN_EMERG "No readahead and " ++ "toi_start_one_readahead returned non-zero.\n"); ++ return -EIO; ++ } ++ } ++ ++ if (PageLocked(readahead_list_head)) { ++ waiting_on = readahead_list_head; ++ do_bio_wait(0); ++ } ++ ++ virt = page_address(readahead_list_head); ++ memcpy(toi_writer_buffer, virt, PAGE_SIZE); ++ ++ next = (struct page *) readahead_list_head->private; ++ toi__free_page(12, readahead_list_head); ++ readahead_list_head = next; ++ return 0; ++} ++ ++/** ++ * toi_bio_queue_flush_pages - flush the queue of pages queued for writing ++ * @dedicated_thread: Whether we're a dedicated thread ++ * ++ * Flush the queue of pages ready to be written to disk. ++ * ++ * If we're a dedicated thread, stay in here until told to leave, ++ * sleeping in wait_event. ++ * ++ * The first thread is normally the only one to come in here. Another ++ * thread can enter this routine too, though, via throttle_if_needed. ++ * Since that's the case, we must be careful to only have one thread ++ * doing this work at a time. Otherwise we have a race and could save ++ * pages out of order. ++ * ++ * If an error occurs, free all remaining pages without submitting them ++ * for I/O. ++ **/ ++ ++int toi_bio_queue_flush_pages(int dedicated_thread) ++{ ++ unsigned long flags; ++ int result = 0; ++ static DEFINE_MUTEX(busy); ++ ++ if (!mutex_trylock(&busy)) ++ return 0; ++ ++top: ++ spin_lock_irqsave(&bio_queue_lock, flags); ++ while (bio_queue_head) { ++ struct page *page = bio_queue_head; ++ bio_queue_head = (struct page *) page->private; ++ if (bio_queue_tail == page) ++ bio_queue_tail = NULL; ++ atomic_dec(&toi_bio_queue_size); ++ spin_unlock_irqrestore(&bio_queue_lock, flags); ++ ++ /* Don't generate more error messages if already had one */ ++ if (!result) ++ result = toi_bio_rw_page(WRITE, page, 0, 11); ++ /* ++ * If writing the page failed, don't drop out. ++ * Flush the rest of the queue too. ++ */ ++ if (result) ++ toi__free_page(11 , page); ++ spin_lock_irqsave(&bio_queue_lock, flags); ++ } ++ spin_unlock_irqrestore(&bio_queue_lock, flags); ++ ++ if (dedicated_thread) { ++ wait_event(toi_io_queue_flusher, bio_queue_head || ++ toi_bio_queue_flusher_should_finish); ++ if (likely(!toi_bio_queue_flusher_should_finish)) ++ goto top; ++ toi_bio_queue_flusher_should_finish = 0; ++ } ++ ++ mutex_unlock(&busy); ++ return result; ++} ++ ++/** ++ * toi_bio_get_new_page - get a new page for I/O ++ * @full_buffer: Pointer to a page to allocate. ++ **/ ++static int toi_bio_get_new_page(char **full_buffer) ++{ ++ int result = throttle_if_needed(THROTTLE_WAIT); ++ if (result) ++ return result; ++ ++ while (!*full_buffer) { ++ *full_buffer = (char *) toi_get_zeroed_page(11, TOI_ATOMIC_GFP); ++ if (!*full_buffer) { ++ set_free_mem_throttle(); ++ do_bio_wait(3); ++ } ++ } ++ ++ return 0; ++} ++ ++/** ++ * toi_rw_buffer - combine smaller buffers into PAGE_SIZE I/O ++ * @writing: Bool - whether writing (or reading). ++ * @buffer: The start of the buffer to write or fill. ++ * @buffer_size: The size of the buffer to write or fill. ++ * @no_readahead: Don't try to start readhead (when getting extents). ++ **/ ++static int toi_rw_buffer(int writing, char *buffer, int buffer_size, ++ int no_readahead) ++{ ++ int bytes_left = buffer_size, result = 0; ++ ++ while (bytes_left) { ++ char *source_start = buffer + buffer_size - bytes_left; ++ char *dest_start = toi_writer_buffer + toi_writer_buffer_posn; ++ int capacity = PAGE_SIZE - toi_writer_buffer_posn; ++ char *to = writing ? dest_start : source_start; ++ char *from = writing ? source_start : dest_start; ++ ++ if (bytes_left <= capacity) { ++ memcpy(to, from, bytes_left); ++ toi_writer_buffer_posn += bytes_left; ++ return 0; ++ } ++ ++ /* Complete this page and start a new one */ ++ memcpy(to, from, capacity); ++ bytes_left -= capacity; ++ ++ if (!writing) { ++ /* ++ * Perform actual I/O: ++ * read readahead_list_head into toi_writer_buffer ++ */ ++ int result = toi_bio_get_next_page_read(no_readahead); ++ if (result) { ++ printk("toi_bio_get_next_page_read " ++ "returned %d.\n", result); ++ return result; ++ } ++ } else { ++ toi_bio_queue_write(&toi_writer_buffer); ++ result = toi_bio_get_new_page(&toi_writer_buffer); ++ if (result) { ++ printk(KERN_ERR "toi_bio_get_new_page returned " ++ "%d.\n", result); ++ return result; ++ } ++ } ++ ++ toi_writer_buffer_posn = 0; ++ toi_cond_pause(0, NULL); ++ } ++ ++ return 0; ++} ++ ++/** ++ * toi_bio_read_page - read a page of the image ++ * @pfn: The pfn where the data belongs. ++ * @buffer_page: The page containing the (possibly compressed) data. ++ * @buf_size: The number of bytes on @buffer_page used (PAGE_SIZE). ++ * ++ * Read a (possibly compressed) page from the image, into buffer_page, ++ * returning its pfn and the buffer size. ++ **/ ++static int toi_bio_read_page(unsigned long *pfn, struct page *buffer_page, ++ unsigned int *buf_size) ++{ ++ int result = 0; ++ int this_idx; ++ char *buffer_virt = kmap(buffer_page); ++ ++ /* ++ * Only call start_new_readahead if we don't have a dedicated thread ++ * and we're the queue flusher. ++ */ ++ if (current == toi_queue_flusher && more_readahead) { ++ int result2 = toi_start_new_readahead(0); ++ if (result2) { ++ printk(KERN_DEBUG "Queue flusher and " ++ "toi_start_one_readahead returned non-zero.\n"); ++ result = -EIO; ++ goto out; ++ } ++ } ++ ++ my_mutex_lock(0, &toi_bio_mutex); ++ ++ /* ++ * Structure in the image: ++ * [destination pfn|page size|page data] ++ * buf_size is PAGE_SIZE ++ */ ++ if (toi_rw_buffer(READ, (char *) &this_idx, sizeof(int), 0) || ++ toi_rw_buffer(READ, (char *) pfn, sizeof(unsigned long), 0) || ++ toi_rw_buffer(READ, (char *) buf_size, sizeof(int), 0) || ++ toi_rw_buffer(READ, buffer_virt, *buf_size, 0)) { ++ abort_hibernate(TOI_FAILED_IO, "Read of data failed."); ++ result = 1; ++ } ++ ++ if (reset_idx) { ++ page_idx = this_idx; ++ reset_idx = 0; ++ } else { ++ page_idx++; ++ if (page_idx != this_idx) ++ printk(KERN_ERR "Got page index %d, expected %d.\n", ++ this_idx, page_idx); ++ } ++ ++ my_mutex_unlock(0, &toi_bio_mutex); ++out: ++ kunmap(buffer_page); ++ return result; ++} ++ ++/** ++ * toi_bio_write_page - write a page of the image ++ * @pfn: The pfn where the data belongs. ++ * @buffer_page: The page containing the (possibly compressed) data. ++ * @buf_size: The number of bytes on @buffer_page used. ++ * ++ * Write a (possibly compressed) page to the image from the buffer, together ++ * with it's index and buffer size. ++ **/ ++static int toi_bio_write_page(unsigned long pfn, struct page *buffer_page, ++ unsigned int buf_size) ++{ ++ char *buffer_virt; ++ int result = 0, result2 = 0; ++ ++ if (unlikely(test_action_state(TOI_TEST_FILTER_SPEED))) ++ return 0; ++ ++ my_mutex_lock(1, &toi_bio_mutex); ++ ++ if (test_result_state(TOI_ABORTED)) { ++ my_mutex_unlock(1, &toi_bio_mutex); ++ return -EIO; ++ } ++ ++ buffer_virt = kmap(buffer_page); ++ page_idx++; ++ ++ /* ++ * Structure in the image: ++ * [destination pfn|page size|page data] ++ * buf_size is PAGE_SIZE ++ */ ++ if (toi_rw_buffer(WRITE, (char *) &page_idx, sizeof(int), 0) || ++ toi_rw_buffer(WRITE, (char *) &pfn, sizeof(unsigned long), 0) || ++ toi_rw_buffer(WRITE, (char *) &buf_size, sizeof(int), 0) || ++ toi_rw_buffer(WRITE, buffer_virt, buf_size, 0)) { ++ printk(KERN_DEBUG "toi_rw_buffer returned non-zero to " ++ "toi_bio_write_page.\n"); ++ result = -EIO; ++ } ++ ++ kunmap(buffer_page); ++ my_mutex_unlock(1, &toi_bio_mutex); ++ ++ if (current == toi_queue_flusher) ++ result2 = toi_bio_queue_flush_pages(0); ++ ++ return result ? result : result2; ++} ++ ++/** ++ * _toi_rw_header_chunk - read or write a portion of the image header ++ * @writing: Whether reading or writing. ++ * @owner: The module for which we're writing. ++ * Used for confirming that modules ++ * don't use more header space than they asked for. ++ * @buffer: Address of the data to write. ++ * @buffer_size: Size of the data buffer. ++ * @no_readahead: Don't try to start readhead (when getting extents). ++ * ++ * Perform PAGE_SIZE I/O. Start readahead if needed. ++ **/ ++static int _toi_rw_header_chunk(int writing, struct toi_module_ops *owner, ++ char *buffer, int buffer_size, int no_readahead) ++{ ++ int result = 0; ++ ++ if (owner) { ++ owner->header_used += buffer_size; ++ toi_message(TOI_HEADER, TOI_LOW, 1, ++ "Header: %s : %d bytes (%d/%d) from offset %d.", ++ owner->name, ++ buffer_size, owner->header_used, ++ owner->header_requested, ++ toi_writer_buffer_posn); ++ if (owner->header_used > owner->header_requested && writing) { ++ printk(KERN_EMERG "TuxOnIce module %s is using more " ++ "header space (%u) than it requested (%u).\n", ++ owner->name, ++ owner->header_used, ++ owner->header_requested); ++ return buffer_size; ++ } ++ } else { ++ unowned += buffer_size; ++ toi_message(TOI_HEADER, TOI_LOW, 1, ++ "Header: (No owner): %d bytes (%d total so far) from " ++ "offset %d.", buffer_size, unowned, ++ toi_writer_buffer_posn); ++ } ++ ++ if (!writing && !no_readahead && more_readahead) { ++ result = toi_start_new_readahead(0); ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Start new readahead " ++ "returned %d.", result); ++ } ++ ++ if (!result) { ++ result = toi_rw_buffer(writing, buffer, buffer_size, ++ no_readahead); ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "rw_buffer returned " ++ "%d.", result); ++ } ++ ++ total_header_bytes += buffer_size; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "_toi_rw_header_chunk returning " ++ "%d.", result); ++ return result; ++} ++ ++static int toi_rw_header_chunk(int writing, struct toi_module_ops *owner, ++ char *buffer, int size) ++{ ++ return _toi_rw_header_chunk(writing, owner, buffer, size, 1); ++} ++ ++static int toi_rw_header_chunk_noreadahead(int writing, ++ struct toi_module_ops *owner, char *buffer, int size) ++{ ++ return _toi_rw_header_chunk(writing, owner, buffer, size, 1); ++} ++ ++/** ++ * toi_bio_storage_needed - get the amount of storage needed for my fns ++ **/ ++static int toi_bio_storage_needed(void) ++{ ++ return sizeof(int) + PAGE_SIZE + toi_bio_devinfo_storage_needed(); ++} ++ ++/** ++ * toi_bio_save_config_info - save block I/O config to image header ++ * @buf: PAGE_SIZE'd buffer into which data should be saved. ++ **/ ++static int toi_bio_save_config_info(char *buf) ++{ ++ int *ints = (int *) buf; ++ ints[0] = target_outstanding_io; ++ return sizeof(int); ++} ++ ++/** ++ * toi_bio_load_config_info - restore block I/O config ++ * @buf: Data to be reloaded. ++ * @size: Size of the buffer saved. ++ **/ ++static void toi_bio_load_config_info(char *buf, int size) ++{ ++ int *ints = (int *) buf; ++ target_outstanding_io = ints[0]; ++} ++ ++void close_resume_dev_t(int force) ++{ ++ if (!resume_block_device) ++ return; ++ ++ if (force) ++ atomic_set(&resume_bdev_open_count, 0); ++ else ++ atomic_dec(&resume_bdev_open_count); ++ ++ if (!atomic_read(&resume_bdev_open_count)) { ++ toi_close_bdev(resume_block_device); ++ resume_block_device = NULL; ++ } ++} ++ ++int open_resume_dev_t(int force, int quiet) ++{ ++ if (force) { ++ close_resume_dev_t(1); ++ atomic_set(&resume_bdev_open_count, 1); ++ } else ++ atomic_inc(&resume_bdev_open_count); ++ ++ if (resume_block_device) ++ return 0; ++ ++ resume_block_device = toi_open_bdev(NULL, resume_dev_t, 0); ++ if (IS_ERR(resume_block_device)) { ++ if (!quiet) ++ toi_early_boot_message(1, TOI_CONTINUE_REQ, ++ "Failed to open device %x, where" ++ " the header should be found.", ++ resume_dev_t); ++ resume_block_device = NULL; ++ atomic_set(&resume_bdev_open_count, 0); ++ return 1; ++ } ++ ++ return 0; ++} ++ ++/** ++ * toi_bio_initialise - initialise bio code at start of some action ++ * @starting_cycle: Whether starting a hibernation cycle, or just reading or ++ * writing a sysfs value. ++ **/ ++static int toi_bio_initialise(int starting_cycle) ++{ ++ int result; ++ ++ if (!starting_cycle || !resume_dev_t) ++ return 0; ++ ++ max_outstanding_writes = 0; ++ max_outstanding_reads = 0; ++ current_stream = 0; ++ toi_queue_flusher = current; ++#ifdef MEASURE_MUTEX_CONTENTION ++ { ++ int i, j, k; ++ ++ for (i = 0; i < 2; i++) ++ for (j = 0; j < 2; j++) ++ for_each_online_cpu(k) ++ mutex_times[i][j][k] = 0; ++ } ++#endif ++ result = open_resume_dev_t(0, 1); ++ ++ if (result) ++ return result; ++ ++ return get_signature_page(); ++} ++ ++static unsigned long raw_to_real(unsigned long raw) ++{ ++ unsigned long result; ++ ++ result = raw - (raw * (sizeof(unsigned long) + sizeof(int)) + ++ (PAGE_SIZE + sizeof(unsigned long) + sizeof(int) + 1)) / ++ (PAGE_SIZE + sizeof(unsigned long) + sizeof(int)); ++ ++ return result < 0 ? 0 : result; ++} ++ ++static unsigned long toi_bio_storage_available(void) ++{ ++ unsigned long sum = 0; ++ struct toi_module_ops *this_module; ++ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (!this_module->enabled || ++ this_module->type != BIO_ALLOCATOR_MODULE) ++ continue; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Seeking storage " ++ "available from %s.", this_module->name); ++ sum += this_module->bio_allocator_ops->storage_available(); ++ } ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Total storage available is %lu " ++ "pages.", sum); ++ return raw_to_real(sum - header_pages_reserved); ++ ++} ++ ++static unsigned long toi_bio_storage_allocated(void) ++{ ++ return raw_pages_allocd > header_pages_reserved ? ++ raw_to_real(raw_pages_allocd - header_pages_reserved) : 0; ++} ++ ++/* ++ * If we have read part of the image, we might have filled memory with ++ * data that should be zeroed out. ++ */ ++static void toi_bio_noresume_reset(void) ++{ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_noresume_reset."); ++ toi_rw_cleanup(READ); ++ free_all_bdev_info(); ++} ++ ++/** ++ * toi_bio_cleanup - cleanup after some action ++ * @finishing_cycle: Whether completing a cycle. ++ **/ ++static void toi_bio_cleanup(int finishing_cycle) ++{ ++ if (!finishing_cycle) ++ return; ++ ++ if (toi_writer_buffer) { ++ toi_free_page(11, (unsigned long) toi_writer_buffer); ++ toi_writer_buffer = NULL; ++ } ++ ++ forget_signature_page(); ++ ++ if (header_block_device && toi_sig_data && ++ toi_sig_data->header_dev_t != resume_dev_t) ++ toi_close_bdev(header_block_device); ++ ++ header_block_device = NULL; ++ ++ close_resume_dev_t(0); ++} ++ ++static int toi_bio_write_header_init(void) ++{ ++ int result; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_write_header_init"); ++ toi_rw_init(WRITE, 0); ++ toi_writer_buffer_posn = 0; ++ ++ /* Info needed to bootstrap goes at the start of the header. ++ * First we save the positions and devinfo, including the number ++ * of header pages. Then we save the structs containing data needed ++ * for reading the header pages back. ++ * Note that even if header pages take more than one page, when we ++ * read back the info, we will have restored the location of the ++ * next header page by the time we go to use it. ++ */ ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "serialise extent chains."); ++ result = toi_serialise_extent_chains(); ++ ++ if (result) ++ return result; ++ ++ /* ++ * Signature page hasn't been modified at this point. Write it in ++ * the header so we can restore it later. ++ */ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "serialise signature page."); ++ return toi_rw_header_chunk_noreadahead(WRITE, &toi_blockwriter_ops, ++ (char *) toi_cur_sig_page, ++ PAGE_SIZE); ++} ++ ++static int toi_bio_write_header_cleanup(void) ++{ ++ int result = 0; ++ ++ if (toi_writer_buffer_posn) ++ toi_bio_queue_write(&toi_writer_buffer); ++ ++ result = toi_finish_all_io(); ++ ++ unowned = 0; ++ total_header_bytes = 0; ++ ++ /* Set signature to save we have an image */ ++ if (!result) ++ result = toi_bio_mark_have_image(); ++ ++ return result; ++} ++ ++/* ++ * toi_bio_read_header_init() ++ * ++ * Description: ++ * 1. Attempt to read the device specified with resume=. ++ * 2. Check the contents of the swap header for our signature. ++ * 3. Warn, ignore, reset and/or continue as appropriate. ++ * 4. If continuing, read the toi_swap configuration section ++ * of the header and set up block device info so we can read ++ * the rest of the header & image. ++ * ++ * Returns: ++ * May not return if user choose to reboot at a warning. ++ * -EINVAL if cannot resume at this time. Booting should continue ++ * normally. ++ */ ++ ++static int toi_bio_read_header_init(void) ++{ ++ int result = 0; ++ char buf[32]; ++ ++ toi_writer_buffer_posn = 0; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_read_header_init"); ++ ++ if (!toi_sig_data) { ++ printk(KERN_INFO "toi_bio_read_header_init called when we " ++ "haven't verified there is an image!\n"); ++ return -EINVAL; ++ } ++ ++ /* ++ * If the header is not on the resume_swap_dev_t, get the resume device ++ * first. ++ */ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Header dev_t is %lx.", ++ toi_sig_data->header_dev_t); ++ if (toi_sig_data->have_uuid) { ++ dev_t device; ++ device = blk_lookup_uuid(toi_sig_data->header_uuid); ++ if (device) { ++ printk("Using dev_t %s, returned by blk_lookup_uuid.\n", ++ format_dev_t(buf, device)); ++ toi_sig_data->header_dev_t = device; ++ } ++ } ++ if (toi_sig_data->header_dev_t != resume_dev_t) { ++ header_block_device = toi_open_bdev(NULL, ++ toi_sig_data->header_dev_t, 1); ++ ++ if (IS_ERR(header_block_device)) ++ return PTR_ERR(header_block_device); ++ } else ++ header_block_device = resume_block_device; ++ ++ if (!toi_writer_buffer) ++ toi_writer_buffer = (char *) toi_get_zeroed_page(11, ++ TOI_ATOMIC_GFP); ++ more_readahead = 1; ++ ++ /* ++ * Read toi_swap configuration. ++ * Headerblock size taken into account already. ++ */ ++ result = toi_bio_ops.bdev_page_io(READ, header_block_device, ++ toi_sig_data->first_header_block, ++ virt_to_page((unsigned long) toi_writer_buffer)); ++ if (result) ++ return result; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "load extent chains."); ++ result = toi_load_extent_chains(); ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "load original signature page."); ++ toi_orig_sig_page = (char *) toi_get_zeroed_page(38, TOI_ATOMIC_GFP); ++ if (!toi_orig_sig_page) { ++ printk(KERN_ERR "Failed to allocate memory for the current" ++ " image signature.\n"); ++ return -ENOMEM; ++ } ++ ++ return toi_rw_header_chunk_noreadahead(READ, &toi_blockwriter_ops, ++ (char *) toi_orig_sig_page, ++ PAGE_SIZE); ++} ++ ++static int toi_bio_read_header_cleanup(void) ++{ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_read_header_cleanup."); ++ return toi_rw_cleanup(READ); ++} ++ ++/* Works only for digits and letters, but small and fast */ ++#define TOLOWER(x) ((x) | 0x20) ++ ++/* ++ * UUID must be 32 chars long. It may have dashes, but nothing ++ * else. ++ */ ++char *uuid_from_commandline(char *commandline) ++{ ++ int low = 0; ++ char *result = NULL, *output, *ptr; ++ ++ if (strncmp(commandline, "UUID=", 5)) ++ return NULL; ++ ++ result = kzalloc(17, GFP_KERNEL); ++ if (!result) { ++ printk("Failed to kzalloc UUID text memory.\n"); ++ return NULL; ++ } ++ ++ ptr = commandline + 5; ++ output = result; ++ ++ while (*ptr && (output - result) < 16) { ++ if (isxdigit(*ptr)) { ++ int value = isdigit(*ptr) ? *ptr - '0' : ++ TOLOWER(*ptr) - 'a' + 10; ++ if (low) { ++ *output += value; ++ output++; ++ } else { ++ *output = value << 4; ++ } ++ low = !low; ++ } else if (*ptr != '-') ++ break; ++ ptr++; ++ } ++ ++ if ((output - result) < 16 || *ptr) { ++ printk(KERN_DEBUG "Found resume=UUID=, but the value looks " ++ "invalid.\n"); ++ kfree(result); ++ result = NULL; ++ } ++ ++ return result; ++} ++ ++#define retry_if_fails(command) \ ++do { \ ++ command; \ ++ if (!resume_dev_t && !waited_for_device_probe) { \ ++ wait_for_device_probe(); \ ++ scsi_complete_async_scans(); \ ++ command; \ ++ waited_for_device_probe = 1; \ ++ } \ ++} while(0) ++ ++/** ++ * try_to_open_resume_device: Try to parse and open resume= ++ * ++ * Any "swap:" has been stripped away and we just have the path to deal with. ++ * We attempt to do name_to_dev_t, open and stat the file. Having opened the ++ * file, get the struct block_device * to match. ++ */ ++static int try_to_open_resume_device(char *commandline, int quiet) ++{ ++ struct kstat stat; ++ int error = 0; ++ char *uuid = uuid_from_commandline(commandline); ++ int waited_for_device_probe = 0; ++ ++ resume_dev_t = MKDEV(0, 0); ++ ++ if (!strlen(commandline)) ++ retry_if_fails(toi_bio_scan_for_image(quiet)); ++ ++ if (uuid) { ++ retry_if_fails(resume_dev_t = blk_lookup_uuid(uuid)); ++ kfree(uuid); ++ } ++ ++ if (!resume_dev_t) ++ retry_if_fails(resume_dev_t = name_to_dev_t(commandline)); ++ ++ if (!resume_dev_t) { ++ struct file *file = filp_open(commandline, ++ O_RDONLY|O_LARGEFILE, 0); ++ ++ if (!IS_ERR(file) && file) { ++ vfs_getattr(file->f_vfsmnt, file->f_dentry, &stat); ++ filp_close(file, NULL); ++ } else ++ error = vfs_stat(commandline, &stat); ++ if (!error) ++ resume_dev_t = stat.rdev; ++ } ++ ++ if (!resume_dev_t) { ++ if (quiet) ++ return 1; ++ ++ if (test_toi_state(TOI_TRYING_TO_RESUME)) ++ toi_early_boot_message(1, toi_translate_err_default, ++ "Failed to translate \"%s\" into a device id.\n", ++ commandline); ++ else ++ printk("TuxOnIce: Can't translate \"%s\" into a device " ++ "id yet.\n", commandline); ++ return 1; ++ } ++ ++ return open_resume_dev_t(1, quiet); ++} ++ ++/* ++ * Parse Image Location ++ * ++ * Attempt to parse a resume= parameter. ++ * Swap Writer accepts: ++ * resume=[swap:|file:]DEVNAME[:FIRSTBLOCK][@BLOCKSIZE] ++ * ++ * Where: ++ * DEVNAME is convertable to a dev_t by name_to_dev_t ++ * FIRSTBLOCK is the location of the first block in the swap file ++ * (specifying for a swap partition is nonsensical but not prohibited). ++ * Data is validated by attempting to read a swap header from the ++ * location given. Failure will result in toi_swap refusing to ++ * save an image, and a reboot with correct parameters will be ++ * necessary. ++ */ ++static int toi_bio_parse_sig_location(char *commandline, ++ int only_allocator, int quiet) ++{ ++ char *thischar, *devstart, *colon = NULL; ++ int signature_found, result = -EINVAL, temp_result = 0; ++ ++ if (strncmp(commandline, "swap:", 5) && ++ strncmp(commandline, "file:", 5)) { ++ /* ++ * Failing swap:, we'll take a simple resume=/dev/hda2, or a ++ * blank value (scan) but fall through to other allocators ++ * if /dev/ or UUID= isn't matched. ++ */ ++ if (strncmp(commandline, "/dev/", 5) && ++ strncmp(commandline, "UUID=", 5) && ++ strlen(commandline)) ++ return 1; ++ } else ++ commandline += 5; ++ ++ devstart = commandline; ++ thischar = commandline; ++ while ((*thischar != ':') && (*thischar != '@') && ++ ((thischar - commandline) < 250) && (*thischar)) ++ thischar++; ++ ++ if (*thischar == ':') { ++ colon = thischar; ++ *colon = 0; ++ thischar++; ++ } ++ ++ while ((thischar - commandline) < 250 && *thischar) ++ thischar++; ++ ++ if (colon) { ++ unsigned long block; ++ temp_result = strict_strtoul(colon + 1, 0, &block); ++ if (!temp_result) ++ resume_firstblock = (int) block; ++ } else ++ resume_firstblock = 0; ++ ++ clear_toi_state(TOI_CAN_HIBERNATE); ++ clear_toi_state(TOI_CAN_RESUME); ++ ++ if (!temp_result) ++ temp_result = try_to_open_resume_device(devstart, quiet); ++ ++ if (colon) ++ *colon = ':'; ++ ++ /* No error if we only scanned */ ++ if (temp_result) ++ return strlen(commandline) ? -EINVAL : 1; ++ ++ signature_found = toi_bio_image_exists(quiet); ++ ++ if (signature_found != -1) { ++ result = 0; ++ /* ++ * TODO: If only file storage, CAN_HIBERNATE should only be ++ * set if file allocator's target is valid. ++ */ ++ set_toi_state(TOI_CAN_HIBERNATE); ++ set_toi_state(TOI_CAN_RESUME); ++ } else ++ if (!quiet) ++ printk(KERN_ERR "TuxOnIce: Block I/O: No " ++ "signature found at %s.\n", devstart); ++ ++ close_resume_dev_t(0); ++ return result; ++} ++ ++static void toi_bio_release_storage(void) ++{ ++ header_pages_reserved = 0; ++ raw_pages_allocd = 0; ++ ++ free_all_bdev_info(); ++} ++ ++/* toi_swap_remove_image ++ * ++ */ ++static int toi_bio_remove_image(void) ++{ ++ int result; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_remove_image."); ++ ++ result = toi_bio_restore_original_signature(); ++ ++ /* ++ * We don't do a sanity check here: we want to restore the swap ++ * whatever version of kernel made the hibernate image. ++ * ++ * We need to write swap, but swap may not be enabled so ++ * we write the device directly ++ * ++ * If we don't have an current_signature_page, we didn't ++ * read an image header, so don't change anything. ++ */ ++ ++ toi_bio_release_storage(); ++ ++ return result; ++} ++ ++struct toi_bio_ops toi_bio_ops = { ++ .bdev_page_io = toi_bdev_page_io, ++ .register_storage = toi_register_storage_chain, ++ .free_storage = toi_bio_release_storage, ++}; ++EXPORT_SYMBOL_GPL(toi_bio_ops); ++ ++static struct toi_sysfs_data sysfs_params[] = { ++ SYSFS_INT("target_outstanding_io", SYSFS_RW, &target_outstanding_io, ++ 0, 16384, 0, NULL), ++}; ++ ++struct toi_module_ops toi_blockwriter_ops = { ++ .type = WRITER_MODULE, ++ .name = "block i/o", ++ .directory = "block_io", ++ .module = THIS_MODULE, ++ .memory_needed = toi_bio_memory_needed, ++ .print_debug_info = toi_bio_print_debug_stats, ++ .storage_needed = toi_bio_storage_needed, ++ .save_config_info = toi_bio_save_config_info, ++ .load_config_info = toi_bio_load_config_info, ++ .initialise = toi_bio_initialise, ++ .cleanup = toi_bio_cleanup, ++ .post_atomic_restore = toi_bio_chains_post_atomic, ++ ++ .rw_init = toi_rw_init, ++ .rw_cleanup = toi_rw_cleanup, ++ .read_page = toi_bio_read_page, ++ .write_page = toi_bio_write_page, ++ .rw_header_chunk = toi_rw_header_chunk, ++ .rw_header_chunk_noreadahead = toi_rw_header_chunk_noreadahead, ++ .io_flusher = bio_io_flusher, ++ .update_throughput_throttle = update_throughput_throttle, ++ .finish_all_io = toi_finish_all_io, ++ ++ .noresume_reset = toi_bio_noresume_reset, ++ .storage_available = toi_bio_storage_available, ++ .storage_allocated = toi_bio_storage_allocated, ++ .reserve_header_space = toi_bio_reserve_header_space, ++ .allocate_storage = toi_bio_allocate_storage, ++ .image_exists = toi_bio_image_exists, ++ .mark_resume_attempted = toi_bio_mark_resume_attempted, ++ .write_header_init = toi_bio_write_header_init, ++ .write_header_cleanup = toi_bio_write_header_cleanup, ++ .read_header_init = toi_bio_read_header_init, ++ .read_header_cleanup = toi_bio_read_header_cleanup, ++ .get_header_version = toi_bio_get_header_version, ++ .remove_image = toi_bio_remove_image, ++ .parse_sig_location = toi_bio_parse_sig_location, ++ ++ .sysfs_data = sysfs_params, ++ .num_sysfs_entries = sizeof(sysfs_params) / ++ sizeof(struct toi_sysfs_data), ++}; ++ ++/** ++ * toi_block_io_load - load time routine for block I/O module ++ * ++ * Register block i/o ops and sysfs entries. ++ **/ ++static __init int toi_block_io_load(void) ++{ ++ return toi_register_module(&toi_blockwriter_ops); ++} ++ ++#ifdef MODULE ++static __exit void toi_block_io_unload(void) ++{ ++ toi_unregister_module(&toi_blockwriter_ops); ++} ++ ++module_init(toi_block_io_load); ++module_exit(toi_block_io_unload); ++MODULE_LICENSE("GPL"); ++MODULE_AUTHOR("Nigel Cunningham"); ++MODULE_DESCRIPTION("TuxOnIce block io functions"); ++#else ++late_initcall(toi_block_io_load); ++#endif +diff --git a/kernel/power/tuxonice_bio_internal.h b/kernel/power/tuxonice_bio_internal.h +new file mode 100644 +index 0000000..58c2481 +--- /dev/null ++++ b/kernel/power/tuxonice_bio_internal.h +@@ -0,0 +1,86 @@ ++/* ++ * kernel/power/tuxonice_bio_internal.h ++ * ++ * Copyright (C) 2009-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * Distributed under GPLv2. ++ * ++ * This file contains declarations for functions exported from ++ * tuxonice_bio.c, which contains low level io functions. ++ */ ++ ++/* Extent chains */ ++void toi_extent_state_goto_start(void); ++void toi_extent_state_save(int slot); ++int go_next_page(int writing, int section_barrier); ++void toi_extent_state_restore(int slot); ++void free_all_bdev_info(void); ++int devices_of_same_priority(struct toi_bdev_info *this); ++int toi_register_storage_chain(struct toi_bdev_info *new); ++int toi_serialise_extent_chains(void); ++int toi_load_extent_chains(void); ++int toi_bio_rw_page(int writing, struct page *page, int is_readahead, ++ int free_group); ++int toi_bio_restore_original_signature(void); ++int toi_bio_devinfo_storage_needed(void); ++unsigned long get_headerblock(void); ++dev_t get_header_dev_t(void); ++struct block_device *get_header_bdev(void); ++int toi_bio_allocate_storage(unsigned long request); ++ ++/* Signature functions */ ++#define HaveImage "HaveImage" ++#define NoImage "TuxOnIce" ++#define sig_size (sizeof(HaveImage)) ++ ++struct sig_data { ++ char sig[sig_size]; ++ int have_image; ++ int resumed_before; ++ ++ char have_uuid; ++ char header_uuid[17]; ++ dev_t header_dev_t; ++ unsigned long first_header_block; ++ ++ /* Repeat the signature to be sure we have a header version */ ++ char sig2[sig_size]; ++ int header_version; ++}; ++ ++void forget_signature_page(void); ++int toi_check_for_signature(void); ++int toi_bio_image_exists(int quiet); ++int get_signature_page(void); ++int toi_bio_mark_resume_attempted(int); ++extern char *toi_cur_sig_page; ++extern char *toi_orig_sig_page; ++int toi_bio_mark_have_image(void); ++extern struct sig_data *toi_sig_data; ++extern dev_t resume_dev_t; ++extern struct block_device *resume_block_device; ++extern struct block_device *header_block_device; ++extern unsigned long resume_firstblock; ++ ++struct block_device *open_bdev(dev_t device, int display_errs); ++extern int current_stream; ++extern int more_readahead; ++int toi_do_io(int writing, struct block_device *bdev, long block0, ++ struct page *page, int is_readahead, int syncio, int free_group); ++int get_main_pool_phys_params(void); ++ ++void toi_close_bdev(struct block_device *bdev); ++struct block_device *toi_open_bdev(char *uuid, dev_t default_device, ++ int display_errs); ++ ++extern struct toi_module_ops toi_blockwriter_ops; ++void dump_block_chains(void); ++void debug_broken_header(void); ++extern unsigned long raw_pages_allocd, header_pages_reserved; ++int toi_bio_chains_debug_info(char *buffer, int size); ++void toi_bio_chains_post_atomic(struct toi_boot_kernel_data *bkd); ++int toi_bio_scan_for_image(int quiet); ++int toi_bio_get_header_version(void); ++ ++void close_resume_dev_t(int force); ++int open_resume_dev_t(int force, int quiet); +diff --git a/kernel/power/tuxonice_bio_signature.c b/kernel/power/tuxonice_bio_signature.c +new file mode 100644 +index 0000000..e6f6cc8 +--- /dev/null ++++ b/kernel/power/tuxonice_bio_signature.c +@@ -0,0 +1,410 @@ ++/* ++ * kernel/power/tuxonice_bio_signature.c ++ * ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * Distributed under GPLv2. ++ * ++ */ ++ ++#include ++ ++#include "tuxonice.h" ++#include "tuxonice_sysfs.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_prepare_image.h" ++#include "tuxonice_bio.h" ++#include "tuxonice_ui.h" ++#include "tuxonice_alloc.h" ++#include "tuxonice_io.h" ++#include "tuxonice_builtin.h" ++#include "tuxonice_bio_internal.h" ++ ++struct sig_data *toi_sig_data; ++ ++/* Struct of swap header pages */ ++ ++struct old_sig_data { ++ dev_t device; ++ unsigned long sector; ++ int resume_attempted; ++ int orig_sig_type; ++}; ++ ++union diskpage { ++ union swap_header swh; /* swh.magic is the only member used */ ++ struct sig_data sig_data; ++ struct old_sig_data old_sig_data; ++}; ++ ++union p_diskpage { ++ union diskpage *pointer; ++ char *ptr; ++ unsigned long address; ++}; ++ ++char *toi_cur_sig_page; ++char *toi_orig_sig_page; ++int have_image; ++int have_old_image; ++ ++int get_signature_page(void) ++{ ++ if (!toi_cur_sig_page) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "Allocating current signature page."); ++ toi_cur_sig_page = (char *) toi_get_zeroed_page(38, ++ TOI_ATOMIC_GFP); ++ if (!toi_cur_sig_page) { ++ printk(KERN_ERR "Failed to allocate memory for the " ++ "current image signature.\n"); ++ return -ENOMEM; ++ } ++ ++ toi_sig_data = (struct sig_data *) toi_cur_sig_page; ++ } ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Reading signature from dev %lx," ++ " sector %d.", ++ resume_block_device->bd_dev, resume_firstblock); ++ ++ return toi_bio_ops.bdev_page_io(READ, resume_block_device, ++ resume_firstblock, virt_to_page(toi_cur_sig_page)); ++} ++ ++void forget_signature_page(void) ++{ ++ if (toi_cur_sig_page) { ++ toi_sig_data = NULL; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Freeing toi_cur_sig_page" ++ " (%p).", toi_cur_sig_page); ++ toi_free_page(38, (unsigned long) toi_cur_sig_page); ++ toi_cur_sig_page = NULL; ++ } ++ ++ if (toi_orig_sig_page) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Freeing toi_orig_sig_page" ++ " (%p).", toi_orig_sig_page); ++ toi_free_page(38, (unsigned long) toi_orig_sig_page); ++ toi_orig_sig_page = NULL; ++ } ++} ++ ++/* ++ * We need to ensure we use the signature page that's currently on disk, ++ * so as to not remove the image header. Post-atomic-restore, the orig sig ++ * page will be empty, so we can use that as our method of knowing that we ++ * need to load the on-disk signature and not use the non-image sig in ++ * memory. (We're going to powerdown after writing the change, so it's safe. ++ */ ++int toi_bio_mark_resume_attempted(int flag) ++{ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Make resume attempted = %d.", ++ flag); ++ if (!toi_orig_sig_page) { ++ forget_signature_page(); ++ get_signature_page(); ++ } ++ toi_sig_data->resumed_before = flag; ++ return toi_bio_ops.bdev_page_io(WRITE, resume_block_device, ++ resume_firstblock, virt_to_page(toi_cur_sig_page)); ++} ++ ++int toi_bio_mark_have_image(void) ++{ ++ int result = 0; ++ char buf[32]; ++ struct fs_info *fs_info; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Recording that an image exists."); ++ memcpy(toi_sig_data->sig, tuxonice_signature, ++ sizeof(tuxonice_signature)); ++ toi_sig_data->have_image = 1; ++ toi_sig_data->resumed_before = 0; ++ toi_sig_data->header_dev_t = get_header_dev_t(); ++ toi_sig_data->have_uuid = 0; ++ ++ fs_info = fs_info_from_block_dev(get_header_bdev()); ++ if (fs_info && !IS_ERR(fs_info)) { ++ memcpy(toi_sig_data->header_uuid, &fs_info->uuid, 16); ++ free_fs_info(fs_info); ++ } else ++ result = (int) PTR_ERR(fs_info); ++ ++ if (!result) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Got uuid for dev_t %s.", ++ format_dev_t(buf, get_header_dev_t())); ++ toi_sig_data->have_uuid = 1; ++ } else ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Could not get uuid for " ++ "dev_t %s.", ++ format_dev_t(buf, get_header_dev_t())); ++ ++ toi_sig_data->first_header_block = get_headerblock(); ++ have_image = 1; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "header dev_t is %x. First block " ++ "is %d.", toi_sig_data->header_dev_t, ++ toi_sig_data->first_header_block); ++ ++ memcpy(toi_sig_data->sig2, tuxonice_signature, ++ sizeof(tuxonice_signature)); ++ toi_sig_data->header_version = TOI_HEADER_VERSION; ++ ++ return toi_bio_ops.bdev_page_io(WRITE, resume_block_device, ++ resume_firstblock, virt_to_page(toi_cur_sig_page)); ++} ++ ++int remove_old_signature(void) ++{ ++ union p_diskpage swap_header_page = (union p_diskpage) toi_cur_sig_page; ++ char *orig_sig, *no_image_signature_contents; ++ char *header_start = (char *) toi_get_zeroed_page(38, TOI_ATOMIC_GFP); ++ int result; ++ struct block_device *header_bdev; ++ struct old_sig_data *old_sig_data = ++ &swap_header_page.pointer->old_sig_data; ++ ++ header_bdev = toi_open_bdev(NULL, old_sig_data->device, 1); ++ result = toi_bio_ops.bdev_page_io(READ, header_bdev, ++ old_sig_data->sector, virt_to_page(header_start)); ++ ++ if (result) ++ goto out; ++ ++ /* ++ * TODO: Get the original contents of the first bytes of the swap ++ * header page. ++ */ ++ if (!old_sig_data->orig_sig_type) ++ orig_sig = "SWAP-SPACE"; ++ else ++ orig_sig = "SWAPSPACE2"; ++ ++ memcpy(swap_header_page.pointer->swh.magic.magic, orig_sig, 10); ++ memcpy(swap_header_page.ptr, header_start, ++ sizeof(no_image_signature_contents)); ++ ++ result = toi_bio_ops.bdev_page_io(WRITE, resume_block_device, ++ resume_firstblock, virt_to_page(swap_header_page.ptr)); ++ ++out: ++ toi_close_bdev(header_bdev); ++ have_old_image = 0; ++ toi_free_page(38, (unsigned long) header_start); ++ return result; ++} ++ ++/* ++ * toi_bio_restore_original_signature - restore the original signature ++ * ++ * At boot time (aborting pre atomic-restore), toi_orig_sig_page gets used. ++ * It will have the original signature page contents, stored in the image ++ * header. Post atomic-restore, we use :toi_cur_sig_page, which will contain ++ * the contents that were loaded when we started the cycle. ++ */ ++int toi_bio_restore_original_signature(void) ++{ ++ char *use = toi_orig_sig_page ? toi_orig_sig_page : toi_cur_sig_page; ++ ++ if (have_old_image) ++ return remove_old_signature(); ++ ++ if (!use) { ++ printk("toi_bio_restore_original_signature: No signature " ++ "page loaded.\n"); ++ return 0; ++ } ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Recording that no image exists."); ++ have_image = 0; ++ toi_sig_data->have_image = 0; ++ return toi_bio_ops.bdev_page_io(WRITE, resume_block_device, ++ resume_firstblock, virt_to_page(use)); ++} ++ ++/* ++ * check_for_signature - See whether we have an image. ++ * ++ * Returns 0 if no image, 1 if there is one, -1 if indeterminate. ++ */ ++int toi_check_for_signature(void) ++{ ++ union p_diskpage swap_header_page; ++ int type; ++ const char *normal_sigs[] = {"SWAP-SPACE", "SWAPSPACE2" }; ++ const char *swsusp_sigs[] = {"S1SUSP", "S2SUSP", "S1SUSPEND" }; ++ char *swap_header; ++ ++ if (!toi_cur_sig_page) { ++ int result = get_signature_page(); ++ ++ if (result) ++ return result; ++ } ++ ++ /* ++ * Start by looking for the binary header. ++ */ ++ if (!memcmp(tuxonice_signature, toi_cur_sig_page, ++ sizeof(tuxonice_signature))) { ++ have_image = toi_sig_data->have_image; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Have binary signature. " ++ "Have image is %d.", have_image); ++ if (have_image) ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "header dev_t is " ++ "%x. First block is %d.", ++ toi_sig_data->header_dev_t, ++ toi_sig_data->first_header_block); ++ return toi_sig_data->have_image; ++ } ++ ++ /* ++ * Failing that, try old file allocator headers. ++ */ ++ ++ if (!memcmp(HaveImage, toi_cur_sig_page, strlen(HaveImage))) { ++ have_image = 1; ++ return 1; ++ } ++ ++ have_image = 0; ++ ++ if (!memcmp(NoImage, toi_cur_sig_page, strlen(NoImage))) ++ return 0; ++ ++ /* ++ * Nope? How about swap? ++ */ ++ swap_header_page = (union p_diskpage) toi_cur_sig_page; ++ swap_header = swap_header_page.pointer->swh.magic.magic; ++ ++ /* Normal swapspace? */ ++ for (type = 0; type < 2; type++) ++ if (!memcmp(normal_sigs[type], swap_header, ++ strlen(normal_sigs[type]))) ++ return 0; ++ ++ /* Swsusp or uswsusp? */ ++ for (type = 0; type < 3; type++) ++ if (!memcmp(swsusp_sigs[type], swap_header, ++ strlen(swsusp_sigs[type]))) ++ return 2; ++ ++ /* Old TuxOnIce version? */ ++ if (!memcmp(tuxonice_signature, swap_header, ++ sizeof(tuxonice_signature) - 1)) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Found old TuxOnIce " ++ "signature."); ++ have_old_image = 1; ++ return 3; ++ } ++ ++ return -1; ++} ++ ++/* ++ * Image_exists ++ * ++ * Returns -1 if don't know, otherwise 0 (no) or 1 (yes). ++ */ ++int toi_bio_image_exists(int quiet) ++{ ++ int result; ++ char *orig_sig_page = toi_cur_sig_page; ++ char *msg = NULL; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_image_exists."); ++ ++ if (!resume_dev_t) { ++ if (!quiet) ++ printk(KERN_INFO "Not even trying to read header " ++ "because resume_dev_t is not set.\n"); ++ return -1; ++ } ++ ++ if (open_resume_dev_t(0, quiet)) ++ return -1; ++ ++ result = toi_check_for_signature(); ++ ++ clear_toi_state(TOI_RESUMED_BEFORE); ++ if (toi_sig_data->resumed_before) ++ set_toi_state(TOI_RESUMED_BEFORE); ++ ++ if (quiet || result == -ENOMEM) ++ goto out; ++ ++ if (result == -1) ++ msg = "TuxOnIce: Unable to find a signature." ++ " Could you have moved a swap file?\n"; ++ else if (!result) ++ msg = "TuxOnIce: No image found.\n"; ++ else if (result == 1) ++ msg = "TuxOnIce: Image found.\n"; ++ else if (result == 2) ++ msg = "TuxOnIce: uswsusp or swsusp image found.\n"; ++ else if (result == 3) ++ msg = "TuxOnIce: Old implementation's signature found.\n"; ++ ++ printk(KERN_INFO "%s", msg); ++ ++out: ++ if (!orig_sig_page) ++ forget_signature_page(); ++ ++ close_resume_dev_t(0); ++ return result; ++} ++ ++int toi_bio_scan_for_image(int quiet) ++{ ++ struct block_device *bdev; ++ char default_name[255] = ""; ++ ++ if (!quiet) ++ printk(KERN_DEBUG "Scanning swap devices for TuxOnIce " ++ "signature...\n"); ++ for (bdev = next_bdev_of_type(NULL, "swap"); bdev; ++ bdev = next_bdev_of_type(bdev, "swap")) { ++ int result; ++ char name[255] = ""; ++ sprintf(name, "%u:%u", MAJOR(bdev->bd_dev), ++ MINOR(bdev->bd_dev)); ++ if (!quiet) ++ printk(KERN_DEBUG "- Trying %s.\n", name); ++ resume_block_device = bdev; ++ resume_dev_t = bdev->bd_dev; ++ ++ result = toi_check_for_signature(); ++ ++ resume_block_device = NULL; ++ resume_dev_t = MKDEV(0, 0); ++ ++ if (!default_name[0]) ++ strcpy(default_name, name); ++ ++ if (result == 1) { ++ /* Got one! */ ++ strcpy(resume_file, name); ++ next_bdev_of_type(bdev, NULL); ++ if (!quiet) ++ printk(KERN_DEBUG " ==> Image found on %s.\n", ++ resume_file); ++ return 1; ++ } ++ forget_signature_page(); ++ } ++ ++ if (!quiet) ++ printk(KERN_DEBUG "TuxOnIce scan: No image found.\n"); ++ strcpy(resume_file, default_name); ++ return 0; ++} ++ ++int toi_bio_get_header_version(void) ++{ ++ return (memcmp(toi_sig_data->sig2, tuxonice_signature, ++ sizeof(tuxonice_signature))) ? ++ 0 : toi_sig_data->header_version; ++ ++} +diff --git a/kernel/power/tuxonice_builtin.c b/kernel/power/tuxonice_builtin.c +new file mode 100644 +index 0000000..d9704f2 +--- /dev/null ++++ b/kernel/power/tuxonice_builtin.c +@@ -0,0 +1,360 @@ ++/* ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ */ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "tuxonice_io.h" ++#include "tuxonice.h" ++#include "tuxonice_extent.h" ++#include "tuxonice_netlink.h" ++#include "tuxonice_prepare_image.h" ++#include "tuxonice_ui.h" ++#include "tuxonice_sysfs.h" ++#include "tuxonice_pagedir.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_builtin.h" ++#include "tuxonice_power_off.h" ++ ++/* ++ * Highmem related functions (x86 only). ++ */ ++ ++#ifdef CONFIG_HIGHMEM ++ ++/** ++ * copyback_high: Restore highmem pages. ++ * ++ * Highmem data and pbe lists are/can be stored in highmem. ++ * The format is slightly different to the lowmem pbe lists ++ * used for the assembly code: the last pbe in each page is ++ * a struct page * instead of struct pbe *, pointing to the ++ * next page where pbes are stored (or NULL if happens to be ++ * the end of the list). Since we don't want to generate ++ * unnecessary deltas against swsusp code, we use a cast ++ * instead of a union. ++ **/ ++ ++static void copyback_high(void) ++{ ++ struct page *pbe_page = (struct page *) restore_highmem_pblist; ++ struct pbe *this_pbe, *first_pbe; ++ unsigned long *origpage, *copypage; ++ int pbe_index = 1; ++ ++ if (!pbe_page) ++ return; ++ ++ this_pbe = (struct pbe *) kmap_atomic(pbe_page, KM_BOUNCE_READ); ++ first_pbe = this_pbe; ++ ++ while (this_pbe) { ++ int loop = (PAGE_SIZE / sizeof(unsigned long)) - 1; ++ ++ origpage = kmap_atomic((struct page *) this_pbe->orig_address, ++ KM_BIO_DST_IRQ); ++ copypage = kmap_atomic((struct page *) this_pbe->address, ++ KM_BIO_SRC_IRQ); ++ ++ while (loop >= 0) { ++ *(origpage + loop) = *(copypage + loop); ++ loop--; ++ } ++ ++ kunmap_atomic(origpage, KM_BIO_DST_IRQ); ++ kunmap_atomic(copypage, KM_BIO_SRC_IRQ); ++ ++ if (!this_pbe->next) ++ break; ++ ++ if (pbe_index < PBES_PER_PAGE) { ++ this_pbe++; ++ pbe_index++; ++ } else { ++ pbe_page = (struct page *) this_pbe->next; ++ kunmap_atomic(first_pbe, KM_BOUNCE_READ); ++ if (!pbe_page) ++ return; ++ this_pbe = (struct pbe *) kmap_atomic(pbe_page, ++ KM_BOUNCE_READ); ++ first_pbe = this_pbe; ++ pbe_index = 1; ++ } ++ } ++ kunmap_atomic(first_pbe, KM_BOUNCE_READ); ++} ++ ++#else /* CONFIG_HIGHMEM */ ++static void copyback_high(void) { } ++#endif ++ ++char toi_wait_for_keypress_dev_console(int timeout) ++{ ++ int fd, this_timeout = 255; ++ char key = '\0'; ++ struct termios t, t_backup; ++ ++ /* We should be guaranteed /dev/console exists after populate_rootfs() ++ * in init/main.c. ++ */ ++ fd = sys_open("/dev/console", O_RDONLY, 0); ++ if (fd < 0) { ++ printk(KERN_INFO "Couldn't open /dev/console.\n"); ++ return key; ++ } ++ ++ if (sys_ioctl(fd, TCGETS, (long)&t) < 0) ++ goto out_close; ++ ++ memcpy(&t_backup, &t, sizeof(t)); ++ ++ t.c_lflag &= ~(ISIG|ICANON|ECHO); ++ t.c_cc[VMIN] = 0; ++ ++new_timeout: ++ if (timeout > 0) { ++ this_timeout = timeout < 26 ? timeout : 25; ++ timeout -= this_timeout; ++ this_timeout *= 10; ++ } ++ ++ t.c_cc[VTIME] = this_timeout; ++ ++ if (sys_ioctl(fd, TCSETS, (long)&t) < 0) ++ goto out_restore; ++ ++ while (1) { ++ if (sys_read(fd, &key, 1) <= 0) { ++ if (timeout) ++ goto new_timeout; ++ key = '\0'; ++ break; ++ } ++ key = tolower(key); ++ if (test_toi_state(TOI_SANITY_CHECK_PROMPT)) { ++ if (key == 'c') { ++ set_toi_state(TOI_CONTINUE_REQ); ++ break; ++ } else if (key == ' ') ++ break; ++ } else ++ break; ++ } ++ ++out_restore: ++ sys_ioctl(fd, TCSETS, (long)&t_backup); ++out_close: ++ sys_close(fd); ++ ++ return key; ++} ++EXPORT_SYMBOL_GPL(toi_wait_for_keypress_dev_console); ++ ++struct toi_boot_kernel_data toi_bkd __nosavedata ++ __attribute__((aligned(PAGE_SIZE))) = { ++ MY_BOOT_KERNEL_DATA_VERSION, ++ 0, ++#ifdef CONFIG_TOI_REPLACE_SWSUSP ++ (1 << TOI_REPLACE_SWSUSP) | ++#endif ++ (1 << TOI_NO_FLUSHER_THREAD) | ++ (1 << TOI_PAGESET2_FULL) | (1 << TOI_LATE_CPU_HOTPLUG), ++}; ++EXPORT_SYMBOL_GPL(toi_bkd); ++ ++struct block_device *toi_open_by_devnum(dev_t dev) ++{ ++ struct block_device *bdev = bdget(dev); ++ int err = -ENOMEM; ++ if (bdev) ++ err = blkdev_get(bdev, FMODE_READ | FMODE_NDELAY); ++ return err ? ERR_PTR(err) : bdev; ++} ++EXPORT_SYMBOL_GPL(toi_open_by_devnum); ++ ++/** ++ * toi_close_bdev: Close a swap bdev. ++ * ++ * int: The swap entry number to close. ++ */ ++void toi_close_bdev(struct block_device *bdev) ++{ ++ blkdev_put(bdev, FMODE_READ | FMODE_NDELAY); ++} ++EXPORT_SYMBOL_GPL(toi_close_bdev); ++ ++int toi_wait = CONFIG_TOI_DEFAULT_WAIT; ++EXPORT_SYMBOL_GPL(toi_wait); ++ ++struct toi_core_fns *toi_core_fns; ++EXPORT_SYMBOL_GPL(toi_core_fns); ++ ++unsigned long toi_result; ++EXPORT_SYMBOL_GPL(toi_result); ++ ++struct pagedir pagedir1 = {1}; ++EXPORT_SYMBOL_GPL(pagedir1); ++ ++unsigned long toi_get_nonconflicting_page(void) ++{ ++ return toi_core_fns->get_nonconflicting_page(); ++} ++ ++int toi_post_context_save(void) ++{ ++ return toi_core_fns->post_context_save(); ++} ++ ++int try_tuxonice_hibernate(void) ++{ ++ if (!toi_core_fns) ++ return -ENODEV; ++ ++ return toi_core_fns->try_hibernate(); ++} ++ ++static int num_resume_calls; ++#ifdef CONFIG_TOI_IGNORE_LATE_INITCALL ++static int ignore_late_initcall = 1; ++#else ++static int ignore_late_initcall; ++#endif ++ ++int toi_translate_err_default = TOI_CONTINUE_REQ; ++EXPORT_SYMBOL_GPL(toi_translate_err_default); ++ ++void try_tuxonice_resume(void) ++{ ++ /* Don't let it wrap around eventually */ ++ if (num_resume_calls < 2) ++ num_resume_calls++; ++ ++ if (num_resume_calls == 1 && ignore_late_initcall) { ++ printk(KERN_INFO "TuxOnIce: Ignoring late initcall, as requested.\n"); ++ return; ++ } ++ ++ if (toi_core_fns) ++ toi_core_fns->try_resume(); ++ else ++ printk(KERN_INFO "TuxOnIce core not loaded yet.\n"); ++} ++ ++int toi_lowlevel_builtin(void) ++{ ++ int error = 0; ++ ++ save_processor_state(); ++ error = swsusp_arch_suspend(); ++ if (error) ++ printk(KERN_ERR "Error %d hibernating\n", error); ++ ++ /* Restore control flow appears here */ ++ if (!toi_in_hibernate) { ++ copyback_high(); ++ set_toi_state(TOI_NOW_RESUMING); ++ } ++ ++ restore_processor_state(); ++ ++ return error; ++} ++EXPORT_SYMBOL_GPL(toi_lowlevel_builtin); ++ ++unsigned long toi_compress_bytes_in; ++EXPORT_SYMBOL_GPL(toi_compress_bytes_in); ++ ++unsigned long toi_compress_bytes_out; ++EXPORT_SYMBOL_GPL(toi_compress_bytes_out); ++ ++unsigned long toi_state = ((1 << TOI_BOOT_TIME) | ++ (1 << TOI_IGNORE_LOGLEVEL) | ++ (1 << TOI_IO_STOPPED)); ++EXPORT_SYMBOL_GPL(toi_state); ++ ++/* The number of hibernates we have started (some may have been cancelled) */ ++unsigned int nr_hibernates; ++EXPORT_SYMBOL_GPL(nr_hibernates); ++ ++int toi_running; ++EXPORT_SYMBOL_GPL(toi_running); ++ ++__nosavedata int toi_in_hibernate; ++EXPORT_SYMBOL_GPL(toi_in_hibernate); ++ ++__nosavedata struct pbe *restore_highmem_pblist; ++EXPORT_SYMBOL_GPL(restore_highmem_pblist); ++ ++static int __init toi_wait_setup(char *str) ++{ ++ int value; ++ ++ if (sscanf(str, "=%d", &value)) { ++ if (value < -1 || value > 255) ++ printk(KERN_INFO "TuxOnIce_wait outside range -1 to " ++ "255.\n"); ++ else ++ toi_wait = value; ++ } ++ ++ return 1; ++} ++ ++__setup("toi_wait", toi_wait_setup); ++ ++static int __init toi_translate_retry_setup(char *str) ++{ ++ toi_translate_err_default = 0; ++ return 1; ++} ++ ++__setup("toi_translate_retry", toi_translate_retry_setup); ++ ++static int __init toi_debug_setup(char *str) ++{ ++ toi_bkd.toi_action |= (1 << TOI_LOGALL) | (1 << TOI_PAUSE); ++ toi_bkd.toi_debug_state = 255; ++ toi_bkd.toi_default_console_level = 7; ++ return 1; ++} ++ ++__setup("toi_debug_setup", toi_debug_setup); ++ ++static int __init toi_ignore_late_initcall_setup(char *str) ++{ ++ int value; ++ ++ if (sscanf(str, "=%d", &value)) ++ ignore_late_initcall = value; ++ ++ return 1; ++} ++ ++__setup("toi_initramfs_resume_only", toi_ignore_late_initcall_setup); ++ ++int toi_force_no_multithreaded; ++EXPORT_SYMBOL_GPL(toi_force_no_multithreaded); ++ ++static int __init toi_force_no_multithreaded_setup(char *str) ++{ ++ int value; ++ ++ if (sscanf(str, "=%d", &value)) ++ toi_force_no_multithreaded = value; ++ ++ return 1; ++} ++ ++__setup("toi_no_multithreaded", toi_force_no_multithreaded_setup); +diff --git a/kernel/power/tuxonice_builtin.h b/kernel/power/tuxonice_builtin.h +new file mode 100644 +index 0000000..56ede35 +--- /dev/null ++++ b/kernel/power/tuxonice_builtin.h +@@ -0,0 +1,30 @@ ++/* ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ */ ++#include ++ ++extern struct toi_core_fns *toi_core_fns; ++extern unsigned long toi_compress_bytes_in, toi_compress_bytes_out; ++extern unsigned int nr_hibernates; ++extern int toi_in_hibernate; ++ ++extern __nosavedata struct pbe *restore_highmem_pblist; ++ ++int toi_lowlevel_builtin(void); ++ ++#ifdef CONFIG_HIGHMEM ++extern __nosavedata struct zone_data *toi_nosave_zone_list; ++extern __nosavedata unsigned long toi_nosave_max_pfn; ++#endif ++ ++extern unsigned long toi_get_nonconflicting_page(void); ++extern int toi_post_context_save(void); ++ ++extern char toi_wait_for_keypress_dev_console(int timeout); ++extern struct block_device *toi_open_by_devnum(dev_t dev); ++extern void toi_close_bdev(struct block_device *bdev); ++extern int toi_wait; ++extern int toi_translate_err_default; ++extern int toi_force_no_multithreaded; +diff --git a/kernel/power/tuxonice_checksum.c b/kernel/power/tuxonice_checksum.c +new file mode 100644 +index 0000000..3ec2c76 +--- /dev/null ++++ b/kernel/power/tuxonice_checksum.c +@@ -0,0 +1,377 @@ ++/* ++ * kernel/power/tuxonice_checksum.c ++ * ++ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * This file contains data checksum routines for TuxOnIce, ++ * using cryptoapi. They are used to locate any modifications ++ * made to pageset 2 while we're saving it. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "tuxonice.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_sysfs.h" ++#include "tuxonice_io.h" ++#include "tuxonice_pageflags.h" ++#include "tuxonice_checksum.h" ++#include "tuxonice_pagedir.h" ++#include "tuxonice_alloc.h" ++ ++static struct toi_module_ops toi_checksum_ops; ++ ++/* Constant at the mo, but I might allow tuning later */ ++static char toi_checksum_name[32] = "md4"; ++/* Bytes per checksum */ ++#define CHECKSUM_SIZE (16) ++ ++#define CHECKSUMS_PER_PAGE ((PAGE_SIZE - sizeof(void *)) / CHECKSUM_SIZE) ++ ++struct cpu_context { ++ struct crypto_hash *transform; ++ struct hash_desc desc; ++ struct scatterlist sg[2]; ++ char *buf; ++}; ++ ++static DEFINE_PER_CPU(struct cpu_context, contexts); ++static int pages_allocated; ++static unsigned long page_list; ++ ++static int toi_num_resaved; ++ ++static unsigned long this_checksum, next_page; ++static int checksum_index; ++ ++static inline int checksum_pages_needed(void) ++{ ++ return DIV_ROUND_UP(pagedir2.size, CHECKSUMS_PER_PAGE); ++} ++ ++/* ---- Local buffer management ---- */ ++ ++/* ++ * toi_checksum_cleanup ++ * ++ * Frees memory allocated for our labours. ++ */ ++static void toi_checksum_cleanup(int ending_cycle) ++{ ++ int cpu; ++ ++ if (ending_cycle) { ++ for_each_online_cpu(cpu) { ++ struct cpu_context *this = &per_cpu(contexts, cpu); ++ if (this->transform) { ++ crypto_free_hash(this->transform); ++ this->transform = NULL; ++ this->desc.tfm = NULL; ++ } ++ ++ if (this->buf) { ++ toi_free_page(27, (unsigned long) this->buf); ++ this->buf = NULL; ++ } ++ } ++ } ++} ++ ++/* ++ * toi_crypto_initialise ++ * ++ * Prepare to do some work by allocating buffers and transforms. ++ * Returns: Int: Zero. Even if we can't set up checksum, we still ++ * seek to hibernate. ++ */ ++static int toi_checksum_initialise(int starting_cycle) ++{ ++ int cpu; ++ ++ if (!(starting_cycle & SYSFS_HIBERNATE) || !toi_checksum_ops.enabled) ++ return 0; ++ ++ if (!*toi_checksum_name) { ++ printk(KERN_INFO "TuxOnIce: No checksum algorithm name set.\n"); ++ return 1; ++ } ++ ++ for_each_online_cpu(cpu) { ++ struct cpu_context *this = &per_cpu(contexts, cpu); ++ struct page *page; ++ ++ this->transform = crypto_alloc_hash(toi_checksum_name, 0, 0); ++ if (IS_ERR(this->transform)) { ++ printk(KERN_INFO "TuxOnIce: Failed to initialise the " ++ "%s checksum algorithm: %ld.\n", ++ toi_checksum_name, (long) this->transform); ++ this->transform = NULL; ++ return 1; ++ } ++ ++ this->desc.tfm = this->transform; ++ this->desc.flags = 0; ++ ++ page = toi_alloc_page(27, GFP_KERNEL); ++ if (!page) ++ return 1; ++ this->buf = page_address(page); ++ sg_init_one(&this->sg[0], this->buf, PAGE_SIZE); ++ } ++ return 0; ++} ++ ++/* ++ * toi_checksum_print_debug_stats ++ * @buffer: Pointer to a buffer into which the debug info will be printed. ++ * @size: Size of the buffer. ++ * ++ * Print information to be recorded for debugging purposes into a buffer. ++ * Returns: Number of characters written to the buffer. ++ */ ++ ++static int toi_checksum_print_debug_stats(char *buffer, int size) ++{ ++ int len; ++ ++ if (!toi_checksum_ops.enabled) ++ return scnprintf(buffer, size, ++ "- Checksumming disabled.\n"); ++ ++ len = scnprintf(buffer, size, "- Checksum method is '%s'.\n", ++ toi_checksum_name); ++ len += scnprintf(buffer + len, size - len, ++ " %d pages resaved in atomic copy.\n", toi_num_resaved); ++ return len; ++} ++ ++static int toi_checksum_memory_needed(void) ++{ ++ return toi_checksum_ops.enabled ? ++ checksum_pages_needed() << PAGE_SHIFT : 0; ++} ++ ++static int toi_checksum_storage_needed(void) ++{ ++ if (toi_checksum_ops.enabled) ++ return strlen(toi_checksum_name) + sizeof(int) + 1; ++ else ++ return 0; ++} ++ ++/* ++ * toi_checksum_save_config_info ++ * @buffer: Pointer to a buffer of size PAGE_SIZE. ++ * ++ * Save informaton needed when reloading the image at resume time. ++ * Returns: Number of bytes used for saving our data. ++ */ ++static int toi_checksum_save_config_info(char *buffer) ++{ ++ int namelen = strlen(toi_checksum_name) + 1; ++ int total_len; ++ ++ *((unsigned int *) buffer) = namelen; ++ strncpy(buffer + sizeof(unsigned int), toi_checksum_name, namelen); ++ total_len = sizeof(unsigned int) + namelen; ++ return total_len; ++} ++ ++/* toi_checksum_load_config_info ++ * @buffer: Pointer to the start of the data. ++ * @size: Number of bytes that were saved. ++ * ++ * Description: Reload information needed for dechecksuming the image at ++ * resume time. ++ */ ++static void toi_checksum_load_config_info(char *buffer, int size) ++{ ++ int namelen; ++ ++ namelen = *((unsigned int *) (buffer)); ++ strncpy(toi_checksum_name, buffer + sizeof(unsigned int), ++ namelen); ++ return; ++} ++ ++/* ++ * Free Checksum Memory ++ */ ++ ++void free_checksum_pages(void) ++{ ++ while (pages_allocated) { ++ unsigned long next = *((unsigned long *) page_list); ++ ClearPageNosave(virt_to_page(page_list)); ++ toi_free_page(15, (unsigned long) page_list); ++ page_list = next; ++ pages_allocated--; ++ } ++} ++ ++/* ++ * Allocate Checksum Memory ++ */ ++ ++int allocate_checksum_pages(void) ++{ ++ int pages_needed = checksum_pages_needed(); ++ ++ if (!toi_checksum_ops.enabled) ++ return 0; ++ ++ while (pages_allocated < pages_needed) { ++ unsigned long *new_page = ++ (unsigned long *) toi_get_zeroed_page(15, TOI_ATOMIC_GFP); ++ if (!new_page) { ++ printk(KERN_ERR "Unable to allocate checksum pages.\n"); ++ return -ENOMEM; ++ } ++ SetPageNosave(virt_to_page(new_page)); ++ (*new_page) = page_list; ++ page_list = (unsigned long) new_page; ++ pages_allocated++; ++ } ++ ++ next_page = (unsigned long) page_list; ++ checksum_index = 0; ++ ++ return 0; ++} ++ ++char *tuxonice_get_next_checksum(void) ++{ ++ if (!toi_checksum_ops.enabled) ++ return NULL; ++ ++ if (checksum_index % CHECKSUMS_PER_PAGE) ++ this_checksum += CHECKSUM_SIZE; ++ else { ++ this_checksum = next_page + sizeof(void *); ++ next_page = *((unsigned long *) next_page); ++ } ++ ++ checksum_index++; ++ return (char *) this_checksum; ++} ++ ++int tuxonice_calc_checksum(struct page *page, char *checksum_locn) ++{ ++ char *pa; ++ int result, cpu = smp_processor_id(); ++ struct cpu_context *ctx = &per_cpu(contexts, cpu); ++ ++ if (!toi_checksum_ops.enabled) ++ return 0; ++ ++ pa = kmap(page); ++ memcpy(ctx->buf, pa, PAGE_SIZE); ++ kunmap(page); ++ result = crypto_hash_digest(&ctx->desc, ctx->sg, PAGE_SIZE, ++ checksum_locn); ++ if (result) ++ printk(KERN_ERR "TuxOnIce checksumming: crypto_hash_digest " ++ "returned %d.\n", result); ++ return result; ++} ++/* ++ * Calculate checksums ++ */ ++ ++void check_checksums(void) ++{ ++ int pfn, index = 0, cpu = smp_processor_id(); ++ char current_checksum[CHECKSUM_SIZE]; ++ struct cpu_context *ctx = &per_cpu(contexts, cpu); ++ ++ if (!toi_checksum_ops.enabled) ++ return; ++ ++ next_page = (unsigned long) page_list; ++ ++ toi_num_resaved = 0; ++ this_checksum = 0; ++ ++ memory_bm_position_reset(pageset2_map); ++ for (pfn = memory_bm_next_pfn(pageset2_map); pfn != BM_END_OF_MAP; ++ pfn = memory_bm_next_pfn(pageset2_map)) { ++ int ret; ++ char *pa; ++ struct page *page = pfn_to_page(pfn); ++ ++ if (index % CHECKSUMS_PER_PAGE) { ++ this_checksum += CHECKSUM_SIZE; ++ } else { ++ this_checksum = next_page + sizeof(void *); ++ next_page = *((unsigned long *) next_page); ++ } ++ ++ /* Done when IRQs disabled so must be atomic */ ++ pa = kmap_atomic(page, KM_USER1); ++ memcpy(ctx->buf, pa, PAGE_SIZE); ++ kunmap_atomic(pa, KM_USER1); ++ ret = crypto_hash_digest(&ctx->desc, ctx->sg, PAGE_SIZE, ++ current_checksum); ++ ++ if (ret) { ++ printk(KERN_INFO "Digest failed. Returned %d.\n", ret); ++ return; ++ } ++ ++ if (memcmp(current_checksum, (char *) this_checksum, ++ CHECKSUM_SIZE)) { ++ SetPageResave(pfn_to_page(pfn)); ++ toi_num_resaved++; ++ if (test_action_state(TOI_ABORT_ON_RESAVE_NEEDED)) ++ set_abort_result(TOI_RESAVE_NEEDED); ++ } ++ ++ index++; ++ } ++} ++ ++static struct toi_sysfs_data sysfs_params[] = { ++ SYSFS_INT("enabled", SYSFS_RW, &toi_checksum_ops.enabled, 0, 1, 0, ++ NULL), ++ SYSFS_BIT("abort_if_resave_needed", SYSFS_RW, &toi_bkd.toi_action, ++ TOI_ABORT_ON_RESAVE_NEEDED, 0) ++}; ++ ++/* ++ * Ops structure. ++ */ ++static struct toi_module_ops toi_checksum_ops = { ++ .type = MISC_MODULE, ++ .name = "checksumming", ++ .directory = "checksum", ++ .module = THIS_MODULE, ++ .initialise = toi_checksum_initialise, ++ .cleanup = toi_checksum_cleanup, ++ .print_debug_info = toi_checksum_print_debug_stats, ++ .save_config_info = toi_checksum_save_config_info, ++ .load_config_info = toi_checksum_load_config_info, ++ .memory_needed = toi_checksum_memory_needed, ++ .storage_needed = toi_checksum_storage_needed, ++ ++ .sysfs_data = sysfs_params, ++ .num_sysfs_entries = sizeof(sysfs_params) / ++ sizeof(struct toi_sysfs_data), ++}; ++ ++/* ---- Registration ---- */ ++int toi_checksum_init(void) ++{ ++ int result = toi_register_module(&toi_checksum_ops); ++ return result; ++} ++ ++void toi_checksum_exit(void) ++{ ++ toi_unregister_module(&toi_checksum_ops); ++} +diff --git a/kernel/power/tuxonice_checksum.h b/kernel/power/tuxonice_checksum.h +new file mode 100644 +index 0000000..0f2812e +--- /dev/null ++++ b/kernel/power/tuxonice_checksum.h +@@ -0,0 +1,31 @@ ++/* ++ * kernel/power/tuxonice_checksum.h ++ * ++ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * This file contains data checksum routines for TuxOnIce, ++ * using cryptoapi. They are used to locate any modifications ++ * made to pageset 2 while we're saving it. ++ */ ++ ++#if defined(CONFIG_TOI_CHECKSUM) ++extern int toi_checksum_init(void); ++extern void toi_checksum_exit(void); ++void check_checksums(void); ++int allocate_checksum_pages(void); ++void free_checksum_pages(void); ++char *tuxonice_get_next_checksum(void); ++int tuxonice_calc_checksum(struct page *page, char *checksum_locn); ++#else ++static inline int toi_checksum_init(void) { return 0; } ++static inline void toi_checksum_exit(void) { } ++static inline void check_checksums(void) { }; ++static inline int allocate_checksum_pages(void) { return 0; }; ++static inline void free_checksum_pages(void) { }; ++static inline char *tuxonice_get_next_checksum(void) { return NULL; }; ++static inline int tuxonice_calc_checksum(struct page *page, char *checksum_locn) ++ { return 0; } ++#endif ++ +diff --git a/kernel/power/tuxonice_cluster.c b/kernel/power/tuxonice_cluster.c +new file mode 100644 +index 0000000..0e5a262 +--- /dev/null ++++ b/kernel/power/tuxonice_cluster.c +@@ -0,0 +1,1069 @@ ++/* ++ * kernel/power/tuxonice_cluster.c ++ * ++ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * This file contains routines for cluster hibernation support. ++ * ++ * Based on ip autoconfiguration code in net/ipv4/ipconfig.c. ++ * ++ * How does it work? ++ * ++ * There is no 'master' node that tells everyone else what to do. All nodes ++ * send messages to the broadcast address/port, maintain a list of peers ++ * and figure out when to progress to the next step in hibernating or resuming. ++ * This makes us more fault tolerant when it comes to nodes coming and going ++ * (which may be more of an issue if we're hibernating when power supplies ++ * are being unreliable). ++ * ++ * At boot time, we start a ktuxonice thread that handles communication with ++ * other nodes. This node maintains a state machine that controls our progress ++ * through hibernating and resuming, keeping us in step with other nodes. Nodes ++ * are identified by their hw address. ++ * ++ * On startup, the node sends CLUSTER_PING on the configured interface's ++ * broadcast address, port $toi_cluster_port (see below) and begins to listen ++ * for other broadcast messages. CLUSTER_PING messages are repeated at ++ * intervals of 5 minutes, with a random offset to spread traffic out. ++ * ++ * A hibernation cycle is initiated from any node via ++ * ++ * echo > /sys/power/tuxonice/do_hibernate ++ * ++ * and (possibily) the hibernate script. At each step of the process, the node ++ * completes its work, and waits for all other nodes to signal completion of ++ * their work (or timeout) before progressing to the next step. ++ * ++ * Request/state Action before reply Possible reply Next state ++ * HIBERNATE capable, pre-script HIBERNATE|ACK NODE_PREP ++ * HIBERNATE|NACK INIT_0 ++ * ++ * PREP prepare_image PREP|ACK IMAGE_WRITE ++ * PREP|NACK INIT_0 ++ * ABORT RUNNING ++ * ++ * IO write image IO|ACK power off ++ * ABORT POST_RESUME ++ * ++ * (Boot time) check for image IMAGE|ACK RESUME_PREP ++ * (Note 1) ++ * IMAGE|NACK (Note 2) ++ * ++ * PREP prepare read image PREP|ACK IMAGE_READ ++ * PREP|NACK (As NACK_IMAGE) ++ * ++ * IO read image IO|ACK POST_RESUME ++ * ++ * POST_RESUME thaw, post-script RUNNING ++ * ++ * INIT_0 init 0 ++ * ++ * Other messages: ++ * ++ * - PING: Request for all other live nodes to send a PONG. Used at startup to ++ * announce presence, when a node is suspected dead and periodically, in case ++ * segments of the network are [un]plugged. ++ * ++ * - PONG: Response to a PING. ++ * ++ * - ABORT: Request to cancel writing an image. ++ * ++ * - BYE: Notification that this node is shutting down. ++ * ++ * Note 1: Repeated at 3s intervals until we continue to boot/resume, so that ++ * nodes which are slower to start up can get state synchronised. If a node ++ * starting up sees other nodes sending RESUME_PREP or IMAGE_READ, it may send ++ * ACK_IMAGE and they will wait for it to catch up. If it sees ACK_READ, it ++ * must invalidate its image (if any) and boot normally. ++ * ++ * Note 2: May occur when one node lost power or powered off while others ++ * hibernated. This node waits for others to complete resuming (ACK_READ) ++ * before completing its boot, so that it appears as a fail node restarting. ++ * ++ * If any node has an image, then it also has a list of nodes that hibernated ++ * in synchronisation with it. The node will wait for other nodes to appear ++ * or timeout before beginning its restoration. ++ * ++ * If a node has no image, it needs to wait, in case other nodes which do have ++ * an image are going to resume, but are taking longer to announce their ++ * presence. For this reason, the user can specify a timeout value and a number ++ * of nodes detected before we just continue. (We might want to assume in a ++ * cluster of, say, 15 nodes, if 8 others have booted without finding an image, ++ * the remaining nodes will too. This might help in situations where some nodes ++ * are much slower to boot, or more subject to hardware failures or such like). ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "tuxonice.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_sysfs.h" ++#include "tuxonice_alloc.h" ++#include "tuxonice_io.h" ++ ++#if 1 ++#define PRINTK(a, b...) do { printk(a, ##b); } while (0) ++#else ++#define PRINTK(a, b...) do { } while (0) ++#endif ++ ++static int loopback_mode; ++static int num_local_nodes = 1; ++#define MAX_LOCAL_NODES 8 ++#define SADDR (loopback_mode ? b->sid : h->saddr) ++ ++#define MYNAME "TuxOnIce Clustering" ++ ++enum cluster_message { ++ MSG_ACK = 1, ++ MSG_NACK = 2, ++ MSG_PING = 4, ++ MSG_ABORT = 8, ++ MSG_BYE = 16, ++ MSG_HIBERNATE = 32, ++ MSG_IMAGE = 64, ++ MSG_IO = 128, ++ MSG_RUNNING = 256 ++}; ++ ++static char *str_message(int message) ++{ ++ switch (message) { ++ case 4: ++ return "Ping"; ++ case 8: ++ return "Abort"; ++ case 9: ++ return "Abort acked"; ++ case 10: ++ return "Abort nacked"; ++ case 16: ++ return "Bye"; ++ case 17: ++ return "Bye acked"; ++ case 18: ++ return "Bye nacked"; ++ case 32: ++ return "Hibernate request"; ++ case 33: ++ return "Hibernate ack"; ++ case 34: ++ return "Hibernate nack"; ++ case 64: ++ return "Image exists?"; ++ case 65: ++ return "Image does exist"; ++ case 66: ++ return "No image here"; ++ case 128: ++ return "I/O"; ++ case 129: ++ return "I/O okay"; ++ case 130: ++ return "I/O failed"; ++ case 256: ++ return "Running"; ++ default: ++ printk(KERN_ERR "Unrecognised message %d.\n", message); ++ return "Unrecognised message (see dmesg)"; ++ } ++} ++ ++#define MSG_ACK_MASK (MSG_ACK | MSG_NACK) ++#define MSG_STATE_MASK (~MSG_ACK_MASK) ++ ++struct node_info { ++ struct list_head member_list; ++ wait_queue_head_t member_events; ++ spinlock_t member_list_lock; ++ spinlock_t receive_lock; ++ int peer_count, ignored_peer_count; ++ struct toi_sysfs_data sysfs_data; ++ enum cluster_message current_message; ++}; ++ ++struct node_info node_array[MAX_LOCAL_NODES]; ++ ++struct cluster_member { ++ __be32 addr; ++ enum cluster_message message; ++ struct list_head list; ++ int ignore; ++}; ++ ++#define toi_cluster_port_send 3501 ++#define toi_cluster_port_recv 3502 ++ ++static struct net_device *net_dev; ++static struct toi_module_ops toi_cluster_ops; ++ ++static int toi_recv(struct sk_buff *skb, struct net_device *dev, ++ struct packet_type *pt, struct net_device *orig_dev); ++ ++static struct packet_type toi_cluster_packet_type = { ++ .type = __constant_htons(ETH_P_IP), ++ .func = toi_recv, ++}; ++ ++struct toi_pkt { /* BOOTP packet format */ ++ struct iphdr iph; /* IP header */ ++ struct udphdr udph; /* UDP header */ ++ u8 htype; /* HW address type */ ++ u8 hlen; /* HW address length */ ++ __be32 xid; /* Transaction ID */ ++ __be16 secs; /* Seconds since we started */ ++ __be16 flags; /* Just what it says */ ++ u8 hw_addr[16]; /* Sender's HW address */ ++ u16 message; /* Message */ ++ unsigned long sid; /* Source ID for loopback testing */ ++}; ++ ++static char toi_cluster_iface[IFNAMSIZ] = CONFIG_TOI_DEFAULT_CLUSTER_INTERFACE; ++ ++static int added_pack; ++ ++static int others_have_image; ++ ++/* Key used to allow multiple clusters on the same lan */ ++static char toi_cluster_key[32] = CONFIG_TOI_DEFAULT_CLUSTER_KEY; ++static char pre_hibernate_script[255] = ++ CONFIG_TOI_DEFAULT_CLUSTER_PRE_HIBERNATE; ++static char post_hibernate_script[255] = ++ CONFIG_TOI_DEFAULT_CLUSTER_POST_HIBERNATE; ++ ++/* List of cluster members */ ++static unsigned long continue_delay = 5 * HZ; ++static unsigned long cluster_message_timeout = 3 * HZ; ++ ++/* === Membership list === */ ++ ++static void print_member_info(int index) ++{ ++ struct cluster_member *this; ++ ++ printk(KERN_INFO "==> Dumping node %d.\n", index); ++ ++ list_for_each_entry(this, &node_array[index].member_list, list) ++ printk(KERN_INFO "%d.%d.%d.%d last message %s. %s\n", ++ NIPQUAD(this->addr), ++ str_message(this->message), ++ this->ignore ? "(Ignored)" : ""); ++ printk(KERN_INFO "== Done ==\n"); ++} ++ ++static struct cluster_member *__find_member(int index, __be32 addr) ++{ ++ struct cluster_member *this; ++ ++ list_for_each_entry(this, &node_array[index].member_list, list) { ++ if (this->addr != addr) ++ continue; ++ ++ return this; ++ } ++ ++ return NULL; ++} ++ ++static void set_ignore(int index, __be32 addr, struct cluster_member *this) ++{ ++ if (this->ignore) { ++ PRINTK("Node %d already ignoring %d.%d.%d.%d.\n", ++ index, NIPQUAD(addr)); ++ return; ++ } ++ ++ PRINTK("Node %d sees node %d.%d.%d.%d now being ignored.\n", ++ index, NIPQUAD(addr)); ++ this->ignore = 1; ++ node_array[index].ignored_peer_count++; ++} ++ ++static int __add_update_member(int index, __be32 addr, int message) ++{ ++ struct cluster_member *this; ++ ++ this = __find_member(index, addr); ++ if (this) { ++ if (this->message != message) { ++ this->message = message; ++ if ((message & MSG_NACK) && ++ (message & (MSG_HIBERNATE | MSG_IMAGE | MSG_IO))) ++ set_ignore(index, addr, this); ++ PRINTK("Node %d sees node %d.%d.%d.%d now sending " ++ "%s.\n", index, NIPQUAD(addr), ++ str_message(message)); ++ wake_up(&node_array[index].member_events); ++ } ++ return 0; ++ } ++ ++ this = (struct cluster_member *) toi_kzalloc(36, ++ sizeof(struct cluster_member), GFP_KERNEL); ++ ++ if (!this) ++ return -1; ++ ++ this->addr = addr; ++ this->message = message; ++ this->ignore = 0; ++ INIT_LIST_HEAD(&this->list); ++ ++ node_array[index].peer_count++; ++ ++ PRINTK("Node %d sees node %d.%d.%d.%d sending %s.\n", index, ++ NIPQUAD(addr), str_message(message)); ++ ++ if ((message & MSG_NACK) && ++ (message & (MSG_HIBERNATE | MSG_IMAGE | MSG_IO))) ++ set_ignore(index, addr, this); ++ list_add_tail(&this->list, &node_array[index].member_list); ++ return 1; ++} ++ ++static int add_update_member(int index, __be32 addr, int message) ++{ ++ int result; ++ unsigned long flags; ++ spin_lock_irqsave(&node_array[index].member_list_lock, flags); ++ result = __add_update_member(index, addr, message); ++ spin_unlock_irqrestore(&node_array[index].member_list_lock, flags); ++ ++ print_member_info(index); ++ ++ wake_up(&node_array[index].member_events); ++ ++ return result; ++} ++ ++static void del_member(int index, __be32 addr) ++{ ++ struct cluster_member *this; ++ unsigned long flags; ++ ++ spin_lock_irqsave(&node_array[index].member_list_lock, flags); ++ this = __find_member(index, addr); ++ ++ if (this) { ++ list_del_init(&this->list); ++ toi_kfree(36, this, sizeof(*this)); ++ node_array[index].peer_count--; ++ } ++ ++ spin_unlock_irqrestore(&node_array[index].member_list_lock, flags); ++} ++ ++/* === Message transmission === */ ++ ++static void toi_send_if(int message, unsigned long my_id); ++ ++/* ++ * Process received TOI packet. ++ */ ++static int toi_recv(struct sk_buff *skb, struct net_device *dev, ++ struct packet_type *pt, struct net_device *orig_dev) ++{ ++ struct toi_pkt *b; ++ struct iphdr *h; ++ int len, result, index; ++ unsigned long addr, message, ack; ++ ++ /* Perform verifications before taking the lock. */ ++ if (skb->pkt_type == PACKET_OTHERHOST) ++ goto drop; ++ ++ if (dev != net_dev) ++ goto drop; ++ ++ skb = skb_share_check(skb, GFP_ATOMIC); ++ if (!skb) ++ return NET_RX_DROP; ++ ++ if (!pskb_may_pull(skb, ++ sizeof(struct iphdr) + ++ sizeof(struct udphdr))) ++ goto drop; ++ ++ b = (struct toi_pkt *)skb_network_header(skb); ++ h = &b->iph; ++ ++ if (h->ihl != 5 || h->version != 4 || h->protocol != IPPROTO_UDP) ++ goto drop; ++ ++ /* Fragments are not supported */ ++ if (h->frag_off & htons(IP_OFFSET | IP_MF)) { ++ if (net_ratelimit()) ++ printk(KERN_ERR "TuxOnIce: Ignoring fragmented " ++ "cluster message.\n"); ++ goto drop; ++ } ++ ++ if (skb->len < ntohs(h->tot_len)) ++ goto drop; ++ ++ if (ip_fast_csum((char *) h, h->ihl)) ++ goto drop; ++ ++ if (b->udph.source != htons(toi_cluster_port_send) || ++ b->udph.dest != htons(toi_cluster_port_recv)) ++ goto drop; ++ ++ if (ntohs(h->tot_len) < ntohs(b->udph.len) + sizeof(struct iphdr)) ++ goto drop; ++ ++ len = ntohs(b->udph.len) - sizeof(struct udphdr); ++ ++ /* Ok the front looks good, make sure we can get at the rest. */ ++ if (!pskb_may_pull(skb, skb->len)) ++ goto drop; ++ ++ b = (struct toi_pkt *)skb_network_header(skb); ++ h = &b->iph; ++ ++ addr = SADDR; ++ PRINTK(">>> Message %s received from " NIPQUAD_FMT ".\n", ++ str_message(b->message), NIPQUAD(addr)); ++ ++ message = b->message & MSG_STATE_MASK; ++ ack = b->message & MSG_ACK_MASK; ++ ++ for (index = 0; index < num_local_nodes; index++) { ++ int new_message = node_array[index].current_message, ++ old_message = new_message; ++ ++ if (index == SADDR || !old_message) { ++ PRINTK("Ignoring node %d (offline or self).\n", index); ++ continue; ++ } ++ ++ /* One message at a time, please. */ ++ spin_lock(&node_array[index].receive_lock); ++ ++ result = add_update_member(index, SADDR, b->message); ++ if (result == -1) { ++ printk(KERN_INFO "Failed to add new cluster member " ++ NIPQUAD_FMT ".\n", ++ NIPQUAD(addr)); ++ goto drop_unlock; ++ } ++ ++ switch (b->message & MSG_STATE_MASK) { ++ case MSG_PING: ++ break; ++ case MSG_ABORT: ++ break; ++ case MSG_BYE: ++ break; ++ case MSG_HIBERNATE: ++ /* Can I hibernate? */ ++ new_message = MSG_HIBERNATE | ++ ((index & 1) ? MSG_NACK : MSG_ACK); ++ break; ++ case MSG_IMAGE: ++ /* Can I resume? */ ++ new_message = MSG_IMAGE | ++ ((index & 1) ? MSG_NACK : MSG_ACK); ++ if (new_message != old_message) ++ printk(KERN_ERR "Setting whether I can resume " ++ "to %d.\n", new_message); ++ break; ++ case MSG_IO: ++ new_message = MSG_IO | MSG_ACK; ++ break; ++ case MSG_RUNNING: ++ break; ++ default: ++ if (net_ratelimit()) ++ printk(KERN_ERR "Unrecognised TuxOnIce cluster" ++ " message %d from " NIPQUAD_FMT ".\n", ++ b->message, NIPQUAD(addr)); ++ }; ++ ++ if (old_message != new_message) { ++ node_array[index].current_message = new_message; ++ printk(KERN_INFO ">>> Sending new message for node " ++ "%d.\n", index); ++ toi_send_if(new_message, index); ++ } else if (!ack) { ++ printk(KERN_INFO ">>> Resending message for node %d.\n", ++ index); ++ toi_send_if(new_message, index); ++ } ++drop_unlock: ++ spin_unlock(&node_array[index].receive_lock); ++ }; ++ ++drop: ++ /* Throw the packet out. */ ++ kfree_skb(skb); ++ ++ return 0; ++} ++ ++/* ++ * Send cluster message to single interface. ++ */ ++static void toi_send_if(int message, unsigned long my_id) ++{ ++ struct sk_buff *skb; ++ struct toi_pkt *b; ++ int hh_len = LL_RESERVED_SPACE(net_dev); ++ struct iphdr *h; ++ ++ /* Allocate packet */ ++ skb = alloc_skb(sizeof(struct toi_pkt) + hh_len + 15, GFP_KERNEL); ++ if (!skb) ++ return; ++ skb_reserve(skb, hh_len); ++ b = (struct toi_pkt *) skb_put(skb, sizeof(struct toi_pkt)); ++ memset(b, 0, sizeof(struct toi_pkt)); ++ ++ /* Construct IP header */ ++ skb_reset_network_header(skb); ++ h = ip_hdr(skb); ++ h->version = 4; ++ h->ihl = 5; ++ h->tot_len = htons(sizeof(struct toi_pkt)); ++ h->frag_off = htons(IP_DF); ++ h->ttl = 64; ++ h->protocol = IPPROTO_UDP; ++ h->daddr = htonl(INADDR_BROADCAST); ++ h->check = ip_fast_csum((unsigned char *) h, h->ihl); ++ ++ /* Construct UDP header */ ++ b->udph.source = htons(toi_cluster_port_send); ++ b->udph.dest = htons(toi_cluster_port_recv); ++ b->udph.len = htons(sizeof(struct toi_pkt) - sizeof(struct iphdr)); ++ /* UDP checksum not calculated -- explicitly allowed in BOOTP RFC */ ++ ++ /* Construct message */ ++ b->message = message; ++ b->sid = my_id; ++ b->htype = net_dev->type; /* can cause undefined behavior */ ++ b->hlen = net_dev->addr_len; ++ memcpy(b->hw_addr, net_dev->dev_addr, net_dev->addr_len); ++ b->secs = htons(3); /* 3 seconds */ ++ ++ /* Chain packet down the line... */ ++ skb->dev = net_dev; ++ skb->protocol = htons(ETH_P_IP); ++ if ((dev_hard_header(skb, net_dev, ntohs(skb->protocol), ++ net_dev->broadcast, net_dev->dev_addr, skb->len) < 0) || ++ dev_queue_xmit(skb) < 0) ++ printk(KERN_INFO "E"); ++} ++ ++/* ========================================= */ ++ ++/* kTOICluster */ ++ ++static atomic_t num_cluster_threads; ++static DECLARE_WAIT_QUEUE_HEAD(clusterd_events); ++ ++static int kTOICluster(void *data) ++{ ++ unsigned long my_id; ++ ++ my_id = atomic_add_return(1, &num_cluster_threads) - 1; ++ node_array[my_id].current_message = (unsigned long) data; ++ ++ PRINTK("kTOICluster daemon %lu starting.\n", my_id); ++ ++ current->flags |= PF_NOFREEZE; ++ ++ while (node_array[my_id].current_message) { ++ toi_send_if(node_array[my_id].current_message, my_id); ++ sleep_on_timeout(&clusterd_events, ++ cluster_message_timeout); ++ PRINTK("Link state %lu is %d.\n", my_id, ++ node_array[my_id].current_message); ++ } ++ ++ toi_send_if(MSG_BYE, my_id); ++ atomic_dec(&num_cluster_threads); ++ wake_up(&clusterd_events); ++ ++ PRINTK("kTOICluster daemon %lu exiting.\n", my_id); ++ __set_current_state(TASK_RUNNING); ++ return 0; ++} ++ ++static void kill_clusterd(void) ++{ ++ int i; ++ ++ for (i = 0; i < num_local_nodes; i++) { ++ if (node_array[i].current_message) { ++ PRINTK("Seeking to kill clusterd %d.\n", i); ++ node_array[i].current_message = 0; ++ } ++ } ++ wait_event(clusterd_events, ++ !atomic_read(&num_cluster_threads)); ++ PRINTK("All cluster daemons have exited.\n"); ++} ++ ++static int peers_not_in_message(int index, int message, int precise) ++{ ++ struct cluster_member *this; ++ unsigned long flags; ++ int result = 0; ++ ++ spin_lock_irqsave(&node_array[index].member_list_lock, flags); ++ list_for_each_entry(this, &node_array[index].member_list, list) { ++ if (this->ignore) ++ continue; ++ ++ PRINTK("Peer %d.%d.%d.%d sending %s. " ++ "Seeking %s.\n", ++ NIPQUAD(this->addr), ++ str_message(this->message), str_message(message)); ++ if ((precise ? this->message : ++ this->message & MSG_STATE_MASK) != ++ message) ++ result++; ++ } ++ spin_unlock_irqrestore(&node_array[index].member_list_lock, flags); ++ PRINTK("%d peers in sought message.\n", result); ++ return result; ++} ++ ++static void reset_ignored(int index) ++{ ++ struct cluster_member *this; ++ unsigned long flags; ++ ++ spin_lock_irqsave(&node_array[index].member_list_lock, flags); ++ list_for_each_entry(this, &node_array[index].member_list, list) ++ this->ignore = 0; ++ node_array[index].ignored_peer_count = 0; ++ spin_unlock_irqrestore(&node_array[index].member_list_lock, flags); ++} ++ ++static int peers_in_message(int index, int message, int precise) ++{ ++ return node_array[index].peer_count - ++ node_array[index].ignored_peer_count - ++ peers_not_in_message(index, message, precise); ++} ++ ++static int time_to_continue(int index, unsigned long start, int message) ++{ ++ int first = peers_not_in_message(index, message, 0); ++ int second = peers_in_message(index, message, 1); ++ ++ PRINTK("First part returns %d, second returns %d.\n", first, second); ++ ++ if (!first && !second) { ++ PRINTK("All peers answered message %d.\n", ++ message); ++ return 1; ++ } ++ ++ if (time_after(jiffies, start + continue_delay)) { ++ PRINTK("Timeout reached.\n"); ++ return 1; ++ } ++ ++ PRINTK("Not time to continue yet (%lu < %lu).\n", jiffies, ++ start + continue_delay); ++ return 0; ++} ++ ++void toi_initiate_cluster_hibernate(void) ++{ ++ int result; ++ unsigned long start; ++ ++ result = do_toi_step(STEP_HIBERNATE_PREPARE_IMAGE); ++ if (result) ++ return; ++ ++ toi_send_if(MSG_HIBERNATE, 0); ++ ++ start = jiffies; ++ wait_event(node_array[0].member_events, ++ time_to_continue(0, start, MSG_HIBERNATE)); ++ ++ if (test_action_state(TOI_FREEZER_TEST)) { ++ toi_send_if(MSG_ABORT, 0); ++ ++ start = jiffies; ++ wait_event(node_array[0].member_events, ++ time_to_continue(0, start, MSG_RUNNING)); ++ ++ do_toi_step(STEP_QUIET_CLEANUP); ++ return; ++ } ++ ++ toi_send_if(MSG_IO, 0); ++ ++ result = do_toi_step(STEP_HIBERNATE_SAVE_IMAGE); ++ if (result) ++ return; ++ ++ /* This code runs at resume time too! */ ++ if (toi_in_hibernate) ++ result = do_toi_step(STEP_HIBERNATE_POWERDOWN); ++} ++EXPORT_SYMBOL_GPL(toi_initiate_cluster_hibernate); ++ ++/* toi_cluster_print_debug_stats ++ * ++ * Description: Print information to be recorded for debugging purposes into a ++ * buffer. ++ * Arguments: buffer: Pointer to a buffer into which the debug info will be ++ * printed. ++ * size: Size of the buffer. ++ * Returns: Number of characters written to the buffer. ++ */ ++static int toi_cluster_print_debug_stats(char *buffer, int size) ++{ ++ int len; ++ ++ if (strlen(toi_cluster_iface)) ++ len = scnprintf(buffer, size, ++ "- Cluster interface is '%s'.\n", ++ toi_cluster_iface); ++ else ++ len = scnprintf(buffer, size, ++ "- Cluster support is disabled.\n"); ++ return len; ++} ++ ++/* cluster_memory_needed ++ * ++ * Description: Tell the caller how much memory we need to operate during ++ * hibernate/resume. ++ * Returns: Unsigned long. Maximum number of bytes of memory required for ++ * operation. ++ */ ++static int toi_cluster_memory_needed(void) ++{ ++ return 0; ++} ++ ++static int toi_cluster_storage_needed(void) ++{ ++ return 1 + strlen(toi_cluster_iface); ++} ++ ++/* toi_cluster_save_config_info ++ * ++ * Description: Save informaton needed when reloading the image at resume time. ++ * Arguments: Buffer: Pointer to a buffer of size PAGE_SIZE. ++ * Returns: Number of bytes used for saving our data. ++ */ ++static int toi_cluster_save_config_info(char *buffer) ++{ ++ strcpy(buffer, toi_cluster_iface); ++ return strlen(toi_cluster_iface + 1); ++} ++ ++/* toi_cluster_load_config_info ++ * ++ * Description: Reload information needed for declustering the image at ++ * resume time. ++ * Arguments: Buffer: Pointer to the start of the data. ++ * Size: Number of bytes that were saved. ++ */ ++static void toi_cluster_load_config_info(char *buffer, int size) ++{ ++ strncpy(toi_cluster_iface, buffer, size); ++ return; ++} ++ ++static void cluster_startup(void) ++{ ++ int have_image = do_check_can_resume(), i; ++ unsigned long start = jiffies, initial_message; ++ struct task_struct *p; ++ ++ initial_message = MSG_IMAGE; ++ ++ have_image = 1; ++ ++ for (i = 0; i < num_local_nodes; i++) { ++ PRINTK("Starting ktoiclusterd %d.\n", i); ++ p = kthread_create(kTOICluster, (void *) initial_message, ++ "ktoiclusterd/%d", i); ++ if (IS_ERR(p)) { ++ printk(KERN_ERR "Failed to start ktoiclusterd.\n"); ++ return; ++ } ++ ++ wake_up_process(p); ++ } ++ ++ /* Wait for delay or someone else sending first message */ ++ wait_event(node_array[0].member_events, time_to_continue(0, start, ++ MSG_IMAGE)); ++ ++ others_have_image = peers_in_message(0, MSG_IMAGE | MSG_ACK, 1); ++ ++ printk(KERN_INFO "Continuing. I %shave an image. Peers with image:" ++ " %d.\n", have_image ? "" : "don't ", others_have_image); ++ ++ if (have_image) { ++ int result; ++ ++ /* Start to resume */ ++ printk(KERN_INFO " === Starting to resume === \n"); ++ node_array[0].current_message = MSG_IO; ++ toi_send_if(MSG_IO, 0); ++ ++ /* result = do_toi_step(STEP_RESUME_LOAD_PS1); */ ++ result = 0; ++ ++ if (!result) { ++ /* ++ * Atomic restore - we'll come back in the hibernation ++ * path. ++ */ ++ ++ /* result = do_toi_step(STEP_RESUME_DO_RESTORE); */ ++ result = 0; ++ ++ /* do_toi_step(STEP_QUIET_CLEANUP); */ ++ } ++ ++ node_array[0].current_message |= MSG_NACK; ++ ++ /* For debugging - disable for real life? */ ++ wait_event(node_array[0].member_events, ++ time_to_continue(0, start, MSG_IO)); ++ } ++ ++ if (others_have_image) { ++ /* Wait for them to resume */ ++ printk(KERN_INFO "Waiting for other nodes to resume.\n"); ++ start = jiffies; ++ wait_event(node_array[0].member_events, ++ time_to_continue(0, start, MSG_RUNNING)); ++ if (peers_not_in_message(0, MSG_RUNNING, 0)) ++ printk(KERN_INFO "Timed out while waiting for other " ++ "nodes to resume.\n"); ++ } ++ ++ /* Find out whether an image exists here. Send ACK_IMAGE or NACK_IMAGE ++ * as appropriate. ++ * ++ * If we don't have an image: ++ * - Wait until someone else says they have one, or conditions are met ++ * for continuing to boot (n machines or t seconds). ++ * - If anyone has an image, wait for them to resume before continuing ++ * to boot. ++ * ++ * If we have an image: ++ * - Wait until conditions are met before continuing to resume (n ++ * machines or t seconds). Send RESUME_PREP and freeze processes. ++ * NACK_PREP if freezing fails (shouldn't) and follow logic for ++ * us having no image above. On success, wait for [N]ACK_PREP from ++ * other machines. Read image (including atomic restore) until done. ++ * Wait for ACK_READ from others (should never fail). Thaw processes ++ * and do post-resume. (The section after the atomic restore is done ++ * via the code for hibernating). ++ */ ++ ++ node_array[0].current_message = MSG_RUNNING; ++} ++ ++/* toi_cluster_open_iface ++ * ++ * Description: Prepare to use an interface. ++ */ ++ ++static int toi_cluster_open_iface(void) ++{ ++ struct net_device *dev; ++ ++ rtnl_lock(); ++ ++ for_each_netdev(&init_net, dev) { ++ if (/* dev == &init_net.loopback_dev || */ ++ strcmp(dev->name, toi_cluster_iface)) ++ continue; ++ ++ net_dev = dev; ++ break; ++ } ++ ++ rtnl_unlock(); ++ ++ if (!net_dev) { ++ printk(KERN_ERR MYNAME ": Device %s not found.\n", ++ toi_cluster_iface); ++ return -ENODEV; ++ } ++ ++ dev_add_pack(&toi_cluster_packet_type); ++ added_pack = 1; ++ ++ loopback_mode = (net_dev == init_net.loopback_dev); ++ num_local_nodes = loopback_mode ? 8 : 1; ++ ++ PRINTK("Loopback mode is %s. Number of local nodes is %d.\n", ++ loopback_mode ? "on" : "off", num_local_nodes); ++ ++ cluster_startup(); ++ return 0; ++} ++ ++/* toi_cluster_close_iface ++ * ++ * Description: Stop using an interface. ++ */ ++ ++static int toi_cluster_close_iface(void) ++{ ++ kill_clusterd(); ++ if (added_pack) { ++ dev_remove_pack(&toi_cluster_packet_type); ++ added_pack = 0; ++ } ++ return 0; ++} ++ ++static void write_side_effect(void) ++{ ++ if (toi_cluster_ops.enabled) { ++ toi_cluster_open_iface(); ++ set_toi_state(TOI_CLUSTER_MODE); ++ } else { ++ toi_cluster_close_iface(); ++ clear_toi_state(TOI_CLUSTER_MODE); ++ } ++} ++ ++static void node_write_side_effect(void) ++{ ++} ++ ++/* ++ * data for our sysfs entries. ++ */ ++static struct toi_sysfs_data sysfs_params[] = { ++ SYSFS_STRING("interface", SYSFS_RW, toi_cluster_iface, IFNAMSIZ, 0, ++ NULL), ++ SYSFS_INT("enabled", SYSFS_RW, &toi_cluster_ops.enabled, 0, 1, 0, ++ write_side_effect), ++ SYSFS_STRING("cluster_name", SYSFS_RW, toi_cluster_key, 32, 0, NULL), ++ SYSFS_STRING("pre-hibernate-script", SYSFS_RW, pre_hibernate_script, ++ 256, 0, NULL), ++ SYSFS_STRING("post-hibernate-script", SYSFS_RW, post_hibernate_script, ++ 256, 0, STRING), ++ SYSFS_UL("continue_delay", SYSFS_RW, &continue_delay, HZ / 2, 60 * HZ, ++ 0) ++}; ++ ++/* ++ * Ops structure. ++ */ ++ ++static struct toi_module_ops toi_cluster_ops = { ++ .type = FILTER_MODULE, ++ .name = "Cluster", ++ .directory = "cluster", ++ .module = THIS_MODULE, ++ .memory_needed = toi_cluster_memory_needed, ++ .print_debug_info = toi_cluster_print_debug_stats, ++ .save_config_info = toi_cluster_save_config_info, ++ .load_config_info = toi_cluster_load_config_info, ++ .storage_needed = toi_cluster_storage_needed, ++ ++ .sysfs_data = sysfs_params, ++ .num_sysfs_entries = sizeof(sysfs_params) / ++ sizeof(struct toi_sysfs_data), ++}; ++ ++/* ---- Registration ---- */ ++ ++#ifdef MODULE ++#define INIT static __init ++#define EXIT static __exit ++#else ++#define INIT ++#define EXIT ++#endif ++ ++INIT int toi_cluster_init(void) ++{ ++ int temp = toi_register_module(&toi_cluster_ops), i; ++ struct kobject *kobj = toi_cluster_ops.dir_kobj; ++ ++ for (i = 0; i < MAX_LOCAL_NODES; i++) { ++ node_array[i].current_message = 0; ++ INIT_LIST_HEAD(&node_array[i].member_list); ++ init_waitqueue_head(&node_array[i].member_events); ++ spin_lock_init(&node_array[i].member_list_lock); ++ spin_lock_init(&node_array[i].receive_lock); ++ ++ /* Set up sysfs entry */ ++ node_array[i].sysfs_data.attr.name = toi_kzalloc(8, ++ sizeof(node_array[i].sysfs_data.attr.name), ++ GFP_KERNEL); ++ sprintf((char *) node_array[i].sysfs_data.attr.name, "node_%d", ++ i); ++ node_array[i].sysfs_data.attr.mode = SYSFS_RW; ++ node_array[i].sysfs_data.type = TOI_SYSFS_DATA_INTEGER; ++ node_array[i].sysfs_data.flags = 0; ++ node_array[i].sysfs_data.data.integer.variable = ++ (int *) &node_array[i].current_message; ++ node_array[i].sysfs_data.data.integer.minimum = 0; ++ node_array[i].sysfs_data.data.integer.maximum = INT_MAX; ++ node_array[i].sysfs_data.write_side_effect = ++ node_write_side_effect; ++ toi_register_sysfs_file(kobj, &node_array[i].sysfs_data); ++ } ++ ++ toi_cluster_ops.enabled = (strlen(toi_cluster_iface) > 0); ++ ++ if (toi_cluster_ops.enabled) ++ toi_cluster_open_iface(); ++ ++ return temp; ++} ++ ++EXIT void toi_cluster_exit(void) ++{ ++ int i; ++ toi_cluster_close_iface(); ++ ++ for (i = 0; i < MAX_LOCAL_NODES; i++) ++ toi_unregister_sysfs_file(toi_cluster_ops.dir_kobj, ++ &node_array[i].sysfs_data); ++ toi_unregister_module(&toi_cluster_ops); ++} ++ ++static int __init toi_cluster_iface_setup(char *iface) ++{ ++ toi_cluster_ops.enabled = (*iface && ++ strcmp(iface, "off")); ++ ++ if (toi_cluster_ops.enabled) ++ strncpy(toi_cluster_iface, iface, strlen(iface)); ++} ++ ++__setup("toi_cluster=", toi_cluster_iface_setup); ++ ++#ifdef MODULE ++MODULE_LICENSE("GPL"); ++module_init(toi_cluster_init); ++module_exit(toi_cluster_exit); ++MODULE_AUTHOR("Nigel Cunningham"); ++MODULE_DESCRIPTION("Cluster Support for TuxOnIce"); ++#endif +diff --git a/kernel/power/tuxonice_cluster.h b/kernel/power/tuxonice_cluster.h +new file mode 100644 +index 0000000..051feb3 +--- /dev/null ++++ b/kernel/power/tuxonice_cluster.h +@@ -0,0 +1,18 @@ ++/* ++ * kernel/power/tuxonice_cluster.h ++ * ++ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ */ ++ ++#ifdef CONFIG_TOI_CLUSTER ++extern int toi_cluster_init(void); ++extern void toi_cluster_exit(void); ++extern void toi_initiate_cluster_hibernate(void); ++#else ++static inline int toi_cluster_init(void) { return 0; } ++static inline void toi_cluster_exit(void) { } ++static inline void toi_initiate_cluster_hibernate(void) { } ++#endif ++ +diff --git a/kernel/power/tuxonice_compress.c b/kernel/power/tuxonice_compress.c +new file mode 100644 +index 0000000..6bbc446 +--- /dev/null ++++ b/kernel/power/tuxonice_compress.c +@@ -0,0 +1,497 @@ ++/* ++ * kernel/power/compression.c ++ * ++ * Copyright (C) 2003-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * This file contains data compression routines for TuxOnIce, ++ * using cryptoapi. ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#include "tuxonice_builtin.h" ++#include "tuxonice.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_sysfs.h" ++#include "tuxonice_io.h" ++#include "tuxonice_ui.h" ++#include "tuxonice_alloc.h" ++ ++static int toi_expected_compression; ++ ++static struct toi_module_ops toi_compression_ops; ++static struct toi_module_ops *next_driver; ++ ++static char toi_compressor_name[32] = "lzo"; ++ ++static DEFINE_MUTEX(stats_lock); ++ ++struct cpu_context { ++ u8 *page_buffer; ++ struct crypto_comp *transform; ++ unsigned int len; ++ char *buffer_start; ++ char *output_buffer; ++ char *check_buffer; ++}; ++ ++static DEFINE_PER_CPU(struct cpu_context, contexts); ++static int toi_check_compression; ++ ++/* ++ * toi_crypto_prepare ++ * ++ * Prepare to do some work by allocating buffers and transforms. ++ */ ++static int toi_compress_crypto_prepare(void) ++{ ++ int cpu; ++ ++ if (!*toi_compressor_name) { ++ printk(KERN_INFO "TuxOnIce: Compression enabled but no " ++ "compressor name set.\n"); ++ return 1; ++ } ++ ++ for_each_online_cpu(cpu) { ++ struct cpu_context *this = &per_cpu(contexts, cpu); ++ this->transform = crypto_alloc_comp(toi_compressor_name, 0, 0); ++ if (IS_ERR(this->transform)) { ++ printk(KERN_INFO "TuxOnIce: Failed to initialise the " ++ "%s compression transform.\n", ++ toi_compressor_name); ++ this->transform = NULL; ++ return 1; ++ } ++ ++ this->page_buffer = ++ (char *) toi_get_zeroed_page(16, TOI_ATOMIC_GFP); ++ ++ if (!this->page_buffer) { ++ printk(KERN_ERR ++ "Failed to allocate a page buffer for TuxOnIce " ++ "compression driver.\n"); ++ return -ENOMEM; ++ } ++ ++ this->output_buffer = ++ (char *) vmalloc_32(2 * PAGE_SIZE); ++ ++ if (!this->output_buffer) { ++ printk(KERN_ERR ++ "Failed to allocate a output buffer for TuxOnIce " ++ "compression driver.\n"); ++ return -ENOMEM; ++ } ++ ++ this->check_buffer = ++ (char *) toi_get_zeroed_page(16, TOI_ATOMIC_GFP); ++ ++ if (!this->check_buffer) { ++ printk(KERN_ERR ++ "Failed to allocate a check buffer for TuxOnIce " ++ "compression driver.\n"); ++ return -ENOMEM; ++ } ++ ++ } ++ ++ return 0; ++} ++ ++static int toi_compress_rw_cleanup(int writing) ++{ ++ int cpu; ++ ++ for_each_online_cpu(cpu) { ++ struct cpu_context *this = &per_cpu(contexts, cpu); ++ if (this->transform) { ++ crypto_free_comp(this->transform); ++ this->transform = NULL; ++ } ++ ++ if (this->page_buffer) ++ toi_free_page(16, (unsigned long) this->page_buffer); ++ ++ this->page_buffer = NULL; ++ ++ if (this->output_buffer) ++ vfree(this->output_buffer); ++ ++ this->output_buffer = NULL; ++ ++ if (this->check_buffer) ++ toi_free_page(16, (unsigned long) this->check_buffer); ++ ++ this->check_buffer = NULL; ++ } ++ ++ return 0; ++} ++ ++/* ++ * toi_compress_init ++ */ ++ ++static int toi_compress_init(int toi_or_resume) ++{ ++ if (!toi_or_resume) ++ return 0; ++ ++ toi_compress_bytes_in = 0; ++ toi_compress_bytes_out = 0; ++ ++ next_driver = toi_get_next_filter(&toi_compression_ops); ++ ++ return next_driver ? 0 : -ECHILD; ++} ++ ++/* ++ * toi_compress_rw_init() ++ */ ++ ++static int toi_compress_rw_init(int rw, int stream_number) ++{ ++ if (toi_compress_crypto_prepare()) { ++ printk(KERN_ERR "Failed to initialise compression " ++ "algorithm.\n"); ++ if (rw == READ) { ++ printk(KERN_INFO "Unable to read the image.\n"); ++ return -ENODEV; ++ } else { ++ printk(KERN_INFO "Continuing without " ++ "compressing the image.\n"); ++ toi_compression_ops.enabled = 0; ++ } ++ } ++ ++ return 0; ++} ++ ++static int check_compression(struct cpu_context *ctx, struct page *buffer_page, ++ int buf_size) ++{ ++ char *original = kmap(buffer_page); ++ int output_size = PAGE_SIZE, okay, ret; ++ ++ ret = crypto_comp_decompress(ctx->transform, ctx->output_buffer, ++ ctx->len, ctx->check_buffer, &output_size); ++ okay = (!ret && output_size == PAGE_SIZE && ++ !memcmp(ctx->check_buffer, original, PAGE_SIZE)); ++ ++ if (!okay) { ++ printk("Compression test failed.\n"); ++ print_hex_dump(KERN_ERR, "Original page: ", DUMP_PREFIX_NONE, ++ 16, 1, original, PAGE_SIZE, 0); ++ printk(KERN_ERR "\nOutput %d bytes. Result %d.", ctx->len, ret); ++ print_hex_dump(KERN_ERR, "Compressed to: ", DUMP_PREFIX_NONE, ++ 16, 1, ctx->output_buffer, ctx->len, 0); ++ printk(KERN_ERR "\nRestored to %d bytes.\n", output_size); ++ print_hex_dump(KERN_ERR, "Decompressed : ", DUMP_PREFIX_NONE, ++ 16, 1, ctx->check_buffer, output_size, 0); ++ } ++ kunmap(buffer_page); ++ ++ return okay; ++} ++ ++/* ++ * toi_compress_write_page() ++ * ++ * Compress a page of data, buffering output and passing on filled ++ * pages to the next module in the pipeline. ++ * ++ * Buffer_page: Pointer to a buffer of size PAGE_SIZE, containing ++ * data to be compressed. ++ * ++ * Returns: 0 on success. Otherwise the error is that returned by later ++ * modules, -ECHILD if we have a broken pipeline or -EIO if ++ * zlib errs. ++ */ ++static int toi_compress_write_page(unsigned long index, ++ struct page *buffer_page, unsigned int buf_size) ++{ ++ int ret, cpu = smp_processor_id(); ++ struct cpu_context *ctx = &per_cpu(contexts, cpu); ++ ++ if (!ctx->transform) ++ return next_driver->write_page(index, buffer_page, buf_size); ++ ++ ctx->buffer_start = kmap(buffer_page); ++ ++ ctx->len = PAGE_SIZE; ++ ++ ret = crypto_comp_compress(ctx->transform, ++ ctx->buffer_start, buf_size, ++ ctx->output_buffer, &ctx->len); ++ ++ kunmap(buffer_page); ++ ++ mutex_lock(&stats_lock); ++ toi_compress_bytes_in += buf_size; ++ toi_compress_bytes_out += ctx->len; ++ mutex_unlock(&stats_lock); ++ ++ if (!ret && ctx->len < buf_size) { /* some compression */ ++ if (unlikely(toi_check_compression)) { ++ ret = check_compression(ctx, buffer_page, buf_size); ++ if (!ret) ++ return next_driver->write_page(index, ++ buffer_page, buf_size); ++ } ++ ++ memcpy(ctx->page_buffer, ctx->output_buffer, ctx->len); ++ return next_driver->write_page(index, ++ virt_to_page(ctx->page_buffer), ++ ctx->len); ++ } else ++ return next_driver->write_page(index, buffer_page, buf_size); ++} ++ ++/* ++ * toi_compress_read_page() ++ * @buffer_page: struct page *. Pointer to a buffer of size PAGE_SIZE. ++ * ++ * Retrieve data from later modules and decompress it until the input buffer ++ * is filled. ++ * Zero if successful. Error condition from me or from downstream on failure. ++ */ ++static int toi_compress_read_page(unsigned long *index, ++ struct page *buffer_page, unsigned int *buf_size) ++{ ++ int ret, cpu = smp_processor_id(); ++ unsigned int len; ++ unsigned int outlen = PAGE_SIZE; ++ char *buffer_start; ++ struct cpu_context *ctx = &per_cpu(contexts, cpu); ++ ++ if (!ctx->transform) ++ return next_driver->read_page(index, buffer_page, buf_size); ++ ++ /* ++ * All our reads must be synchronous - we can't decompress ++ * data that hasn't been read yet. ++ */ ++ ++ ret = next_driver->read_page(index, buffer_page, &len); ++ ++ /* Error or uncompressed data */ ++ if (ret || len == PAGE_SIZE) ++ return ret; ++ ++ buffer_start = kmap(buffer_page); ++ memcpy(ctx->page_buffer, buffer_start, len); ++ ret = crypto_comp_decompress( ++ ctx->transform, ++ ctx->page_buffer, ++ len, buffer_start, &outlen); ++ if (ret) ++ abort_hibernate(TOI_FAILED_IO, ++ "Compress_read returned %d.\n", ret); ++ else if (outlen != PAGE_SIZE) { ++ abort_hibernate(TOI_FAILED_IO, ++ "Decompression yielded %d bytes instead of %ld.\n", ++ outlen, PAGE_SIZE); ++ printk(KERN_ERR "Decompression yielded %d bytes instead of " ++ "%ld.\n", outlen, PAGE_SIZE); ++ ret = -EIO; ++ *buf_size = outlen; ++ } ++ kunmap(buffer_page); ++ return ret; ++} ++ ++/* ++ * toi_compress_print_debug_stats ++ * @buffer: Pointer to a buffer into which the debug info will be printed. ++ * @size: Size of the buffer. ++ * ++ * Print information to be recorded for debugging purposes into a buffer. ++ * Returns: Number of characters written to the buffer. ++ */ ++ ++static int toi_compress_print_debug_stats(char *buffer, int size) ++{ ++ unsigned long pages_in = toi_compress_bytes_in >> PAGE_SHIFT, ++ pages_out = toi_compress_bytes_out >> PAGE_SHIFT; ++ int len; ++ ++ /* Output the compression ratio achieved. */ ++ if (*toi_compressor_name) ++ len = scnprintf(buffer, size, "- Compressor is '%s'.\n", ++ toi_compressor_name); ++ else ++ len = scnprintf(buffer, size, "- Compressor is not set.\n"); ++ ++ if (pages_in) ++ len += scnprintf(buffer+len, size - len, " Compressed " ++ "%lu bytes into %lu (%ld percent compression).\n", ++ toi_compress_bytes_in, ++ toi_compress_bytes_out, ++ (pages_in - pages_out) * 100 / pages_in); ++ return len; ++} ++ ++/* ++ * toi_compress_compression_memory_needed ++ * ++ * Tell the caller how much memory we need to operate during hibernate/resume. ++ * Returns: Unsigned long. Maximum number of bytes of memory required for ++ * operation. ++ */ ++static int toi_compress_memory_needed(void) ++{ ++ return 2 * PAGE_SIZE; ++} ++ ++static int toi_compress_storage_needed(void) ++{ ++ return 4 * sizeof(unsigned long) + strlen(toi_compressor_name) + 1; ++} ++ ++/* ++ * toi_compress_save_config_info ++ * @buffer: Pointer to a buffer of size PAGE_SIZE. ++ * ++ * Save informaton needed when reloading the image at resume time. ++ * Returns: Number of bytes used for saving our data. ++ */ ++static int toi_compress_save_config_info(char *buffer) ++{ ++ int namelen = strlen(toi_compressor_name) + 1; ++ int total_len; ++ ++ *((unsigned long *) buffer) = toi_compress_bytes_in; ++ *((unsigned long *) (buffer + 1 * sizeof(unsigned long))) = ++ toi_compress_bytes_out; ++ *((unsigned long *) (buffer + 2 * sizeof(unsigned long))) = ++ toi_expected_compression; ++ *((unsigned long *) (buffer + 3 * sizeof(unsigned long))) = namelen; ++ strncpy(buffer + 4 * sizeof(unsigned long), toi_compressor_name, ++ namelen); ++ total_len = 4 * sizeof(unsigned long) + namelen; ++ return total_len; ++} ++ ++/* toi_compress_load_config_info ++ * @buffer: Pointer to the start of the data. ++ * @size: Number of bytes that were saved. ++ * ++ * Description: Reload information needed for decompressing the image at ++ * resume time. ++ */ ++static void toi_compress_load_config_info(char *buffer, int size) ++{ ++ int namelen; ++ ++ toi_compress_bytes_in = *((unsigned long *) buffer); ++ toi_compress_bytes_out = *((unsigned long *) (buffer + 1 * ++ sizeof(unsigned long))); ++ toi_expected_compression = *((unsigned long *) (buffer + 2 * ++ sizeof(unsigned long))); ++ namelen = *((unsigned long *) (buffer + 3 * sizeof(unsigned long))); ++ if (strncmp(toi_compressor_name, buffer + 4 * sizeof(unsigned long), ++ namelen)) ++ strncpy(toi_compressor_name, buffer + 4 * sizeof(unsigned long), ++ namelen); ++ return; ++} ++ ++static void toi_compress_pre_atomic_restore(struct toi_boot_kernel_data *bkd) ++{ ++ bkd->compress_bytes_in = toi_compress_bytes_in; ++ bkd->compress_bytes_out = toi_compress_bytes_out; ++} ++ ++static void toi_compress_post_atomic_restore(struct toi_boot_kernel_data *bkd) ++{ ++ toi_compress_bytes_in = bkd->compress_bytes_in; ++ toi_compress_bytes_out = bkd->compress_bytes_out; ++} ++ ++/* ++ * toi_expected_compression_ratio ++ * ++ * Description: Returns the expected ratio between data passed into this module ++ * and the amount of data output when writing. ++ * Returns: 100 if the module is disabled. Otherwise the value set by the ++ * user via our sysfs entry. ++ */ ++ ++static int toi_compress_expected_ratio(void) ++{ ++ if (!toi_compression_ops.enabled) ++ return 100; ++ else ++ return 100 - toi_expected_compression; ++} ++ ++/* ++ * data for our sysfs entries. ++ */ ++static struct toi_sysfs_data sysfs_params[] = { ++ SYSFS_INT("expected_compression", SYSFS_RW, &toi_expected_compression, ++ 0, 99, 0, NULL), ++ SYSFS_INT("enabled", SYSFS_RW, &toi_compression_ops.enabled, 0, 1, 0, ++ NULL), ++ SYSFS_INT("check", SYSFS_RW, &toi_check_compression, 0, 1, 0, ++ NULL), ++ SYSFS_STRING("algorithm", SYSFS_RW, toi_compressor_name, 31, 0, NULL), ++}; ++ ++/* ++ * Ops structure. ++ */ ++static struct toi_module_ops toi_compression_ops = { ++ .type = FILTER_MODULE, ++ .name = "compression", ++ .directory = "compression", ++ .module = THIS_MODULE, ++ .initialise = toi_compress_init, ++ .memory_needed = toi_compress_memory_needed, ++ .print_debug_info = toi_compress_print_debug_stats, ++ .save_config_info = toi_compress_save_config_info, ++ .load_config_info = toi_compress_load_config_info, ++ .storage_needed = toi_compress_storage_needed, ++ .expected_compression = toi_compress_expected_ratio, ++ ++ .pre_atomic_restore = toi_compress_pre_atomic_restore, ++ .post_atomic_restore = toi_compress_post_atomic_restore, ++ ++ .rw_init = toi_compress_rw_init, ++ .rw_cleanup = toi_compress_rw_cleanup, ++ ++ .write_page = toi_compress_write_page, ++ .read_page = toi_compress_read_page, ++ ++ .sysfs_data = sysfs_params, ++ .num_sysfs_entries = sizeof(sysfs_params) / ++ sizeof(struct toi_sysfs_data), ++}; ++ ++/* ---- Registration ---- */ ++ ++static __init int toi_compress_load(void) ++{ ++ return toi_register_module(&toi_compression_ops); ++} ++ ++#ifdef MODULE ++static __exit void toi_compress_unload(void) ++{ ++ toi_unregister_module(&toi_compression_ops); ++} ++ ++module_init(toi_compress_load); ++module_exit(toi_compress_unload); ++MODULE_LICENSE("GPL"); ++MODULE_AUTHOR("Nigel Cunningham"); ++MODULE_DESCRIPTION("Compression Support for TuxOnIce"); ++#else ++late_initcall(toi_compress_load); ++#endif +diff --git a/kernel/power/tuxonice_extent.c b/kernel/power/tuxonice_extent.c +new file mode 100644 +index 0000000..e84572c +--- /dev/null ++++ b/kernel/power/tuxonice_extent.c +@@ -0,0 +1,123 @@ ++/* ++ * kernel/power/tuxonice_extent.c ++ * ++ * Copyright (C) 2003-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * Distributed under GPLv2. ++ * ++ * These functions encapsulate the manipulation of storage metadata. ++ */ ++ ++#include ++#include "tuxonice_modules.h" ++#include "tuxonice_extent.h" ++#include "tuxonice_alloc.h" ++#include "tuxonice_ui.h" ++#include "tuxonice.h" ++ ++/** ++ * toi_get_extent - return a free extent ++ * ++ * May fail, returning NULL instead. ++ **/ ++static struct hibernate_extent *toi_get_extent(void) ++{ ++ return (struct hibernate_extent *) toi_kzalloc(2, ++ sizeof(struct hibernate_extent), TOI_ATOMIC_GFP); ++} ++ ++/** ++ * toi_put_extent_chain - free a whole chain of extents ++ * @chain: Chain to free. ++ **/ ++void toi_put_extent_chain(struct hibernate_extent_chain *chain) ++{ ++ struct hibernate_extent *this; ++ ++ this = chain->first; ++ ++ while (this) { ++ struct hibernate_extent *next = this->next; ++ toi_kfree(2, this, sizeof(*this)); ++ chain->num_extents--; ++ this = next; ++ } ++ ++ chain->first = NULL; ++ chain->last_touched = NULL; ++ chain->current_extent = NULL; ++ chain->size = 0; ++} ++EXPORT_SYMBOL_GPL(toi_put_extent_chain); ++ ++/** ++ * toi_add_to_extent_chain - add an extent to an existing chain ++ * @chain: Chain to which the extend should be added ++ * @start: Start of the extent (first physical block) ++ * @end: End of the extent (last physical block) ++ * ++ * The chain information is updated if the insertion is successful. ++ **/ ++int toi_add_to_extent_chain(struct hibernate_extent_chain *chain, ++ unsigned long start, unsigned long end) ++{ ++ struct hibernate_extent *new_ext = NULL, *cur_ext = NULL; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "Adding extent %lu-%lu to chain %p.\n", start, end, chain); ++ ++ /* Find the right place in the chain */ ++ if (chain->last_touched && chain->last_touched->start < start) ++ cur_ext = chain->last_touched; ++ else if (chain->first && chain->first->start < start) ++ cur_ext = chain->first; ++ ++ if (cur_ext) { ++ while (cur_ext->next && cur_ext->next->start < start) ++ cur_ext = cur_ext->next; ++ ++ if (cur_ext->end == (start - 1)) { ++ struct hibernate_extent *next_ext = cur_ext->next; ++ cur_ext->end = end; ++ ++ /* Merge with the following one? */ ++ if (next_ext && cur_ext->end + 1 == next_ext->start) { ++ cur_ext->end = next_ext->end; ++ cur_ext->next = next_ext->next; ++ toi_kfree(2, next_ext, sizeof(*next_ext)); ++ chain->num_extents--; ++ } ++ ++ chain->last_touched = cur_ext; ++ chain->size += (end - start + 1); ++ ++ return 0; ++ } ++ } ++ ++ new_ext = toi_get_extent(); ++ if (!new_ext) { ++ printk(KERN_INFO "Error unable to append a new extent to the " ++ "chain.\n"); ++ return -ENOMEM; ++ } ++ ++ chain->num_extents++; ++ chain->size += (end - start + 1); ++ new_ext->start = start; ++ new_ext->end = end; ++ ++ chain->last_touched = new_ext; ++ ++ if (cur_ext) { ++ new_ext->next = cur_ext->next; ++ cur_ext->next = new_ext; ++ } else { ++ if (chain->first) ++ new_ext->next = chain->first; ++ chain->first = new_ext; ++ } ++ ++ return 0; ++} ++EXPORT_SYMBOL_GPL(toi_add_to_extent_chain); +diff --git a/kernel/power/tuxonice_extent.h b/kernel/power/tuxonice_extent.h +new file mode 100644 +index 0000000..157446c +--- /dev/null ++++ b/kernel/power/tuxonice_extent.h +@@ -0,0 +1,44 @@ ++/* ++ * kernel/power/tuxonice_extent.h ++ * ++ * Copyright (C) 2003-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * It contains declarations related to extents. Extents are ++ * TuxOnIce's method of storing some of the metadata for the image. ++ * See tuxonice_extent.c for more info. ++ * ++ */ ++ ++#include "tuxonice_modules.h" ++ ++#ifndef EXTENT_H ++#define EXTENT_H ++ ++struct hibernate_extent { ++ unsigned long start, end; ++ struct hibernate_extent *next; ++}; ++ ++struct hibernate_extent_chain { ++ unsigned long size; /* size of the chain ie sum (max-min+1) */ ++ int num_extents; ++ struct hibernate_extent *first, *last_touched; ++ struct hibernate_extent *current_extent; ++ unsigned long current_offset; ++}; ++ ++/* Simplify iterating through all the values in an extent chain */ ++#define toi_extent_for_each(extent_chain, extentpointer, value) \ ++if ((extent_chain)->first) \ ++ for ((extentpointer) = (extent_chain)->first, (value) = \ ++ (extentpointer)->start; \ ++ ((extentpointer) && ((extentpointer)->next || (value) <= \ ++ (extentpointer)->end)); \ ++ (((value) == (extentpointer)->end) ? \ ++ ((extentpointer) = (extentpointer)->next, (value) = \ ++ ((extentpointer) ? (extentpointer)->start : 0)) : \ ++ (value)++)) ++ ++#endif +diff --git a/kernel/power/tuxonice_file.c b/kernel/power/tuxonice_file.c +new file mode 100644 +index 0000000..39f2aea +--- /dev/null ++++ b/kernel/power/tuxonice_file.c +@@ -0,0 +1,496 @@ ++/* ++ * kernel/power/tuxonice_file.c ++ * ++ * Copyright (C) 2005-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * Distributed under GPLv2. ++ * ++ * This file encapsulates functions for usage of a simple file as a ++ * backing store. It is based upon the swapallocator, and shares the ++ * same basic working. Here, though, we have nothing to do with ++ * swapspace, and only one device to worry about. ++ * ++ * The user can just ++ * ++ * echo TuxOnIce > /path/to/my_file ++ * ++ * dd if=/dev/zero bs=1M count= >> /path/to/my_file ++ * ++ * and ++ * ++ * echo /path/to/my_file > /sys/power/tuxonice/file/target ++ * ++ * then put what they find in /sys/power/tuxonice/resume ++ * as their resume= parameter in lilo.conf (and rerun lilo if using it). ++ * ++ * Having done this, they're ready to hibernate and resume. ++ * ++ * TODO: ++ * - File resizing. ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#include "tuxonice.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_bio.h" ++#include "tuxonice_alloc.h" ++#include "tuxonice_builtin.h" ++#include "tuxonice_sysfs.h" ++#include "tuxonice_ui.h" ++#include "tuxonice_io.h" ++ ++#define target_is_normal_file() (S_ISREG(target_inode->i_mode)) ++ ++static struct toi_module_ops toi_fileops; ++ ++static struct file *target_file; ++static struct block_device *toi_file_target_bdev; ++static unsigned long pages_available, pages_allocated; ++static char toi_file_target[256]; ++static struct inode *target_inode; ++static int file_target_priority; ++static int used_devt; ++static int target_claim; ++static dev_t toi_file_dev_t; ++static int sig_page_index; ++ ++/* For test_toi_file_target */ ++static struct toi_bdev_info *file_chain; ++ ++static int has_contiguous_blocks(struct toi_bdev_info *dev_info, int page_num) ++{ ++ int j; ++ sector_t last = 0; ++ ++ for (j = 0; j < dev_info->blocks_per_page; j++) { ++ sector_t this = bmap(target_inode, ++ page_num * dev_info->blocks_per_page + j); ++ ++ if (!this || (last && (last + 1) != this)) ++ break; ++ ++ last = this; ++ } ++ ++ return j == dev_info->blocks_per_page; ++} ++ ++static unsigned long get_usable_pages(struct toi_bdev_info *dev_info) ++{ ++ unsigned long result = 0; ++ struct block_device *bdev = dev_info->bdev; ++ int i; ++ ++ switch (target_inode->i_mode & S_IFMT) { ++ case S_IFSOCK: ++ case S_IFCHR: ++ case S_IFIFO: /* Socket, Char, Fifo */ ++ return -1; ++ case S_IFREG: /* Regular file: current size - holes + free ++ space on part */ ++ for (i = 0; i < (target_inode->i_size >> PAGE_SHIFT) ; i++) { ++ if (has_contiguous_blocks(dev_info, i)) ++ result++; ++ } ++ break; ++ case S_IFBLK: /* Block device */ ++ if (!bdev->bd_disk) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, ++ "bdev->bd_disk null."); ++ return 0; ++ } ++ ++ result = (bdev->bd_part ? ++ bdev->bd_part->nr_sects : ++ get_capacity(bdev->bd_disk)) >> (PAGE_SHIFT - 9); ++ } ++ ++ ++ return result; ++} ++ ++static int toi_file_register_storage(void) ++{ ++ struct toi_bdev_info *devinfo; ++ int result = 0; ++ struct fs_info *fs_info; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_file_register_storage."); ++ if (!strlen(toi_file_target)) { ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Register file storage: " ++ "No target filename set."); ++ return 0; ++ } ++ ++ target_file = filp_open(toi_file_target, O_RDONLY|O_LARGEFILE, 0); ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "filp_open %s returned %p.", ++ toi_file_target, target_file); ++ ++ if (IS_ERR(target_file) || !target_file) { ++ target_file = NULL; ++ toi_file_dev_t = name_to_dev_t(toi_file_target); ++ if (!toi_file_dev_t) { ++ struct kstat stat; ++ int error = vfs_stat(toi_file_target, &stat); ++ printk(KERN_INFO "Open file %s returned %p and " ++ "name_to_devt failed.\n", ++ toi_file_target, target_file); ++ if (error) { ++ printk(KERN_INFO "Stating the file also failed." ++ " Nothing more we can do.\n"); ++ return 0; ++ } else ++ toi_file_dev_t = stat.rdev; ++ } ++ ++ toi_file_target_bdev = toi_open_by_devnum(toi_file_dev_t); ++ if (IS_ERR(toi_file_target_bdev)) { ++ printk(KERN_INFO "Got a dev_num (%lx) but failed to " ++ "open it.\n", ++ (unsigned long) toi_file_dev_t); ++ toi_file_target_bdev = NULL; ++ return 0; ++ } ++ used_devt = 1; ++ target_inode = toi_file_target_bdev->bd_inode; ++ } else ++ target_inode = target_file->f_mapping->host; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Succeeded in opening the target."); ++ if (S_ISLNK(target_inode->i_mode) || S_ISDIR(target_inode->i_mode) || ++ S_ISSOCK(target_inode->i_mode) || S_ISFIFO(target_inode->i_mode)) { ++ printk(KERN_INFO "File support works with regular files," ++ " character files and block devices.\n"); ++ /* Cleanup routine will undo the above */ ++ return 0; ++ } ++ ++ if (!used_devt) { ++ if (S_ISBLK(target_inode->i_mode)) { ++ toi_file_target_bdev = I_BDEV(target_inode); ++ if (!bd_claim(toi_file_target_bdev, &toi_fileops)) ++ target_claim = 1; ++ } else ++ toi_file_target_bdev = target_inode->i_sb->s_bdev; ++ if (!toi_file_target_bdev) { ++ printk(KERN_INFO "%s is not a valid file allocator " ++ "target.\n", toi_file_target); ++ return 0; ++ } ++ toi_file_dev_t = toi_file_target_bdev->bd_dev; ++ } ++ ++ devinfo = toi_kzalloc(39, sizeof(struct toi_bdev_info), GFP_ATOMIC); ++ if (!devinfo) { ++ printk("Failed to allocate a toi_bdev_info struct for the file allocator.\n"); ++ return -ENOMEM; ++ } ++ ++ devinfo->bdev = toi_file_target_bdev; ++ devinfo->allocator = &toi_fileops; ++ devinfo->allocator_index = 0; ++ ++ fs_info = fs_info_from_block_dev(toi_file_target_bdev); ++ if (fs_info && !IS_ERR(fs_info)) { ++ memcpy(devinfo->uuid, &fs_info->uuid, 16); ++ free_fs_info(fs_info); ++ } else ++ result = (int) PTR_ERR(fs_info); ++ ++ /* Unlike swap code, only complain if fs_info_from_block_dev returned ++ * -ENOMEM. The 'file' might be a full partition, so might validly not ++ * have an identifiable type, UUID etc. ++ */ ++ if (result) ++ printk(KERN_DEBUG "Failed to get fs_info for file device (%d).\n", ++ result); ++ devinfo->dev_t = toi_file_dev_t; ++ devinfo->prio = file_target_priority; ++ devinfo->bmap_shift = target_inode->i_blkbits - 9; ++ devinfo->blocks_per_page = ++ (1 << (PAGE_SHIFT - target_inode->i_blkbits)); ++ sprintf(devinfo->name, "file %s", toi_file_target); ++ file_chain = devinfo; ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Dev_t is %lx. Prio is %d. Bmap " ++ "shift is %d. Blocks per page %d.", ++ devinfo->dev_t, devinfo->prio, devinfo->bmap_shift, ++ devinfo->blocks_per_page); ++ ++ /* Keep one aside for the signature */ ++ pages_available = get_usable_pages(devinfo) - 1; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Registering file storage, %lu " ++ "pages.", pages_available); ++ ++ toi_bio_ops.register_storage(devinfo); ++ return 0; ++} ++ ++static unsigned long toi_file_storage_available(void) ++{ ++ return pages_available; ++} ++ ++static int toi_file_allocate_storage(struct toi_bdev_info *chain, ++ unsigned long request) ++{ ++ unsigned long available = pages_available - pages_allocated; ++ unsigned long to_add = min(available, request); ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Pages available is %lu. Allocated " ++ "is %lu. Allocating %lu pages from file.", ++ pages_available, pages_allocated, to_add); ++ pages_allocated += to_add; ++ ++ return to_add; ++} ++ ++/** ++ * __populate_block_list - add an extent to the chain ++ * @min: Start of the extent (first physical block = sector) ++ * @max: End of the extent (last physical block = sector) ++ * ++ * If TOI_TEST_BIO is set, print a debug message, outputting the min and max ++ * fs block numbers. ++ **/ ++static int __populate_block_list(struct toi_bdev_info *chain, int min, int max) ++{ ++ if (test_action_state(TOI_TEST_BIO)) ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Adding extent %d-%d.", ++ min << chain->bmap_shift, ++ ((max + 1) << chain->bmap_shift) - 1); ++ ++ return toi_add_to_extent_chain(&chain->blocks, min, max); ++} ++ ++static int get_main_pool_phys_params(struct toi_bdev_info *chain) ++{ ++ int i, extent_min = -1, extent_max = -1, result = 0, have_sig_page = 0; ++ unsigned long pages_mapped = 0; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Getting file allocator blocks."); ++ ++ if (chain->blocks.first) ++ toi_put_extent_chain(&chain->blocks); ++ ++ if (!target_is_normal_file()) { ++ result = (pages_available > 0) ? ++ __populate_block_list(chain, chain->blocks_per_page, ++ (pages_allocated + 1) * ++ chain->blocks_per_page - 1) : 0; ++ return result; ++ } ++ ++ /* ++ * FIXME: We are assuming the first page is contiguous. Is that ++ * assumption always right? ++ */ ++ ++ for (i = 0; i < (target_inode->i_size >> PAGE_SHIFT); i++) { ++ sector_t new_sector; ++ ++ if (!has_contiguous_blocks(chain, i)) ++ continue; ++ ++ if (!have_sig_page) { ++ have_sig_page = 1; ++ sig_page_index = i; ++ continue; ++ } ++ ++ pages_mapped++; ++ ++ /* Ignore first page - it has the header */ ++ if (pages_mapped == 1) ++ continue; ++ ++ new_sector = bmap(target_inode, (i * chain->blocks_per_page)); ++ ++ /* ++ * I'd love to be able to fill in holes and resize ++ * files, but not yet... ++ */ ++ ++ if (new_sector == extent_max + 1) ++ extent_max += chain->blocks_per_page; ++ else { ++ if (extent_min > -1) { ++ result = __populate_block_list(chain, ++ extent_min, extent_max); ++ if (result) ++ return result; ++ } ++ ++ extent_min = new_sector; ++ extent_max = extent_min + ++ chain->blocks_per_page - 1; ++ } ++ ++ if (pages_mapped == pages_allocated) ++ break; ++ } ++ ++ if (extent_min > -1) { ++ result = __populate_block_list(chain, extent_min, extent_max); ++ if (result) ++ return result; ++ } ++ ++ return 0; ++} ++ ++static void toi_file_free_storage(struct toi_bdev_info *chain) ++{ ++ pages_allocated = 0; ++ file_chain = NULL; ++} ++ ++/** ++ * toi_file_print_debug_stats - print debug info ++ * @buffer: Buffer to data to populate ++ * @size: Size of the buffer ++ **/ ++static int toi_file_print_debug_stats(char *buffer, int size) ++{ ++ int len = scnprintf(buffer, size, "- File Allocator active.\n"); ++ ++ len += scnprintf(buffer+len, size-len, " Storage available for " ++ "image: %lu pages.\n", pages_available); ++ ++ return len; ++} ++ ++static void toi_file_cleanup(int finishing_cycle) ++{ ++ if (toi_file_target_bdev) { ++ if (target_claim) { ++ bd_release(toi_file_target_bdev); ++ target_claim = 0; ++ } ++ ++ if (used_devt) { ++ blkdev_put(toi_file_target_bdev, ++ FMODE_READ | FMODE_NDELAY); ++ used_devt = 0; ++ } ++ toi_file_target_bdev = NULL; ++ target_inode = NULL; ++ } ++ ++ if (target_file) { ++ filp_close(target_file, NULL); ++ target_file = NULL; ++ } ++ ++ pages_available = 0; ++} ++ ++/** ++ * test_toi_file_target - sysfs callback for /sys/power/tuxonince/file/target ++ * ++ * Test wheter the target file is valid for hibernating. ++ **/ ++static void test_toi_file_target(void) ++{ ++ int result = toi_file_register_storage(); ++ sector_t sector; ++ char buf[33]; ++ struct fs_info *fs_info; ++ ++ if (result || !file_chain) ++ return; ++ ++ /* This doesn't mean we're in business. Is any storage available? */ ++ if (!pages_available) ++ goto out; ++ ++ toi_file_allocate_storage(file_chain, 1); ++ result = get_main_pool_phys_params(file_chain); ++ if (result) ++ goto out; ++ ++ ++ sector = bmap(target_inode, sig_page_index * ++ file_chain->blocks_per_page) << file_chain->bmap_shift; ++ ++ /* Use the uuid, or the dev_t if that fails */ ++ fs_info = fs_info_from_block_dev(toi_file_target_bdev); ++ if (!fs_info || IS_ERR(fs_info)) { ++ bdevname(toi_file_target_bdev, buf); ++ sprintf(resume_file, "/dev/%s:%llu", buf, ++ (unsigned long long) sector); ++ } else { ++ int i; ++ hex_dump_to_buffer(fs_info->uuid, 16, 32, 1, buf, 50, 0); ++ ++ /* Remove the spaces */ ++ for (i = 1; i < 16; i++) { ++ buf[2 * i] = buf[3 * i]; ++ buf[2 * i + 1] = buf[3 * i + 1]; ++ } ++ buf[32] = 0; ++ sprintf(resume_file, "UUID=%s:0x%llx", buf, ++ (unsigned long long) sector); ++ free_fs_info(fs_info); ++ } ++ ++ toi_attempt_to_parse_resume_device(0); ++out: ++ toi_file_free_storage(file_chain); ++ toi_bio_ops.free_storage(); ++} ++ ++static struct toi_sysfs_data sysfs_params[] = { ++ SYSFS_STRING("target", SYSFS_RW, toi_file_target, 256, ++ SYSFS_NEEDS_SM_FOR_WRITE, test_toi_file_target), ++ SYSFS_INT("enabled", SYSFS_RW, &toi_fileops.enabled, 0, 1, 0, NULL), ++ SYSFS_INT("priority", SYSFS_RW, &file_target_priority, -4095, ++ 4096, 0, NULL), ++}; ++ ++static struct toi_bio_allocator_ops toi_bio_fileops = { ++ .register_storage = toi_file_register_storage, ++ .storage_available = toi_file_storage_available, ++ .allocate_storage = toi_file_allocate_storage, ++ .bmap = get_main_pool_phys_params, ++ .free_storage = toi_file_free_storage, ++}; ++ ++static struct toi_module_ops toi_fileops = { ++ .type = BIO_ALLOCATOR_MODULE, ++ .name = "file storage", ++ .directory = "file", ++ .module = THIS_MODULE, ++ .print_debug_info = toi_file_print_debug_stats, ++ .cleanup = toi_file_cleanup, ++ .bio_allocator_ops = &toi_bio_fileops, ++ ++ .sysfs_data = sysfs_params, ++ .num_sysfs_entries = sizeof(sysfs_params) / ++ sizeof(struct toi_sysfs_data), ++}; ++ ++/* ---- Registration ---- */ ++static __init int toi_file_load(void) ++{ ++ return toi_register_module(&toi_fileops); ++} ++ ++#ifdef MODULE ++static __exit void toi_file_unload(void) ++{ ++ toi_unregister_module(&toi_fileops); ++} ++ ++module_init(toi_file_load); ++module_exit(toi_file_unload); ++MODULE_LICENSE("GPL"); ++MODULE_AUTHOR("Nigel Cunningham"); ++MODULE_DESCRIPTION("TuxOnIce FileAllocator"); ++#else ++late_initcall(toi_file_load); ++#endif +diff --git a/kernel/power/tuxonice_highlevel.c b/kernel/power/tuxonice_highlevel.c +new file mode 100644 +index 0000000..c4bbb49 +--- /dev/null ++++ b/kernel/power/tuxonice_highlevel.c +@@ -0,0 +1,1313 @@ ++/* ++ * kernel/power/tuxonice_highlevel.c ++ */ ++/** \mainpage TuxOnIce. ++ * ++ * TuxOnIce provides support for saving and restoring an image of ++ * system memory to an arbitrary storage device, either on the local computer, ++ * or across some network. The support is entirely OS based, so TuxOnIce ++ * works without requiring BIOS, APM or ACPI support. The vast majority of the ++ * code is also architecture independant, so it should be very easy to port ++ * the code to new architectures. TuxOnIce includes support for SMP, 4G HighMem ++ * and preemption. Initramfses and initrds are also supported. ++ * ++ * TuxOnIce uses a modular design, in which the method of storing the image is ++ * completely abstracted from the core code, as are transformations on the data ++ * such as compression and/or encryption (multiple 'modules' can be used to ++ * provide arbitrary combinations of functionality). The user interface is also ++ * modular, so that arbitrarily simple or complex interfaces can be used to ++ * provide anything from debugging information through to eye candy. ++ * ++ * \section Copyright ++ * ++ * TuxOnIce is released under the GPLv2. ++ * ++ * Copyright (C) 1998-2001 Gabor Kuti
++ * Copyright (C) 1998,2001,2002 Pavel Machek
++ * Copyright (C) 2002-2003 Florent Chabaud
++ * Copyright (C) 2002-2010 Nigel Cunningham (nigel at tuxonice net)
++ * ++ * \section Credits ++ * ++ * Nigel would like to thank the following people for their work: ++ * ++ * Bernard Blackham
++ * Web page & Wiki administration, some coding. A person without whom ++ * TuxOnIce would not be where it is. ++ * ++ * Michael Frank
++ * Extensive testing and help with improving stability. I was constantly ++ * amazed by the quality and quantity of Michael's help. ++ * ++ * Pavel Machek
++ * Modifications, defectiveness pointing, being with Gabor at the very ++ * beginning, suspend to swap space, stop all tasks. Port to 2.4.18-ac and ++ * 2.5.17. Even though Pavel and I disagree on the direction suspend to ++ * disk should take, I appreciate the valuable work he did in helping Gabor ++ * get the concept working. ++ * ++ * ..and of course the myriads of TuxOnIce users who have helped diagnose ++ * and fix bugs, made suggestions on how to improve the code, proofread ++ * documentation, and donated time and money. ++ * ++ * Thanks also to corporate sponsors: ++ * ++ * Redhat.Sometime employer from May 2006 (my fault, not Redhat's!). ++ * ++ * Cyclades.com. Nigel's employers from Dec 2004 until May 2006, who ++ * allowed him to work on TuxOnIce and PM related issues on company time. ++ * ++ * LinuxFund.org. Sponsored Nigel's work on TuxOnIce for four months Oct ++ * 2003 to Jan 2004. ++ * ++ * LAC Linux. Donated P4 hardware that enabled development and ongoing ++ * maintenance of SMP and Highmem support. ++ * ++ * OSDL. Provided access to various hardware configurations, make ++ * occasional small donations to the project. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include /* for get/set_fs & KERNEL_DS on i386 */ ++#include ++ ++#include "tuxonice.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_sysfs.h" ++#include "tuxonice_prepare_image.h" ++#include "tuxonice_io.h" ++#include "tuxonice_ui.h" ++#include "tuxonice_power_off.h" ++#include "tuxonice_storage.h" ++#include "tuxonice_checksum.h" ++#include "tuxonice_builtin.h" ++#include "tuxonice_atomic_copy.h" ++#include "tuxonice_alloc.h" ++#include "tuxonice_cluster.h" ++ ++/*! Pageset metadata. */ ++struct pagedir pagedir2 = {2}; ++EXPORT_SYMBOL_GPL(pagedir2); ++ ++static mm_segment_t oldfs; ++static DEFINE_MUTEX(tuxonice_in_use); ++static int block_dump_save; ++ ++/* Binary signature if an image is present */ ++char tuxonice_signature[9] = "\xed\xc3\x02\xe9\x98\x56\xe5\x0c"; ++EXPORT_SYMBOL_GPL(tuxonice_signature); ++ ++unsigned long boot_kernel_data_buffer; ++ ++static char *result_strings[] = { ++ "Hibernation was aborted", ++ "The user requested that we cancel the hibernation", ++ "No storage was available", ++ "Insufficient storage was available", ++ "Freezing filesystems and/or tasks failed", ++ "A pre-existing image was used", ++ "We would free memory, but image size limit doesn't allow this", ++ "Unable to free enough memory to hibernate", ++ "Unable to obtain the Power Management Semaphore", ++ "A device suspend/resume returned an error", ++ "A system device suspend/resume returned an error", ++ "The extra pages allowance is too small", ++ "We were unable to successfully prepare an image", ++ "TuxOnIce module initialisation failed", ++ "TuxOnIce module cleanup failed", ++ "I/O errors were encountered", ++ "Ran out of memory", ++ "An error was encountered while reading the image", ++ "Platform preparation failed", ++ "CPU Hotplugging failed", ++ "Architecture specific preparation failed", ++ "Pages needed resaving, but we were told to abort if this happens", ++ "We can't hibernate at the moment (invalid resume= or filewriter " ++ "target?)", ++ "A hibernation preparation notifier chain member cancelled the " ++ "hibernation", ++ "Pre-snapshot preparation failed", ++ "Pre-restore preparation failed", ++ "Failed to disable usermode helpers", ++ "Can't resume from alternate image", ++ "Header reservation too small", ++}; ++ ++/** ++ * toi_finish_anything - cleanup after doing anything ++ * @hibernate_or_resume: Whether finishing a cycle or attempt at ++ * resuming. ++ * ++ * This is our basic clean-up routine, matching start_anything below. We ++ * call cleanup routines, drop module references and restore process fs and ++ * cpus allowed masks, together with the global block_dump variable's value. ++ **/ ++void toi_finish_anything(int hibernate_or_resume) ++{ ++ toi_cleanup_modules(hibernate_or_resume); ++ toi_put_modules(); ++ if (hibernate_or_resume) { ++ block_dump = block_dump_save; ++ set_cpus_allowed_ptr(current, cpu_all_mask); ++ toi_alloc_print_debug_stats(); ++ atomic_inc(&snapshot_device_available); ++ mutex_unlock(&pm_mutex); ++ } ++ ++ set_fs(oldfs); ++ mutex_unlock(&tuxonice_in_use); ++} ++ ++/** ++ * toi_start_anything - basic initialisation for TuxOnIce ++ * @toi_or_resume: Whether starting a cycle or attempt at resuming. ++ * ++ * Our basic initialisation routine. Take references on modules, use the ++ * kernel segment, recheck resume= if no active allocator is set, initialise ++ * modules, save and reset block_dump and ensure we're running on CPU0. ++ **/ ++int toi_start_anything(int hibernate_or_resume) ++{ ++ mutex_lock(&tuxonice_in_use); ++ ++ oldfs = get_fs(); ++ set_fs(KERNEL_DS); ++ ++ if (hibernate_or_resume) { ++ mutex_lock(&pm_mutex); ++ ++ if (!atomic_add_unless(&snapshot_device_available, -1, 0)) ++ goto snapshotdevice_unavailable; ++ } ++ ++ if (hibernate_or_resume == SYSFS_HIBERNATE) ++ toi_print_modules(); ++ ++ if (toi_get_modules()) { ++ printk(KERN_INFO "TuxOnIce: Get modules failed!\n"); ++ goto prehibernate_err; ++ } ++ ++ if (hibernate_or_resume) { ++ block_dump_save = block_dump; ++ block_dump = 0; ++ set_cpus_allowed_ptr(current, ++ &cpumask_of_cpu(first_cpu(cpu_online_map))); ++ } ++ ++ if (toi_initialise_modules_early(hibernate_or_resume)) ++ goto early_init_err; ++ ++ if (!toiActiveAllocator) ++ toi_attempt_to_parse_resume_device(!hibernate_or_resume); ++ ++ if (!toi_initialise_modules_late(hibernate_or_resume)) ++ return 0; ++ ++ toi_cleanup_modules(hibernate_or_resume); ++early_init_err: ++ if (hibernate_or_resume) { ++ block_dump_save = block_dump; ++ set_cpus_allowed_ptr(current, cpu_all_mask); ++ } ++ toi_put_modules(); ++prehibernate_err: ++ if (hibernate_or_resume) ++ atomic_inc(&snapshot_device_available); ++snapshotdevice_unavailable: ++ if (hibernate_or_resume) ++ mutex_unlock(&pm_mutex); ++ set_fs(oldfs); ++ mutex_unlock(&tuxonice_in_use); ++ return -EBUSY; ++} ++ ++/* ++ * Nosave page tracking. ++ * ++ * Here rather than in prepare_image because we want to do it once only at the ++ * start of a cycle. ++ */ ++ ++/** ++ * mark_nosave_pages - set up our Nosave bitmap ++ * ++ * Build a bitmap of Nosave pages from the list. The bitmap allows faster ++ * use when preparing the image. ++ **/ ++static void mark_nosave_pages(void) ++{ ++ struct nosave_region *region; ++ ++ list_for_each_entry(region, &nosave_regions, list) { ++ unsigned long pfn; ++ ++ for (pfn = region->start_pfn; pfn < region->end_pfn; pfn++) ++ if (pfn_valid(pfn)) ++ SetPageNosave(pfn_to_page(pfn)); ++ } ++} ++ ++static int alloc_a_bitmap(struct memory_bitmap **bm) ++{ ++ int result = 0; ++ ++ *bm = kzalloc(sizeof(struct memory_bitmap), GFP_KERNEL); ++ if (!*bm) { ++ printk(KERN_ERR "Failed to kzalloc memory for a bitmap.\n"); ++ return -ENOMEM; ++ } ++ ++ result = memory_bm_create(*bm, GFP_KERNEL, 0); ++ ++ if (result) { ++ printk(KERN_ERR "Failed to create a bitmap.\n"); ++ kfree(*bm); ++ } ++ ++ return result; ++} ++ ++/** ++ * allocate_bitmaps - allocate bitmaps used to record page states ++ * ++ * Allocate the bitmaps we use to record the various TuxOnIce related ++ * page states. ++ **/ ++static int allocate_bitmaps(void) ++{ ++ if (alloc_a_bitmap(&pageset1_map) || ++ alloc_a_bitmap(&pageset1_copy_map) || ++ alloc_a_bitmap(&pageset2_map) || ++ alloc_a_bitmap(&io_map) || ++ alloc_a_bitmap(&nosave_map) || ++ alloc_a_bitmap(&free_map) || ++ alloc_a_bitmap(&page_resave_map)) ++ return 1; ++ ++ return 0; ++} ++ ++static void free_a_bitmap(struct memory_bitmap **bm) ++{ ++ if (!*bm) ++ return; ++ ++ memory_bm_free(*bm, 0); ++ kfree(*bm); ++ *bm = NULL; ++} ++ ++/** ++ * free_bitmaps - free the bitmaps used to record page states ++ * ++ * Free the bitmaps allocated above. It is not an error to call ++ * memory_bm_free on a bitmap that isn't currently allocated. ++ **/ ++static void free_bitmaps(void) ++{ ++ free_a_bitmap(&pageset1_map); ++ free_a_bitmap(&pageset1_copy_map); ++ free_a_bitmap(&pageset2_map); ++ free_a_bitmap(&io_map); ++ free_a_bitmap(&nosave_map); ++ free_a_bitmap(&free_map); ++ free_a_bitmap(&page_resave_map); ++} ++ ++/** ++ * io_MB_per_second - return the number of MB/s read or written ++ * @write: Whether to return the speed at which we wrote. ++ * ++ * Calculate the number of megabytes per second that were read or written. ++ **/ ++static int io_MB_per_second(int write) ++{ ++ return (toi_bkd.toi_io_time[write][1]) ? ++ MB((unsigned long) toi_bkd.toi_io_time[write][0]) * HZ / ++ toi_bkd.toi_io_time[write][1] : 0; ++} ++ ++#define SNPRINTF(a...) do { len += scnprintf(((char *) buffer) + len, \ ++ count - len - 1, ## a); } while (0) ++ ++/** ++ * get_debug_info - fill a buffer with debugging information ++ * @buffer: The buffer to be filled. ++ * @count: The size of the buffer, in bytes. ++ * ++ * Fill a (usually PAGE_SIZEd) buffer with the debugging info that we will ++ * either printk or return via sysfs. ++ **/ ++static int get_toi_debug_info(const char *buffer, int count) ++{ ++ int len = 0, i, first_result = 1; ++ ++ SNPRINTF("TuxOnIce debugging info:\n"); ++ SNPRINTF("- TuxOnIce core : " TOI_CORE_VERSION "\n"); ++ SNPRINTF("- Kernel Version : " UTS_RELEASE "\n"); ++ SNPRINTF("- Compiler vers. : %d.%d\n", __GNUC__, __GNUC_MINOR__); ++ SNPRINTF("- Attempt number : %d\n", nr_hibernates); ++ SNPRINTF("- Parameters : %ld %ld %ld %d %ld %ld\n", ++ toi_result, ++ toi_bkd.toi_action, ++ toi_bkd.toi_debug_state, ++ toi_bkd.toi_default_console_level, ++ image_size_limit, ++ toi_poweroff_method); ++ SNPRINTF("- Overall expected compression percentage: %d.\n", ++ 100 - toi_expected_compression_ratio()); ++ len += toi_print_module_debug_info(((char *) buffer) + len, ++ count - len - 1); ++ if (toi_bkd.toi_io_time[0][1]) { ++ if ((io_MB_per_second(0) < 5) || (io_MB_per_second(1) < 5)) { ++ SNPRINTF("- I/O speed: Write %ld KB/s", ++ (KB((unsigned long) toi_bkd.toi_io_time[0][0]) * HZ / ++ toi_bkd.toi_io_time[0][1])); ++ if (toi_bkd.toi_io_time[1][1]) ++ SNPRINTF(", Read %ld KB/s", ++ (KB((unsigned long) ++ toi_bkd.toi_io_time[1][0]) * HZ / ++ toi_bkd.toi_io_time[1][1])); ++ } else { ++ SNPRINTF("- I/O speed: Write %ld MB/s", ++ (MB((unsigned long) toi_bkd.toi_io_time[0][0]) * HZ / ++ toi_bkd.toi_io_time[0][1])); ++ if (toi_bkd.toi_io_time[1][1]) ++ SNPRINTF(", Read %ld MB/s", ++ (MB((unsigned long) ++ toi_bkd.toi_io_time[1][0]) * HZ / ++ toi_bkd.toi_io_time[1][1])); ++ } ++ SNPRINTF(".\n"); ++ } else ++ SNPRINTF("- No I/O speed stats available.\n"); ++ SNPRINTF("- Extra pages : %lu used/%lu.\n", ++ extra_pd1_pages_used, extra_pd1_pages_allowance); ++ ++ for (i = 0; i < TOI_NUM_RESULT_STATES; i++) ++ if (test_result_state(i)) { ++ SNPRINTF("%s: %s.\n", first_result ? ++ "- Result " : ++ " ", ++ result_strings[i]); ++ first_result = 0; ++ } ++ if (first_result) ++ SNPRINTF("- Result : %s.\n", nr_hibernates ? ++ "Succeeded" : ++ "No hibernation attempts so far"); ++ return len; ++} ++ ++/** ++ * do_cleanup - cleanup after attempting to hibernate or resume ++ * @get_debug_info: Whether to allocate and return debugging info. ++ * ++ * Cleanup after attempting to hibernate or resume, possibly getting ++ * debugging info as we do so. ++ **/ ++static void do_cleanup(int get_debug_info, int restarting) ++{ ++ int i = 0; ++ char *buffer = NULL; ++ ++ trap_non_toi_io = 0; ++ ++ if (get_debug_info) ++ toi_prepare_status(DONT_CLEAR_BAR, "Cleaning up..."); ++ ++ free_checksum_pages(); ++ ++ if (get_debug_info) ++ buffer = (char *) toi_get_zeroed_page(20, TOI_ATOMIC_GFP); ++ ++ if (buffer) ++ i = get_toi_debug_info(buffer, PAGE_SIZE); ++ ++ toi_free_extra_pagedir_memory(); ++ ++ pagedir1.size = 0; ++ pagedir2.size = 0; ++ set_highmem_size(pagedir1, 0); ++ set_highmem_size(pagedir2, 0); ++ ++ if (boot_kernel_data_buffer) { ++ if (!test_toi_state(TOI_BOOT_KERNEL)) ++ toi_free_page(37, boot_kernel_data_buffer); ++ boot_kernel_data_buffer = 0; ++ } ++ ++ clear_toi_state(TOI_BOOT_KERNEL); ++ thaw_processes(); ++ ++ if (test_action_state(TOI_KEEP_IMAGE) && ++ !test_result_state(TOI_ABORTED)) { ++ toi_message(TOI_ANY_SECTION, TOI_LOW, 1, ++ "TuxOnIce: Not invalidating the image due " ++ "to Keep Image being enabled."); ++ set_result_state(TOI_KEPT_IMAGE); ++ } else ++ if (toiActiveAllocator) ++ toiActiveAllocator->remove_image(); ++ ++ free_bitmaps(); ++ usermodehelper_enable(); ++ ++ if (test_toi_state(TOI_NOTIFIERS_PREPARE)) { ++ pm_notifier_call_chain(PM_POST_HIBERNATION); ++ clear_toi_state(TOI_NOTIFIERS_PREPARE); ++ } ++ ++ if (buffer && i) { ++ /* Printk can only handle 1023 bytes, including ++ * its level mangling. */ ++ for (i = 0; i < 3; i++) ++ printk(KERN_ERR "%s", buffer + (1023 * i)); ++ toi_free_page(20, (unsigned long) buffer); ++ } ++ ++ if (!test_action_state(TOI_LATE_CPU_HOTPLUG)) ++ enable_nonboot_cpus(); ++ ++ if (!restarting) ++ toi_cleanup_console(); ++ ++ free_attention_list(); ++ ++ if (!restarting) ++ toi_deactivate_storage(0); ++ ++ clear_toi_state(TOI_IGNORE_LOGLEVEL); ++ clear_toi_state(TOI_TRYING_TO_RESUME); ++ clear_toi_state(TOI_NOW_RESUMING); ++} ++ ++/** ++ * check_still_keeping_image - we kept an image; check whether to reuse it. ++ * ++ * We enter this routine when we have kept an image. If the user has said they ++ * want to still keep it, all we need to do is powerdown. If powering down ++ * means hibernating to ram and the power doesn't run out, we'll return 1. ++ * If we do power off properly or the battery runs out, we'll resume via the ++ * normal paths. ++ * ++ * If the user has said they want to remove the previously kept image, we ++ * remove it, and return 0. We'll then store a new image. ++ **/ ++static int check_still_keeping_image(void) ++{ ++ if (test_action_state(TOI_KEEP_IMAGE)) { ++ printk(KERN_INFO "Image already stored: powering down " ++ "immediately."); ++ do_toi_step(STEP_HIBERNATE_POWERDOWN); ++ return 1; /* Just in case we're using S3 */ ++ } ++ ++ printk(KERN_INFO "Invalidating previous image.\n"); ++ toiActiveAllocator->remove_image(); ++ ++ return 0; ++} ++ ++/** ++ * toi_init - prepare to hibernate to disk ++ * ++ * Initialise variables & data structures, in preparation for ++ * hibernating to disk. ++ **/ ++static int toi_init(int restarting) ++{ ++ int result, i, j; ++ ++ toi_result = 0; ++ ++ printk(KERN_INFO "Initiating a hibernation cycle.\n"); ++ ++ nr_hibernates++; ++ ++ for (i = 0; i < 2; i++) ++ for (j = 0; j < 2; j++) ++ toi_bkd.toi_io_time[i][j] = 0; ++ ++ if (!test_toi_state(TOI_CAN_HIBERNATE) || ++ allocate_bitmaps()) ++ return 1; ++ ++ mark_nosave_pages(); ++ ++ if (!restarting) ++ toi_prepare_console(); ++ ++ result = pm_notifier_call_chain(PM_HIBERNATION_PREPARE); ++ if (result) { ++ set_result_state(TOI_NOTIFIERS_PREPARE_FAILED); ++ return 1; ++ } ++ set_toi_state(TOI_NOTIFIERS_PREPARE); ++ ++ result = usermodehelper_disable(); ++ if (result) { ++ printk(KERN_ERR "TuxOnIce: Failed to disable usermode " ++ "helpers\n"); ++ set_result_state(TOI_USERMODE_HELPERS_ERR); ++ return 1; ++ } ++ ++ boot_kernel_data_buffer = toi_get_zeroed_page(37, TOI_ATOMIC_GFP); ++ if (!boot_kernel_data_buffer) { ++ printk(KERN_ERR "TuxOnIce: Failed to allocate " ++ "boot_kernel_data_buffer.\n"); ++ set_result_state(TOI_OUT_OF_MEMORY); ++ return 1; ++ } ++ ++ if (test_action_state(TOI_LATE_CPU_HOTPLUG) || ++ !disable_nonboot_cpus()) ++ return 1; ++ ++ set_abort_result(TOI_CPU_HOTPLUG_FAILED); ++ return 0; ++} ++ ++/** ++ * can_hibernate - perform basic 'Can we hibernate?' tests ++ * ++ * Perform basic tests that must pass if we're going to be able to hibernate: ++ * Can we get the pm_mutex? Is resume= valid (we need to know where to write ++ * the image header). ++ **/ ++static int can_hibernate(void) ++{ ++ if (!test_toi_state(TOI_CAN_HIBERNATE)) ++ toi_attempt_to_parse_resume_device(0); ++ ++ if (!test_toi_state(TOI_CAN_HIBERNATE)) { ++ printk(KERN_INFO "TuxOnIce: Hibernation is disabled.\n" ++ "This may be because you haven't put something along " ++ "the lines of\n\nresume=swap:/dev/hda1\n\n" ++ "in lilo.conf or equivalent. (Where /dev/hda1 is your " ++ "swap partition).\n"); ++ set_abort_result(TOI_CANT_SUSPEND); ++ return 0; ++ } ++ ++ if (strlen(alt_resume_param)) { ++ attempt_to_parse_alt_resume_param(); ++ ++ if (!strlen(alt_resume_param)) { ++ printk(KERN_INFO "Alternate resume parameter now " ++ "invalid. Aborting.\n"); ++ set_abort_result(TOI_CANT_USE_ALT_RESUME); ++ return 0; ++ } ++ } ++ ++ return 1; ++} ++ ++/** ++ * do_post_image_write - having written an image, figure out what to do next ++ * ++ * After writing an image, we might load an alternate image or power down. ++ * Powering down might involve hibernating to ram, in which case we also ++ * need to handle reloading pageset2. ++ **/ ++static int do_post_image_write(void) ++{ ++ /* If switching images fails, do normal powerdown */ ++ if (alt_resume_param[0]) ++ do_toi_step(STEP_RESUME_ALT_IMAGE); ++ ++ toi_power_down(); ++ ++ barrier(); ++ mb(); ++ return 0; ++} ++ ++/** ++ * __save_image - do the hard work of saving the image ++ * ++ * High level routine for getting the image saved. The key assumptions made ++ * are that processes have been frozen and sufficient memory is available. ++ * ++ * We also exit through here at resume time, coming back from toi_hibernate ++ * after the atomic restore. This is the reason for the toi_in_hibernate ++ * test. ++ **/ ++static int __save_image(void) ++{ ++ int temp_result, did_copy = 0; ++ ++ toi_prepare_status(DONT_CLEAR_BAR, "Starting to save the image.."); ++ ++ toi_message(TOI_ANY_SECTION, TOI_LOW, 1, ++ " - Final values: %d and %d.", ++ pagedir1.size, pagedir2.size); ++ ++ toi_cond_pause(1, "About to write pagedir2."); ++ ++ temp_result = write_pageset(&pagedir2); ++ ++ if (temp_result == -1 || test_result_state(TOI_ABORTED)) ++ return 1; ++ ++ toi_cond_pause(1, "About to copy pageset 1."); ++ ++ if (test_result_state(TOI_ABORTED)) ++ return 1; ++ ++ toi_deactivate_storage(1); ++ ++ toi_prepare_status(DONT_CLEAR_BAR, "Doing atomic copy/restore."); ++ ++ toi_in_hibernate = 1; ++ ++ if (toi_go_atomic(PMSG_FREEZE, 1)) ++ goto Failed; ++ ++ temp_result = toi_hibernate(); ++ if (!temp_result) ++ did_copy = 1; ++ ++ /* We return here at resume time too! */ ++ toi_end_atomic(ATOMIC_ALL_STEPS, toi_in_hibernate, temp_result); ++ ++Failed: ++ if (toi_activate_storage(1)) ++ panic("Failed to reactivate our storage."); ++ ++ /* Resume time? */ ++ if (!toi_in_hibernate) { ++ copyback_post(); ++ return 0; ++ } ++ ++ /* Nope. Hibernating. So, see if we can save the image... */ ++ ++ if (temp_result || test_result_state(TOI_ABORTED)) { ++ if (did_copy) ++ goto abort_reloading_pagedir_two; ++ else ++ return 1; ++ } ++ ++ toi_update_status(pagedir2.size, pagedir1.size + pagedir2.size, ++ NULL); ++ ++ if (test_result_state(TOI_ABORTED)) ++ goto abort_reloading_pagedir_two; ++ ++ toi_cond_pause(1, "About to write pageset1."); ++ ++ toi_message(TOI_ANY_SECTION, TOI_LOW, 1, "-- Writing pageset1"); ++ ++ temp_result = write_pageset(&pagedir1); ++ ++ /* We didn't overwrite any memory, so no reread needs to be done. */ ++ if (test_action_state(TOI_TEST_FILTER_SPEED)) ++ return 1; ++ ++ if (temp_result == 1 || test_result_state(TOI_ABORTED)) ++ goto abort_reloading_pagedir_two; ++ ++ toi_cond_pause(1, "About to write header."); ++ ++ if (test_result_state(TOI_ABORTED)) ++ goto abort_reloading_pagedir_two; ++ ++ temp_result = write_image_header(); ++ ++ if (test_action_state(TOI_TEST_BIO)) ++ return 1; ++ ++ if (!temp_result && !test_result_state(TOI_ABORTED)) ++ return 0; ++ ++abort_reloading_pagedir_two: ++ temp_result = read_pageset2(1); ++ ++ /* If that failed, we're sunk. Panic! */ ++ if (temp_result) ++ panic("Attempt to reload pagedir 2 while aborting " ++ "a hibernate failed."); ++ ++ return 1; ++} ++ ++static void map_ps2_pages(int enable) ++{ ++ unsigned long pfn = 0; ++ ++ pfn = memory_bm_next_pfn(pageset2_map); ++ ++ while (pfn != BM_END_OF_MAP) { ++ struct page *page = pfn_to_page(pfn); ++ kernel_map_pages(page, 1, enable); ++ pfn = memory_bm_next_pfn(pageset2_map); ++ } ++} ++ ++/** ++ * do_save_image - save the image and handle the result ++ * ++ * Save the prepared image. If we fail or we're in the path returning ++ * from the atomic restore, cleanup. ++ **/ ++static int do_save_image(void) ++{ ++ int result; ++ map_ps2_pages(0); ++ result = __save_image(); ++ map_ps2_pages(1); ++ return result; ++} ++ ++/** ++ * do_prepare_image - try to prepare an image ++ * ++ * Seek to initialise and prepare an image to be saved. On failure, ++ * cleanup. ++ **/ ++static int do_prepare_image(void) ++{ ++ int restarting = test_result_state(TOI_EXTRA_PAGES_ALLOW_TOO_SMALL); ++ ++ if (!restarting && toi_activate_storage(0)) ++ return 1; ++ ++ /* ++ * If kept image and still keeping image and hibernating to RAM, we will ++ * return 1 after hibernating and resuming (provided the power doesn't ++ * run out. In that case, we skip directly to cleaning up and exiting. ++ */ ++ ++ if (!can_hibernate() || ++ (test_result_state(TOI_KEPT_IMAGE) && ++ check_still_keeping_image())) ++ return 1; ++ ++ if (toi_init(restarting) && !toi_prepare_image() && ++ !test_result_state(TOI_ABORTED)) ++ return 0; ++ ++ trap_non_toi_io = 1; ++ ++ return 1; ++} ++ ++/** ++ * do_check_can_resume - find out whether an image has been stored ++ * ++ * Read whether an image exists. We use the same routine as the ++ * image_exists sysfs entry, and just look to see whether the ++ * first character in the resulting buffer is a '1'. ++ **/ ++int do_check_can_resume(void) ++{ ++ int result = -1; ++ ++ if (toi_activate_storage(0)) ++ return -1; ++ ++ if (!test_toi_state(TOI_RESUME_DEVICE_OK)) ++ toi_attempt_to_parse_resume_device(1); ++ ++ if (toiActiveAllocator) ++ result = toiActiveAllocator->image_exists(1); ++ ++ toi_deactivate_storage(0); ++ return result; ++} ++EXPORT_SYMBOL_GPL(do_check_can_resume); ++ ++/** ++ * do_load_atomic_copy - load the first part of an image, if it exists ++ * ++ * Check whether we have an image. If one exists, do sanity checking ++ * (possibly invalidating the image or even rebooting if the user ++ * requests that) before loading it into memory in preparation for the ++ * atomic restore. ++ * ++ * If and only if we have an image loaded and ready to restore, we return 1. ++ **/ ++static int do_load_atomic_copy(void) ++{ ++ int read_image_result = 0; ++ ++ if (sizeof(swp_entry_t) != sizeof(long)) { ++ printk(KERN_WARNING "TuxOnIce: The size of swp_entry_t != size" ++ " of long. Please report this!\n"); ++ return 1; ++ } ++ ++ if (!resume_file[0]) ++ printk(KERN_WARNING "TuxOnIce: " ++ "You need to use a resume= command line parameter to " ++ "tell TuxOnIce where to look for an image.\n"); ++ ++ toi_activate_storage(0); ++ ++ if (!(test_toi_state(TOI_RESUME_DEVICE_OK)) && ++ !toi_attempt_to_parse_resume_device(0)) { ++ /* ++ * Without a usable storage device we can do nothing - ++ * even if noresume is given ++ */ ++ ++ if (!toiNumAllocators) ++ printk(KERN_ALERT "TuxOnIce: " ++ "No storage allocators have been registered.\n"); ++ else ++ printk(KERN_ALERT "TuxOnIce: " ++ "Missing or invalid storage location " ++ "(resume= parameter). Please correct and " ++ "rerun lilo (or equivalent) before " ++ "hibernating.\n"); ++ toi_deactivate_storage(0); ++ return 1; ++ } ++ ++ if (allocate_bitmaps()) ++ return 1; ++ ++ read_image_result = read_pageset1(); /* non fatal error ignored */ ++ ++ if (test_toi_state(TOI_NORESUME_SPECIFIED)) ++ clear_toi_state(TOI_NORESUME_SPECIFIED); ++ ++ toi_deactivate_storage(0); ++ ++ if (read_image_result) ++ return 1; ++ ++ return 0; ++} ++ ++/** ++ * prepare_restore_load_alt_image - save & restore alt image variables ++ * ++ * Save and restore the pageset1 maps, when loading an alternate image. ++ **/ ++static void prepare_restore_load_alt_image(int prepare) ++{ ++ static struct memory_bitmap *pageset1_map_save, *pageset1_copy_map_save; ++ ++ if (prepare) { ++ pageset1_map_save = pageset1_map; ++ pageset1_map = NULL; ++ pageset1_copy_map_save = pageset1_copy_map; ++ pageset1_copy_map = NULL; ++ set_toi_state(TOI_LOADING_ALT_IMAGE); ++ toi_reset_alt_image_pageset2_pfn(); ++ } else { ++ memory_bm_free(pageset1_map, 0); ++ pageset1_map = pageset1_map_save; ++ memory_bm_free(pageset1_copy_map, 0); ++ pageset1_copy_map = pageset1_copy_map_save; ++ clear_toi_state(TOI_NOW_RESUMING); ++ clear_toi_state(TOI_LOADING_ALT_IMAGE); ++ } ++} ++ ++/** ++ * do_toi_step - perform a step in hibernating or resuming ++ * ++ * Perform a step in hibernating or resuming an image. This abstraction ++ * is in preparation for implementing cluster support, and perhaps replacing ++ * uswsusp too (haven't looked whether that's possible yet). ++ **/ ++int do_toi_step(int step) ++{ ++ switch (step) { ++ case STEP_HIBERNATE_PREPARE_IMAGE: ++ return do_prepare_image(); ++ case STEP_HIBERNATE_SAVE_IMAGE: ++ return do_save_image(); ++ case STEP_HIBERNATE_POWERDOWN: ++ return do_post_image_write(); ++ case STEP_RESUME_CAN_RESUME: ++ return do_check_can_resume(); ++ case STEP_RESUME_LOAD_PS1: ++ return do_load_atomic_copy(); ++ case STEP_RESUME_DO_RESTORE: ++ /* ++ * If we succeed, this doesn't return. ++ * Instead, we return from do_save_image() in the ++ * hibernated kernel. ++ */ ++ return toi_atomic_restore(); ++ case STEP_RESUME_ALT_IMAGE: ++ printk(KERN_INFO "Trying to resume alternate image.\n"); ++ toi_in_hibernate = 0; ++ save_restore_alt_param(SAVE, NOQUIET); ++ prepare_restore_load_alt_image(1); ++ if (!do_check_can_resume()) { ++ printk(KERN_INFO "Nothing to resume from.\n"); ++ goto out; ++ } ++ if (!do_load_atomic_copy()) ++ toi_atomic_restore(); ++ ++ printk(KERN_INFO "Failed to load image.\n"); ++out: ++ prepare_restore_load_alt_image(0); ++ save_restore_alt_param(RESTORE, NOQUIET); ++ break; ++ case STEP_CLEANUP: ++ do_cleanup(1, 0); ++ break; ++ case STEP_QUIET_CLEANUP: ++ do_cleanup(0, 0); ++ break; ++ } ++ ++ return 0; ++} ++EXPORT_SYMBOL_GPL(do_toi_step); ++ ++/* -- Functions for kickstarting a hibernate or resume --- */ ++ ++/** ++ * toi_try_resume - try to do the steps in resuming ++ * ++ * Check if we have an image and if so try to resume. Clear the status ++ * flags too. ++ **/ ++void toi_try_resume(void) ++{ ++ set_toi_state(TOI_TRYING_TO_RESUME); ++ resume_attempted = 1; ++ ++ current->flags |= PF_MEMALLOC; ++ ++ if (do_toi_step(STEP_RESUME_CAN_RESUME) && ++ !do_toi_step(STEP_RESUME_LOAD_PS1)) ++ do_toi_step(STEP_RESUME_DO_RESTORE); ++ ++ do_cleanup(0, 0); ++ ++ current->flags &= ~PF_MEMALLOC; ++ ++ clear_toi_state(TOI_IGNORE_LOGLEVEL); ++ clear_toi_state(TOI_TRYING_TO_RESUME); ++ clear_toi_state(TOI_NOW_RESUMING); ++} ++ ++/** ++ * toi_sys_power_disk_try_resume - wrapper calling toi_try_resume ++ * ++ * Wrapper for when __toi_try_resume is called from swsusp resume path, ++ * rather than from echo > /sys/power/tuxonice/do_resume. ++ **/ ++static void toi_sys_power_disk_try_resume(void) ++{ ++ resume_attempted = 1; ++ ++ /* ++ * There's a comment in kernel/power/disk.c that indicates ++ * we should be able to use mutex_lock_nested below. That ++ * doesn't seem to cut it, though, so let's just turn lockdep ++ * off for now. ++ */ ++ lockdep_off(); ++ ++ if (toi_start_anything(SYSFS_RESUMING)) ++ goto out; ++ ++ toi_try_resume(); ++ ++ /* ++ * For initramfs, we have to clear the boot time ++ * flag after trying to resume ++ */ ++ clear_toi_state(TOI_BOOT_TIME); ++ ++ toi_finish_anything(SYSFS_RESUMING); ++out: ++ lockdep_on(); ++} ++ ++/** ++ * toi_try_hibernate - try to start a hibernation cycle ++ * ++ * Start a hibernation cycle, coming in from either ++ * echo > /sys/power/tuxonice/do_suspend ++ * ++ * or ++ * ++ * echo disk > /sys/power/state ++ * ++ * In the later case, we come in without pm_sem taken; in the ++ * former, it has been taken. ++ **/ ++int toi_try_hibernate(void) ++{ ++ int result = 0, sys_power_disk = 0, retries = 0; ++ ++ if (!mutex_is_locked(&tuxonice_in_use)) { ++ /* Came in via /sys/power/disk */ ++ if (toi_start_anything(SYSFS_HIBERNATING)) ++ return -EBUSY; ++ sys_power_disk = 1; ++ } ++ ++ current->flags |= PF_MEMALLOC; ++ ++ if (test_toi_state(TOI_CLUSTER_MODE)) { ++ toi_initiate_cluster_hibernate(); ++ goto out; ++ } ++ ++prepare: ++ result = do_toi_step(STEP_HIBERNATE_PREPARE_IMAGE); ++ ++ if (result || test_action_state(TOI_FREEZER_TEST)) ++ goto out; ++ ++ result = do_toi_step(STEP_HIBERNATE_SAVE_IMAGE); ++ ++ if (test_result_state(TOI_EXTRA_PAGES_ALLOW_TOO_SMALL)) { ++ if (retries < 2) { ++ do_cleanup(0, 1); ++ retries++; ++ clear_result_state(TOI_ABORTED); ++ extra_pd1_pages_allowance = extra_pd1_pages_used + 500; ++ printk(KERN_INFO "Automatically adjusting the extra" ++ " pages allowance to %ld and restarting.\n", ++ extra_pd1_pages_allowance); ++ goto prepare; ++ } ++ ++ printk(KERN_INFO "Adjusted extra pages allowance twice and " ++ "still couldn't hibernate successfully. Giving up."); ++ } ++ ++ /* This code runs at resume time too! */ ++ if (!result && toi_in_hibernate) ++ result = do_toi_step(STEP_HIBERNATE_POWERDOWN); ++out: ++ do_cleanup(1, 0); ++ current->flags &= ~PF_MEMALLOC; ++ ++ if (sys_power_disk) ++ toi_finish_anything(SYSFS_HIBERNATING); ++ ++ return result; ++} ++ ++/* ++ * channel_no: If !0, -c is added to args (userui). ++ */ ++int toi_launch_userspace_program(char *command, int channel_no, ++ enum umh_wait wait, int debug) ++{ ++ int retval; ++ static char *envp[] = { ++ "HOME=/", ++ "TERM=linux", ++ "PATH=/sbin:/usr/sbin:/bin:/usr/bin", ++ NULL }; ++ static char *argv[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ++ }; ++ char *channel = NULL; ++ int arg = 0, size; ++ char test_read[255]; ++ char *orig_posn = command; ++ ++ if (!strlen(orig_posn)) ++ return 1; ++ ++ if (channel_no) { ++ channel = toi_kzalloc(4, 6, GFP_KERNEL); ++ if (!channel) { ++ printk(KERN_INFO "Failed to allocate memory in " ++ "preparing to launch userspace program.\n"); ++ return 1; ++ } ++ } ++ ++ /* Up to 6 args supported */ ++ while (arg < 6) { ++ sscanf(orig_posn, "%s", test_read); ++ size = strlen(test_read); ++ if (!(size)) ++ break; ++ argv[arg] = toi_kzalloc(5, size + 1, TOI_ATOMIC_GFP); ++ strcpy(argv[arg], test_read); ++ orig_posn += size + 1; ++ *test_read = 0; ++ arg++; ++ } ++ ++ if (channel_no) { ++ sprintf(channel, "-c%d", channel_no); ++ argv[arg] = channel; ++ } else ++ arg--; ++ ++ if (debug) { ++ argv[++arg] = toi_kzalloc(5, 8, TOI_ATOMIC_GFP); ++ strcpy(argv[arg], "--debug"); ++ } ++ ++ retval = call_usermodehelper(argv[0], argv, envp, wait); ++ ++ /* ++ * If the program reports an error, retval = 256. Don't complain ++ * about that here. ++ */ ++ if (retval && retval != 256) ++ printk(KERN_ERR "Failed to launch userspace program '%s': " ++ "Error %d\n", command, retval); ++ ++ { ++ int i; ++ for (i = 0; i < arg; i++) ++ if (argv[i] && argv[i] != channel) ++ toi_kfree(5, argv[i], sizeof(*argv[i])); ++ } ++ ++ toi_kfree(4, channel, sizeof(*channel)); ++ ++ return retval; ++} ++ ++/* ++ * This array contains entries that are automatically registered at ++ * boot. Modules and the console code register their own entries separately. ++ */ ++static struct toi_sysfs_data sysfs_params[] = { ++ SYSFS_INT("freezer_sync", SYSFS_RW, &freezer_sync, 0, 1, 0, NULL), ++ SYSFS_LONG("extra_pages_allowance", SYSFS_RW, ++ &extra_pd1_pages_allowance, 0, LONG_MAX, 0), ++ SYSFS_CUSTOM("image_exists", SYSFS_RW, image_exists_read, ++ image_exists_write, SYSFS_NEEDS_SM_FOR_BOTH, NULL), ++ SYSFS_STRING("resume", SYSFS_RW, resume_file, 255, ++ SYSFS_NEEDS_SM_FOR_WRITE, ++ attempt_to_parse_resume_device2), ++ SYSFS_STRING("alt_resume_param", SYSFS_RW, alt_resume_param, 255, ++ SYSFS_NEEDS_SM_FOR_WRITE, ++ attempt_to_parse_alt_resume_param), ++ SYSFS_CUSTOM("debug_info", SYSFS_READONLY, get_toi_debug_info, NULL, 0, ++ NULL), ++ SYSFS_BIT("ignore_rootfs", SYSFS_RW, &toi_bkd.toi_action, ++ TOI_IGNORE_ROOTFS, 0), ++ SYSFS_LONG("image_size_limit", SYSFS_RW, &image_size_limit, -2, ++ INT_MAX, 0), ++ SYSFS_UL("last_result", SYSFS_RW, &toi_result, 0, 0, 0), ++ SYSFS_BIT("no_multithreaded_io", SYSFS_RW, &toi_bkd.toi_action, ++ TOI_NO_MULTITHREADED_IO, 0), ++ SYSFS_BIT("no_flusher_thread", SYSFS_RW, &toi_bkd.toi_action, ++ TOI_NO_FLUSHER_THREAD, 0), ++ SYSFS_BIT("full_pageset2", SYSFS_RW, &toi_bkd.toi_action, ++ TOI_PAGESET2_FULL, 0), ++ SYSFS_BIT("reboot", SYSFS_RW, &toi_bkd.toi_action, TOI_REBOOT, 0), ++ SYSFS_BIT("replace_swsusp", SYSFS_RW, &toi_bkd.toi_action, ++ TOI_REPLACE_SWSUSP, 0), ++ SYSFS_STRING("resume_commandline", SYSFS_RW, ++ toi_bkd.toi_nosave_commandline, COMMAND_LINE_SIZE, 0, ++ NULL), ++ SYSFS_STRING("version", SYSFS_READONLY, TOI_CORE_VERSION, 0, 0, NULL), ++ SYSFS_BIT("freezer_test", SYSFS_RW, &toi_bkd.toi_action, ++ TOI_FREEZER_TEST, 0), ++ SYSFS_BIT("test_bio", SYSFS_RW, &toi_bkd.toi_action, TOI_TEST_BIO, 0), ++ SYSFS_BIT("test_filter_speed", SYSFS_RW, &toi_bkd.toi_action, ++ TOI_TEST_FILTER_SPEED, 0), ++ SYSFS_BIT("no_pageset2", SYSFS_RW, &toi_bkd.toi_action, ++ TOI_NO_PAGESET2, 0), ++ SYSFS_BIT("no_pageset2_if_unneeded", SYSFS_RW, &toi_bkd.toi_action, ++ TOI_NO_PS2_IF_UNNEEDED, 0), ++ SYSFS_BIT("late_cpu_hotplug", SYSFS_RW, &toi_bkd.toi_action, ++ TOI_LATE_CPU_HOTPLUG, 0), ++ SYSFS_STRING("binary_signature", SYSFS_READONLY, ++ tuxonice_signature, 9, 0, NULL), ++ SYSFS_INT("max_workers", SYSFS_RW, &toi_max_workers, 0, NR_CPUS, 0, ++ NULL), ++#ifdef CONFIG_TOI_KEEP_IMAGE ++ SYSFS_BIT("keep_image", SYSFS_RW , &toi_bkd.toi_action, TOI_KEEP_IMAGE, ++ 0), ++#endif ++}; ++ ++static struct toi_core_fns my_fns = { ++ .get_nonconflicting_page = __toi_get_nonconflicting_page, ++ .post_context_save = __toi_post_context_save, ++ .try_hibernate = toi_try_hibernate, ++ .try_resume = toi_sys_power_disk_try_resume, ++}; ++ ++/** ++ * core_load - initialisation of TuxOnIce core ++ * ++ * Initialise the core, beginning with sysfs. Checksum and so on are part of ++ * the core, but have their own initialisation routines because they either ++ * aren't compiled in all the time or have their own subdirectories. ++ **/ ++static __init int core_load(void) ++{ ++ int i, ++ numfiles = sizeof(sysfs_params) / sizeof(struct toi_sysfs_data); ++ ++ printk(KERN_INFO "TuxOnIce " TOI_CORE_VERSION ++ " (http://tuxonice.net)\n"); ++ ++ if (toi_sysfs_init()) ++ return 1; ++ ++ for (i = 0; i < numfiles; i++) ++ toi_register_sysfs_file(tuxonice_kobj, &sysfs_params[i]); ++ ++ toi_core_fns = &my_fns; ++ ++ if (toi_alloc_init()) ++ return 1; ++ if (toi_checksum_init()) ++ return 1; ++ if (toi_usm_init()) ++ return 1; ++ if (toi_ui_init()) ++ return 1; ++ if (toi_poweroff_init()) ++ return 1; ++ if (toi_cluster_init()) ++ return 1; ++ ++ return 0; ++} ++ ++#ifdef MODULE ++/** ++ * core_unload: Prepare to unload the core code. ++ **/ ++static __exit void core_unload(void) ++{ ++ int i, ++ numfiles = sizeof(sysfs_params) / sizeof(struct toi_sysfs_data); ++ ++ toi_alloc_exit(); ++ toi_checksum_exit(); ++ toi_poweroff_exit(); ++ toi_ui_exit(); ++ toi_usm_exit(); ++ toi_cluster_exit(); ++ ++ for (i = 0; i < numfiles; i++) ++ toi_unregister_sysfs_file(tuxonice_kobj, &sysfs_params[i]); ++ ++ toi_core_fns = NULL; ++ ++ toi_sysfs_exit(); ++} ++MODULE_LICENSE("GPL"); ++module_init(core_load); ++module_exit(core_unload); ++#else ++late_initcall(core_load); ++#endif +diff --git a/kernel/power/tuxonice_io.c b/kernel/power/tuxonice_io.c +new file mode 100644 +index 0000000..02be4d9 +--- /dev/null ++++ b/kernel/power/tuxonice_io.c +@@ -0,0 +1,1822 @@ ++/* ++ * kernel/power/tuxonice_io.c ++ * ++ * Copyright (C) 1998-2001 Gabor Kuti ++ * Copyright (C) 1998,2001,2002 Pavel Machek ++ * Copyright (C) 2002-2003 Florent Chabaud ++ * Copyright (C) 2002-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * It contains high level IO routines for hibernating. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "tuxonice.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_pageflags.h" ++#include "tuxonice_io.h" ++#include "tuxonice_ui.h" ++#include "tuxonice_storage.h" ++#include "tuxonice_prepare_image.h" ++#include "tuxonice_extent.h" ++#include "tuxonice_sysfs.h" ++#include "tuxonice_builtin.h" ++#include "tuxonice_checksum.h" ++#include "tuxonice_alloc.h" ++char alt_resume_param[256]; ++ ++/* Version read from image header at resume */ ++static int toi_image_header_version; ++ ++#define read_if_version(VERS, VAR, DESC) do { \ ++ if (likely(toi_image_header_version >= VERS)) \ ++ if (toiActiveAllocator->rw_header_chunk(READ, NULL, \ ++ (char *) &VAR, sizeof(VAR))) { \ ++ abort_hibernate(TOI_FAILED_IO, "Failed to read DESC."); \ ++ goto out_remove_image; \ ++ } \ ++} while(0) \ ++ ++/* Variables shared between threads and updated under the mutex */ ++static int io_write, io_finish_at, io_base, io_barmax, io_pageset, io_result; ++static int io_index, io_nextupdate, io_pc, io_pc_step; ++static DEFINE_MUTEX(io_mutex); ++static DEFINE_PER_CPU(struct page *, last_sought); ++static DEFINE_PER_CPU(struct page *, last_high_page); ++static DEFINE_PER_CPU(char *, checksum_locn); ++static DEFINE_PER_CPU(struct pbe *, last_low_page); ++static atomic_t io_count; ++atomic_t toi_io_workers; ++EXPORT_SYMBOL_GPL(toi_io_workers); ++ ++DECLARE_WAIT_QUEUE_HEAD(toi_io_queue_flusher); ++EXPORT_SYMBOL_GPL(toi_io_queue_flusher); ++ ++int toi_bio_queue_flusher_should_finish; ++EXPORT_SYMBOL_GPL(toi_bio_queue_flusher_should_finish); ++ ++/* Indicates that this thread should be used for checking throughput */ ++#define MONITOR ((void *) 1) ++ ++int toi_max_workers; ++ ++static char *image_version_error = "The image header version is newer than " \ ++ "this kernel supports."; ++ ++/** ++ * toi_attempt_to_parse_resume_device - determine if we can hibernate ++ * ++ * Can we hibernate, using the current resume= parameter? ++ **/ ++int toi_attempt_to_parse_resume_device(int quiet) ++{ ++ struct list_head *Allocator; ++ struct toi_module_ops *thisAllocator; ++ int result, returning = 0; ++ ++ if (toi_activate_storage(0)) ++ return 0; ++ ++ toiActiveAllocator = NULL; ++ clear_toi_state(TOI_RESUME_DEVICE_OK); ++ clear_toi_state(TOI_CAN_RESUME); ++ clear_result_state(TOI_ABORTED); ++ ++ if (!toiNumAllocators) { ++ if (!quiet) ++ printk(KERN_INFO "TuxOnIce: No storage allocators have " ++ "been registered. Hibernating will be " ++ "disabled.\n"); ++ goto cleanup; ++ } ++ ++ list_for_each(Allocator, &toiAllocators) { ++ thisAllocator = list_entry(Allocator, struct toi_module_ops, ++ type_list); ++ ++ /* ++ * Not sure why you'd want to disable an allocator, but ++ * we should honour the flag if we're providing it ++ */ ++ if (!thisAllocator->enabled) ++ continue; ++ ++ result = thisAllocator->parse_sig_location( ++ resume_file, (toiNumAllocators == 1), ++ quiet); ++ ++ switch (result) { ++ case -EINVAL: ++ /* For this allocator, but not a valid ++ * configuration. Error already printed. */ ++ goto cleanup; ++ ++ case 0: ++ /* For this allocator and valid. */ ++ toiActiveAllocator = thisAllocator; ++ ++ set_toi_state(TOI_RESUME_DEVICE_OK); ++ set_toi_state(TOI_CAN_RESUME); ++ returning = 1; ++ goto cleanup; ++ } ++ } ++ if (!quiet) ++ printk(KERN_INFO "TuxOnIce: No matching enabled allocator " ++ "found. Resuming disabled.\n"); ++cleanup: ++ toi_deactivate_storage(0); ++ return returning; ++} ++EXPORT_SYMBOL_GPL(toi_attempt_to_parse_resume_device); ++ ++void attempt_to_parse_resume_device2(void) ++{ ++ toi_prepare_usm(); ++ toi_attempt_to_parse_resume_device(0); ++ toi_cleanup_usm(); ++} ++EXPORT_SYMBOL_GPL(attempt_to_parse_resume_device2); ++ ++void save_restore_alt_param(int replace, int quiet) ++{ ++ static char resume_param_save[255]; ++ static unsigned long toi_state_save; ++ ++ if (replace) { ++ toi_state_save = toi_state; ++ strcpy(resume_param_save, resume_file); ++ strcpy(resume_file, alt_resume_param); ++ } else { ++ strcpy(resume_file, resume_param_save); ++ toi_state = toi_state_save; ++ } ++ toi_attempt_to_parse_resume_device(quiet); ++} ++ ++void attempt_to_parse_alt_resume_param(void) ++{ ++ int ok = 0; ++ ++ /* Temporarily set resume_param to the poweroff value */ ++ if (!strlen(alt_resume_param)) ++ return; ++ ++ printk(KERN_INFO "=== Trying Poweroff Resume2 ===\n"); ++ save_restore_alt_param(SAVE, NOQUIET); ++ if (test_toi_state(TOI_CAN_RESUME)) ++ ok = 1; ++ ++ printk(KERN_INFO "=== Done ===\n"); ++ save_restore_alt_param(RESTORE, QUIET); ++ ++ /* If not ok, clear the string */ ++ if (ok) ++ return; ++ ++ printk(KERN_INFO "Can't resume from that location; clearing " ++ "alt_resume_param.\n"); ++ alt_resume_param[0] = '\0'; ++} ++ ++/** ++ * noresume_reset_modules - reset data structures in case of non resuming ++ * ++ * When we read the start of an image, modules (and especially the ++ * active allocator) might need to reset data structures if we ++ * decide to remove the image rather than resuming from it. ++ **/ ++static void noresume_reset_modules(void) ++{ ++ struct toi_module_ops *this_filter; ++ ++ list_for_each_entry(this_filter, &toi_filters, type_list) ++ if (this_filter->noresume_reset) ++ this_filter->noresume_reset(); ++ ++ if (toiActiveAllocator && toiActiveAllocator->noresume_reset) ++ toiActiveAllocator->noresume_reset(); ++} ++ ++/** ++ * fill_toi_header - fill the hibernate header structure ++ * @struct toi_header: Header data structure to be filled. ++ **/ ++static int fill_toi_header(struct toi_header *sh) ++{ ++ int i, error; ++ ++ error = init_header((struct swsusp_info *) sh); ++ if (error) ++ return error; ++ ++ sh->pagedir = pagedir1; ++ sh->pageset_2_size = pagedir2.size; ++ sh->param0 = toi_result; ++ sh->param1 = toi_bkd.toi_action; ++ sh->param2 = toi_bkd.toi_debug_state; ++ sh->param3 = toi_bkd.toi_default_console_level; ++ sh->root_fs = current->fs->root.mnt->mnt_sb->s_dev; ++ for (i = 0; i < 4; i++) ++ sh->io_time[i/2][i%2] = toi_bkd.toi_io_time[i/2][i%2]; ++ sh->bkd = boot_kernel_data_buffer; ++ return 0; ++} ++ ++/** ++ * rw_init_modules - initialize modules ++ * @rw: Whether we are reading of writing an image. ++ * @which: Section of the image being processed. ++ * ++ * Iterate over modules, preparing the ones that will be used to read or write ++ * data. ++ **/ ++static int rw_init_modules(int rw, int which) ++{ ++ struct toi_module_ops *this_module; ++ /* Initialise page transformers */ ++ list_for_each_entry(this_module, &toi_filters, type_list) { ++ if (!this_module->enabled) ++ continue; ++ if (this_module->rw_init && this_module->rw_init(rw, which)) { ++ abort_hibernate(TOI_FAILED_MODULE_INIT, ++ "Failed to initialize the %s filter.", ++ this_module->name); ++ return 1; ++ } ++ } ++ ++ /* Initialise allocator */ ++ if (toiActiveAllocator->rw_init(rw, which)) { ++ abort_hibernate(TOI_FAILED_MODULE_INIT, ++ "Failed to initialise the allocator."); ++ return 1; ++ } ++ ++ /* Initialise other modules */ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (!this_module->enabled || ++ this_module->type == FILTER_MODULE || ++ this_module->type == WRITER_MODULE) ++ continue; ++ if (this_module->rw_init && this_module->rw_init(rw, which)) { ++ set_abort_result(TOI_FAILED_MODULE_INIT); ++ printk(KERN_INFO "Setting aborted flag due to module " ++ "init failure.\n"); ++ return 1; ++ } ++ } ++ ++ return 0; ++} ++ ++/** ++ * rw_cleanup_modules - cleanup modules ++ * @rw: Whether we are reading of writing an image. ++ * ++ * Cleanup components after reading or writing a set of pages. ++ * Only the allocator may fail. ++ **/ ++static int rw_cleanup_modules(int rw) ++{ ++ struct toi_module_ops *this_module; ++ int result = 0; ++ ++ /* Cleanup other modules */ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (!this_module->enabled || ++ this_module->type == FILTER_MODULE || ++ this_module->type == WRITER_MODULE) ++ continue; ++ if (this_module->rw_cleanup) ++ result |= this_module->rw_cleanup(rw); ++ } ++ ++ /* Flush data and cleanup */ ++ list_for_each_entry(this_module, &toi_filters, type_list) { ++ if (!this_module->enabled) ++ continue; ++ if (this_module->rw_cleanup) ++ result |= this_module->rw_cleanup(rw); ++ } ++ ++ result |= toiActiveAllocator->rw_cleanup(rw); ++ ++ return result; ++} ++ ++static struct page *copy_page_from_orig_page(struct page *orig_page) ++{ ++ int is_high = PageHighMem(orig_page), index, min, max; ++ struct page *high_page = NULL, ++ **my_last_high_page = &__get_cpu_var(last_high_page), ++ **my_last_sought = &__get_cpu_var(last_sought); ++ struct pbe *this, **my_last_low_page = &__get_cpu_var(last_low_page); ++ void *compare; ++ ++ if (is_high) { ++ if (*my_last_sought && *my_last_high_page && ++ *my_last_sought < orig_page) ++ high_page = *my_last_high_page; ++ else ++ high_page = (struct page *) restore_highmem_pblist; ++ this = (struct pbe *) kmap(high_page); ++ compare = orig_page; ++ } else { ++ if (*my_last_sought && *my_last_low_page && ++ *my_last_sought < orig_page) ++ this = *my_last_low_page; ++ else ++ this = restore_pblist; ++ compare = page_address(orig_page); ++ } ++ ++ *my_last_sought = orig_page; ++ ++ /* Locate page containing pbe */ ++ while (this[PBES_PER_PAGE - 1].next && ++ this[PBES_PER_PAGE - 1].orig_address < compare) { ++ if (is_high) { ++ struct page *next_high_page = (struct page *) ++ this[PBES_PER_PAGE - 1].next; ++ kunmap(high_page); ++ this = kmap(next_high_page); ++ high_page = next_high_page; ++ } else ++ this = this[PBES_PER_PAGE - 1].next; ++ } ++ ++ /* Do a binary search within the page */ ++ min = 0; ++ max = PBES_PER_PAGE; ++ index = PBES_PER_PAGE / 2; ++ while (max - min) { ++ if (!this[index].orig_address || ++ this[index].orig_address > compare) ++ max = index; ++ else if (this[index].orig_address == compare) { ++ if (is_high) { ++ struct page *page = this[index].address; ++ *my_last_high_page = high_page; ++ kunmap(high_page); ++ return page; ++ } ++ *my_last_low_page = this; ++ return virt_to_page(this[index].address); ++ } else ++ min = index; ++ index = ((max + min) / 2); ++ }; ++ ++ if (is_high) ++ kunmap(high_page); ++ ++ abort_hibernate(TOI_FAILED_IO, "Failed to get destination page for" ++ " orig page %p. This[min].orig_address=%p.\n", orig_page, ++ this[index].orig_address); ++ return NULL; ++} ++ ++/** ++ * write_next_page - write the next page in a pageset ++ * @data_pfn: The pfn where the next data to write is located. ++ * @my_io_index: The index of the page in the pageset. ++ * @write_pfn: The pfn number to write in the image (where the data belongs). ++ * @first_filter: Where to send the page (optimisation). ++ * ++ * Get the pfn of the next page to write, map the page if necessary and do the ++ * write. ++ **/ ++static int write_next_page(unsigned long *data_pfn, int *my_io_index, ++ unsigned long *write_pfn, struct toi_module_ops *first_filter) ++{ ++ struct page *page; ++ char **my_checksum_locn = &__get_cpu_var(checksum_locn); ++ int result = 0, was_present; ++ ++ *data_pfn = memory_bm_next_pfn(io_map); ++ ++ /* Another thread could have beaten us to it. */ ++ if (*data_pfn == BM_END_OF_MAP) { ++ if (atomic_read(&io_count)) { ++ printk(KERN_INFO "Ran out of pfns but io_count is " ++ "still %d.\n", atomic_read(&io_count)); ++ BUG(); ++ } ++ mutex_unlock(&io_mutex); ++ return -ENODATA; ++ } ++ ++ *my_io_index = io_finish_at - atomic_sub_return(1, &io_count); ++ ++ memory_bm_clear_bit(io_map, *data_pfn); ++ page = pfn_to_page(*data_pfn); ++ ++ was_present = kernel_page_present(page); ++ if (!was_present) ++ kernel_map_pages(page, 1, 1); ++ ++ if (io_pageset == 1) ++ *write_pfn = memory_bm_next_pfn(pageset1_map); ++ else { ++ *write_pfn = *data_pfn; ++ *my_checksum_locn = tuxonice_get_next_checksum(); ++ } ++ ++ mutex_unlock(&io_mutex); ++ ++ if (io_pageset == 2 && tuxonice_calc_checksum(page, *my_checksum_locn)) ++ return 1; ++ ++ result = first_filter->write_page(*write_pfn, page, PAGE_SIZE); ++ ++ if (!was_present) ++ kernel_map_pages(page, 1, 0); ++ ++ return result; ++} ++ ++/** ++ * read_next_page - read the next page in a pageset ++ * @my_io_index: The index of the page in the pageset. ++ * @write_pfn: The pfn in which the data belongs. ++ * ++ * Read a page of the image into our buffer. It can happen (here and in the ++ * write routine) that threads don't get run until after other CPUs have done ++ * all the work. This was the cause of the long standing issue with ++ * occasionally getting -ENODATA errors at the end of reading the image. We ++ * therefore need to check there's actually a page to read before trying to ++ * retrieve one. ++ **/ ++ ++static int read_next_page(int *my_io_index, unsigned long *write_pfn, ++ struct page *buffer, struct toi_module_ops *first_filter) ++{ ++ unsigned int buf_size = PAGE_SIZE; ++ unsigned long left = atomic_read(&io_count); ++ ++ if (left) ++ *my_io_index = io_finish_at - atomic_sub_return(1, &io_count); ++ ++ mutex_unlock(&io_mutex); ++ ++ /* ++ * Are we aborting? If so, don't submit any more I/O as ++ * resetting the resume_attempted flag (from ui.c) will ++ * clear the bdev flags, making this thread oops. ++ */ ++ if (unlikely(test_toi_state(TOI_STOP_RESUME))) { ++ atomic_dec(&toi_io_workers); ++ if (!atomic_read(&toi_io_workers)) { ++ /* ++ * So we can be sure we'll have memory for ++ * marking that we haven't resumed. ++ */ ++ rw_cleanup_modules(READ); ++ set_toi_state(TOI_IO_STOPPED); ++ } ++ while (1) ++ schedule(); ++ } ++ ++ if (!left) ++ return -ENODATA; ++ ++ /* ++ * See toi_bio_read_page in tuxonice_bio.c: ++ * read the next page in the image. ++ */ ++ return first_filter->read_page(write_pfn, buffer, &buf_size); ++} ++ ++static void use_read_page(unsigned long write_pfn, struct page *buffer) ++{ ++ struct page *final_page = pfn_to_page(write_pfn), ++ *copy_page = final_page; ++ char *virt, *buffer_virt; ++ ++ if (io_pageset == 1 && !PagePageset1Copy(final_page)) { ++ copy_page = copy_page_from_orig_page(final_page); ++ BUG_ON(!copy_page); ++ } ++ ++ if (memory_bm_test_bit(io_map, write_pfn)) { ++ int was_present; ++ ++ virt = kmap(copy_page); ++ buffer_virt = kmap(buffer); ++ was_present = kernel_page_present(copy_page); ++ if (!was_present) ++ kernel_map_pages(copy_page, 1, 1); ++ memcpy(virt, buffer_virt, PAGE_SIZE); ++ if (!was_present) ++ kernel_map_pages(copy_page, 1, 0); ++ kunmap(copy_page); ++ kunmap(buffer); ++ memory_bm_clear_bit(io_map, write_pfn); ++ } else { ++ mutex_lock(&io_mutex); ++ atomic_inc(&io_count); ++ mutex_unlock(&io_mutex); ++ } ++} ++ ++static unsigned long status_update(int writing, unsigned long done, ++ unsigned long ticks) ++{ ++ int cs_index = writing ? 0 : 1; ++ unsigned long ticks_so_far = toi_bkd.toi_io_time[cs_index][1] + ticks; ++ unsigned long msec = jiffies_to_msecs(abs(ticks_so_far)); ++ unsigned long pgs_per_s, estimate = 0, pages_left; ++ ++ if (msec) { ++ pages_left = io_barmax - done; ++ pgs_per_s = 1000 * done / msec; ++ if (pgs_per_s) ++ estimate = pages_left / pgs_per_s; ++ } ++ ++ if (estimate && ticks > HZ / 2) ++ return toi_update_status(done, io_barmax, ++ " %d/%d MB (%lu sec left)", ++ MB(done+1), MB(io_barmax), estimate); ++ ++ return toi_update_status(done, io_barmax, " %d/%d MB", ++ MB(done+1), MB(io_barmax)); ++} ++ ++/** ++ * worker_rw_loop - main loop to read/write pages ++ * ++ * The main I/O loop for reading or writing pages. The io_map bitmap is used to ++ * track the pages to read/write. ++ * If we are reading, the pages are loaded to their final (mapped) pfn. ++ **/ ++static int worker_rw_loop(void *data) ++{ ++ unsigned long data_pfn, write_pfn, next_jiffies = jiffies + HZ / 4, ++ jif_index = 1, start_time = jiffies; ++ int result = 0, my_io_index = 0, last_worker; ++ struct toi_module_ops *first_filter = toi_get_next_filter(NULL); ++ struct page *buffer = toi_alloc_page(28, TOI_ATOMIC_GFP); ++ ++ current->flags |= PF_NOFREEZE; ++ ++ mutex_lock(&io_mutex); ++ ++ do { ++ if (data && jiffies > next_jiffies) { ++ next_jiffies += HZ / 4; ++ if (toiActiveAllocator->update_throughput_throttle) ++ toiActiveAllocator->update_throughput_throttle( ++ jif_index); ++ jif_index++; ++ } ++ ++ /* ++ * What page to use? If reading, don't know yet which page's ++ * data will be read, so always use the buffer. If writing, ++ * use the copy (Pageset1) or original page (Pageset2), but ++ * always write the pfn of the original page. ++ */ ++ if (io_write) ++ result = write_next_page(&data_pfn, &my_io_index, ++ &write_pfn, first_filter); ++ else /* Reading */ ++ result = read_next_page(&my_io_index, &write_pfn, ++ buffer, first_filter); ++ ++ if (result) { ++ mutex_lock(&io_mutex); ++ /* Nothing to do? */ ++ if (result == -ENODATA) ++ break; ++ ++ io_result = result; ++ ++ if (io_write) { ++ printk(KERN_INFO "Write chunk returned %d.\n", ++ result); ++ abort_hibernate(TOI_FAILED_IO, ++ "Failed to write a chunk of the " ++ "image."); ++ break; ++ } ++ ++ if (io_pageset == 1) { ++ printk(KERN_ERR "\nBreaking out of I/O loop " ++ "because of result code %d.\n", result); ++ break; ++ } ++ panic("Read chunk returned (%d)", result); ++ } ++ ++ /* ++ * Discard reads of resaved pages while reading ps2 ++ * and unwanted pages while rereading ps2 when aborting. ++ */ ++ if (!io_write && !PageResave(pfn_to_page(write_pfn))) ++ use_read_page(write_pfn, buffer); ++ ++ if (my_io_index + io_base == io_nextupdate) ++ io_nextupdate = status_update(io_write, my_io_index + ++ io_base, jiffies - start_time); ++ ++ if (my_io_index == io_pc) { ++ printk(KERN_CONT "...%d%%", 20 * io_pc_step); ++ io_pc_step++; ++ io_pc = io_finish_at * io_pc_step / 5; ++ } ++ ++ toi_cond_pause(0, NULL); ++ ++ /* ++ * Subtle: If there's less I/O still to be done than threads ++ * running, quit. This stops us doing I/O beyond the end of ++ * the image when reading. ++ * ++ * Possible race condition. Two threads could do the test at ++ * the same time; one should exit and one should continue. ++ * Therefore we take the mutex before comparing and exiting. ++ */ ++ ++ mutex_lock(&io_mutex); ++ ++ } while (atomic_read(&io_count) >= atomic_read(&toi_io_workers) && ++ !(io_write && test_result_state(TOI_ABORTED))); ++ ++ last_worker = atomic_dec_and_test(&toi_io_workers); ++ mutex_unlock(&io_mutex); ++ ++ if (last_worker) { ++ toi_bio_queue_flusher_should_finish = 1; ++ wake_up(&toi_io_queue_flusher); ++ result = toiActiveAllocator->finish_all_io(); ++ printk(KERN_CONT "\n"); ++ } ++ ++ toi__free_page(28, buffer); ++ ++ return result; ++} ++ ++static int start_other_threads(void) ++{ ++ int cpu, num_started = 0; ++ struct task_struct *p; ++ int to_start = (toi_max_workers ? toi_max_workers : num_online_cpus()) - 1; ++ ++ atomic_set(&toi_io_workers, to_start); ++ ++ for_each_online_cpu(cpu) { ++ if (num_started == to_start) ++ break; ++ ++ if (cpu == smp_processor_id()) ++ continue; ++ ++ p = kthread_create(worker_rw_loop, num_started ? NULL : MONITOR, ++ "ktoi_io/%d", cpu); ++ if (IS_ERR(p)) { ++ printk(KERN_ERR "ktoi_io for %i failed\n", cpu); ++ atomic_dec(&toi_io_workers); ++ continue; ++ } ++ kthread_bind(p, cpu); ++ p->flags |= PF_MEMALLOC; ++ wake_up_process(p); ++ num_started++; ++ } ++ ++ return num_started; ++} ++ ++/** ++ * do_rw_loop - main highlevel function for reading or writing pages ++ * ++ * Create the io_map bitmap and call worker_rw_loop to perform I/O operations. ++ **/ ++static int do_rw_loop(int write, int finish_at, struct memory_bitmap *pageflags, ++ int base, int barmax, int pageset) ++{ ++ int index = 0, cpu, num_other_threads = 0, result = 0; ++ unsigned long pfn; ++ ++ if (!finish_at) ++ return 0; ++ ++ io_write = write; ++ io_finish_at = finish_at; ++ io_base = base; ++ io_barmax = barmax; ++ io_pageset = pageset; ++ io_index = 0; ++ io_pc = io_finish_at / 5; ++ io_pc_step = 1; ++ io_result = 0; ++ io_nextupdate = base + 1; ++ toi_bio_queue_flusher_should_finish = 0; ++ ++ for_each_online_cpu(cpu) { ++ per_cpu(last_sought, cpu) = NULL; ++ per_cpu(last_low_page, cpu) = NULL; ++ per_cpu(last_high_page, cpu) = NULL; ++ } ++ ++ /* Ensure all bits clear */ ++ memory_bm_clear(io_map); ++ ++ /* Set the bits for the pages to write */ ++ memory_bm_position_reset(pageflags); ++ ++ pfn = memory_bm_next_pfn(pageflags); ++ ++ while (pfn != BM_END_OF_MAP && index < finish_at) { ++ memory_bm_set_bit(io_map, pfn); ++ pfn = memory_bm_next_pfn(pageflags); ++ index++; ++ } ++ ++ BUG_ON(index < finish_at); ++ ++ atomic_set(&io_count, finish_at); ++ ++ memory_bm_position_reset(pageset1_map); ++ ++ clear_toi_state(TOI_IO_STOPPED); ++ memory_bm_position_reset(io_map); ++ ++ if (!test_action_state(TOI_NO_MULTITHREADED_IO) && ++ (write || !toi_force_no_multithreaded)) ++ num_other_threads = start_other_threads(); ++ ++ if (!num_other_threads || !toiActiveAllocator->io_flusher || ++ test_action_state(TOI_NO_FLUSHER_THREAD)) { ++ atomic_inc(&toi_io_workers); ++ worker_rw_loop(num_other_threads ? NULL : MONITOR); ++ } else ++ result = toiActiveAllocator->io_flusher(write); ++ ++ while (atomic_read(&toi_io_workers)) ++ schedule(); ++ ++ if (unlikely(test_toi_state(TOI_STOP_RESUME))) { ++ if (!atomic_read(&toi_io_workers)) { ++ rw_cleanup_modules(READ); ++ set_toi_state(TOI_IO_STOPPED); ++ } ++ while (1) ++ schedule(); ++ } ++ set_toi_state(TOI_IO_STOPPED); ++ ++ if (!io_result && !result && !test_result_state(TOI_ABORTED)) { ++ unsigned long next; ++ ++ toi_update_status(io_base + io_finish_at, io_barmax, ++ " %d/%d MB ", ++ MB(io_base + io_finish_at), MB(io_barmax)); ++ ++ memory_bm_position_reset(io_map); ++ next = memory_bm_next_pfn(io_map); ++ if (next != BM_END_OF_MAP) { ++ printk(KERN_INFO "Finished I/O loop but still work to " ++ "do?\nFinish at = %d. io_count = %d.\n", ++ finish_at, atomic_read(&io_count)); ++ printk(KERN_INFO "I/O bitmap still records work to do." ++ "%ld.\n", next); ++ do { ++ cpu_relax(); ++ } while (0); ++ } ++ } ++ ++ return io_result ? io_result : result; ++} ++ ++/** ++ * write_pageset - write a pageset to disk. ++ * @pagedir: Which pagedir to write. ++ * ++ * Returns: ++ * Zero on success or -1 on failure. ++ **/ ++int write_pageset(struct pagedir *pagedir) ++{ ++ int finish_at, base = 0; ++ int barmax = pagedir1.size + pagedir2.size; ++ long error = 0; ++ struct memory_bitmap *pageflags; ++ unsigned long start_time, end_time; ++ ++ /* ++ * Even if there is nothing to read or write, the allocator ++ * may need the init/cleanup for it's housekeeping. (eg: ++ * Pageset1 may start where pageset2 ends when writing). ++ */ ++ finish_at = pagedir->size; ++ ++ if (pagedir->id == 1) { ++ toi_prepare_status(DONT_CLEAR_BAR, ++ "Writing kernel & process data..."); ++ base = pagedir2.size; ++ if (test_action_state(TOI_TEST_FILTER_SPEED) || ++ test_action_state(TOI_TEST_BIO)) ++ pageflags = pageset1_map; ++ else ++ pageflags = pageset1_copy_map; ++ } else { ++ toi_prepare_status(DONT_CLEAR_BAR, "Writing caches..."); ++ pageflags = pageset2_map; ++ } ++ ++ start_time = jiffies; ++ ++ if (rw_init_modules(1, pagedir->id)) { ++ abort_hibernate(TOI_FAILED_MODULE_INIT, ++ "Failed to initialise modules for writing."); ++ error = 1; ++ } ++ ++ if (!error) ++ error = do_rw_loop(1, finish_at, pageflags, base, barmax, ++ pagedir->id); ++ ++ if (rw_cleanup_modules(WRITE) && !error) { ++ abort_hibernate(TOI_FAILED_MODULE_CLEANUP, ++ "Failed to cleanup after writing."); ++ error = 1; ++ } ++ ++ end_time = jiffies; ++ ++ if ((end_time - start_time) && (!test_result_state(TOI_ABORTED))) { ++ toi_bkd.toi_io_time[0][0] += finish_at, ++ toi_bkd.toi_io_time[0][1] += (end_time - start_time); ++ } ++ ++ return error; ++} ++ ++/** ++ * read_pageset - highlevel function to read a pageset from disk ++ * @pagedir: pageset to read ++ * @overwrittenpagesonly: Whether to read the whole pageset or ++ * only part of it. ++ * ++ * Returns: ++ * Zero on success or -1 on failure. ++ **/ ++static int read_pageset(struct pagedir *pagedir, int overwrittenpagesonly) ++{ ++ int result = 0, base = 0; ++ int finish_at = pagedir->size; ++ int barmax = pagedir1.size + pagedir2.size; ++ struct memory_bitmap *pageflags; ++ unsigned long start_time, end_time; ++ ++ if (pagedir->id == 1) { ++ toi_prepare_status(DONT_CLEAR_BAR, ++ "Reading kernel & process data..."); ++ pageflags = pageset1_map; ++ } else { ++ toi_prepare_status(DONT_CLEAR_BAR, "Reading caches..."); ++ if (overwrittenpagesonly) { ++ barmax = min(pagedir1.size, pagedir2.size); ++ finish_at = min(pagedir1.size, pagedir2.size); ++ } else ++ base = pagedir1.size; ++ pageflags = pageset2_map; ++ } ++ ++ start_time = jiffies; ++ ++ if (rw_init_modules(0, pagedir->id)) { ++ toiActiveAllocator->remove_image(); ++ result = 1; ++ } else ++ result = do_rw_loop(0, finish_at, pageflags, base, barmax, ++ pagedir->id); ++ ++ if (rw_cleanup_modules(READ) && !result) { ++ abort_hibernate(TOI_FAILED_MODULE_CLEANUP, ++ "Failed to cleanup after reading."); ++ result = 1; ++ } ++ ++ /* Statistics */ ++ end_time = jiffies; ++ ++ if ((end_time - start_time) && (!test_result_state(TOI_ABORTED))) { ++ toi_bkd.toi_io_time[1][0] += finish_at, ++ toi_bkd.toi_io_time[1][1] += (end_time - start_time); ++ } ++ ++ return result; ++} ++ ++/** ++ * write_module_configs - store the modules configuration ++ * ++ * The configuration for each module is stored in the image header. ++ * Returns: Int ++ * Zero on success, Error value otherwise. ++ **/ ++static int write_module_configs(void) ++{ ++ struct toi_module_ops *this_module; ++ char *buffer = (char *) toi_get_zeroed_page(22, TOI_ATOMIC_GFP); ++ int len, index = 1; ++ struct toi_module_header toi_module_header; ++ ++ if (!buffer) { ++ printk(KERN_INFO "Failed to allocate a buffer for saving " ++ "module configuration info.\n"); ++ return -ENOMEM; ++ } ++ ++ /* ++ * We have to know which data goes with which module, so we at ++ * least write a length of zero for a module. Note that we are ++ * also assuming every module's config data takes <= PAGE_SIZE. ++ */ ++ ++ /* For each module (in registration order) */ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (!this_module->enabled || !this_module->storage_needed || ++ (this_module->type == WRITER_MODULE && ++ toiActiveAllocator != this_module)) ++ continue; ++ ++ /* Get the data from the module */ ++ len = 0; ++ if (this_module->save_config_info) ++ len = this_module->save_config_info(buffer); ++ ++ /* Save the details of the module */ ++ toi_module_header.enabled = this_module->enabled; ++ toi_module_header.type = this_module->type; ++ toi_module_header.index = index++; ++ strncpy(toi_module_header.name, this_module->name, ++ sizeof(toi_module_header.name)); ++ toiActiveAllocator->rw_header_chunk(WRITE, ++ this_module, ++ (char *) &toi_module_header, ++ sizeof(toi_module_header)); ++ ++ /* Save the size of the data and any data returned */ ++ toiActiveAllocator->rw_header_chunk(WRITE, ++ this_module, ++ (char *) &len, sizeof(int)); ++ if (len) ++ toiActiveAllocator->rw_header_chunk( ++ WRITE, this_module, buffer, len); ++ } ++ ++ /* Write a blank header to terminate the list */ ++ toi_module_header.name[0] = '\0'; ++ toiActiveAllocator->rw_header_chunk(WRITE, NULL, ++ (char *) &toi_module_header, sizeof(toi_module_header)); ++ ++ toi_free_page(22, (unsigned long) buffer); ++ return 0; ++} ++ ++/** ++ * read_one_module_config - read and configure one module ++ * ++ * Read the configuration for one module, and configure the module ++ * to match if it is loaded. ++ * ++ * Returns: Int ++ * Zero on success, Error value otherwise. ++ **/ ++static int read_one_module_config(struct toi_module_header *header) ++{ ++ struct toi_module_ops *this_module; ++ int result, len; ++ char *buffer; ++ ++ /* Find the module */ ++ this_module = toi_find_module_given_name(header->name); ++ ++ if (!this_module) { ++ if (header->enabled) { ++ toi_early_boot_message(1, TOI_CONTINUE_REQ, ++ "It looks like we need module %s for reading " ++ "the image but it hasn't been registered.\n", ++ header->name); ++ if (!(test_toi_state(TOI_CONTINUE_REQ))) ++ return -EINVAL; ++ } else ++ printk(KERN_INFO "Module %s configuration data found, " ++ "but the module hasn't registered. Looks like " ++ "it was disabled, so we're ignoring its data.", ++ header->name); ++ } ++ ++ /* Get the length of the data (if any) */ ++ result = toiActiveAllocator->rw_header_chunk(READ, NULL, (char *) &len, ++ sizeof(int)); ++ if (result) { ++ printk(KERN_ERR "Failed to read the length of the module %s's" ++ " configuration data.\n", ++ header->name); ++ return -EINVAL; ++ } ++ ++ /* Read any data and pass to the module (if we found one) */ ++ if (!len) ++ return 0; ++ ++ buffer = (char *) toi_get_zeroed_page(23, TOI_ATOMIC_GFP); ++ ++ if (!buffer) { ++ printk(KERN_ERR "Failed to allocate a buffer for reloading " ++ "module configuration info.\n"); ++ return -ENOMEM; ++ } ++ ++ toiActiveAllocator->rw_header_chunk(READ, NULL, buffer, len); ++ ++ if (!this_module) ++ goto out; ++ ++ if (!this_module->save_config_info) ++ printk(KERN_ERR "Huh? Module %s appears to have a " ++ "save_config_info, but not a load_config_info " ++ "function!\n", this_module->name); ++ else ++ this_module->load_config_info(buffer, len); ++ ++ /* ++ * Now move this module to the tail of its lists. This will put it in ++ * order. Any new modules will end up at the top of the lists. They ++ * should have been set to disabled when loaded (people will ++ * normally not edit an initrd to load a new module and then hibernate ++ * without using it!). ++ */ ++ ++ toi_move_module_tail(this_module); ++ ++ this_module->enabled = header->enabled; ++ ++out: ++ toi_free_page(23, (unsigned long) buffer); ++ return 0; ++} ++ ++/** ++ * read_module_configs - reload module configurations from the image header. ++ * ++ * Returns: Int ++ * Zero on success or an error code. ++ **/ ++static int read_module_configs(void) ++{ ++ int result = 0; ++ struct toi_module_header toi_module_header; ++ struct toi_module_ops *this_module; ++ ++ /* All modules are initially disabled. That way, if we have a module ++ * loaded now that wasn't loaded when we hibernated, it won't be used ++ * in trying to read the data. ++ */ ++ list_for_each_entry(this_module, &toi_modules, module_list) ++ this_module->enabled = 0; ++ ++ /* Get the first module header */ ++ result = toiActiveAllocator->rw_header_chunk(READ, NULL, ++ (char *) &toi_module_header, ++ sizeof(toi_module_header)); ++ if (result) { ++ printk(KERN_ERR "Failed to read the next module header.\n"); ++ return -EINVAL; ++ } ++ ++ /* For each module (in registration order) */ ++ while (toi_module_header.name[0]) { ++ result = read_one_module_config(&toi_module_header); ++ ++ if (result) ++ return -EINVAL; ++ ++ /* Get the next module header */ ++ result = toiActiveAllocator->rw_header_chunk(READ, NULL, ++ (char *) &toi_module_header, ++ sizeof(toi_module_header)); ++ ++ if (result) { ++ printk(KERN_ERR "Failed to read the next module " ++ "header.\n"); ++ return -EINVAL; ++ } ++ } ++ ++ return 0; ++} ++ ++static inline int save_fs_info(struct fs_info *fs, struct block_device *bdev) ++{ ++ return (!fs || IS_ERR(fs) || !fs->last_mount_size) ? 0 : 1; ++} ++ ++int fs_info_space_needed(void) ++{ ++ const struct super_block *sb; ++ int result = sizeof(int); ++ ++ list_for_each_entry(sb, &super_blocks, s_list) { ++ struct fs_info *fs; ++ ++ if (!sb->s_bdev) ++ continue; ++ ++ fs = fs_info_from_block_dev(sb->s_bdev); ++ if (save_fs_info(fs, sb->s_bdev)) ++ result += 16 + sizeof(int) + fs->last_mount_size; ++ free_fs_info(fs); ++ } ++ return result; ++} ++ ++static int fs_info_num_to_save(void) ++{ ++ const struct super_block *sb; ++ int to_save = 0; ++ ++ list_for_each_entry(sb, &super_blocks, s_list) { ++ struct fs_info *fs; ++ ++ if (!sb->s_bdev) ++ continue; ++ ++ fs = fs_info_from_block_dev(sb->s_bdev); ++ if (save_fs_info(fs, sb->s_bdev)) ++ to_save++; ++ free_fs_info(fs); ++ } ++ ++ return to_save; ++} ++ ++static int fs_info_save(void) ++{ ++ const struct super_block *sb; ++ int to_save = fs_info_num_to_save(); ++ ++ if (toiActiveAllocator->rw_header_chunk(WRITE, NULL, (char *) &to_save, ++ sizeof(int))) { ++ abort_hibernate(TOI_FAILED_IO, "Failed to write num fs_info" ++ " to save."); ++ return -EIO; ++ } ++ ++ list_for_each_entry(sb, &super_blocks, s_list) { ++ struct fs_info *fs; ++ ++ if (!sb->s_bdev) ++ continue; ++ ++ fs = fs_info_from_block_dev(sb->s_bdev); ++ if (save_fs_info(fs, sb->s_bdev)) { ++ if (toiActiveAllocator->rw_header_chunk(WRITE, NULL, ++ &fs->uuid[0], 16)) { ++ abort_hibernate(TOI_FAILED_IO, "Failed to " ++ "write uuid."); ++ return -EIO; ++ } ++ if (toiActiveAllocator->rw_header_chunk(WRITE, NULL, ++ (char *) &fs->last_mount_size, sizeof(int))) { ++ abort_hibernate(TOI_FAILED_IO, "Failed to " ++ "write last mount length."); ++ return -EIO; ++ } ++ if (toiActiveAllocator->rw_header_chunk(WRITE, NULL, ++ fs->last_mount, fs->last_mount_size)) { ++ abort_hibernate(TOI_FAILED_IO, "Failed to " ++ "write uuid."); ++ return -EIO; ++ } ++ } ++ free_fs_info(fs); ++ } ++ return 0; ++} ++ ++static int fs_info_load_and_check_one(void) ++{ ++ char uuid[16], *last_mount; ++ int result = 0, ln; ++ dev_t dev_t; ++ struct block_device *dev; ++ struct fs_info *fs_info; ++ ++ if (toiActiveAllocator->rw_header_chunk(READ, NULL, uuid, 16)) { ++ abort_hibernate(TOI_FAILED_IO, "Failed to read uuid."); ++ return -EIO; ++ } ++ ++ if (toiActiveAllocator->rw_header_chunk(READ, NULL, (char *) &ln, ++ sizeof(int))) { ++ abort_hibernate(TOI_FAILED_IO, ++ "Failed to read last mount size."); ++ return -EIO; ++ } ++ ++ last_mount = kzalloc(ln, GFP_KERNEL); ++ ++ if (!last_mount) ++ return -ENOMEM; ++ ++ if (toiActiveAllocator->rw_header_chunk(READ, NULL, last_mount, ln)) { ++ abort_hibernate(TOI_FAILED_IO, ++ "Failed to read last mount timestamp."); ++ result = -EIO; ++ goto out_lmt; ++ } ++ ++ dev_t = blk_lookup_uuid(uuid); ++ if (!dev_t) ++ goto out_lmt; ++ ++ dev = toi_open_by_devnum(dev_t); ++ ++ fs_info = fs_info_from_block_dev(dev); ++ if (fs_info && !IS_ERR(fs_info)) { ++ if (ln != fs_info->last_mount_size) { ++ printk(KERN_EMERG "Found matching uuid but last mount " ++ "time lengths differ?! " ++ "(%d vs %d).\n", ln, ++ fs_info->last_mount_size); ++ result = -EINVAL; ++ } else { ++ char buf[BDEVNAME_SIZE]; ++ result = !!memcmp(fs_info->last_mount, last_mount, ln); ++ if (result) ++ printk(KERN_EMERG "Last mount time for %s has " ++ "changed!\n", bdevname(dev, buf)); ++ } ++ } ++ toi_close_bdev(dev); ++ free_fs_info(fs_info); ++out_lmt: ++ kfree(last_mount); ++ return result; ++} ++ ++static int fs_info_load_and_check(void) ++{ ++ int to_do, result; ++ ++ if (toiActiveAllocator->rw_header_chunk(READ, NULL, (char *) &to_do, ++ sizeof(int))) { ++ abort_hibernate(TOI_FAILED_IO, "Failed to read num fs_info " ++ "to load."); ++ return -EIO; ++ } ++ ++ while(to_do--) ++ result |= fs_info_load_and_check_one(); ++ ++ return result; ++} ++ ++/** ++ * write_image_header - write the image header after write the image proper ++ * ++ * Returns: Int ++ * Zero on success, error value otherwise. ++ **/ ++int write_image_header(void) ++{ ++ int ret; ++ int total = pagedir1.size + pagedir2.size+2; ++ char *header_buffer = NULL; ++ ++ /* Now prepare to write the header */ ++ ret = toiActiveAllocator->write_header_init(); ++ if (ret) { ++ abort_hibernate(TOI_FAILED_MODULE_INIT, ++ "Active allocator's write_header_init" ++ " function failed."); ++ goto write_image_header_abort; ++ } ++ ++ /* Get a buffer */ ++ header_buffer = (char *) toi_get_zeroed_page(24, TOI_ATOMIC_GFP); ++ if (!header_buffer) { ++ abort_hibernate(TOI_OUT_OF_MEMORY, ++ "Out of memory when trying to get page for header!"); ++ goto write_image_header_abort; ++ } ++ ++ /* Write hibernate header */ ++ if (fill_toi_header((struct toi_header *) header_buffer)) { ++ abort_hibernate(TOI_OUT_OF_MEMORY, ++ "Failure to fill header information!"); ++ goto write_image_header_abort; ++ } ++ ++ if (toiActiveAllocator->rw_header_chunk(WRITE, NULL, ++ header_buffer, sizeof(struct toi_header))) { ++ abort_hibernate(TOI_OUT_OF_MEMORY, ++ "Failure to write header info."); ++ goto write_image_header_abort; ++ } ++ ++ if (toiActiveAllocator->rw_header_chunk(WRITE, NULL, ++ (char *) &toi_max_workers, sizeof(toi_max_workers))) { ++ abort_hibernate(TOI_OUT_OF_MEMORY, ++ "Failure to number of workers to use."); ++ goto write_image_header_abort; ++ } ++ ++ /* Write filesystem info */ ++ if (fs_info_save()) ++ goto write_image_header_abort; ++ ++ /* Write module configurations */ ++ ret = write_module_configs(); ++ if (ret) { ++ abort_hibernate(TOI_FAILED_IO, ++ "Failed to write module configs."); ++ goto write_image_header_abort; ++ } ++ ++ if (memory_bm_write(pageset1_map, ++ toiActiveAllocator->rw_header_chunk)) { ++ abort_hibernate(TOI_FAILED_IO, ++ "Failed to write bitmaps."); ++ goto write_image_header_abort; ++ } ++ ++ /* Flush data and let allocator cleanup */ ++ if (toiActiveAllocator->write_header_cleanup()) { ++ abort_hibernate(TOI_FAILED_IO, ++ "Failed to cleanup writing header."); ++ goto write_image_header_abort_no_cleanup; ++ } ++ ++ if (test_result_state(TOI_ABORTED)) ++ goto write_image_header_abort_no_cleanup; ++ ++ toi_update_status(total, total, NULL); ++ ++out: ++ if (header_buffer) ++ toi_free_page(24, (unsigned long) header_buffer); ++ return ret; ++ ++write_image_header_abort: ++ toiActiveAllocator->write_header_cleanup(); ++write_image_header_abort_no_cleanup: ++ ret = -1; ++ goto out; ++} ++ ++/** ++ * sanity_check - check the header ++ * @sh: the header which was saved at hibernate time. ++ * ++ * Perform a few checks, seeking to ensure that the kernel being ++ * booted matches the one hibernated. They need to match so we can ++ * be _sure_ things will work. It is not absolutely impossible for ++ * resuming from a different kernel to work, just not assured. ++ **/ ++static char *sanity_check(struct toi_header *sh) ++{ ++ char *reason = check_image_kernel((struct swsusp_info *) sh); ++ ++ if (reason) ++ return reason; ++ ++ if (!test_action_state(TOI_IGNORE_ROOTFS)) { ++ const struct super_block *sb; ++ list_for_each_entry(sb, &super_blocks, s_list) { ++ if ((!(sb->s_flags & MS_RDONLY)) && ++ (sb->s_type->fs_flags & FS_REQUIRES_DEV)) ++ return "Device backed fs has been mounted " ++ "rw prior to resume or initrd/ramfs " ++ "is mounted rw."; ++ } ++ } ++ ++ return NULL; ++} ++ ++static DECLARE_WAIT_QUEUE_HEAD(freeze_wait); ++ ++#define FREEZE_IN_PROGRESS (~0) ++ ++static int freeze_result; ++ ++static void do_freeze(struct work_struct *dummy) ++{ ++ freeze_result = freeze_processes(); ++ wake_up(&freeze_wait); ++ trap_non_toi_io = 1; ++} ++ ++static DECLARE_WORK(freeze_work, do_freeze); ++ ++/** ++ * __read_pageset1 - test for the existence of an image and attempt to load it ++ * ++ * Returns: Int ++ * Zero if image found and pageset1 successfully loaded. ++ * Error if no image found or loaded. ++ **/ ++static int __read_pageset1(void) ++{ ++ int i, result = 0; ++ char *header_buffer = (char *) toi_get_zeroed_page(25, TOI_ATOMIC_GFP), ++ *sanity_error = NULL; ++ struct toi_header *toi_header; ++ ++ if (!header_buffer) { ++ printk(KERN_INFO "Unable to allocate a page for reading the " ++ "signature.\n"); ++ return -ENOMEM; ++ } ++ ++ /* Check for an image */ ++ result = toiActiveAllocator->image_exists(1); ++ if (result == 3) { ++ result = -ENODATA; ++ toi_early_boot_message(1, 0, "The signature from an older " ++ "version of TuxOnIce has been detected."); ++ goto out_remove_image; ++ } ++ ++ if (result != 1) { ++ result = -ENODATA; ++ noresume_reset_modules(); ++ printk(KERN_INFO "TuxOnIce: No image found.\n"); ++ goto out; ++ } ++ ++ /* ++ * Prepare the active allocator for reading the image header. The ++ * activate allocator might read its own configuration. ++ * ++ * NB: This call may never return because there might be a signature ++ * for a different image such that we warn the user and they choose ++ * to reboot. (If the device ids look erroneous (2.4 vs 2.6) or the ++ * location of the image might be unavailable if it was stored on a ++ * network connection). ++ */ ++ ++ result = toiActiveAllocator->read_header_init(); ++ if (result) { ++ printk(KERN_INFO "TuxOnIce: Failed to initialise, reading the " ++ "image header.\n"); ++ goto out_remove_image; ++ } ++ ++ /* Check for noresume command line option */ ++ if (test_toi_state(TOI_NORESUME_SPECIFIED)) { ++ printk(KERN_INFO "TuxOnIce: Noresume on command line. Removed " ++ "image.\n"); ++ goto out_remove_image; ++ } ++ ++ /* Check whether we've resumed before */ ++ if (test_toi_state(TOI_RESUMED_BEFORE)) { ++ toi_early_boot_message(1, 0, NULL); ++ if (!(test_toi_state(TOI_CONTINUE_REQ))) { ++ printk(KERN_INFO "TuxOnIce: Tried to resume before: " ++ "Invalidated image.\n"); ++ goto out_remove_image; ++ } ++ } ++ ++ clear_toi_state(TOI_CONTINUE_REQ); ++ ++ toi_image_header_version = toiActiveAllocator->get_header_version(); ++ ++ if (unlikely(toi_image_header_version > TOI_HEADER_VERSION)) { ++ toi_early_boot_message(1, 0, image_version_error); ++ if (!(test_toi_state(TOI_CONTINUE_REQ))) { ++ printk(KERN_INFO "TuxOnIce: Header version too new: " ++ "Invalidated image.\n"); ++ goto out_remove_image; ++ } ++ } ++ ++ /* Read hibernate header */ ++ result = toiActiveAllocator->rw_header_chunk(READ, NULL, ++ header_buffer, sizeof(struct toi_header)); ++ if (result < 0) { ++ printk(KERN_ERR "TuxOnIce: Failed to read the image " ++ "signature.\n"); ++ goto out_remove_image; ++ } ++ ++ toi_header = (struct toi_header *) header_buffer; ++ ++ /* ++ * NB: This call may also result in a reboot rather than returning. ++ */ ++ ++ sanity_error = sanity_check(toi_header); ++ if (sanity_error) { ++ toi_early_boot_message(1, TOI_CONTINUE_REQ, ++ sanity_error); ++ printk(KERN_INFO "TuxOnIce: Sanity check failed.\n"); ++ goto out_remove_image; ++ } ++ ++ /* ++ * We have an image and it looks like it will load okay. ++ * ++ * Get metadata from header. Don't override commandline parameters. ++ * ++ * We don't need to save the image size limit because it's not used ++ * during resume and will be restored with the image anyway. ++ */ ++ ++ memcpy((char *) &pagedir1, ++ (char *) &toi_header->pagedir, sizeof(pagedir1)); ++ toi_result = toi_header->param0; ++ if (!toi_bkd.toi_debug_state) { ++ toi_bkd.toi_action = toi_header->param1; ++ toi_bkd.toi_debug_state = toi_header->param2; ++ toi_bkd.toi_default_console_level = toi_header->param3; ++ } ++ clear_toi_state(TOI_IGNORE_LOGLEVEL); ++ pagedir2.size = toi_header->pageset_2_size; ++ for (i = 0; i < 4; i++) ++ toi_bkd.toi_io_time[i/2][i%2] = ++ toi_header->io_time[i/2][i%2]; ++ ++ set_toi_state(TOI_BOOT_KERNEL); ++ boot_kernel_data_buffer = toi_header->bkd; ++ ++ read_if_version(1, toi_max_workers, "TuxOnIce max workers"); ++ ++ /* Read filesystem info */ ++ if (fs_info_load_and_check()) { ++ printk(KERN_EMERG "TuxOnIce: File system mount time checks " ++ "failed. Refusing to corrupt your filesystems!\n"); ++ goto out_remove_image; ++ } ++ ++ /* Read module configurations */ ++ result = read_module_configs(); ++ if (result) { ++ pagedir1.size = 0; ++ pagedir2.size = 0; ++ printk(KERN_INFO "TuxOnIce: Failed to read TuxOnIce module " ++ "configurations.\n"); ++ clear_action_state(TOI_KEEP_IMAGE); ++ goto out_remove_image; ++ } ++ ++ toi_prepare_console(); ++ ++ set_toi_state(TOI_NOW_RESUMING); ++ ++ if (!test_action_state(TOI_LATE_CPU_HOTPLUG)) { ++ toi_prepare_status(DONT_CLEAR_BAR, "Disable nonboot cpus."); ++ if (disable_nonboot_cpus()) { ++ set_abort_result(TOI_CPU_HOTPLUG_FAILED); ++ goto out_reset_console; ++ } ++ } ++ ++ if (usermodehelper_disable()) ++ goto out_enable_nonboot_cpus; ++ ++ current->flags |= PF_NOFREEZE; ++ freeze_result = FREEZE_IN_PROGRESS; ++ ++ schedule_work_on(first_cpu(cpu_online_map), &freeze_work); ++ ++ toi_cond_pause(1, "About to read original pageset1 locations."); ++ ++ /* ++ * See _toi_rw_header_chunk in tuxonice_bio.c: ++ * Initialize pageset1_map by reading the map from the image. ++ */ ++ if (memory_bm_read(pageset1_map, toiActiveAllocator->rw_header_chunk)) ++ goto out_thaw; ++ ++ /* ++ * See toi_rw_cleanup in tuxonice_bio.c: ++ * Clean up after reading the header. ++ */ ++ result = toiActiveAllocator->read_header_cleanup(); ++ if (result) { ++ printk(KERN_ERR "TuxOnIce: Failed to cleanup after reading the " ++ "image header.\n"); ++ goto out_thaw; ++ } ++ ++ toi_cond_pause(1, "About to read pagedir."); ++ ++ /* ++ * Get the addresses of pages into which we will load the kernel to ++ * be copied back and check if they conflict with the ones we are using. ++ */ ++ if (toi_get_pageset1_load_addresses()) { ++ printk(KERN_INFO "TuxOnIce: Failed to get load addresses for " ++ "pageset1.\n"); ++ goto out_thaw; ++ } ++ ++ /* Read the original kernel back */ ++ toi_cond_pause(1, "About to read pageset 1."); ++ ++ /* Given the pagemap, read back the data from disk */ ++ if (read_pageset(&pagedir1, 0)) { ++ toi_prepare_status(DONT_CLEAR_BAR, "Failed to read pageset 1."); ++ result = -EIO; ++ goto out_thaw; ++ } ++ ++ toi_cond_pause(1, "About to restore original kernel."); ++ result = 0; ++ ++ if (!test_action_state(TOI_KEEP_IMAGE) && ++ toiActiveAllocator->mark_resume_attempted) ++ toiActiveAllocator->mark_resume_attempted(1); ++ ++ wait_event(freeze_wait, freeze_result != FREEZE_IN_PROGRESS); ++out: ++ current->flags &= ~PF_NOFREEZE; ++ toi_free_page(25, (unsigned long) header_buffer); ++ return result; ++ ++out_thaw: ++ wait_event(freeze_wait, freeze_result != FREEZE_IN_PROGRESS); ++ trap_non_toi_io = 0; ++ thaw_processes(); ++ usermodehelper_enable(); ++out_enable_nonboot_cpus: ++ enable_nonboot_cpus(); ++out_reset_console: ++ toi_cleanup_console(); ++out_remove_image: ++ result = -EINVAL; ++ if (!test_action_state(TOI_KEEP_IMAGE)) ++ toiActiveAllocator->remove_image(); ++ toiActiveAllocator->read_header_cleanup(); ++ noresume_reset_modules(); ++ goto out; ++} ++ ++/** ++ * read_pageset1 - highlevel function to read the saved pages ++ * ++ * Attempt to read the header and pageset1 of a hibernate image. ++ * Handle the outcome, complaining where appropriate. ++ **/ ++int read_pageset1(void) ++{ ++ int error; ++ ++ error = __read_pageset1(); ++ ++ if (error && error != -ENODATA && error != -EINVAL && ++ !test_result_state(TOI_ABORTED)) ++ abort_hibernate(TOI_IMAGE_ERROR, ++ "TuxOnIce: Error %d resuming\n", error); ++ ++ return error; ++} ++ ++/** ++ * get_have_image_data - check the image header ++ **/ ++static char *get_have_image_data(void) ++{ ++ char *output_buffer = (char *) toi_get_zeroed_page(26, TOI_ATOMIC_GFP); ++ struct toi_header *toi_header; ++ ++ if (!output_buffer) { ++ printk(KERN_INFO "Output buffer null.\n"); ++ return NULL; ++ } ++ ++ /* Check for an image */ ++ if (!toiActiveAllocator->image_exists(1) || ++ toiActiveAllocator->read_header_init() || ++ toiActiveAllocator->rw_header_chunk(READ, NULL, ++ output_buffer, sizeof(struct toi_header))) { ++ sprintf(output_buffer, "0\n"); ++ /* ++ * From an initrd/ramfs, catting have_image and ++ * getting a result of 0 is sufficient. ++ */ ++ clear_toi_state(TOI_BOOT_TIME); ++ goto out; ++ } ++ ++ toi_header = (struct toi_header *) output_buffer; ++ ++ sprintf(output_buffer, "1\n%s\n%s\n", ++ toi_header->uts.machine, ++ toi_header->uts.version); ++ ++ /* Check whether we've resumed before */ ++ if (test_toi_state(TOI_RESUMED_BEFORE)) ++ strcat(output_buffer, "Resumed before.\n"); ++ ++out: ++ noresume_reset_modules(); ++ return output_buffer; ++} ++ ++/** ++ * read_pageset2 - read second part of the image ++ * @overwrittenpagesonly: Read only pages which would have been ++ * verwritten by pageset1? ++ * ++ * Read in part or all of pageset2 of an image, depending upon ++ * whether we are hibernating and have only overwritten a portion ++ * with pageset1 pages, or are resuming and need to read them ++ * all. ++ * ++ * Returns: Int ++ * Zero if no error, otherwise the error value. ++ **/ ++int read_pageset2(int overwrittenpagesonly) ++{ ++ int result = 0; ++ ++ if (!pagedir2.size) ++ return 0; ++ ++ result = read_pageset(&pagedir2, overwrittenpagesonly); ++ ++ toi_cond_pause(1, "Pagedir 2 read."); ++ ++ return result; ++} ++ ++/** ++ * image_exists_read - has an image been found? ++ * @page: Output buffer ++ * ++ * Store 0 or 1 in page, depending on whether an image is found. ++ * Incoming buffer is PAGE_SIZE and result is guaranteed ++ * to be far less than that, so we don't worry about ++ * overflow. ++ **/ ++int image_exists_read(const char *page, int count) ++{ ++ int len = 0; ++ char *result; ++ ++ if (toi_activate_storage(0)) ++ return count; ++ ++ if (!test_toi_state(TOI_RESUME_DEVICE_OK)) ++ toi_attempt_to_parse_resume_device(0); ++ ++ if (!toiActiveAllocator) { ++ len = sprintf((char *) page, "-1\n"); ++ } else { ++ result = get_have_image_data(); ++ if (result) { ++ len = sprintf((char *) page, "%s", result); ++ toi_free_page(26, (unsigned long) result); ++ } ++ } ++ ++ toi_deactivate_storage(0); ++ ++ return len; ++} ++ ++/** ++ * image_exists_write - invalidate an image if one exists ++ **/ ++int image_exists_write(const char *buffer, int count) ++{ ++ if (toi_activate_storage(0)) ++ return count; ++ ++ if (toiActiveAllocator && toiActiveAllocator->image_exists(1)) ++ toiActiveAllocator->remove_image(); ++ ++ toi_deactivate_storage(0); ++ ++ clear_result_state(TOI_KEPT_IMAGE); ++ ++ return count; ++} +diff --git a/kernel/power/tuxonice_io.h b/kernel/power/tuxonice_io.h +new file mode 100644 +index 0000000..fe37713 +--- /dev/null ++++ b/kernel/power/tuxonice_io.h +@@ -0,0 +1,74 @@ ++/* ++ * kernel/power/tuxonice_io.h ++ * ++ * Copyright (C) 2005-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * It contains high level IO routines for hibernating. ++ * ++ */ ++ ++#include ++#include "tuxonice_pagedir.h" ++ ++/* Non-module data saved in our image header */ ++struct toi_header { ++ /* ++ * Mirror struct swsusp_info, but without ++ * the page aligned attribute ++ */ ++ struct new_utsname uts; ++ u32 version_code; ++ unsigned long num_physpages; ++ int cpus; ++ unsigned long image_pages; ++ unsigned long pages; ++ unsigned long size; ++ ++ /* Our own data */ ++ unsigned long orig_mem_free; ++ int page_size; ++ int pageset_2_size; ++ int param0; ++ int param1; ++ int param2; ++ int param3; ++ int progress0; ++ int progress1; ++ int progress2; ++ int progress3; ++ int io_time[2][2]; ++ struct pagedir pagedir; ++ dev_t root_fs; ++ unsigned long bkd; /* Boot kernel data locn */ ++}; ++ ++extern int write_pageset(struct pagedir *pagedir); ++extern int write_image_header(void); ++extern int read_pageset1(void); ++extern int read_pageset2(int overwrittenpagesonly); ++ ++extern int toi_attempt_to_parse_resume_device(int quiet); ++extern void attempt_to_parse_resume_device2(void); ++extern void attempt_to_parse_alt_resume_param(void); ++int image_exists_read(const char *page, int count); ++int image_exists_write(const char *buffer, int count); ++extern void save_restore_alt_param(int replace, int quiet); ++extern atomic_t toi_io_workers; ++ ++/* Args to save_restore_alt_param */ ++#define RESTORE 0 ++#define SAVE 1 ++ ++#define NOQUIET 0 ++#define QUIET 1 ++ ++extern dev_t name_to_dev_t(char *line); ++ ++extern wait_queue_head_t toi_io_queue_flusher; ++extern int toi_bio_queue_flusher_should_finish; ++ ++int fs_info_space_needed(void); ++ ++extern int toi_max_workers; +diff --git a/kernel/power/tuxonice_modules.c b/kernel/power/tuxonice_modules.c +new file mode 100644 +index 0000000..4cc24a9 +--- /dev/null ++++ b/kernel/power/tuxonice_modules.c +@@ -0,0 +1,522 @@ ++/* ++ * kernel/power/tuxonice_modules.c ++ * ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ */ ++ ++#include ++#include "tuxonice.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_sysfs.h" ++#include "tuxonice_ui.h" ++ ++LIST_HEAD(toi_filters); ++LIST_HEAD(toiAllocators); ++ ++LIST_HEAD(toi_modules); ++EXPORT_SYMBOL_GPL(toi_modules); ++ ++struct toi_module_ops *toiActiveAllocator; ++EXPORT_SYMBOL_GPL(toiActiveAllocator); ++ ++static int toi_num_filters; ++int toiNumAllocators, toi_num_modules; ++ ++/* ++ * toi_header_storage_for_modules ++ * ++ * Returns the amount of space needed to store configuration ++ * data needed by the modules prior to copying back the original ++ * kernel. We can exclude data for pageset2 because it will be ++ * available anyway once the kernel is copied back. ++ */ ++long toi_header_storage_for_modules(void) ++{ ++ struct toi_module_ops *this_module; ++ int bytes = 0; ++ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (!this_module->enabled || ++ (this_module->type == WRITER_MODULE && ++ toiActiveAllocator != this_module)) ++ continue; ++ if (this_module->storage_needed) { ++ int this = this_module->storage_needed() + ++ sizeof(struct toi_module_header) + ++ sizeof(int); ++ this_module->header_requested = this; ++ bytes += this; ++ } ++ } ++ ++ /* One more for the empty terminator */ ++ return bytes + sizeof(struct toi_module_header); ++} ++ ++void print_toi_header_storage_for_modules(void) ++{ ++ struct toi_module_ops *this_module; ++ int bytes = 0; ++ ++ printk(KERN_DEBUG "Header storage:\n"); ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (!this_module->enabled || ++ (this_module->type == WRITER_MODULE && ++ toiActiveAllocator != this_module)) ++ continue; ++ if (this_module->storage_needed) { ++ int this = this_module->storage_needed() + ++ sizeof(struct toi_module_header) + ++ sizeof(int); ++ this_module->header_requested = this; ++ bytes += this; ++ printk(KERN_DEBUG "+ %16s : %-4d/%d.\n", ++ this_module->name, ++ this_module->header_used, this); ++ } ++ } ++ ++ printk(KERN_DEBUG "+ empty terminator : %zu.\n", ++ sizeof(struct toi_module_header)); ++ printk(KERN_DEBUG " ====\n"); ++ printk(KERN_DEBUG " %zu\n", ++ bytes + sizeof(struct toi_module_header)); ++} ++EXPORT_SYMBOL_GPL(print_toi_header_storage_for_modules); ++ ++/* ++ * toi_memory_for_modules ++ * ++ * Returns the amount of memory requested by modules for ++ * doing their work during the cycle. ++ */ ++ ++long toi_memory_for_modules(int print_parts) ++{ ++ long bytes = 0, result; ++ struct toi_module_ops *this_module; ++ ++ if (print_parts) ++ printk(KERN_INFO "Memory for modules:\n===================\n"); ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ int this; ++ if (!this_module->enabled) ++ continue; ++ if (this_module->memory_needed) { ++ this = this_module->memory_needed(); ++ if (print_parts) ++ printk(KERN_INFO "%10d bytes (%5ld pages) for " ++ "module '%s'.\n", this, ++ DIV_ROUND_UP(this, PAGE_SIZE), ++ this_module->name); ++ bytes += this; ++ } ++ } ++ ++ result = DIV_ROUND_UP(bytes, PAGE_SIZE); ++ if (print_parts) ++ printk(KERN_INFO " => %ld bytes, %ld pages.\n", bytes, result); ++ ++ return result; ++} ++ ++/* ++ * toi_expected_compression_ratio ++ * ++ * Returns the compression ratio expected when saving the image. ++ */ ++ ++int toi_expected_compression_ratio(void) ++{ ++ int ratio = 100; ++ struct toi_module_ops *this_module; ++ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (!this_module->enabled) ++ continue; ++ if (this_module->expected_compression) ++ ratio = ratio * this_module->expected_compression() ++ / 100; ++ } ++ ++ return ratio; ++} ++ ++/* toi_find_module_given_dir ++ * Functionality : Return a module (if found), given a pointer ++ * to its directory name ++ */ ++ ++static struct toi_module_ops *toi_find_module_given_dir(char *name) ++{ ++ struct toi_module_ops *this_module, *found_module = NULL; ++ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (!strcmp(name, this_module->directory)) { ++ found_module = this_module; ++ break; ++ } ++ } ++ ++ return found_module; ++} ++ ++/* toi_find_module_given_name ++ * Functionality : Return a module (if found), given a pointer ++ * to its name ++ */ ++ ++struct toi_module_ops *toi_find_module_given_name(char *name) ++{ ++ struct toi_module_ops *this_module, *found_module = NULL; ++ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (!strcmp(name, this_module->name)) { ++ found_module = this_module; ++ break; ++ } ++ } ++ ++ return found_module; ++} ++ ++/* ++ * toi_print_module_debug_info ++ * Functionality : Get debugging info from modules into a buffer. ++ */ ++int toi_print_module_debug_info(char *buffer, int buffer_size) ++{ ++ struct toi_module_ops *this_module; ++ int len = 0; ++ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (!this_module->enabled) ++ continue; ++ if (this_module->print_debug_info) { ++ int result; ++ result = this_module->print_debug_info(buffer + len, ++ buffer_size - len); ++ len += result; ++ } ++ } ++ ++ /* Ensure null terminated */ ++ buffer[buffer_size] = 0; ++ ++ return len; ++} ++ ++/* ++ * toi_register_module ++ * ++ * Register a module. ++ */ ++int toi_register_module(struct toi_module_ops *module) ++{ ++ int i; ++ struct kobject *kobj; ++ ++ module->enabled = 1; ++ ++ if (toi_find_module_given_name(module->name)) { ++ printk(KERN_INFO "TuxOnIce: Trying to load module %s," ++ " which is already registered.\n", ++ module->name); ++ return -EBUSY; ++ } ++ ++ switch (module->type) { ++ case FILTER_MODULE: ++ list_add_tail(&module->type_list, &toi_filters); ++ toi_num_filters++; ++ break; ++ case WRITER_MODULE: ++ list_add_tail(&module->type_list, &toiAllocators); ++ toiNumAllocators++; ++ break; ++ case MISC_MODULE: ++ case MISC_HIDDEN_MODULE: ++ case BIO_ALLOCATOR_MODULE: ++ break; ++ default: ++ printk(KERN_ERR "Hmmm. Module '%s' has an invalid type." ++ " It has been ignored.\n", module->name); ++ return -EINVAL; ++ } ++ list_add_tail(&module->module_list, &toi_modules); ++ toi_num_modules++; ++ ++ if ((!module->directory && !module->shared_directory) || ++ !module->sysfs_data || !module->num_sysfs_entries) ++ return 0; ++ ++ /* ++ * Modules may share a directory, but those with shared_dir ++ * set must be loaded (via symbol dependencies) after parents ++ * and unloaded beforehand. ++ */ ++ if (module->shared_directory) { ++ struct toi_module_ops *shared = ++ toi_find_module_given_dir(module->shared_directory); ++ if (!shared) { ++ printk(KERN_ERR "TuxOnIce: Module %s wants to share " ++ "%s's directory but %s isn't loaded.\n", ++ module->name, module->shared_directory, ++ module->shared_directory); ++ toi_unregister_module(module); ++ return -ENODEV; ++ } ++ kobj = shared->dir_kobj; ++ } else { ++ if (!strncmp(module->directory, "[ROOT]", 6)) ++ kobj = tuxonice_kobj; ++ else ++ kobj = make_toi_sysdir(module->directory); ++ } ++ module->dir_kobj = kobj; ++ for (i = 0; i < module->num_sysfs_entries; i++) { ++ int result = toi_register_sysfs_file(kobj, ++ &module->sysfs_data[i]); ++ if (result) ++ return result; ++ } ++ return 0; ++} ++EXPORT_SYMBOL_GPL(toi_register_module); ++ ++/* ++ * toi_unregister_module ++ * ++ * Remove a module. ++ */ ++void toi_unregister_module(struct toi_module_ops *module) ++{ ++ int i; ++ ++ if (module->dir_kobj) ++ for (i = 0; i < module->num_sysfs_entries; i++) ++ toi_unregister_sysfs_file(module->dir_kobj, ++ &module->sysfs_data[i]); ++ ++ if (!module->shared_directory && module->directory && ++ strncmp(module->directory, "[ROOT]", 6)) ++ remove_toi_sysdir(module->dir_kobj); ++ ++ switch (module->type) { ++ case FILTER_MODULE: ++ list_del(&module->type_list); ++ toi_num_filters--; ++ break; ++ case WRITER_MODULE: ++ list_del(&module->type_list); ++ toiNumAllocators--; ++ if (toiActiveAllocator == module) { ++ toiActiveAllocator = NULL; ++ clear_toi_state(TOI_CAN_RESUME); ++ clear_toi_state(TOI_CAN_HIBERNATE); ++ } ++ break; ++ case MISC_MODULE: ++ case MISC_HIDDEN_MODULE: ++ case BIO_ALLOCATOR_MODULE: ++ break; ++ default: ++ printk(KERN_ERR "Module '%s' has an invalid type." ++ " It has been ignored.\n", module->name); ++ return; ++ } ++ list_del(&module->module_list); ++ toi_num_modules--; ++} ++EXPORT_SYMBOL_GPL(toi_unregister_module); ++ ++/* ++ * toi_move_module_tail ++ * ++ * Rearrange modules when reloading the config. ++ */ ++void toi_move_module_tail(struct toi_module_ops *module) ++{ ++ switch (module->type) { ++ case FILTER_MODULE: ++ if (toi_num_filters > 1) ++ list_move_tail(&module->type_list, &toi_filters); ++ break; ++ case WRITER_MODULE: ++ if (toiNumAllocators > 1) ++ list_move_tail(&module->type_list, &toiAllocators); ++ break; ++ case MISC_MODULE: ++ case MISC_HIDDEN_MODULE: ++ case BIO_ALLOCATOR_MODULE: ++ break; ++ default: ++ printk(KERN_ERR "Module '%s' has an invalid type." ++ " It has been ignored.\n", module->name); ++ return; ++ } ++ if ((toi_num_filters + toiNumAllocators) > 1) ++ list_move_tail(&module->module_list, &toi_modules); ++} ++ ++/* ++ * toi_initialise_modules ++ * ++ * Get ready to do some work! ++ */ ++int toi_initialise_modules(int starting_cycle, int early) ++{ ++ struct toi_module_ops *this_module; ++ int result; ++ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ this_module->header_requested = 0; ++ this_module->header_used = 0; ++ if (!this_module->enabled) ++ continue; ++ if (this_module->early != early) ++ continue; ++ if (this_module->initialise) { ++ result = this_module->initialise(starting_cycle); ++ if (result) { ++ toi_cleanup_modules(starting_cycle); ++ return result; ++ } ++ this_module->initialised = 1; ++ } ++ } ++ ++ return 0; ++} ++ ++/* ++ * toi_cleanup_modules ++ * ++ * Tell modules the work is done. ++ */ ++void toi_cleanup_modules(int finishing_cycle) ++{ ++ struct toi_module_ops *this_module; ++ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (!this_module->enabled || !this_module->initialised) ++ continue; ++ if (this_module->cleanup) ++ this_module->cleanup(finishing_cycle); ++ this_module->initialised = 0; ++ } ++} ++ ++/* ++ * toi_pre_atomic_restore_modules ++ * ++ * Get ready to do some work! ++ */ ++void toi_pre_atomic_restore_modules(struct toi_boot_kernel_data *bkd) ++{ ++ struct toi_module_ops *this_module; ++ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (this_module->enabled && this_module->pre_atomic_restore) ++ this_module->pre_atomic_restore(bkd); ++ } ++} ++ ++/* ++ * toi_post_atomic_restore_modules ++ * ++ * Get ready to do some work! ++ */ ++void toi_post_atomic_restore_modules(struct toi_boot_kernel_data *bkd) ++{ ++ struct toi_module_ops *this_module; ++ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (this_module->enabled && this_module->post_atomic_restore) ++ this_module->post_atomic_restore(bkd); ++ } ++} ++ ++/* ++ * toi_get_next_filter ++ * ++ * Get the next filter in the pipeline. ++ */ ++struct toi_module_ops *toi_get_next_filter(struct toi_module_ops *filter_sought) ++{ ++ struct toi_module_ops *last_filter = NULL, *this_filter = NULL; ++ ++ list_for_each_entry(this_filter, &toi_filters, type_list) { ++ if (!this_filter->enabled) ++ continue; ++ if ((last_filter == filter_sought) || (!filter_sought)) ++ return this_filter; ++ last_filter = this_filter; ++ } ++ ++ return toiActiveAllocator; ++} ++EXPORT_SYMBOL_GPL(toi_get_next_filter); ++ ++/** ++ * toi_show_modules: Printk what support is loaded. ++ */ ++void toi_print_modules(void) ++{ ++ struct toi_module_ops *this_module; ++ int prev = 0; ++ ++ printk(KERN_INFO "TuxOnIce " TOI_CORE_VERSION ", with support for"); ++ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ if (this_module->type == MISC_HIDDEN_MODULE) ++ continue; ++ printk("%s %s%s%s", prev ? "," : "", ++ this_module->enabled ? "" : "[", ++ this_module->name, ++ this_module->enabled ? "" : "]"); ++ prev = 1; ++ } ++ ++ printk(".\n"); ++} ++ ++/* toi_get_modules ++ * ++ * Take a reference to modules so they can't go away under us. ++ */ ++ ++int toi_get_modules(void) ++{ ++ struct toi_module_ops *this_module; ++ ++ list_for_each_entry(this_module, &toi_modules, module_list) { ++ struct toi_module_ops *this_module2; ++ ++ if (try_module_get(this_module->module)) ++ continue; ++ ++ /* Failed! Reverse gets and return error */ ++ list_for_each_entry(this_module2, &toi_modules, ++ module_list) { ++ if (this_module == this_module2) ++ return -EINVAL; ++ module_put(this_module2->module); ++ } ++ } ++ return 0; ++} ++ ++/* toi_put_modules ++ * ++ * Release our references to modules we used. ++ */ ++ ++void toi_put_modules(void) ++{ ++ struct toi_module_ops *this_module; ++ ++ list_for_each_entry(this_module, &toi_modules, module_list) ++ module_put(this_module->module); ++} +diff --git a/kernel/power/tuxonice_modules.h b/kernel/power/tuxonice_modules.h +new file mode 100644 +index 0000000..9e198c4 +--- /dev/null ++++ b/kernel/power/tuxonice_modules.h +@@ -0,0 +1,197 @@ ++/* ++ * kernel/power/tuxonice_modules.h ++ * ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * It contains declarations for modules. Modules are additions to ++ * TuxOnIce that provide facilities such as image compression or ++ * encryption, backends for storage of the image and user interfaces. ++ * ++ */ ++ ++#ifndef TOI_MODULES_H ++#define TOI_MODULES_H ++ ++/* This is the maximum size we store in the image header for a module name */ ++#define TOI_MAX_MODULE_NAME_LENGTH 30 ++ ++struct toi_boot_kernel_data; ++ ++/* Per-module metadata */ ++struct toi_module_header { ++ char name[TOI_MAX_MODULE_NAME_LENGTH]; ++ int enabled; ++ int type; ++ int index; ++ int data_length; ++ unsigned long signature; ++}; ++ ++enum { ++ FILTER_MODULE, ++ WRITER_MODULE, ++ BIO_ALLOCATOR_MODULE, ++ MISC_MODULE, ++ MISC_HIDDEN_MODULE, ++}; ++ ++enum { ++ TOI_ASYNC, ++ TOI_SYNC ++}; ++ ++struct toi_module_ops { ++ /* Functions common to all modules */ ++ int type; ++ char *name; ++ char *directory; ++ char *shared_directory; ++ struct kobject *dir_kobj; ++ struct module *module; ++ int enabled, early, initialised; ++ struct list_head module_list; ++ ++ /* List of filters or allocators */ ++ struct list_head list, type_list; ++ ++ /* ++ * Requirements for memory and storage in ++ * the image header.. ++ */ ++ int (*memory_needed) (void); ++ int (*storage_needed) (void); ++ ++ int header_requested, header_used; ++ ++ int (*expected_compression) (void); ++ ++ /* ++ * Debug info ++ */ ++ int (*print_debug_info) (char *buffer, int size); ++ int (*save_config_info) (char *buffer); ++ void (*load_config_info) (char *buffer, int len); ++ ++ /* ++ * Initialise & cleanup - general routines called ++ * at the start and end of a cycle. ++ */ ++ int (*initialise) (int starting_cycle); ++ void (*cleanup) (int finishing_cycle); ++ ++ void (*pre_atomic_restore) (struct toi_boot_kernel_data *bkd); ++ void (*post_atomic_restore) (struct toi_boot_kernel_data *bkd); ++ ++ /* ++ * Calls for allocating storage (allocators only). ++ * ++ * Header space is requested separately and cannot fail, but the ++ * reservation is only applied when main storage is allocated. ++ * The header space reservation is thus always set prior to ++ * requesting the allocation of storage - and prior to querying ++ * how much storage is available. ++ */ ++ ++ unsigned long (*storage_available) (void); ++ void (*reserve_header_space) (unsigned long space_requested); ++ int (*register_storage) (void); ++ int (*allocate_storage) (unsigned long space_requested); ++ unsigned long (*storage_allocated) (void); ++ ++ /* ++ * Routines used in image I/O. ++ */ ++ int (*rw_init) (int rw, int stream_number); ++ int (*rw_cleanup) (int rw); ++ int (*write_page) (unsigned long index, struct page *buffer_page, ++ unsigned int buf_size); ++ int (*read_page) (unsigned long *index, struct page *buffer_page, ++ unsigned int *buf_size); ++ int (*io_flusher) (int rw); ++ ++ /* Reset module if image exists but reading aborted */ ++ void (*noresume_reset) (void); ++ ++ /* Read and write the metadata */ ++ int (*write_header_init) (void); ++ int (*write_header_cleanup) (void); ++ ++ int (*read_header_init) (void); ++ int (*read_header_cleanup) (void); ++ ++ /* To be called after read_header_init */ ++ int (*get_header_version) (void); ++ ++ int (*rw_header_chunk) (int rw, struct toi_module_ops *owner, ++ char *buffer_start, int buffer_size); ++ ++ int (*rw_header_chunk_noreadahead) (int rw, ++ struct toi_module_ops *owner, char *buffer_start, ++ int buffer_size); ++ ++ /* Attempt to parse an image location */ ++ int (*parse_sig_location) (char *buffer, int only_writer, int quiet); ++ ++ /* Throttle I/O according to throughput */ ++ void (*update_throughput_throttle) (int jif_index); ++ ++ /* Flush outstanding I/O */ ++ int (*finish_all_io) (void); ++ ++ /* Determine whether image exists that we can restore */ ++ int (*image_exists) (int quiet); ++ ++ /* Mark the image as having tried to resume */ ++ int (*mark_resume_attempted) (int); ++ ++ /* Destroy image if one exists */ ++ int (*remove_image) (void); ++ ++ /* Sysfs Data */ ++ struct toi_sysfs_data *sysfs_data; ++ int num_sysfs_entries; ++ ++ /* Block I/O allocator */ ++ struct toi_bio_allocator_ops *bio_allocator_ops; ++}; ++ ++extern int toi_num_modules, toiNumAllocators; ++ ++extern struct toi_module_ops *toiActiveAllocator; ++extern struct list_head toi_filters, toiAllocators, toi_modules; ++ ++extern void toi_prepare_console_modules(void); ++extern void toi_cleanup_console_modules(void); ++ ++extern struct toi_module_ops *toi_find_module_given_name(char *name); ++extern struct toi_module_ops *toi_get_next_filter(struct toi_module_ops *); ++ ++extern int toi_register_module(struct toi_module_ops *module); ++extern void toi_move_module_tail(struct toi_module_ops *module); ++ ++extern long toi_header_storage_for_modules(void); ++extern long toi_memory_for_modules(int print_parts); ++extern void print_toi_header_storage_for_modules(void); ++extern int toi_expected_compression_ratio(void); ++ ++extern int toi_print_module_debug_info(char *buffer, int buffer_size); ++extern int toi_register_module(struct toi_module_ops *module); ++extern void toi_unregister_module(struct toi_module_ops *module); ++ ++extern int toi_initialise_modules(int starting_cycle, int early); ++#define toi_initialise_modules_early(starting) \ ++ toi_initialise_modules(starting, 1) ++#define toi_initialise_modules_late(starting) \ ++ toi_initialise_modules(starting, 0) ++extern void toi_cleanup_modules(int finishing_cycle); ++ ++extern void toi_post_atomic_restore_modules(struct toi_boot_kernel_data *bkd); ++extern void toi_pre_atomic_restore_modules(struct toi_boot_kernel_data *bkd); ++ ++extern void toi_print_modules(void); ++ ++int toi_get_modules(void); ++void toi_put_modules(void); ++#endif +diff --git a/kernel/power/tuxonice_netlink.c b/kernel/power/tuxonice_netlink.c +new file mode 100644 +index 0000000..4c599d5 +--- /dev/null ++++ b/kernel/power/tuxonice_netlink.c +@@ -0,0 +1,344 @@ ++/* ++ * kernel/power/tuxonice_netlink.c ++ * ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * Functions for communicating with a userspace helper via netlink. ++ */ ++ ++ ++#include ++#include ++#include "tuxonice_netlink.h" ++#include "tuxonice.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_alloc.h" ++ ++static struct user_helper_data *uhd_list; ++ ++/* ++ * Refill our pool of SKBs for use in emergencies (eg, when eating memory and ++ * none can be allocated). ++ */ ++static void toi_fill_skb_pool(struct user_helper_data *uhd) ++{ ++ while (uhd->pool_level < uhd->pool_limit) { ++ struct sk_buff *new_skb = ++ alloc_skb(NLMSG_SPACE(uhd->skb_size), TOI_ATOMIC_GFP); ++ ++ if (!new_skb) ++ break; ++ ++ new_skb->next = uhd->emerg_skbs; ++ uhd->emerg_skbs = new_skb; ++ uhd->pool_level++; ++ } ++} ++ ++/* ++ * Try to allocate a single skb. If we can't get one, try to use one from ++ * our pool. ++ */ ++static struct sk_buff *toi_get_skb(struct user_helper_data *uhd) ++{ ++ struct sk_buff *skb = ++ alloc_skb(NLMSG_SPACE(uhd->skb_size), TOI_ATOMIC_GFP); ++ ++ if (skb) ++ return skb; ++ ++ skb = uhd->emerg_skbs; ++ if (skb) { ++ uhd->pool_level--; ++ uhd->emerg_skbs = skb->next; ++ skb->next = NULL; ++ } ++ ++ return skb; ++} ++ ++static void put_skb(struct user_helper_data *uhd, struct sk_buff *skb) ++{ ++ if (uhd->pool_level < uhd->pool_limit) { ++ skb->next = uhd->emerg_skbs; ++ uhd->emerg_skbs = skb; ++ } else ++ kfree_skb(skb); ++} ++ ++void toi_send_netlink_message(struct user_helper_data *uhd, ++ int type, void *params, size_t len) ++{ ++ struct sk_buff *skb; ++ struct nlmsghdr *nlh; ++ void *dest; ++ struct task_struct *t; ++ ++ if (uhd->pid == -1) ++ return; ++ ++ if (uhd->debug) ++ printk(KERN_ERR "toi_send_netlink_message: Send " ++ "message type %d.\n", type); ++ ++ skb = toi_get_skb(uhd); ++ if (!skb) { ++ printk(KERN_INFO "toi_netlink: Can't allocate skb!\n"); ++ return; ++ } ++ ++ /* NLMSG_PUT contains a hidden goto nlmsg_failure */ ++ nlh = NLMSG_PUT(skb, 0, uhd->sock_seq, type, len); ++ uhd->sock_seq++; ++ ++ dest = NLMSG_DATA(nlh); ++ if (params && len > 0) ++ memcpy(dest, params, len); ++ ++ netlink_unicast(uhd->nl, skb, uhd->pid, 0); ++ ++ read_lock(&tasklist_lock); ++ t = find_task_by_pid_ns(uhd->pid, &init_pid_ns); ++ if (!t) { ++ read_unlock(&tasklist_lock); ++ if (uhd->pid > -1) ++ printk(KERN_INFO "Hmm. Can't find the userspace task" ++ " %d.\n", uhd->pid); ++ return; ++ } ++ wake_up_process(t); ++ read_unlock(&tasklist_lock); ++ ++ yield(); ++ ++ return; ++ ++nlmsg_failure: ++ if (skb) ++ put_skb(uhd, skb); ++ ++ if (uhd->debug) ++ printk(KERN_ERR "toi_send_netlink_message: Failed to send " ++ "message type %d.\n", type); ++} ++EXPORT_SYMBOL_GPL(toi_send_netlink_message); ++ ++static void send_whether_debugging(struct user_helper_data *uhd) ++{ ++ static u8 is_debugging = 1; ++ ++ toi_send_netlink_message(uhd, NETLINK_MSG_IS_DEBUGGING, ++ &is_debugging, sizeof(u8)); ++} ++ ++/* ++ * Set the PF_NOFREEZE flag on the given process to ensure it can run whilst we ++ * are hibernating. ++ */ ++static int nl_set_nofreeze(struct user_helper_data *uhd, __u32 pid) ++{ ++ struct task_struct *t; ++ ++ if (uhd->debug) ++ printk(KERN_ERR "nl_set_nofreeze for pid %d.\n", pid); ++ ++ read_lock(&tasklist_lock); ++ t = find_task_by_pid_ns(pid, &init_pid_ns); ++ if (!t) { ++ read_unlock(&tasklist_lock); ++ printk(KERN_INFO "Strange. Can't find the userspace task %d.\n", ++ pid); ++ return -EINVAL; ++ } ++ ++ t->flags |= PF_NOFREEZE; ++ ++ read_unlock(&tasklist_lock); ++ uhd->pid = pid; ++ ++ toi_send_netlink_message(uhd, NETLINK_MSG_NOFREEZE_ACK, NULL, 0); ++ ++ return 0; ++} ++ ++/* ++ * Called when the userspace process has informed us that it's ready to roll. ++ */ ++static int nl_ready(struct user_helper_data *uhd, u32 version) ++{ ++ if (version != uhd->interface_version) { ++ printk(KERN_INFO "%s userspace process using invalid interface" ++ " version (%d - kernel wants %d). Trying to " ++ "continue without it.\n", ++ uhd->name, version, uhd->interface_version); ++ if (uhd->not_ready) ++ uhd->not_ready(); ++ return -EINVAL; ++ } ++ ++ complete(&uhd->wait_for_process); ++ ++ return 0; ++} ++ ++void toi_netlink_close_complete(struct user_helper_data *uhd) ++{ ++ if (uhd->nl) { ++ netlink_kernel_release(uhd->nl); ++ uhd->nl = NULL; ++ } ++ ++ while (uhd->emerg_skbs) { ++ struct sk_buff *next = uhd->emerg_skbs->next; ++ kfree_skb(uhd->emerg_skbs); ++ uhd->emerg_skbs = next; ++ } ++ ++ uhd->pid = -1; ++} ++EXPORT_SYMBOL_GPL(toi_netlink_close_complete); ++ ++static int toi_nl_gen_rcv_msg(struct user_helper_data *uhd, ++ struct sk_buff *skb, struct nlmsghdr *nlh) ++{ ++ int type = nlh->nlmsg_type; ++ int *data; ++ int err; ++ ++ if (uhd->debug) ++ printk(KERN_ERR "toi_user_rcv_skb: Received message %d.\n", ++ type); ++ ++ /* Let the more specific handler go first. It returns ++ * 1 for valid messages that it doesn't know. */ ++ err = uhd->rcv_msg(skb, nlh); ++ if (err != 1) ++ return err; ++ ++ /* Only allow one task to receive NOFREEZE privileges */ ++ if (type == NETLINK_MSG_NOFREEZE_ME && uhd->pid != -1) { ++ printk(KERN_INFO "Received extra nofreeze me requests.\n"); ++ return -EBUSY; ++ } ++ ++ data = NLMSG_DATA(nlh); ++ ++ switch (type) { ++ case NETLINK_MSG_NOFREEZE_ME: ++ return nl_set_nofreeze(uhd, nlh->nlmsg_pid); ++ case NETLINK_MSG_GET_DEBUGGING: ++ send_whether_debugging(uhd); ++ return 0; ++ case NETLINK_MSG_READY: ++ if (nlh->nlmsg_len != NLMSG_LENGTH(sizeof(u32))) { ++ printk(KERN_INFO "Invalid ready mesage.\n"); ++ if (uhd->not_ready) ++ uhd->not_ready(); ++ return -EINVAL; ++ } ++ return nl_ready(uhd, (u32) *data); ++ case NETLINK_MSG_CLEANUP: ++ toi_netlink_close_complete(uhd); ++ return 0; ++ } ++ ++ return -EINVAL; ++} ++ ++static void toi_user_rcv_skb(struct sk_buff *skb) ++{ ++ int err; ++ struct nlmsghdr *nlh; ++ struct user_helper_data *uhd = uhd_list; ++ ++ while (uhd && uhd->netlink_id != skb->sk->sk_protocol) ++ uhd = uhd->next; ++ ++ if (!uhd) ++ return; ++ ++ while (skb->len >= NLMSG_SPACE(0)) { ++ u32 rlen; ++ ++ nlh = (struct nlmsghdr *) skb->data; ++ if (nlh->nlmsg_len < sizeof(*nlh) || skb->len < nlh->nlmsg_len) ++ return; ++ ++ rlen = NLMSG_ALIGN(nlh->nlmsg_len); ++ if (rlen > skb->len) ++ rlen = skb->len; ++ ++ err = toi_nl_gen_rcv_msg(uhd, skb, nlh); ++ if (err) ++ netlink_ack(skb, nlh, err); ++ else if (nlh->nlmsg_flags & NLM_F_ACK) ++ netlink_ack(skb, nlh, 0); ++ skb_pull(skb, rlen); ++ } ++} ++ ++static int netlink_prepare(struct user_helper_data *uhd) ++{ ++ uhd->next = uhd_list; ++ uhd_list = uhd; ++ ++ uhd->sock_seq = 0x42c0ffee; ++ uhd->nl = netlink_kernel_create(&init_net, uhd->netlink_id, 0, ++ toi_user_rcv_skb, NULL, THIS_MODULE); ++ if (!uhd->nl) { ++ printk(KERN_INFO "Failed to allocate netlink socket for %s.\n", ++ uhd->name); ++ return -ENOMEM; ++ } ++ ++ toi_fill_skb_pool(uhd); ++ ++ return 0; ++} ++ ++void toi_netlink_close(struct user_helper_data *uhd) ++{ ++ struct task_struct *t; ++ ++ read_lock(&tasklist_lock); ++ t = find_task_by_pid_ns(uhd->pid, &init_pid_ns); ++ if (t) ++ t->flags &= ~PF_NOFREEZE; ++ read_unlock(&tasklist_lock); ++ ++ toi_send_netlink_message(uhd, NETLINK_MSG_CLEANUP, NULL, 0); ++} ++EXPORT_SYMBOL_GPL(toi_netlink_close); ++ ++int toi_netlink_setup(struct user_helper_data *uhd) ++{ ++ /* In case userui didn't cleanup properly on us */ ++ toi_netlink_close_complete(uhd); ++ ++ if (netlink_prepare(uhd) < 0) { ++ printk(KERN_INFO "Netlink prepare failed.\n"); ++ return 1; ++ } ++ ++ if (toi_launch_userspace_program(uhd->program, uhd->netlink_id, ++ UMH_WAIT_EXEC, uhd->debug) < 0) { ++ printk(KERN_INFO "Launch userspace program failed.\n"); ++ toi_netlink_close_complete(uhd); ++ return 1; ++ } ++ ++ /* Wait 2 seconds for the userspace process to make contact */ ++ wait_for_completion_timeout(&uhd->wait_for_process, 2*HZ); ++ ++ if (uhd->pid == -1) { ++ printk(KERN_INFO "%s: Failed to contact userspace process.\n", ++ uhd->name); ++ toi_netlink_close_complete(uhd); ++ return 1; ++ } ++ ++ return 0; ++} ++EXPORT_SYMBOL_GPL(toi_netlink_setup); +diff --git a/kernel/power/tuxonice_netlink.h b/kernel/power/tuxonice_netlink.h +new file mode 100644 +index 0000000..b8ef06e +--- /dev/null ++++ b/kernel/power/tuxonice_netlink.h +@@ -0,0 +1,62 @@ ++/* ++ * kernel/power/tuxonice_netlink.h ++ * ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * Declarations for functions for communicating with a userspace helper ++ * via netlink. ++ */ ++ ++#include ++#include ++ ++#define NETLINK_MSG_BASE 0x10 ++ ++#define NETLINK_MSG_READY 0x10 ++#define NETLINK_MSG_NOFREEZE_ME 0x16 ++#define NETLINK_MSG_GET_DEBUGGING 0x19 ++#define NETLINK_MSG_CLEANUP 0x24 ++#define NETLINK_MSG_NOFREEZE_ACK 0x27 ++#define NETLINK_MSG_IS_DEBUGGING 0x28 ++ ++struct user_helper_data { ++ int (*rcv_msg) (struct sk_buff *skb, struct nlmsghdr *nlh); ++ void (*not_ready) (void); ++ struct sock *nl; ++ u32 sock_seq; ++ pid_t pid; ++ char *comm; ++ char program[256]; ++ int pool_level; ++ int pool_limit; ++ struct sk_buff *emerg_skbs; ++ int skb_size; ++ int netlink_id; ++ char *name; ++ struct user_helper_data *next; ++ struct completion wait_for_process; ++ u32 interface_version; ++ int must_init; ++ int debug; ++}; ++ ++#ifdef CONFIG_NET ++int toi_netlink_setup(struct user_helper_data *uhd); ++void toi_netlink_close(struct user_helper_data *uhd); ++void toi_send_netlink_message(struct user_helper_data *uhd, ++ int type, void *params, size_t len); ++void toi_netlink_close_complete(struct user_helper_data *uhd); ++#else ++static inline int toi_netlink_setup(struct user_helper_data *uhd) ++{ ++ return 0; ++} ++ ++static inline void toi_netlink_close(struct user_helper_data *uhd) { }; ++static inline void toi_send_netlink_message(struct user_helper_data *uhd, ++ int type, void *params, size_t len) { }; ++static inline void toi_netlink_close_complete(struct user_helper_data *uhd) ++ { }; ++#endif +diff --git a/kernel/power/tuxonice_pagedir.c b/kernel/power/tuxonice_pagedir.c +new file mode 100644 +index 0000000..091c9e3 +--- /dev/null ++++ b/kernel/power/tuxonice_pagedir.c +@@ -0,0 +1,339 @@ ++/* ++ * kernel/power/tuxonice_pagedir.c ++ * ++ * Copyright (C) 1998-2001 Gabor Kuti ++ * Copyright (C) 1998,2001,2002 Pavel Machek ++ * Copyright (C) 2002-2003 Florent Chabaud ++ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * Routines for handling pagesets. ++ * Note that pbes aren't actually stored as such. They're stored as ++ * bitmaps and extents. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "tuxonice_pageflags.h" ++#include "tuxonice_ui.h" ++#include "tuxonice_pagedir.h" ++#include "tuxonice_prepare_image.h" ++#include "tuxonice.h" ++#include "tuxonice_builtin.h" ++#include "tuxonice_alloc.h" ++ ++static int ptoi_pfn; ++static struct pbe *this_low_pbe; ++static struct pbe **last_low_pbe_ptr; ++static struct memory_bitmap dup_map1, dup_map2; ++ ++void toi_reset_alt_image_pageset2_pfn(void) ++{ ++ memory_bm_position_reset(pageset2_map); ++} ++ ++static struct page *first_conflicting_page; ++ ++/* ++ * free_conflicting_pages ++ */ ++ ++static void free_conflicting_pages(void) ++{ ++ while (first_conflicting_page) { ++ struct page *next = ++ *((struct page **) kmap(first_conflicting_page)); ++ kunmap(first_conflicting_page); ++ toi__free_page(29, first_conflicting_page); ++ first_conflicting_page = next; ++ } ++} ++ ++/* __toi_get_nonconflicting_page ++ * ++ * Description: Gets order zero pages that won't be overwritten ++ * while copying the original pages. ++ */ ++ ++struct page *___toi_get_nonconflicting_page(int can_be_highmem) ++{ ++ struct page *page; ++ gfp_t flags = TOI_ATOMIC_GFP; ++ if (can_be_highmem) ++ flags |= __GFP_HIGHMEM; ++ ++ ++ if (test_toi_state(TOI_LOADING_ALT_IMAGE) && ++ pageset2_map && ++ (ptoi_pfn != BM_END_OF_MAP)) { ++ do { ++ ptoi_pfn = memory_bm_next_pfn(pageset2_map); ++ if (ptoi_pfn != BM_END_OF_MAP) { ++ page = pfn_to_page(ptoi_pfn); ++ if (!PagePageset1(page) && ++ (can_be_highmem || !PageHighMem(page))) ++ return page; ++ } ++ } while (ptoi_pfn != BM_END_OF_MAP); ++ } ++ ++ do { ++ page = toi_alloc_page(29, flags); ++ if (!page) { ++ printk(KERN_INFO "Failed to get nonconflicting " ++ "page.\n"); ++ return NULL; ++ } ++ if (PagePageset1(page)) { ++ struct page **next = (struct page **) kmap(page); ++ *next = first_conflicting_page; ++ first_conflicting_page = page; ++ kunmap(page); ++ } ++ } while (PagePageset1(page)); ++ ++ return page; ++} ++ ++unsigned long __toi_get_nonconflicting_page(void) ++{ ++ struct page *page = ___toi_get_nonconflicting_page(0); ++ return page ? (unsigned long) page_address(page) : 0; ++} ++ ++static struct pbe *get_next_pbe(struct page **page_ptr, struct pbe *this_pbe, ++ int highmem) ++{ ++ if (((((unsigned long) this_pbe) & (PAGE_SIZE - 1)) ++ + 2 * sizeof(struct pbe)) > PAGE_SIZE) { ++ struct page *new_page = ++ ___toi_get_nonconflicting_page(highmem); ++ if (!new_page) ++ return ERR_PTR(-ENOMEM); ++ this_pbe = (struct pbe *) kmap(new_page); ++ memset(this_pbe, 0, PAGE_SIZE); ++ *page_ptr = new_page; ++ } else ++ this_pbe++; ++ ++ return this_pbe; ++} ++ ++/** ++ * get_pageset1_load_addresses - generate pbes for conflicting pages ++ * ++ * We check here that pagedir & pages it points to won't collide ++ * with pages where we're going to restore from the loaded pages ++ * later. ++ * ++ * Returns: ++ * Zero on success, one if couldn't find enough pages (shouldn't ++ * happen). ++ **/ ++int toi_get_pageset1_load_addresses(void) ++{ ++ int pfn, highallocd = 0, lowallocd = 0; ++ int low_needed = pagedir1.size - get_highmem_size(pagedir1); ++ int high_needed = get_highmem_size(pagedir1); ++ int low_pages_for_highmem = 0; ++ gfp_t flags = GFP_ATOMIC | __GFP_NOWARN | __GFP_HIGHMEM; ++ struct page *page, *high_pbe_page = NULL, *last_high_pbe_page = NULL, ++ *low_pbe_page; ++ struct pbe **last_high_pbe_ptr = &restore_highmem_pblist, ++ *this_high_pbe = NULL; ++ int orig_low_pfn, orig_high_pfn; ++ int high_pbes_done = 0, low_pbes_done = 0; ++ int low_direct = 0, high_direct = 0, result = 0, i; ++ ++ /* ++ * We need to duplicate pageset1's map because memory_bm_next_pfn's ++ * state gets stomped on by the PagePageset1() test in setup_pbes. ++ */ ++ memory_bm_create(&dup_map1, GFP_ATOMIC, 0); ++ memory_bm_dup(pageset1_map, &dup_map1); ++ ++ memory_bm_create(&dup_map2, GFP_ATOMIC, 0); ++ memory_bm_dup(pageset1_map, &dup_map2); ++ ++ memory_bm_position_reset(pageset1_map); ++ memory_bm_position_reset(&dup_map1); ++ memory_bm_position_reset(&dup_map2); ++ ++ last_low_pbe_ptr = &restore_pblist; ++ ++ /* First, allocate pages for the start of our pbe lists. */ ++ if (high_needed) { ++ high_pbe_page = ___toi_get_nonconflicting_page(1); ++ if (!high_pbe_page) { ++ result = -ENOMEM; ++ goto out; ++ } ++ this_high_pbe = (struct pbe *) kmap(high_pbe_page); ++ memset(this_high_pbe, 0, PAGE_SIZE); ++ } ++ ++ low_pbe_page = ___toi_get_nonconflicting_page(0); ++ if (!low_pbe_page) { ++ result = -ENOMEM; ++ goto out; ++ } ++ this_low_pbe = (struct pbe *) page_address(low_pbe_page); ++ ++ /* ++ * Next, allocate the number of pages we need. ++ */ ++ ++ i = low_needed + high_needed; ++ ++ do { ++ int is_high; ++ ++ if (i == low_needed) ++ flags &= ~__GFP_HIGHMEM; ++ ++ page = toi_alloc_page(30, flags); ++ BUG_ON(!page); ++ ++ SetPagePageset1Copy(page); ++ is_high = PageHighMem(page); ++ ++ if (PagePageset1(page)) { ++ if (is_high) ++ high_direct++; ++ else ++ low_direct++; ++ } else { ++ if (is_high) ++ highallocd++; ++ else ++ lowallocd++; ++ } ++ } while (--i); ++ ++ high_needed -= high_direct; ++ low_needed -= low_direct; ++ ++ /* ++ * Do we need to use some lowmem pages for the copies of highmem ++ * pages? ++ */ ++ if (high_needed > highallocd) { ++ low_pages_for_highmem = high_needed - highallocd; ++ high_needed -= low_pages_for_highmem; ++ low_needed += low_pages_for_highmem; ++ } ++ ++ /* ++ * Now generate our pbes (which will be used for the atomic restore), ++ * and free unneeded pages. ++ */ ++ memory_bm_position_reset(pageset1_copy_map); ++ for (pfn = memory_bm_next_pfn(pageset1_copy_map); pfn != BM_END_OF_MAP; ++ pfn = memory_bm_next_pfn(pageset1_copy_map)) { ++ int is_high; ++ page = pfn_to_page(pfn); ++ is_high = PageHighMem(page); ++ ++ if (PagePageset1(page)) ++ continue; ++ ++ /* Nope. We're going to use this page. Add a pbe. */ ++ if (is_high || low_pages_for_highmem) { ++ struct page *orig_page; ++ high_pbes_done++; ++ if (!is_high) ++ low_pages_for_highmem--; ++ do { ++ orig_high_pfn = memory_bm_next_pfn(&dup_map1); ++ BUG_ON(orig_high_pfn == BM_END_OF_MAP); ++ orig_page = pfn_to_page(orig_high_pfn); ++ } while (!PageHighMem(orig_page) || ++ PagePageset1Copy(orig_page)); ++ ++ this_high_pbe->orig_address = orig_page; ++ this_high_pbe->address = page; ++ this_high_pbe->next = NULL; ++ if (last_high_pbe_page != high_pbe_page) { ++ *last_high_pbe_ptr = ++ (struct pbe *) high_pbe_page; ++ if (!last_high_pbe_page) ++ last_high_pbe_page = high_pbe_page; ++ } else ++ *last_high_pbe_ptr = this_high_pbe; ++ last_high_pbe_ptr = &this_high_pbe->next; ++ if (last_high_pbe_page != high_pbe_page) { ++ kunmap(last_high_pbe_page); ++ last_high_pbe_page = high_pbe_page; ++ } ++ this_high_pbe = get_next_pbe(&high_pbe_page, ++ this_high_pbe, 1); ++ if (IS_ERR(this_high_pbe)) { ++ printk(KERN_INFO ++ "This high pbe is an error.\n"); ++ return -ENOMEM; ++ } ++ } else { ++ struct page *orig_page; ++ low_pbes_done++; ++ do { ++ orig_low_pfn = memory_bm_next_pfn(&dup_map2); ++ BUG_ON(orig_low_pfn == BM_END_OF_MAP); ++ orig_page = pfn_to_page(orig_low_pfn); ++ } while (PageHighMem(orig_page) || ++ PagePageset1Copy(orig_page)); ++ ++ this_low_pbe->orig_address = page_address(orig_page); ++ this_low_pbe->address = page_address(page); ++ this_low_pbe->next = NULL; ++ *last_low_pbe_ptr = this_low_pbe; ++ last_low_pbe_ptr = &this_low_pbe->next; ++ this_low_pbe = get_next_pbe(&low_pbe_page, ++ this_low_pbe, 0); ++ if (IS_ERR(this_low_pbe)) { ++ printk(KERN_INFO "this_low_pbe is an error.\n"); ++ return -ENOMEM; ++ } ++ } ++ } ++ ++ if (high_pbe_page) ++ kunmap(high_pbe_page); ++ ++ if (last_high_pbe_page != high_pbe_page) { ++ if (last_high_pbe_page) ++ kunmap(last_high_pbe_page); ++ toi__free_page(29, high_pbe_page); ++ } ++ ++ free_conflicting_pages(); ++ ++out: ++ memory_bm_free(&dup_map1, 0); ++ memory_bm_free(&dup_map2, 0); ++ ++ return result; ++} ++ ++int add_boot_kernel_data_pbe(void) ++{ ++ this_low_pbe->address = (char *) __toi_get_nonconflicting_page(); ++ if (!this_low_pbe->address) { ++ printk(KERN_INFO "Failed to get bkd atomic restore buffer."); ++ return -ENOMEM; ++ } ++ ++ toi_bkd.size = sizeof(toi_bkd); ++ memcpy(this_low_pbe->address, &toi_bkd, sizeof(toi_bkd)); ++ ++ *last_low_pbe_ptr = this_low_pbe; ++ this_low_pbe->orig_address = (char *) boot_kernel_data_buffer; ++ this_low_pbe->next = NULL; ++ return 0; ++} +diff --git a/kernel/power/tuxonice_pagedir.h b/kernel/power/tuxonice_pagedir.h +new file mode 100644 +index 0000000..d08e4b1 +--- /dev/null ++++ b/kernel/power/tuxonice_pagedir.h +@@ -0,0 +1,50 @@ ++/* ++ * kernel/power/tuxonice_pagedir.h ++ * ++ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * Declarations for routines for handling pagesets. ++ */ ++ ++#ifndef KERNEL_POWER_PAGEDIR_H ++#define KERNEL_POWER_PAGEDIR_H ++ ++/* Pagedir ++ * ++ * Contains the metadata for a set of pages saved in the image. ++ */ ++ ++struct pagedir { ++ int id; ++ unsigned long size; ++#ifdef CONFIG_HIGHMEM ++ unsigned long size_high; ++#endif ++}; ++ ++#ifdef CONFIG_HIGHMEM ++#define get_highmem_size(pagedir) (pagedir.size_high) ++#define set_highmem_size(pagedir, sz) do { pagedir.size_high = sz; } while (0) ++#define inc_highmem_size(pagedir) do { pagedir.size_high++; } while (0) ++#define get_lowmem_size(pagedir) (pagedir.size - pagedir.size_high) ++#else ++#define get_highmem_size(pagedir) (0) ++#define set_highmem_size(pagedir, sz) do { } while (0) ++#define inc_highmem_size(pagedir) do { } while (0) ++#define get_lowmem_size(pagedir) (pagedir.size) ++#endif ++ ++extern struct pagedir pagedir1, pagedir2; ++ ++extern void toi_copy_pageset1(void); ++ ++extern int toi_get_pageset1_load_addresses(void); ++ ++extern unsigned long __toi_get_nonconflicting_page(void); ++struct page *___toi_get_nonconflicting_page(int can_be_highmem); ++ ++extern void toi_reset_alt_image_pageset2_pfn(void); ++extern int add_boot_kernel_data_pbe(void); ++#endif +diff --git a/kernel/power/tuxonice_pageflags.c b/kernel/power/tuxonice_pageflags.c +new file mode 100644 +index 0000000..e9ec5b5 +--- /dev/null ++++ b/kernel/power/tuxonice_pageflags.c +@@ -0,0 +1,28 @@ ++/* ++ * kernel/power/tuxonice_pageflags.c ++ * ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * Routines for serialising and relocating pageflags in which we ++ * store our image metadata. ++ */ ++ ++#include ++#include "tuxonice_pageflags.h" ++#include "power.h" ++ ++int toi_pageflags_space_needed(void) ++{ ++ int total = 0; ++ struct bm_block *bb; ++ ++ total = sizeof(unsigned int); ++ ++ list_for_each_entry(bb, &pageset1_map->blocks, hook) ++ total += 2 * sizeof(unsigned long) + PAGE_SIZE; ++ ++ return total; ++} ++EXPORT_SYMBOL_GPL(toi_pageflags_space_needed); +diff --git a/kernel/power/tuxonice_pageflags.h b/kernel/power/tuxonice_pageflags.h +new file mode 100644 +index 0000000..d5aa7b1 +--- /dev/null ++++ b/kernel/power/tuxonice_pageflags.h +@@ -0,0 +1,72 @@ ++/* ++ * kernel/power/tuxonice_pageflags.h ++ * ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ */ ++ ++#ifndef KERNEL_POWER_TUXONICE_PAGEFLAGS_H ++#define KERNEL_POWER_TUXONICE_PAGEFLAGS_H ++ ++extern struct memory_bitmap *pageset1_map; ++extern struct memory_bitmap *pageset1_copy_map; ++extern struct memory_bitmap *pageset2_map; ++extern struct memory_bitmap *page_resave_map; ++extern struct memory_bitmap *io_map; ++extern struct memory_bitmap *nosave_map; ++extern struct memory_bitmap *free_map; ++ ++#define PagePageset1(page) \ ++ (memory_bm_test_bit(pageset1_map, page_to_pfn(page))) ++#define SetPagePageset1(page) \ ++ (memory_bm_set_bit(pageset1_map, page_to_pfn(page))) ++#define ClearPagePageset1(page) \ ++ (memory_bm_clear_bit(pageset1_map, page_to_pfn(page))) ++ ++#define PagePageset1Copy(page) \ ++ (memory_bm_test_bit(pageset1_copy_map, page_to_pfn(page))) ++#define SetPagePageset1Copy(page) \ ++ (memory_bm_set_bit(pageset1_copy_map, page_to_pfn(page))) ++#define ClearPagePageset1Copy(page) \ ++ (memory_bm_clear_bit(pageset1_copy_map, page_to_pfn(page))) ++ ++#define PagePageset2(page) \ ++ (memory_bm_test_bit(pageset2_map, page_to_pfn(page))) ++#define SetPagePageset2(page) \ ++ (memory_bm_set_bit(pageset2_map, page_to_pfn(page))) ++#define ClearPagePageset2(page) \ ++ (memory_bm_clear_bit(pageset2_map, page_to_pfn(page))) ++ ++#define PageWasRW(page) \ ++ (memory_bm_test_bit(pageset2_map, page_to_pfn(page))) ++#define SetPageWasRW(page) \ ++ (memory_bm_set_bit(pageset2_map, page_to_pfn(page))) ++#define ClearPageWasRW(page) \ ++ (memory_bm_clear_bit(pageset2_map, page_to_pfn(page))) ++ ++#define PageResave(page) (page_resave_map ? \ ++ memory_bm_test_bit(page_resave_map, page_to_pfn(page)) : 0) ++#define SetPageResave(page) \ ++ (memory_bm_set_bit(page_resave_map, page_to_pfn(page))) ++#define ClearPageResave(page) \ ++ (memory_bm_clear_bit(page_resave_map, page_to_pfn(page))) ++ ++#define PageNosave(page) (nosave_map ? \ ++ memory_bm_test_bit(nosave_map, page_to_pfn(page)) : 0) ++#define SetPageNosave(page) \ ++ (memory_bm_set_bit(nosave_map, page_to_pfn(page))) ++#define ClearPageNosave(page) \ ++ (memory_bm_clear_bit(nosave_map, page_to_pfn(page))) ++ ++#define PageNosaveFree(page) (free_map ? \ ++ memory_bm_test_bit(free_map, page_to_pfn(page)) : 0) ++#define SetPageNosaveFree(page) \ ++ (memory_bm_set_bit(free_map, page_to_pfn(page))) ++#define ClearPageNosaveFree(page) \ ++ (memory_bm_clear_bit(free_map, page_to_pfn(page))) ++ ++extern void save_pageflags(struct memory_bitmap *pagemap); ++extern int load_pageflags(struct memory_bitmap *pagemap); ++extern int toi_pageflags_space_needed(void); ++#endif +diff --git a/kernel/power/tuxonice_power_off.c b/kernel/power/tuxonice_power_off.c +new file mode 100644 +index 0000000..07e39c0 +--- /dev/null ++++ b/kernel/power/tuxonice_power_off.c +@@ -0,0 +1,285 @@ ++/* ++ * kernel/power/tuxonice_power_off.c ++ * ++ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * Support for powering down. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "tuxonice.h" ++#include "tuxonice_ui.h" ++#include "tuxonice_power_off.h" ++#include "tuxonice_sysfs.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_io.h" ++ ++unsigned long toi_poweroff_method; /* 0 - Kernel power off */ ++EXPORT_SYMBOL_GPL(toi_poweroff_method); ++ ++static int wake_delay; ++static char lid_state_file[256], wake_alarm_dir[256]; ++static struct file *lid_file, *alarm_file, *epoch_file; ++static int post_wake_state = -1; ++ ++static int did_suspend_to_both; ++ ++/* ++ * __toi_power_down ++ * Functionality : Powers down or reboots the computer once the image ++ * has been written to disk. ++ * Key Assumptions : Able to reboot/power down via code called or that ++ * the warning emitted if the calls fail will be visible ++ * to the user (ie printk resumes devices). ++ */ ++ ++static void __toi_power_down(int method) ++{ ++ int error; ++ ++ toi_cond_pause(1, test_action_state(TOI_REBOOT) ? "Ready to reboot." : ++ "Powering down."); ++ ++ if (test_result_state(TOI_ABORTED)) ++ goto out; ++ ++ if (test_action_state(TOI_REBOOT)) ++ kernel_restart(NULL); ++ ++ switch (method) { ++ case 0: ++ break; ++ case 3: ++ /* ++ * Re-read the overwritten part of pageset2 to make post-resume ++ * faster. ++ */ ++ if (read_pageset2(1)) ++ panic("Attempt to reload pagedir 2 failed. " ++ "Try rebooting."); ++ ++ pm_prepare_console(); ++ ++ error = pm_notifier_call_chain(PM_SUSPEND_PREPARE); ++ if (!error) { ++ error = suspend_devices_and_enter(PM_SUSPEND_MEM); ++ if (!error) ++ did_suspend_to_both = 1; ++ } ++ pm_notifier_call_chain(PM_POST_SUSPEND); ++ pm_restore_console(); ++ ++ /* Success - we're now post-resume-from-ram */ ++ if (did_suspend_to_both) ++ return; ++ ++ /* Failed to suspend to ram - do normal power off */ ++ break; ++ case 4: ++ /* ++ * If succeeds, doesn't return. If fails, do a simple ++ * powerdown. ++ */ ++ hibernation_platform_enter(); ++ break; ++ case 5: ++ /* Historic entry only now */ ++ break; ++ } ++ ++ if (method && method != 5) ++ toi_cond_pause(1, ++ "Falling back to alternate power off method."); ++ ++ if (test_result_state(TOI_ABORTED)) ++ goto out; ++ ++ kernel_power_off(); ++ kernel_halt(); ++ toi_cond_pause(1, "Powerdown failed."); ++ while (1) ++ cpu_relax(); ++ ++out: ++ if (read_pageset2(1)) ++ panic("Attempt to reload pagedir 2 failed. Try rebooting."); ++ return; ++} ++ ++#define CLOSE_FILE(file) \ ++ if (file) { \ ++ filp_close(file, NULL); file = NULL; \ ++ } ++ ++static void powerdown_cleanup(int toi_or_resume) ++{ ++ if (!toi_or_resume) ++ return; ++ ++ CLOSE_FILE(lid_file); ++ CLOSE_FILE(alarm_file); ++ CLOSE_FILE(epoch_file); ++} ++ ++static void open_file(char *format, char *arg, struct file **var, int mode, ++ char *desc) ++{ ++ char buf[256]; ++ ++ if (strlen(arg)) { ++ sprintf(buf, format, arg); ++ *var = filp_open(buf, mode, 0); ++ if (IS_ERR(*var) || !*var) { ++ printk(KERN_INFO "Failed to open %s file '%s' (%p).\n", ++ desc, buf, *var); ++ *var = NULL; ++ } ++ } ++} ++ ++static int powerdown_init(int toi_or_resume) ++{ ++ if (!toi_or_resume) ++ return 0; ++ ++ did_suspend_to_both = 0; ++ ++ open_file("/proc/acpi/button/%s/state", lid_state_file, &lid_file, ++ O_RDONLY, "lid"); ++ ++ if (strlen(wake_alarm_dir)) { ++ open_file("/sys/class/rtc/%s/wakealarm", wake_alarm_dir, ++ &alarm_file, O_WRONLY, "alarm"); ++ ++ open_file("/sys/class/rtc/%s/since_epoch", wake_alarm_dir, ++ &epoch_file, O_RDONLY, "epoch"); ++ } ++ ++ return 0; ++} ++ ++static int lid_closed(void) ++{ ++ char array[25]; ++ ssize_t size; ++ loff_t pos = 0; ++ ++ if (!lid_file) ++ return 0; ++ ++ size = vfs_read(lid_file, (char __user *) array, 25, &pos); ++ if ((int) size < 1) { ++ printk(KERN_INFO "Failed to read lid state file (%d).\n", ++ (int) size); ++ return 0; ++ } ++ ++ if (!strcmp(array, "state: closed\n")) ++ return 1; ++ ++ return 0; ++} ++ ++static void write_alarm_file(int value) ++{ ++ ssize_t size; ++ char buf[40]; ++ loff_t pos = 0; ++ ++ if (!alarm_file) ++ return; ++ ++ sprintf(buf, "%d\n", value); ++ ++ size = vfs_write(alarm_file, (char __user *)buf, strlen(buf), &pos); ++ ++ if (size < 0) ++ printk(KERN_INFO "Error %d writing alarm value %s.\n", ++ (int) size, buf); ++} ++ ++/** ++ * toi_check_resleep: See whether to powerdown again after waking. ++ * ++ * After waking, check whether we should powerdown again in a (usually ++ * different) way. We only do this if the lid switch is still closed. ++ */ ++void toi_check_resleep(void) ++{ ++ /* We only return if we suspended to ram and woke. */ ++ if (lid_closed() && post_wake_state >= 0) ++ __toi_power_down(post_wake_state); ++} ++ ++void toi_power_down(void) ++{ ++ if (alarm_file && wake_delay) { ++ char array[25]; ++ loff_t pos = 0; ++ size_t size = vfs_read(epoch_file, (char __user *) array, 25, ++ &pos); ++ ++ if (((int) size) < 1) ++ printk(KERN_INFO "Failed to read epoch file (%d).\n", ++ (int) size); ++ else { ++ unsigned long since_epoch; ++ if (!strict_strtoul(array, 0, &since_epoch)) { ++ /* Clear any wakeup time. */ ++ write_alarm_file(0); ++ ++ /* Set new wakeup time. */ ++ write_alarm_file(since_epoch + wake_delay); ++ } ++ } ++ } ++ ++ __toi_power_down(toi_poweroff_method); ++ ++ toi_check_resleep(); ++} ++EXPORT_SYMBOL_GPL(toi_power_down); ++ ++static struct toi_sysfs_data sysfs_params[] = { ++#if defined(CONFIG_ACPI) ++ SYSFS_STRING("lid_file", SYSFS_RW, lid_state_file, 256, 0, NULL), ++ SYSFS_INT("wake_delay", SYSFS_RW, &wake_delay, 0, INT_MAX, 0, NULL), ++ SYSFS_STRING("wake_alarm_dir", SYSFS_RW, wake_alarm_dir, 256, 0, NULL), ++ SYSFS_INT("post_wake_state", SYSFS_RW, &post_wake_state, -1, 5, 0, ++ NULL), ++ SYSFS_UL("powerdown_method", SYSFS_RW, &toi_poweroff_method, 0, 5, 0), ++ SYSFS_INT("did_suspend_to_both", SYSFS_READONLY, &did_suspend_to_both, ++ 0, 0, 0, NULL) ++#endif ++}; ++ ++static struct toi_module_ops powerdown_ops = { ++ .type = MISC_HIDDEN_MODULE, ++ .name = "poweroff", ++ .initialise = powerdown_init, ++ .cleanup = powerdown_cleanup, ++ .directory = "[ROOT]", ++ .module = THIS_MODULE, ++ .sysfs_data = sysfs_params, ++ .num_sysfs_entries = sizeof(sysfs_params) / ++ sizeof(struct toi_sysfs_data), ++}; ++ ++int toi_poweroff_init(void) ++{ ++ return toi_register_module(&powerdown_ops); ++} ++ ++void toi_poweroff_exit(void) ++{ ++ toi_unregister_module(&powerdown_ops); ++} +diff --git a/kernel/power/tuxonice_power_off.h b/kernel/power/tuxonice_power_off.h +new file mode 100644 +index 0000000..9aa0ea8 +--- /dev/null ++++ b/kernel/power/tuxonice_power_off.h +@@ -0,0 +1,24 @@ ++/* ++ * kernel/power/tuxonice_power_off.h ++ * ++ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * Support for the powering down. ++ */ ++ ++int toi_pm_state_finish(void); ++void toi_power_down(void); ++extern unsigned long toi_poweroff_method; ++int toi_poweroff_init(void); ++void toi_poweroff_exit(void); ++void toi_check_resleep(void); ++ ++extern int platform_begin(int platform_mode); ++extern int platform_pre_snapshot(int platform_mode); ++extern void platform_leave(int platform_mode); ++extern void platform_end(int platform_mode); ++extern void platform_finish(int platform_mode); ++extern int platform_pre_restore(int platform_mode); ++extern void platform_restore_cleanup(int platform_mode); +diff --git a/kernel/power/tuxonice_prepare_image.c b/kernel/power/tuxonice_prepare_image.c +new file mode 100644 +index 0000000..e58225e +--- /dev/null ++++ b/kernel/power/tuxonice_prepare_image.c +@@ -0,0 +1,1093 @@ ++/* ++ * kernel/power/tuxonice_prepare_image.c ++ * ++ * Copyright (C) 2003-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * We need to eat memory until we can: ++ * 1. Perform the save without changing anything (RAM_NEEDED < #pages) ++ * 2. Fit it all in available space (toiActiveAllocator->available_space() >= ++ * main_storage_needed()) ++ * 3. Reload the pagedir and pageset1 to places that don't collide with their ++ * final destinations, not knowing to what extent the resumed kernel will ++ * overlap with the one loaded at boot time. I think the resumed kernel ++ * should overlap completely, but I don't want to rely on this as it is ++ * an unproven assumption. We therefore assume there will be no overlap at ++ * all (worse case). ++ * 4. Meet the user's requested limit (if any) on the size of the image. ++ * The limit is in MB, so pages/256 (assuming 4K pages). ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "tuxonice_pageflags.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_io.h" ++#include "tuxonice_ui.h" ++#include "tuxonice_prepare_image.h" ++#include "tuxonice.h" ++#include "tuxonice_extent.h" ++#include "tuxonice_checksum.h" ++#include "tuxonice_sysfs.h" ++#include "tuxonice_alloc.h" ++#include "tuxonice_atomic_copy.h" ++ ++static unsigned long num_nosave, main_storage_allocated, storage_limit, ++ header_storage_needed; ++unsigned long extra_pd1_pages_allowance = ++ CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE; ++long image_size_limit; ++static int no_ps2_needed; ++ ++struct attention_list { ++ struct task_struct *task; ++ struct attention_list *next; ++}; ++ ++static struct attention_list *attention_list; ++ ++#define PAGESET1 0 ++#define PAGESET2 1 ++ ++void free_attention_list(void) ++{ ++ struct attention_list *last = NULL; ++ ++ while (attention_list) { ++ last = attention_list; ++ attention_list = attention_list->next; ++ toi_kfree(6, last, sizeof(*last)); ++ } ++} ++ ++static int build_attention_list(void) ++{ ++ int i, task_count = 0; ++ struct task_struct *p; ++ struct attention_list *next; ++ ++ /* ++ * Count all userspace process (with task->mm) marked PF_NOFREEZE. ++ */ ++ read_lock(&tasklist_lock); ++ for_each_process(p) ++ if ((p->flags & PF_NOFREEZE) || p == current) ++ task_count++; ++ read_unlock(&tasklist_lock); ++ ++ /* ++ * Allocate attention list structs. ++ */ ++ for (i = 0; i < task_count; i++) { ++ struct attention_list *this = ++ toi_kzalloc(6, sizeof(struct attention_list), ++ TOI_WAIT_GFP); ++ if (!this) { ++ printk(KERN_INFO "Failed to allocate slab for " ++ "attention list.\n"); ++ free_attention_list(); ++ return 1; ++ } ++ this->next = NULL; ++ if (attention_list) ++ this->next = attention_list; ++ attention_list = this; ++ } ++ ++ next = attention_list; ++ read_lock(&tasklist_lock); ++ for_each_process(p) ++ if ((p->flags & PF_NOFREEZE) || p == current) { ++ next->task = p; ++ next = next->next; ++ } ++ read_unlock(&tasklist_lock); ++ return 0; ++} ++ ++static void pageset2_full(void) ++{ ++ struct zone *zone; ++ struct page *page; ++ unsigned long flags; ++ int i; ++ ++ for_each_populated_zone(zone) { ++ spin_lock_irqsave(&zone->lru_lock, flags); ++ for_each_lru(i) { ++ if (!zone_page_state(zone, NR_LRU_BASE + i)) ++ continue; ++ ++ list_for_each_entry(page, &zone->lru[i].list, lru) { ++ struct address_space *mapping; ++ ++ mapping = page_mapping(page); ++ if (!mapping || !mapping->host || ++ !(mapping->host->i_flags & S_ATOMIC_COPY)) ++ SetPagePageset2(page); ++ } ++ } ++ spin_unlock_irqrestore(&zone->lru_lock, flags); ++ } ++} ++ ++/* ++ * toi_mark_task_as_pageset ++ * Functionality : Marks all the saveable pages belonging to a given process ++ * as belonging to a particular pageset. ++ */ ++ ++static void toi_mark_task_as_pageset(struct task_struct *t, int pageset2) ++{ ++ struct vm_area_struct *vma; ++ struct mm_struct *mm; ++ ++ mm = t->active_mm; ++ ++ if (!mm || !mm->mmap) ++ return; ++ ++ if (!irqs_disabled()) ++ down_read(&mm->mmap_sem); ++ ++ for (vma = mm->mmap; vma; vma = vma->vm_next) { ++ unsigned long posn; ++ ++ if (!vma->vm_start || ++ vma->vm_flags & (VM_IO | VM_RESERVED | VM_PFNMAP)) ++ continue; ++ ++ for (posn = vma->vm_start; posn < vma->vm_end; ++ posn += PAGE_SIZE) { ++ struct page *page = follow_page(vma, posn, 0); ++ struct address_space *mapping; ++ ++ if (!page || !pfn_valid(page_to_pfn(page))) ++ continue; ++ ++ mapping = page_mapping(page); ++ if (mapping && mapping->host && ++ mapping->host->i_flags & S_ATOMIC_COPY) ++ continue; ++ ++ if (pageset2) ++ SetPagePageset2(page); ++ else { ++ ClearPagePageset2(page); ++ SetPagePageset1(page); ++ } ++ } ++ } ++ ++ if (!irqs_disabled()) ++ up_read(&mm->mmap_sem); ++} ++ ++static void mark_tasks(int pageset) ++{ ++ struct task_struct *p; ++ ++ read_lock(&tasklist_lock); ++ for_each_process(p) { ++ if (!p->mm) ++ continue; ++ ++ if (p->flags & PF_KTHREAD) ++ continue; ++ ++ toi_mark_task_as_pageset(p, pageset); ++ } ++ read_unlock(&tasklist_lock); ++ ++} ++ ++/* mark_pages_for_pageset2 ++ * ++ * Description: Mark unshared pages in processes not needed for hibernate as ++ * being able to be written out in a separate pagedir. ++ * HighMem pages are simply marked as pageset2. They won't be ++ * needed during hibernate. ++ */ ++ ++static void toi_mark_pages_for_pageset2(void) ++{ ++ struct attention_list *this = attention_list; ++ ++ memory_bm_clear(pageset2_map); ++ ++ if (test_action_state(TOI_NO_PAGESET2) || no_ps2_needed) ++ return; ++ ++ if (test_action_state(TOI_PAGESET2_FULL)) ++ pageset2_full(); ++ else ++ mark_tasks(PAGESET2); ++ ++ /* ++ * Because the tasks in attention_list are ones related to hibernating, ++ * we know that they won't go away under us. ++ */ ++ ++ while (this) { ++ if (!test_result_state(TOI_ABORTED)) ++ toi_mark_task_as_pageset(this->task, PAGESET1); ++ this = this->next; ++ } ++} ++ ++/* ++ * The atomic copy of pageset1 is stored in pageset2 pages. ++ * But if pageset1 is larger (normally only just after boot), ++ * we need to allocate extra pages to store the atomic copy. ++ * The following data struct and functions are used to handle ++ * the allocation and freeing of that memory. ++ */ ++ ++static unsigned long extra_pages_allocated; ++ ++struct extras { ++ struct page *page; ++ int order; ++ struct extras *next; ++}; ++ ++static struct extras *extras_list; ++ ++/* toi_free_extra_pagedir_memory ++ * ++ * Description: Free previously allocated extra pagedir memory. ++ */ ++void toi_free_extra_pagedir_memory(void) ++{ ++ /* Free allocated pages */ ++ while (extras_list) { ++ struct extras *this = extras_list; ++ int i; ++ ++ extras_list = this->next; ++ ++ for (i = 0; i < (1 << this->order); i++) ++ ClearPageNosave(this->page + i); ++ ++ toi_free_pages(9, this->page, this->order); ++ toi_kfree(7, this, sizeof(*this)); ++ } ++ ++ extra_pages_allocated = 0; ++} ++ ++/* toi_allocate_extra_pagedir_memory ++ * ++ * Description: Allocate memory for making the atomic copy of pagedir1 in the ++ * case where it is bigger than pagedir2. ++ * Arguments: int num_to_alloc: Number of extra pages needed. ++ * Result: int. Number of extra pages we now have allocated. ++ */ ++static int toi_allocate_extra_pagedir_memory(int extra_pages_needed) ++{ ++ int j, order, num_to_alloc = extra_pages_needed - extra_pages_allocated; ++ gfp_t flags = TOI_ATOMIC_GFP; ++ ++ if (num_to_alloc < 1) ++ return 0; ++ ++ order = fls(num_to_alloc); ++ if (order >= MAX_ORDER) ++ order = MAX_ORDER - 1; ++ ++ while (num_to_alloc) { ++ struct page *newpage; ++ unsigned long virt; ++ struct extras *extras_entry; ++ ++ while ((1 << order) > num_to_alloc) ++ order--; ++ ++ extras_entry = (struct extras *) toi_kzalloc(7, ++ sizeof(struct extras), TOI_ATOMIC_GFP); ++ ++ if (!extras_entry) ++ return extra_pages_allocated; ++ ++ virt = toi_get_free_pages(9, flags, order); ++ while (!virt && order) { ++ order--; ++ virt = toi_get_free_pages(9, flags, order); ++ } ++ ++ if (!virt) { ++ toi_kfree(7, extras_entry, sizeof(*extras_entry)); ++ return extra_pages_allocated; ++ } ++ ++ newpage = virt_to_page(virt); ++ ++ extras_entry->page = newpage; ++ extras_entry->order = order; ++ extras_entry->next = NULL; ++ ++ if (extras_list) ++ extras_entry->next = extras_list; ++ ++ extras_list = extras_entry; ++ ++ for (j = 0; j < (1 << order); j++) { ++ SetPageNosave(newpage + j); ++ SetPagePageset1Copy(newpage + j); ++ } ++ ++ extra_pages_allocated += (1 << order); ++ num_to_alloc -= (1 << order); ++ } ++ ++ return extra_pages_allocated; ++} ++ ++/* ++ * real_nr_free_pages: Count pcp pages for a zone type or all zones ++ * (-1 for all, otherwise zone_idx() result desired). ++ */ ++unsigned long real_nr_free_pages(unsigned long zone_idx_mask) ++{ ++ struct zone *zone; ++ int result = 0, cpu; ++ ++ /* PCP lists */ ++ for_each_populated_zone(zone) { ++ if (!(zone_idx_mask & (1 << zone_idx(zone)))) ++ continue; ++ ++ for_each_online_cpu(cpu) { ++ struct per_cpu_pageset *pset = zone_pcp(zone, cpu); ++ struct per_cpu_pages *pcp = &pset->pcp; ++ result += pcp->count; ++ } ++ ++ result += zone_page_state(zone, NR_FREE_PAGES); ++ } ++ return result; ++} ++EXPORT_SYMBOL_GPL(real_nr_free_pages); ++ ++/* ++ * Discover how much extra memory will be required by the drivers ++ * when they're asked to hibernate. We can then ensure that amount ++ * of memory is available when we really want it. ++ */ ++static void get_extra_pd1_allowance(void) ++{ ++ unsigned long orig_num_free = real_nr_free_pages(all_zones_mask), final; ++ ++ toi_prepare_status(CLEAR_BAR, "Finding allowance for drivers."); ++ ++ if (toi_go_atomic(PMSG_FREEZE, 1)) ++ return; ++ ++ final = real_nr_free_pages(all_zones_mask); ++ toi_end_atomic(ATOMIC_ALL_STEPS, 1, 0); ++ ++ extra_pd1_pages_allowance = (orig_num_free > final) ? ++ orig_num_free - final + MIN_EXTRA_PAGES_ALLOWANCE : ++ MIN_EXTRA_PAGES_ALLOWANCE; ++} ++ ++/* ++ * Amount of storage needed, possibly taking into account the ++ * expected compression ratio and possibly also ignoring our ++ * allowance for extra pages. ++ */ ++static unsigned long main_storage_needed(int use_ecr, ++ int ignore_extra_pd1_allow) ++{ ++ return (pagedir1.size + pagedir2.size + ++ (ignore_extra_pd1_allow ? 0 : extra_pd1_pages_allowance)) * ++ (use_ecr ? toi_expected_compression_ratio() : 100) / 100; ++} ++ ++/* ++ * Storage needed for the image header, in bytes until the return. ++ */ ++unsigned long get_header_storage_needed(void) ++{ ++ unsigned long bytes = sizeof(struct toi_header) + ++ toi_header_storage_for_modules() + ++ toi_pageflags_space_needed() + ++ fs_info_space_needed(); ++ ++ return DIV_ROUND_UP(bytes, PAGE_SIZE); ++} ++EXPORT_SYMBOL_GPL(get_header_storage_needed); ++ ++/* ++ * When freeing memory, pages from either pageset might be freed. ++ * ++ * When seeking to free memory to be able to hibernate, for every ps1 page ++ * freed, we need 2 less pages for the atomic copy because there is one less ++ * page to copy and one more page into which data can be copied. ++ * ++ * Freeing ps2 pages saves us nothing directly. No more memory is available ++ * for the atomic copy. Indirectly, a ps1 page might be freed (slab?), but ++ * that's too much work to figure out. ++ * ++ * => ps1_to_free functions ++ * ++ * Of course if we just want to reduce the image size, because of storage ++ * limitations or an image size limit either ps will do. ++ * ++ * => any_to_free function ++ */ ++ ++static unsigned long lowpages_usable_for_highmem_copy(void) ++{ ++ unsigned long needed = get_lowmem_size(pagedir1) + ++ extra_pd1_pages_allowance + MIN_FREE_RAM + ++ toi_memory_for_modules(0), ++ available = get_lowmem_size(pagedir2) + ++ real_nr_free_low_pages() + extra_pages_allocated; ++ ++ return available > needed ? available - needed : 0; ++} ++ ++static unsigned long highpages_ps1_to_free(void) ++{ ++ unsigned long need = get_highmem_size(pagedir1), ++ available = get_highmem_size(pagedir2) + ++ real_nr_free_high_pages() + ++ lowpages_usable_for_highmem_copy(); ++ ++ return need > available ? DIV_ROUND_UP(need - available, 2) : 0; ++} ++ ++static unsigned long lowpages_ps1_to_free(void) ++{ ++ unsigned long needed = get_lowmem_size(pagedir1) + ++ extra_pd1_pages_allowance + MIN_FREE_RAM + ++ toi_memory_for_modules(0), ++ available = get_lowmem_size(pagedir2) + ++ real_nr_free_low_pages() + extra_pages_allocated; ++ ++ return needed > available ? DIV_ROUND_UP(needed - available, 2) : 0; ++} ++ ++static unsigned long current_image_size(void) ++{ ++ return pagedir1.size + pagedir2.size + header_storage_needed; ++} ++ ++static unsigned long storage_still_required(void) ++{ ++ unsigned long needed = main_storage_needed(1, 1); ++ return needed > storage_limit ? needed - storage_limit : 0; ++} ++ ++static unsigned long ram_still_required(void) ++{ ++ unsigned long needed = MIN_FREE_RAM + toi_memory_for_modules(0) + ++ 2 * extra_pd1_pages_allowance, ++ available = real_nr_free_low_pages(); ++ return needed > available ? needed - available : 0; ++} ++ ++static unsigned long any_to_free(int use_image_size_limit) ++{ ++ int use_soft_limit = use_image_size_limit && image_size_limit > 0; ++ unsigned long current_size = current_image_size(), ++ soft_limit = use_soft_limit ? (image_size_limit << 8) : 0, ++ to_free = use_soft_limit ? (current_size > soft_limit ? ++ current_size - soft_limit : 0) : 0, ++ storage_limit = storage_still_required(), ++ ram_limit = ram_still_required(), ++ first_max = max(to_free, storage_limit); ++ ++ return max(first_max, ram_limit); ++} ++ ++static int need_pageset2(void) ++{ ++ return (real_nr_free_low_pages() + extra_pages_allocated - ++ 2 * extra_pd1_pages_allowance - MIN_FREE_RAM - ++ toi_memory_for_modules(0) - pagedir1.size) < pagedir2.size; ++} ++ ++/* amount_needed ++ * ++ * Calculates the amount by which the image size needs to be reduced to meet ++ * our constraints. ++ */ ++static unsigned long amount_needed(int use_image_size_limit) ++{ ++ return max(highpages_ps1_to_free() + lowpages_ps1_to_free(), ++ any_to_free(use_image_size_limit)); ++} ++ ++static int image_not_ready(int use_image_size_limit) ++{ ++ toi_message(TOI_EAT_MEMORY, TOI_LOW, 1, ++ "Amount still needed (%lu) > 0:%u," ++ " Storage allocd: %lu < %lu: %u.\n", ++ amount_needed(use_image_size_limit), ++ (amount_needed(use_image_size_limit) > 0), ++ main_storage_allocated, ++ main_storage_needed(1, 1), ++ main_storage_allocated < main_storage_needed(1, 1)); ++ ++ toi_cond_pause(0, NULL); ++ ++ return (amount_needed(use_image_size_limit) > 0) || ++ main_storage_allocated < main_storage_needed(1, 1); ++} ++ ++static void display_failure_reason(int tries_exceeded) ++{ ++ unsigned long storage_required = storage_still_required(), ++ ram_required = ram_still_required(), ++ high_ps1 = highpages_ps1_to_free(), ++ low_ps1 = lowpages_ps1_to_free(); ++ ++ printk(KERN_INFO "Failed to prepare the image because...\n"); ++ ++ if (!storage_limit) { ++ printk(KERN_INFO "- You need some storage available to be " ++ "able to hibernate.\n"); ++ return; ++ } ++ ++ if (tries_exceeded) ++ printk(KERN_INFO "- The maximum number of iterations was " ++ "reached without successfully preparing the " ++ "image.\n"); ++ ++ if (storage_required) { ++ printk(KERN_INFO " - We need at least %lu pages of storage " ++ "(ignoring the header), but only have %lu.\n", ++ main_storage_needed(1, 1), ++ main_storage_allocated); ++ set_abort_result(TOI_INSUFFICIENT_STORAGE); ++ } ++ ++ if (ram_required) { ++ printk(KERN_INFO " - We need %lu more free pages of low " ++ "memory.\n", ram_required); ++ printk(KERN_INFO " Minimum free : %8d\n", MIN_FREE_RAM); ++ printk(KERN_INFO " + Reqd. by modules : %8lu\n", ++ toi_memory_for_modules(0)); ++ printk(KERN_INFO " + 2 * extra allow : %8lu\n", ++ 2 * extra_pd1_pages_allowance); ++ printk(KERN_INFO " - Currently free : %8lu\n", ++ real_nr_free_low_pages()); ++ printk(KERN_INFO " : ========\n"); ++ printk(KERN_INFO " Still needed : %8lu\n", ++ ram_required); ++ ++ /* Print breakdown of memory needed for modules */ ++ toi_memory_for_modules(1); ++ set_abort_result(TOI_UNABLE_TO_FREE_ENOUGH_MEMORY); ++ } ++ ++ if (high_ps1) { ++ printk(KERN_INFO "- We need to free %lu highmem pageset 1 " ++ "pages.\n", high_ps1); ++ set_abort_result(TOI_UNABLE_TO_FREE_ENOUGH_MEMORY); ++ } ++ ++ if (low_ps1) { ++ printk(KERN_INFO " - We need to free %ld lowmem pageset 1 " ++ "pages.\n", low_ps1); ++ set_abort_result(TOI_UNABLE_TO_FREE_ENOUGH_MEMORY); ++ } ++} ++ ++static void display_stats(int always, int sub_extra_pd1_allow) ++{ ++ char buffer[255]; ++ snprintf(buffer, 254, ++ "Free:%lu(%lu). Sets:%lu(%lu),%lu(%lu). " ++ "Nosave:%lu-%lu=%lu. Storage:%lu/%lu(%lu=>%lu). " ++ "Needed:%lu,%lu,%lu(%u,%lu,%lu,%ld) (PS2:%s)\n", ++ ++ /* Free */ ++ real_nr_free_pages(all_zones_mask), ++ real_nr_free_low_pages(), ++ ++ /* Sets */ ++ pagedir1.size, pagedir1.size - get_highmem_size(pagedir1), ++ pagedir2.size, pagedir2.size - get_highmem_size(pagedir2), ++ ++ /* Nosave */ ++ num_nosave, extra_pages_allocated, ++ num_nosave - extra_pages_allocated, ++ ++ /* Storage */ ++ main_storage_allocated, ++ storage_limit, ++ main_storage_needed(1, sub_extra_pd1_allow), ++ main_storage_needed(1, 1), ++ ++ /* Needed */ ++ lowpages_ps1_to_free(), highpages_ps1_to_free(), ++ any_to_free(1), ++ MIN_FREE_RAM, toi_memory_for_modules(0), ++ extra_pd1_pages_allowance, ++ image_size_limit, ++ ++ need_pageset2() ? "yes" : "no"); ++ ++ if (always) ++ printk("%s", buffer); ++ else ++ toi_message(TOI_EAT_MEMORY, TOI_MEDIUM, 1, buffer); ++} ++ ++/* generate_free_page_map ++ * ++ * Description: This routine generates a bitmap of free pages from the ++ * lists used by the memory manager. We then use the bitmap ++ * to quickly calculate which pages to save and in which ++ * pagesets. ++ */ ++static void generate_free_page_map(void) ++{ ++ int order, cpu, t; ++ unsigned long flags, i; ++ struct zone *zone; ++ struct list_head *curr; ++ unsigned long pfn; ++ struct page *page; ++ ++ for_each_populated_zone(zone) { ++ ++ if (!zone->spanned_pages) ++ continue; ++ ++ spin_lock_irqsave(&zone->lock, flags); ++ ++ for (i = 0; i < zone->spanned_pages; i++) { ++ pfn = ZONE_START(zone) + i; ++ ++ if (!pfn_valid(pfn)) ++ continue; ++ ++ page = pfn_to_page(pfn); ++ ++ ClearPageNosaveFree(page); ++ } ++ ++ for_each_migratetype_order(order, t) { ++ list_for_each(curr, ++ &zone->free_area[order].free_list[t]) { ++ unsigned long j; ++ ++ pfn = page_to_pfn(list_entry(curr, struct page, ++ lru)); ++ for (j = 0; j < (1UL << order); j++) ++ SetPageNosaveFree(pfn_to_page(pfn + j)); ++ } ++ } ++ ++ for_each_online_cpu(cpu) { ++ struct per_cpu_pageset *pset = zone_pcp(zone, cpu); ++ struct per_cpu_pages *pcp = &pset->pcp; ++ struct page *page; ++ int t; ++ ++ for (t = 0; t < MIGRATE_PCPTYPES; t++) ++ list_for_each_entry(page, &pcp->lists[t], lru) ++ SetPageNosaveFree(page); ++ } ++ ++ spin_unlock_irqrestore(&zone->lock, flags); ++ } ++} ++ ++/* size_of_free_region ++ * ++ * Description: Return the number of pages that are free, beginning with and ++ * including this one. ++ */ ++static int size_of_free_region(struct zone *zone, unsigned long start_pfn) ++{ ++ unsigned long this_pfn = start_pfn, ++ end_pfn = ZONE_START(zone) + zone->spanned_pages - 1; ++ ++ while (this_pfn <= end_pfn && PageNosaveFree(pfn_to_page(this_pfn))) ++ this_pfn++; ++ ++ return this_pfn - start_pfn; ++} ++ ++/* flag_image_pages ++ * ++ * This routine generates our lists of pages to be stored in each ++ * pageset. Since we store the data using extents, and adding new ++ * extents might allocate a new extent page, this routine may well ++ * be called more than once. ++ */ ++static void flag_image_pages(int atomic_copy) ++{ ++ int num_free = 0; ++ unsigned long loop; ++ struct zone *zone; ++ ++ pagedir1.size = 0; ++ pagedir2.size = 0; ++ ++ set_highmem_size(pagedir1, 0); ++ set_highmem_size(pagedir2, 0); ++ ++ num_nosave = 0; ++ ++ memory_bm_clear(pageset1_map); ++ ++ generate_free_page_map(); ++ ++ /* ++ * Pages not to be saved are marked Nosave irrespective of being ++ * reserved. ++ */ ++ for_each_populated_zone(zone) { ++ int highmem = is_highmem(zone); ++ ++ for (loop = 0; loop < zone->spanned_pages; loop++) { ++ unsigned long pfn = ZONE_START(zone) + loop; ++ struct page *page; ++ int chunk_size; ++ ++ if (!pfn_valid(pfn)) ++ continue; ++ ++ chunk_size = size_of_free_region(zone, pfn); ++ if (chunk_size) { ++ num_free += chunk_size; ++ loop += chunk_size - 1; ++ continue; ++ } ++ ++ page = pfn_to_page(pfn); ++ ++ if (PageNosave(page)) { ++ num_nosave++; ++ continue; ++ } ++ ++ page = highmem ? saveable_highmem_page(zone, pfn) : ++ saveable_page(zone, pfn); ++ ++ if (!page) { ++ num_nosave++; ++ continue; ++ } ++ ++ if (PagePageset2(page)) { ++ pagedir2.size++; ++ if (PageHighMem(page)) ++ inc_highmem_size(pagedir2); ++ else ++ SetPagePageset1Copy(page); ++ if (PageResave(page)) { ++ SetPagePageset1(page); ++ ClearPagePageset1Copy(page); ++ pagedir1.size++; ++ if (PageHighMem(page)) ++ inc_highmem_size(pagedir1); ++ } ++ } else { ++ pagedir1.size++; ++ SetPagePageset1(page); ++ if (PageHighMem(page)) ++ inc_highmem_size(pagedir1); ++ } ++ } ++ } ++ ++ if (!atomic_copy) ++ toi_message(TOI_EAT_MEMORY, TOI_MEDIUM, 0, ++ "Count data pages: Set1 (%d) + Set2 (%d) + Nosave (%ld)" ++ " + NumFree (%d) = %d.\n", ++ pagedir1.size, pagedir2.size, num_nosave, num_free, ++ pagedir1.size + pagedir2.size + num_nosave + num_free); ++} ++ ++void toi_recalculate_image_contents(int atomic_copy) ++{ ++ memory_bm_clear(pageset1_map); ++ if (!atomic_copy) { ++ unsigned long pfn; ++ memory_bm_position_reset(pageset2_map); ++ for (pfn = memory_bm_next_pfn(pageset2_map); ++ pfn != BM_END_OF_MAP; ++ pfn = memory_bm_next_pfn(pageset2_map)) ++ ClearPagePageset1Copy(pfn_to_page(pfn)); ++ /* Need to call this before getting pageset1_size! */ ++ toi_mark_pages_for_pageset2(); ++ } ++ flag_image_pages(atomic_copy); ++ ++ if (!atomic_copy) { ++ storage_limit = toiActiveAllocator->storage_available(); ++ display_stats(0, 0); ++ } ++} ++ ++/* update_image ++ * ++ * Allocate [more] memory and storage for the image. ++ */ ++static void update_image(int ps2_recalc) ++{ ++ int old_header_req; ++ unsigned long seek, wanted, got; ++ ++ /* Include allowance for growth in pagedir1 while writing pagedir 2 */ ++ wanted = pagedir1.size + extra_pd1_pages_allowance - ++ get_lowmem_size(pagedir2); ++ if (wanted > extra_pages_allocated) { ++ got = toi_allocate_extra_pagedir_memory(wanted); ++ if (wanted < got) { ++ toi_message(TOI_EAT_MEMORY, TOI_LOW, 1, ++ "Want %d extra pages for pageset1, got %d.\n", ++ wanted, got); ++ return; ++ } ++ } ++ ++ if (ps2_recalc) ++ goto recalc; ++ ++ thaw_kernel_threads(); ++ ++ /* ++ * Allocate remaining storage space, if possible, up to the ++ * maximum we know we'll need. It's okay to allocate the ++ * maximum if the writer is the swapwriter, but ++ * we don't want to grab all available space on an NFS share. ++ * We therefore ignore the expected compression ratio here, ++ * thereby trying to allocate the maximum image size we could ++ * need (assuming compression doesn't expand the image), but ++ * don't complain if we can't get the full amount we're after. ++ */ ++ ++ do { ++ int result; ++ ++ old_header_req = header_storage_needed; ++ toiActiveAllocator->reserve_header_space(header_storage_needed); ++ ++ /* How much storage is free with the reservation applied? */ ++ storage_limit = toiActiveAllocator->storage_available(); ++ seek = min(storage_limit, main_storage_needed(0, 0)); ++ ++ result = toiActiveAllocator->allocate_storage(seek); ++ if (result) ++ printk("Failed to allocate storage (%d).\n", result); ++ ++ main_storage_allocated = ++ toiActiveAllocator->storage_allocated(); ++ ++ /* Need more header because more storage allocated? */ ++ header_storage_needed = get_header_storage_needed(); ++ ++ } while (header_storage_needed > old_header_req); ++ ++ if (freeze_processes()) ++ set_abort_result(TOI_FREEZING_FAILED); ++ ++recalc: ++ toi_recalculate_image_contents(0); ++} ++ ++/* attempt_to_freeze ++ * ++ * Try to freeze processes. ++ */ ++ ++static int attempt_to_freeze(void) ++{ ++ int result; ++ ++ /* Stop processes before checking again */ ++ thaw_processes(); ++ toi_prepare_status(CLEAR_BAR, "Freezing processes & syncing " ++ "filesystems."); ++ result = freeze_processes(); ++ ++ if (result) ++ set_abort_result(TOI_FREEZING_FAILED); ++ ++ return result; ++} ++ ++/* eat_memory ++ * ++ * Try to free some memory, either to meet hard or soft constraints on the image ++ * characteristics. ++ * ++ * Hard constraints: ++ * - Pageset1 must be < half of memory; ++ * - We must have enough memory free at resume time to have pageset1 ++ * be able to be loaded in pages that don't conflict with where it has to ++ * be restored. ++ * Soft constraints ++ * - User specificied image size limit. ++ */ ++static void eat_memory(void) ++{ ++ unsigned long amount_wanted = 0; ++ int did_eat_memory = 0; ++ ++ /* ++ * Note that if we have enough storage space and enough free memory, we ++ * may exit without eating anything. We give up when the last 10 ++ * iterations ate no extra pages because we're not going to get much ++ * more anyway, but the few pages we get will take a lot of time. ++ * ++ * We freeze processes before beginning, and then unfreeze them if we ++ * need to eat memory until we think we have enough. If our attempts ++ * to freeze fail, we give up and abort. ++ */ ++ ++ amount_wanted = amount_needed(1); ++ ++ switch (image_size_limit) { ++ case -1: /* Don't eat any memory */ ++ if (amount_wanted > 0) { ++ set_abort_result(TOI_WOULD_EAT_MEMORY); ++ return; ++ } ++ break; ++ case -2: /* Free caches only */ ++ drop_pagecache(); ++ toi_recalculate_image_contents(0); ++ amount_wanted = amount_needed(1); ++ break; ++ default: ++ break; ++ } ++ ++ if (amount_wanted > 0 && !test_result_state(TOI_ABORTED) && ++ image_size_limit != -1) { ++ unsigned long request = amount_wanted + 50; ++ ++ toi_prepare_status(CLEAR_BAR, ++ "Seeking to free %ldMB of memory.", ++ MB(amount_wanted)); ++ ++ thaw_kernel_threads(); ++ ++ /* ++ * Ask for too many because shrink_all_memory doesn't ++ * currently return enough most of the time. ++ */ ++ shrink_all_memory(request); ++ ++ did_eat_memory = 1; ++ ++ toi_recalculate_image_contents(0); ++ ++ amount_wanted = amount_needed(1); ++ ++ printk(KERN_DEBUG "Asked shrink_all_memory for %ld pages," ++ "got %ld.\n", request, ++ request - amount_wanted); ++ ++ toi_cond_pause(0, NULL); ++ ++ if (freeze_processes()) ++ set_abort_result(TOI_FREEZING_FAILED); ++ } ++ ++ if (did_eat_memory) ++ toi_recalculate_image_contents(0); ++} ++ ++/* toi_prepare_image ++ * ++ * Entry point to the whole image preparation section. ++ * ++ * We do four things: ++ * - Freeze processes; ++ * - Ensure image size constraints are met; ++ * - Complete all the preparation for saving the image, ++ * including allocation of storage. The only memory ++ * that should be needed when we're finished is that ++ * for actually storing the image (and we know how ++ * much is needed for that because the modules tell ++ * us). ++ * - Make sure that all dirty buffers are written out. ++ */ ++#define MAX_TRIES 2 ++int toi_prepare_image(void) ++{ ++ int result = 1, tries = 1; ++ ++ main_storage_allocated = 0; ++ no_ps2_needed = 0; ++ ++ if (attempt_to_freeze()) ++ return 1; ++ ++ if (!extra_pd1_pages_allowance) ++ get_extra_pd1_allowance(); ++ ++ storage_limit = toiActiveAllocator->storage_available(); ++ ++ if (!storage_limit) { ++ printk(KERN_INFO "No storage available. Didn't try to prepare " ++ "an image.\n"); ++ display_failure_reason(0); ++ set_abort_result(TOI_NOSTORAGE_AVAILABLE); ++ return 1; ++ } ++ ++ if (build_attention_list()) { ++ abort_hibernate(TOI_UNABLE_TO_PREPARE_IMAGE, ++ "Unable to successfully prepare the image.\n"); ++ return 1; ++ } ++ ++ toi_recalculate_image_contents(0); ++ ++ do { ++ toi_prepare_status(CLEAR_BAR, ++ "Preparing Image. Try %d.", tries); ++ ++ eat_memory(); ++ ++ if (test_result_state(TOI_ABORTED)) ++ break; ++ ++ update_image(0); ++ ++ tries++; ++ ++ } while (image_not_ready(1) && tries <= MAX_TRIES && ++ !test_result_state(TOI_ABORTED)); ++ ++ result = image_not_ready(0); ++ ++ if (!test_result_state(TOI_ABORTED)) { ++ if (result) { ++ display_stats(1, 0); ++ display_failure_reason(tries > MAX_TRIES); ++ abort_hibernate(TOI_UNABLE_TO_PREPARE_IMAGE, ++ "Unable to successfully prepare the image.\n"); ++ } else { ++ /* Pageset 2 needed? */ ++ if (!need_pageset2() && ++ test_action_state(TOI_NO_PS2_IF_UNNEEDED)) { ++ no_ps2_needed = 1; ++ toi_recalculate_image_contents(0); ++ update_image(1); ++ } ++ ++ toi_cond_pause(1, "Image preparation complete."); ++ } ++ } ++ ++ return result ? result : allocate_checksum_pages(); ++} +diff --git a/kernel/power/tuxonice_prepare_image.h b/kernel/power/tuxonice_prepare_image.h +new file mode 100644 +index 0000000..7b52e9e +--- /dev/null ++++ b/kernel/power/tuxonice_prepare_image.h +@@ -0,0 +1,36 @@ ++/* ++ * kernel/power/tuxonice_prepare_image.h ++ * ++ * Copyright (C) 2003-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ */ ++ ++#include ++ ++extern int toi_prepare_image(void); ++extern void toi_recalculate_image_contents(int storage_available); ++extern unsigned long real_nr_free_pages(unsigned long zone_idx_mask); ++extern long image_size_limit; ++extern void toi_free_extra_pagedir_memory(void); ++extern unsigned long extra_pd1_pages_allowance; ++extern void free_attention_list(void); ++ ++#define MIN_FREE_RAM 100 ++#define MIN_EXTRA_PAGES_ALLOWANCE 500 ++ ++#define all_zones_mask ((unsigned long) ((1 << MAX_NR_ZONES) - 1)) ++#ifdef CONFIG_HIGHMEM ++#define real_nr_free_high_pages() (real_nr_free_pages(1 << ZONE_HIGHMEM)) ++#define real_nr_free_low_pages() (real_nr_free_pages(all_zones_mask - \ ++ (1 << ZONE_HIGHMEM))) ++#else ++#define real_nr_free_high_pages() (0) ++#define real_nr_free_low_pages() (real_nr_free_pages(all_zones_mask)) ++ ++/* For eat_memory function */ ++#define ZONE_HIGHMEM (MAX_NR_ZONES + 1) ++#endif ++ ++unsigned long get_header_storage_needed(void); +diff --git a/kernel/power/tuxonice_storage.c b/kernel/power/tuxonice_storage.c +new file mode 100644 +index 0000000..be962ee +--- /dev/null ++++ b/kernel/power/tuxonice_storage.c +@@ -0,0 +1,282 @@ ++/* ++ * kernel/power/tuxonice_storage.c ++ * ++ * Copyright (C) 2005-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * Routines for talking to a userspace program that manages storage. ++ * ++ * The kernel side: ++ * - starts the userspace program; ++ * - sends messages telling it when to open and close the connection; ++ * - tells it when to quit; ++ * ++ * The user space side: ++ * - passes messages regarding status; ++ * ++ */ ++ ++#include ++#include ++ ++#include "tuxonice_sysfs.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_netlink.h" ++#include "tuxonice_storage.h" ++#include "tuxonice_ui.h" ++ ++static struct user_helper_data usm_helper_data; ++static struct toi_module_ops usm_ops; ++static int message_received, usm_prepare_count; ++static int storage_manager_last_action, storage_manager_action; ++ ++static int usm_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) ++{ ++ int type; ++ int *data; ++ ++ type = nlh->nlmsg_type; ++ ++ /* A control message: ignore them */ ++ if (type < NETLINK_MSG_BASE) ++ return 0; ++ ++ /* Unknown message: reply with EINVAL */ ++ if (type >= USM_MSG_MAX) ++ return -EINVAL; ++ ++ /* All operations require privileges, even GET */ ++ if (security_netlink_recv(skb, CAP_NET_ADMIN)) ++ return -EPERM; ++ ++ /* Only allow one task to receive NOFREEZE privileges */ ++ if (type == NETLINK_MSG_NOFREEZE_ME && usm_helper_data.pid != -1) ++ return -EBUSY; ++ ++ data = (int *) NLMSG_DATA(nlh); ++ ++ switch (type) { ++ case USM_MSG_SUCCESS: ++ case USM_MSG_FAILED: ++ message_received = type; ++ complete(&usm_helper_data.wait_for_process); ++ break; ++ default: ++ printk(KERN_INFO "Storage manager doesn't recognise " ++ "message %d.\n", type); ++ } ++ ++ return 1; ++} ++ ++#ifdef CONFIG_NET ++static int activations; ++ ++int toi_activate_storage(int force) ++{ ++ int tries = 1; ++ ++ if (usm_helper_data.pid == -1 || !usm_ops.enabled) ++ return 0; ++ ++ message_received = 0; ++ activations++; ++ ++ if (activations > 1 && !force) ++ return 0; ++ ++ while ((!message_received || message_received == USM_MSG_FAILED) && ++ tries < 2) { ++ toi_prepare_status(DONT_CLEAR_BAR, "Activate storage attempt " ++ "%d.\n", tries); ++ ++ init_completion(&usm_helper_data.wait_for_process); ++ ++ toi_send_netlink_message(&usm_helper_data, ++ USM_MSG_CONNECT, ++ NULL, 0); ++ ++ /* Wait 2 seconds for the userspace process to make contact */ ++ wait_for_completion_timeout(&usm_helper_data.wait_for_process, ++ 2*HZ); ++ ++ tries++; ++ } ++ ++ return 0; ++} ++ ++int toi_deactivate_storage(int force) ++{ ++ if (usm_helper_data.pid == -1 || !usm_ops.enabled) ++ return 0; ++ ++ message_received = 0; ++ activations--; ++ ++ if (activations && !force) ++ return 0; ++ ++ init_completion(&usm_helper_data.wait_for_process); ++ ++ toi_send_netlink_message(&usm_helper_data, ++ USM_MSG_DISCONNECT, ++ NULL, 0); ++ ++ wait_for_completion_timeout(&usm_helper_data.wait_for_process, 2*HZ); ++ ++ if (!message_received || message_received == USM_MSG_FAILED) { ++ printk(KERN_INFO "Returning failure disconnecting storage.\n"); ++ return 1; ++ } ++ ++ return 0; ++} ++#endif ++ ++static void storage_manager_simulate(void) ++{ ++ printk(KERN_INFO "--- Storage manager simulate ---\n"); ++ toi_prepare_usm(); ++ schedule(); ++ printk(KERN_INFO "--- Activate storage 1 ---\n"); ++ toi_activate_storage(1); ++ schedule(); ++ printk(KERN_INFO "--- Deactivate storage 1 ---\n"); ++ toi_deactivate_storage(1); ++ schedule(); ++ printk(KERN_INFO "--- Cleanup usm ---\n"); ++ toi_cleanup_usm(); ++ schedule(); ++ printk(KERN_INFO "--- Storage manager simulate ends ---\n"); ++} ++ ++static int usm_storage_needed(void) ++{ ++ return strlen(usm_helper_data.program); ++} ++ ++static int usm_save_config_info(char *buf) ++{ ++ int len = strlen(usm_helper_data.program); ++ memcpy(buf, usm_helper_data.program, len); ++ return len; ++} ++ ++static void usm_load_config_info(char *buf, int size) ++{ ++ /* Don't load the saved path if one has already been set */ ++ if (usm_helper_data.program[0]) ++ return; ++ ++ memcpy(usm_helper_data.program, buf, size); ++} ++ ++static int usm_memory_needed(void) ++{ ++ /* ball park figure of 32 pages */ ++ return 32 * PAGE_SIZE; ++} ++ ++/* toi_prepare_usm ++ */ ++int toi_prepare_usm(void) ++{ ++ usm_prepare_count++; ++ ++ if (usm_prepare_count > 1 || !usm_ops.enabled) ++ return 0; ++ ++ usm_helper_data.pid = -1; ++ ++ if (!*usm_helper_data.program) ++ return 0; ++ ++ toi_netlink_setup(&usm_helper_data); ++ ++ if (usm_helper_data.pid == -1) ++ printk(KERN_INFO "TuxOnIce Storage Manager wanted, but couldn't" ++ " start it.\n"); ++ ++ toi_activate_storage(0); ++ ++ return usm_helper_data.pid != -1; ++} ++ ++void toi_cleanup_usm(void) ++{ ++ usm_prepare_count--; ++ ++ if (usm_helper_data.pid > -1 && !usm_prepare_count) { ++ toi_deactivate_storage(0); ++ toi_netlink_close(&usm_helper_data); ++ } ++} ++ ++static void storage_manager_activate(void) ++{ ++ if (storage_manager_action == storage_manager_last_action) ++ return; ++ ++ if (storage_manager_action) ++ toi_prepare_usm(); ++ else ++ toi_cleanup_usm(); ++ ++ storage_manager_last_action = storage_manager_action; ++} ++ ++/* ++ * User interface specific /sys/power/tuxonice entries. ++ */ ++ ++static struct toi_sysfs_data sysfs_params[] = { ++ SYSFS_NONE("simulate_atomic_copy", storage_manager_simulate), ++ SYSFS_INT("enabled", SYSFS_RW, &usm_ops.enabled, 0, 1, 0, NULL), ++ SYSFS_STRING("program", SYSFS_RW, usm_helper_data.program, 254, 0, ++ NULL), ++ SYSFS_INT("activate_storage", SYSFS_RW , &storage_manager_action, 0, 1, ++ 0, storage_manager_activate) ++}; ++ ++static struct toi_module_ops usm_ops = { ++ .type = MISC_MODULE, ++ .name = "usm", ++ .directory = "storage_manager", ++ .module = THIS_MODULE, ++ .storage_needed = usm_storage_needed, ++ .save_config_info = usm_save_config_info, ++ .load_config_info = usm_load_config_info, ++ .memory_needed = usm_memory_needed, ++ ++ .sysfs_data = sysfs_params, ++ .num_sysfs_entries = sizeof(sysfs_params) / ++ sizeof(struct toi_sysfs_data), ++}; ++ ++/* toi_usm_sysfs_init ++ * Description: Boot time initialisation for user interface. ++ */ ++int toi_usm_init(void) ++{ ++ usm_helper_data.nl = NULL; ++ usm_helper_data.program[0] = '\0'; ++ usm_helper_data.pid = -1; ++ usm_helper_data.skb_size = 0; ++ usm_helper_data.pool_limit = 6; ++ usm_helper_data.netlink_id = NETLINK_TOI_USM; ++ usm_helper_data.name = "userspace storage manager"; ++ usm_helper_data.rcv_msg = usm_user_rcv_msg; ++ usm_helper_data.interface_version = 2; ++ usm_helper_data.must_init = 0; ++ init_completion(&usm_helper_data.wait_for_process); ++ ++ return toi_register_module(&usm_ops); ++} ++ ++void toi_usm_exit(void) ++{ ++ toi_netlink_close_complete(&usm_helper_data); ++ toi_unregister_module(&usm_ops); ++} +diff --git a/kernel/power/tuxonice_storage.h b/kernel/power/tuxonice_storage.h +new file mode 100644 +index 0000000..8c6b5a7 +--- /dev/null ++++ b/kernel/power/tuxonice_storage.h +@@ -0,0 +1,45 @@ ++/* ++ * kernel/power/tuxonice_storage.h ++ * ++ * Copyright (C) 2005-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ */ ++ ++#ifdef CONFIG_NET ++int toi_prepare_usm(void); ++void toi_cleanup_usm(void); ++ ++int toi_activate_storage(int force); ++int toi_deactivate_storage(int force); ++extern int toi_usm_init(void); ++extern void toi_usm_exit(void); ++#else ++static inline int toi_usm_init(void) { return 0; } ++static inline void toi_usm_exit(void) { } ++ ++static inline int toi_activate_storage(int force) ++{ ++ return 0; ++} ++ ++static inline int toi_deactivate_storage(int force) ++{ ++ return 0; ++} ++ ++static inline int toi_prepare_usm(void) { return 0; } ++static inline void toi_cleanup_usm(void) { } ++#endif ++ ++enum { ++ USM_MSG_BASE = 0x10, ++ ++ /* Kernel -> Userspace */ ++ USM_MSG_CONNECT = 0x30, ++ USM_MSG_DISCONNECT = 0x31, ++ USM_MSG_SUCCESS = 0x40, ++ USM_MSG_FAILED = 0x41, ++ ++ USM_MSG_MAX, ++}; +diff --git a/kernel/power/tuxonice_swap.c b/kernel/power/tuxonice_swap.c +new file mode 100644 +index 0000000..f55ef5e +--- /dev/null ++++ b/kernel/power/tuxonice_swap.c +@@ -0,0 +1,487 @@ ++/* ++ * kernel/power/tuxonice_swap.c ++ * ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * Distributed under GPLv2. ++ * ++ * This file encapsulates functions for usage of swap space as a ++ * backing store. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "tuxonice.h" ++#include "tuxonice_sysfs.h" ++#include "tuxonice_modules.h" ++#include "tuxonice_io.h" ++#include "tuxonice_ui.h" ++#include "tuxonice_extent.h" ++#include "tuxonice_bio.h" ++#include "tuxonice_alloc.h" ++#include "tuxonice_builtin.h" ++ ++static struct toi_module_ops toi_swapops; ++ ++/* For swapfile automatically swapon/off'd. */ ++static char swapfilename[255] = ""; ++static int toi_swapon_status; ++ ++/* Swap Pages */ ++static unsigned long swap_allocated; ++ ++static struct sysinfo swapinfo; ++ ++/** ++ * enable_swapfile: Swapon the user specified swapfile prior to hibernating. ++ * ++ * Activate the given swapfile if it wasn't already enabled. Remember whether ++ * we really did swapon it for swapoffing later. ++ */ ++static void enable_swapfile(void) ++{ ++ int activateswapresult = -EINVAL; ++ ++ if (swapfilename[0]) { ++ /* Attempt to swap on with maximum priority */ ++ activateswapresult = sys_swapon(swapfilename, 0xFFFF); ++ if (activateswapresult && activateswapresult != -EBUSY) ++ printk(KERN_ERR "TuxOnIce: The swapfile/partition " ++ "specified by /sys/power/tuxonice/swap/swapfile" ++ " (%s) could not be turned on (error %d). " ++ "Attempting to continue.\n", ++ swapfilename, activateswapresult); ++ if (!activateswapresult) ++ toi_swapon_status = 1; ++ } ++} ++ ++/** ++ * disable_swapfile: Swapoff any file swaponed at the start of the cycle. ++ * ++ * If we did successfully swapon a file at the start of the cycle, swapoff ++ * it now (finishing up). ++ */ ++static void disable_swapfile(void) ++{ ++ if (!toi_swapon_status) ++ return; ++ ++ sys_swapoff(swapfilename); ++ toi_swapon_status = 0; ++} ++ ++static int add_blocks_to_extent_chain(struct toi_bdev_info *chain, ++ unsigned long start, unsigned long end) ++{ ++ if (test_action_state(TOI_TEST_BIO)) ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Adding extent %lu-%lu to " ++ "chain %p.", start << chain->bmap_shift, ++ end << chain->bmap_shift, chain); ++ ++ return toi_add_to_extent_chain(&chain->blocks, start, end); ++} ++ ++ ++static int get_main_pool_phys_params(struct toi_bdev_info *chain) ++{ ++ struct hibernate_extent *extentpointer = NULL; ++ unsigned long address, extent_min = 0, extent_max = 0; ++ int empty = 1; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "get main pool phys params for " ++ "chain %d.", chain->allocator_index); ++ ++ if (!chain->allocations.first) ++ return 0; ++ ++ if (chain->blocks.first) ++ toi_put_extent_chain(&chain->blocks); ++ ++ toi_extent_for_each(&chain->allocations, extentpointer, address) { ++ swp_entry_t swap_address = (swp_entry_t) { address }; ++ struct block_device *bdev; ++ sector_t new_sector = map_swap_entry(swap_address, &bdev); ++ ++ if (empty) { ++ empty = 0; ++ extent_min = extent_max = new_sector; ++ continue; ++ } ++ ++ if (new_sector == extent_max + 1) { ++ extent_max++; ++ continue; ++ } ++ ++ if (add_blocks_to_extent_chain(chain, extent_min, extent_max)) { ++ printk(KERN_ERR "Out of memory while making block " ++ "chains.\n"); ++ return -ENOMEM; ++ } ++ ++ extent_min = new_sector; ++ extent_max = new_sector; ++ } ++ ++ if (!empty && ++ add_blocks_to_extent_chain(chain, extent_min, extent_max)) { ++ printk(KERN_ERR "Out of memory while making block chains.\n"); ++ return -ENOMEM; ++ } ++ ++ return 0; ++} ++ ++/* ++ * Like si_swapinfo, except that we don't include ram backed swap (compcache!) ++ * and don't need to use the spinlocks (userspace is stopped when this ++ * function is called). ++ */ ++void si_swapinfo_no_compcache(void) ++{ ++ unsigned int i; ++ ++ si_swapinfo(&swapinfo); ++ swapinfo.freeswap = 0; ++ swapinfo.totalswap = 0; ++ ++ for (i = 0; i < MAX_SWAPFILES; i++) { ++ struct swap_info_struct *si = get_swap_info_struct(i); ++ if (si && (si->flags & SWP_WRITEOK) && ++ (strncmp(si->bdev->bd_disk->disk_name, "ram", 3))) { ++ swapinfo.totalswap += si->inuse_pages; ++ swapinfo.freeswap += si->pages - si->inuse_pages; ++ } ++ } ++} ++/* ++ * We can't just remember the value from allocation time, because other ++ * processes might have allocated swap in the mean time. ++ */ ++static unsigned long toi_swap_storage_available(void) ++{ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "In toi_swap_storage_available."); ++ si_swapinfo_no_compcache(); ++ return swapinfo.freeswap + swap_allocated; ++} ++ ++static int toi_swap_initialise(int starting_cycle) ++{ ++ if (!starting_cycle) ++ return 0; ++ ++ enable_swapfile(); ++ return 0; ++} ++ ++static void toi_swap_cleanup(int ending_cycle) ++{ ++ if (ending_cycle) ++ disable_swapfile(); ++} ++ ++static void toi_swap_free_storage(struct toi_bdev_info *chain) ++{ ++ /* Free swap entries */ ++ struct hibernate_extent *extentpointer; ++ unsigned long extentvalue; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Freeing storage for chain %p.", ++ chain); ++ ++ swap_allocated -= chain->allocations.size; ++ toi_extent_for_each(&chain->allocations, extentpointer, extentvalue) ++ swap_free((swp_entry_t) { extentvalue }); ++ ++ toi_put_extent_chain(&chain->allocations); ++} ++ ++static void free_swap_range(unsigned long min, unsigned long max) ++{ ++ int j; ++ ++ for (j = min; j <= max; j++) ++ swap_free((swp_entry_t) { j }); ++ swap_allocated -= (max - min + 1); ++} ++ ++/* ++ * Allocation of a single swap type. Swap priorities are handled at the higher ++ * level. ++ */ ++static int toi_swap_allocate_storage(struct toi_bdev_info *chain, ++ unsigned long request) ++{ ++ int to_add = 0; ++ unsigned long gotten = 0; ++ unsigned long extent_min = 0, extent_max = 0; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, " Swap allocate storage: Asked to" ++ " allocate %lu pages from device %d.", request, ++ chain->allocator_index); ++ ++ while (gotten < request) { ++ swp_entry_t entry; ++ unsigned long new_value; ++ ++ entry = get_swap_page_of_type(chain->allocator_index); ++ if (!entry.val) ++ break; ++ ++ swap_allocated++; ++ new_value = entry.val; ++ gotten++; ++ ++ if (!to_add) { ++ to_add = 1; ++ extent_min = new_value; ++ extent_max = new_value; ++ continue; ++ } ++ ++ if (new_value == extent_max + 1) { ++ extent_max++; ++ continue; ++ } ++ ++ if (toi_add_to_extent_chain(&chain->allocations, extent_min, ++ extent_max)) { ++ printk(KERN_INFO "Failed to allocate extent for " ++ "%lu-%lu.\n", extent_min, extent_max); ++ free_swap_range(extent_min, extent_max); ++ swap_free(entry); ++ gotten -= (extent_max - extent_min); ++ /* Don't try to add again below */ ++ to_add = 0; ++ break; ++ } ++ ++ extent_min = new_value; ++ extent_max = new_value; ++ } ++ ++ if (to_add) { ++ int this_result = toi_add_to_extent_chain(&chain->allocations, ++ extent_min, extent_max); ++ ++ if (this_result) { ++ free_swap_range(extent_min, extent_max); ++ gotten -= (extent_max - extent_min + 1); ++ } ++ } ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, " Allocated %lu pages.", gotten); ++ return gotten; ++} ++ ++static int toi_swap_register_storage(void) ++{ ++ int i, result = 0; ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_swap_register_storage."); ++ for (i = 0; i < MAX_SWAPFILES; i++) { ++ struct swap_info_struct *si = get_swap_info_struct(i); ++ struct toi_bdev_info *devinfo; ++ unsigned char *p; ++ unsigned char buf[256]; ++ struct fs_info *fs_info; ++ ++ if (!si || !(si->flags & SWP_WRITEOK) || ++ !strncmp(si->bdev->bd_disk->disk_name, "ram", 3)) ++ continue; ++ ++ devinfo = toi_kzalloc(39, sizeof(struct toi_bdev_info), ++ GFP_ATOMIC); ++ if (!devinfo) { ++ printk("Failed to allocate devinfo struct for swap " ++ "device %d.\n", i); ++ return -ENOMEM; ++ } ++ ++ devinfo->bdev = si->bdev; ++ devinfo->allocator = &toi_swapops; ++ devinfo->allocator_index = i; ++ ++ fs_info = fs_info_from_block_dev(si->bdev); ++ if (fs_info && !IS_ERR(fs_info)) { ++ memcpy(devinfo->uuid, &fs_info->uuid, 16); ++ free_fs_info(fs_info); ++ } else ++ result = (int) PTR_ERR(fs_info); ++ ++ if (!fs_info) ++ printk("fs_info from block dev returned %d.\n", result); ++ devinfo->dev_t = si->bdev->bd_dev; ++ devinfo->prio = si->prio; ++ devinfo->bmap_shift = 3; ++ devinfo->blocks_per_page = 1; ++ ++ p = d_path(&si->swap_file->f_path, buf, sizeof(buf)); ++ sprintf(devinfo->name, "swap on %s", p); ++ ++ toi_message(TOI_IO, TOI_VERBOSE, 0, "Registering swap storage:" ++ " Device %d (%lx), prio %d.", i, ++ (unsigned long) devinfo->dev_t, devinfo->prio); ++ toi_bio_ops.register_storage(devinfo); ++ } ++ ++ return 0; ++} ++ ++/* ++ * workspace_size ++ * ++ * Description: ++ * Returns the number of bytes of RAM needed for this ++ * code to do its work. (Used when calculating whether ++ * we have enough memory to be able to hibernate & resume). ++ * ++ */ ++static int toi_swap_memory_needed(void) ++{ ++ return 1; ++} ++ ++/* ++ * Print debug info ++ * ++ * Description: ++ */ ++static int toi_swap_print_debug_stats(char *buffer, int size) ++{ ++ int len = 0; ++ ++ len = scnprintf(buffer, size, "- Swap Allocator enabled.\n"); ++ if (swapfilename[0]) ++ len += scnprintf(buffer+len, size-len, ++ " Attempting to automatically swapon: %s.\n", ++ swapfilename); ++ ++ si_swapinfo_no_compcache(); ++ ++ len += scnprintf(buffer+len, size-len, ++ " Swap available for image: %lu pages.\n", ++ swapinfo.freeswap + swap_allocated); ++ ++ return len; ++} ++ ++static int header_locations_read_sysfs(const char *page, int count) ++{ ++ int i, printedpartitionsmessage = 0, len = 0, haveswap = 0; ++ struct inode *swapf = NULL; ++ int zone; ++ char *path_page = (char *) toi_get_free_page(10, GFP_KERNEL); ++ char *path, *output = (char *) page; ++ int path_len; ++ ++ if (!page) ++ return 0; ++ ++ for (i = 0; i < MAX_SWAPFILES; i++) { ++ struct swap_info_struct *si = get_swap_info_struct(i); ++ ++ if (!si || !(si->flags & SWP_WRITEOK)) ++ continue; ++ ++ if (S_ISBLK(si->swap_file->f_mapping->host->i_mode)) { ++ haveswap = 1; ++ if (!printedpartitionsmessage) { ++ len += sprintf(output + len, ++ "For swap partitions, simply use the " ++ "format: resume=swap:/dev/hda1.\n"); ++ printedpartitionsmessage = 1; ++ } ++ } else { ++ path_len = 0; ++ ++ path = d_path(&si->swap_file->f_path, path_page, ++ PAGE_SIZE); ++ path_len = snprintf(path_page, PAGE_SIZE, "%s", path); ++ ++ haveswap = 1; ++ swapf = si->swap_file->f_mapping->host; ++ zone = bmap(swapf, 0); ++ if (!zone) { ++ len += sprintf(output + len, ++ "Swapfile %s has been corrupted. Reuse" ++ " mkswap on it and try again.\n", ++ path_page); ++ } else { ++ char name_buffer[BDEVNAME_SIZE]; ++ len += sprintf(output + len, ++ "For swapfile `%s`," ++ " use resume=swap:/dev/%s:0x%x.\n", ++ path_page, ++ bdevname(si->bdev, name_buffer), ++ zone << (swapf->i_blkbits - 9)); ++ } ++ } ++ } ++ ++ if (!haveswap) ++ len = sprintf(output, "You need to turn on swap partitions " ++ "before examining this file.\n"); ++ ++ toi_free_page(10, (unsigned long) path_page); ++ return len; ++} ++ ++static struct toi_sysfs_data sysfs_params[] = { ++ SYSFS_STRING("swapfilename", SYSFS_RW, swapfilename, 255, 0, NULL), ++ SYSFS_CUSTOM("headerlocations", SYSFS_READONLY, ++ header_locations_read_sysfs, NULL, 0, NULL), ++ SYSFS_INT("enabled", SYSFS_RW, &toi_swapops.enabled, 0, 1, 0, ++ attempt_to_parse_resume_device2), ++}; ++ ++static struct toi_bio_allocator_ops toi_bio_swapops = { ++ .register_storage = toi_swap_register_storage, ++ .storage_available = toi_swap_storage_available, ++ .allocate_storage = toi_swap_allocate_storage, ++ .bmap = get_main_pool_phys_params, ++ .free_storage = toi_swap_free_storage, ++}; ++ ++static struct toi_module_ops toi_swapops = { ++ .type = BIO_ALLOCATOR_MODULE, ++ .name = "swap storage", ++ .directory = "swap", ++ .module = THIS_MODULE, ++ .memory_needed = toi_swap_memory_needed, ++ .print_debug_info = toi_swap_print_debug_stats, ++ .initialise = toi_swap_initialise, ++ .cleanup = toi_swap_cleanup, ++ .bio_allocator_ops = &toi_bio_swapops, ++ ++ .sysfs_data = sysfs_params, ++ .num_sysfs_entries = sizeof(sysfs_params) / ++ sizeof(struct toi_sysfs_data), ++}; ++ ++/* ---- Registration ---- */ ++static __init int toi_swap_load(void) ++{ ++ return toi_register_module(&toi_swapops); ++} ++ ++#ifdef MODULE ++static __exit void toi_swap_unload(void) ++{ ++ toi_unregister_module(&toi_swapops); ++} ++ ++module_init(toi_swap_load); ++module_exit(toi_swap_unload); ++MODULE_LICENSE("GPL"); ++MODULE_AUTHOR("Nigel Cunningham"); ++MODULE_DESCRIPTION("TuxOnIce SwapAllocator"); ++#else ++late_initcall(toi_swap_load); ++#endif +diff --git a/kernel/power/tuxonice_sysfs.c b/kernel/power/tuxonice_sysfs.c +new file mode 100644 +index 0000000..0088409 +--- /dev/null ++++ b/kernel/power/tuxonice_sysfs.c +@@ -0,0 +1,335 @@ ++/* ++ * kernel/power/tuxonice_sysfs.c ++ * ++ * Copyright (C) 2002-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * This file contains support for sysfs entries for tuning TuxOnIce. ++ * ++ * We have a generic handler that deals with the most common cases, and ++ * hooks for special handlers to use. ++ */ ++ ++#include ++ ++#include "tuxonice_sysfs.h" ++#include "tuxonice.h" ++#include "tuxonice_storage.h" ++#include "tuxonice_alloc.h" ++ ++static int toi_sysfs_initialised; ++ ++static void toi_initialise_sysfs(void); ++ ++static struct toi_sysfs_data sysfs_params[]; ++ ++#define to_sysfs_data(_attr) container_of(_attr, struct toi_sysfs_data, attr) ++ ++static void toi_main_wrapper(void) ++{ ++ toi_try_hibernate(); ++} ++ ++static ssize_t toi_attr_show(struct kobject *kobj, struct attribute *attr, ++ char *page) ++{ ++ struct toi_sysfs_data *sysfs_data = to_sysfs_data(attr); ++ int len = 0; ++ int full_prep = sysfs_data->flags & SYSFS_NEEDS_SM_FOR_READ; ++ ++ if (full_prep && toi_start_anything(0)) ++ return -EBUSY; ++ ++ if (sysfs_data->flags & SYSFS_NEEDS_SM_FOR_READ) ++ toi_prepare_usm(); ++ ++ switch (sysfs_data->type) { ++ case TOI_SYSFS_DATA_CUSTOM: ++ len = (sysfs_data->data.special.read_sysfs) ? ++ (sysfs_data->data.special.read_sysfs)(page, PAGE_SIZE) ++ : 0; ++ break; ++ case TOI_SYSFS_DATA_BIT: ++ len = sprintf(page, "%d\n", ++ -test_bit(sysfs_data->data.bit.bit, ++ sysfs_data->data.bit.bit_vector)); ++ break; ++ case TOI_SYSFS_DATA_INTEGER: ++ len = sprintf(page, "%d\n", ++ *(sysfs_data->data.integer.variable)); ++ break; ++ case TOI_SYSFS_DATA_LONG: ++ len = sprintf(page, "%ld\n", ++ *(sysfs_data->data.a_long.variable)); ++ break; ++ case TOI_SYSFS_DATA_UL: ++ len = sprintf(page, "%lu\n", ++ *(sysfs_data->data.ul.variable)); ++ break; ++ case TOI_SYSFS_DATA_STRING: ++ len = sprintf(page, "%s\n", ++ sysfs_data->data.string.variable); ++ break; ++ } ++ ++ if (sysfs_data->flags & SYSFS_NEEDS_SM_FOR_READ) ++ toi_cleanup_usm(); ++ ++ if (full_prep) ++ toi_finish_anything(0); ++ ++ return len; ++} ++ ++#define BOUND(_variable, _type) do { \ ++ if (*_variable < sysfs_data->data._type.minimum) \ ++ *_variable = sysfs_data->data._type.minimum; \ ++ else if (*_variable > sysfs_data->data._type.maximum) \ ++ *_variable = sysfs_data->data._type.maximum; \ ++} while (0) ++ ++static ssize_t toi_attr_store(struct kobject *kobj, struct attribute *attr, ++ const char *my_buf, size_t count) ++{ ++ int assigned_temp_buffer = 0, result = count; ++ struct toi_sysfs_data *sysfs_data = to_sysfs_data(attr); ++ ++ if (toi_start_anything((sysfs_data->flags & SYSFS_HIBERNATE_OR_RESUME))) ++ return -EBUSY; ++ ++ ((char *) my_buf)[count] = 0; ++ ++ if (sysfs_data->flags & SYSFS_NEEDS_SM_FOR_WRITE) ++ toi_prepare_usm(); ++ ++ switch (sysfs_data->type) { ++ case TOI_SYSFS_DATA_CUSTOM: ++ if (sysfs_data->data.special.write_sysfs) ++ result = (sysfs_data->data.special.write_sysfs)(my_buf, ++ count); ++ break; ++ case TOI_SYSFS_DATA_BIT: ++ { ++ unsigned long value; ++ result = strict_strtoul(my_buf, 0, &value); ++ if (result) ++ break; ++ if (value) ++ set_bit(sysfs_data->data.bit.bit, ++ (sysfs_data->data.bit.bit_vector)); ++ else ++ clear_bit(sysfs_data->data.bit.bit, ++ (sysfs_data->data.bit.bit_vector)); ++ } ++ break; ++ case TOI_SYSFS_DATA_INTEGER: ++ { ++ long temp; ++ result = strict_strtol(my_buf, 0, &temp); ++ if (result) ++ break; ++ *(sysfs_data->data.integer.variable) = (int) temp; ++ BOUND(sysfs_data->data.integer.variable, integer); ++ break; ++ } ++ case TOI_SYSFS_DATA_LONG: ++ { ++ long *variable = ++ sysfs_data->data.a_long.variable; ++ result = strict_strtol(my_buf, 0, variable); ++ if (result) ++ break; ++ BOUND(variable, a_long); ++ break; ++ } ++ case TOI_SYSFS_DATA_UL: ++ { ++ unsigned long *variable = ++ sysfs_data->data.ul.variable; ++ result = strict_strtoul(my_buf, 0, variable); ++ if (result) ++ break; ++ BOUND(variable, ul); ++ break; ++ } ++ break; ++ case TOI_SYSFS_DATA_STRING: ++ { ++ int copy_len = count; ++ char *variable = ++ sysfs_data->data.string.variable; ++ ++ if (sysfs_data->data.string.max_length && ++ (copy_len > sysfs_data->data.string.max_length)) ++ copy_len = sysfs_data->data.string.max_length; ++ ++ if (!variable) { ++ variable = (char *) toi_get_zeroed_page(31, ++ TOI_ATOMIC_GFP); ++ sysfs_data->data.string.variable = variable; ++ assigned_temp_buffer = 1; ++ } ++ strncpy(variable, my_buf, copy_len); ++ if (copy_len && my_buf[copy_len - 1] == '\n') ++ variable[count - 1] = 0; ++ variable[count] = 0; ++ } ++ break; ++ } ++ ++ if (!result) ++ result = count; ++ ++ /* Side effect routine? */ ++ if (result == count && sysfs_data->write_side_effect) ++ sysfs_data->write_side_effect(); ++ ++ /* Free temporary buffers */ ++ if (assigned_temp_buffer) { ++ toi_free_page(31, ++ (unsigned long) sysfs_data->data.string.variable); ++ sysfs_data->data.string.variable = NULL; ++ } ++ ++ if (sysfs_data->flags & SYSFS_NEEDS_SM_FOR_WRITE) ++ toi_cleanup_usm(); ++ ++ toi_finish_anything(sysfs_data->flags & SYSFS_HIBERNATE_OR_RESUME); ++ ++ return result; ++} ++ ++static struct sysfs_ops toi_sysfs_ops = { ++ .show = &toi_attr_show, ++ .store = &toi_attr_store, ++}; ++ ++static struct kobj_type toi_ktype = { ++ .sysfs_ops = &toi_sysfs_ops, ++}; ++ ++struct kobject *tuxonice_kobj; ++ ++/* Non-module sysfs entries. ++ * ++ * This array contains entries that are automatically registered at ++ * boot. Modules and the console code register their own entries separately. ++ */ ++ ++static struct toi_sysfs_data sysfs_params[] = { ++ SYSFS_CUSTOM("do_hibernate", SYSFS_WRITEONLY, NULL, NULL, ++ SYSFS_HIBERNATING, toi_main_wrapper), ++ SYSFS_CUSTOM("do_resume", SYSFS_WRITEONLY, NULL, NULL, ++ SYSFS_RESUMING, toi_try_resume) ++}; ++ ++void remove_toi_sysdir(struct kobject *kobj) ++{ ++ if (!kobj) ++ return; ++ ++ kobject_put(kobj); ++} ++ ++struct kobject *make_toi_sysdir(char *name) ++{ ++ struct kobject *kobj = kobject_create_and_add(name, tuxonice_kobj); ++ ++ if (!kobj) { ++ printk(KERN_INFO "TuxOnIce: Can't allocate kobject for sysfs " ++ "dir!\n"); ++ return NULL; ++ } ++ ++ kobj->ktype = &toi_ktype; ++ ++ return kobj; ++} ++ ++/* toi_register_sysfs_file ++ * ++ * Helper for registering a new /sysfs/tuxonice entry. ++ */ ++ ++int toi_register_sysfs_file( ++ struct kobject *kobj, ++ struct toi_sysfs_data *toi_sysfs_data) ++{ ++ int result; ++ ++ if (!toi_sysfs_initialised) ++ toi_initialise_sysfs(); ++ ++ result = sysfs_create_file(kobj, &toi_sysfs_data->attr); ++ if (result) ++ printk(KERN_INFO "TuxOnIce: sysfs_create_file for %s " ++ "returned %d.\n", ++ toi_sysfs_data->attr.name, result); ++ kobj->ktype = &toi_ktype; ++ ++ return result; ++} ++EXPORT_SYMBOL_GPL(toi_register_sysfs_file); ++ ++/* toi_unregister_sysfs_file ++ * ++ * Helper for removing unwanted /sys/power/tuxonice entries. ++ * ++ */ ++void toi_unregister_sysfs_file(struct kobject *kobj, ++ struct toi_sysfs_data *toi_sysfs_data) ++{ ++ sysfs_remove_file(kobj, &toi_sysfs_data->attr); ++} ++EXPORT_SYMBOL_GPL(toi_unregister_sysfs_file); ++ ++void toi_cleanup_sysfs(void) ++{ ++ int i, ++ numfiles = sizeof(sysfs_params) / sizeof(struct toi_sysfs_data); ++ ++ if (!toi_sysfs_initialised) ++ return; ++ ++ for (i = 0; i < numfiles; i++) ++ toi_unregister_sysfs_file(tuxonice_kobj, &sysfs_params[i]); ++ ++ kobject_put(tuxonice_kobj); ++ toi_sysfs_initialised = 0; ++} ++ ++/* toi_initialise_sysfs ++ * ++ * Initialise the /sysfs/tuxonice directory. ++ */ ++ ++static void toi_initialise_sysfs(void) ++{ ++ int i; ++ int numfiles = sizeof(sysfs_params) / sizeof(struct toi_sysfs_data); ++ ++ if (toi_sysfs_initialised) ++ return; ++ ++ /* Make our TuxOnIce directory a child of /sys/power */ ++ tuxonice_kobj = kobject_create_and_add("tuxonice", power_kobj); ++ if (!tuxonice_kobj) ++ return; ++ ++ toi_sysfs_initialised = 1; ++ ++ for (i = 0; i < numfiles; i++) ++ toi_register_sysfs_file(tuxonice_kobj, &sysfs_params[i]); ++} ++ ++int toi_sysfs_init(void) ++{ ++ toi_initialise_sysfs(); ++ return 0; ++} ++ ++void toi_sysfs_exit(void) ++{ ++ toi_cleanup_sysfs(); ++} +diff --git a/kernel/power/tuxonice_sysfs.h b/kernel/power/tuxonice_sysfs.h +new file mode 100644 +index 0000000..4185c6d +--- /dev/null ++++ b/kernel/power/tuxonice_sysfs.h +@@ -0,0 +1,137 @@ ++/* ++ * kernel/power/tuxonice_sysfs.h ++ * ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ */ ++ ++#include ++ ++struct toi_sysfs_data { ++ struct attribute attr; ++ int type; ++ int flags; ++ union { ++ struct { ++ unsigned long *bit_vector; ++ int bit; ++ } bit; ++ struct { ++ int *variable; ++ int minimum; ++ int maximum; ++ } integer; ++ struct { ++ long *variable; ++ long minimum; ++ long maximum; ++ } a_long; ++ struct { ++ unsigned long *variable; ++ unsigned long minimum; ++ unsigned long maximum; ++ } ul; ++ struct { ++ char *variable; ++ int max_length; ++ } string; ++ struct { ++ int (*read_sysfs) (const char *buffer, int count); ++ int (*write_sysfs) (const char *buffer, int count); ++ void *data; ++ } special; ++ } data; ++ ++ /* Side effects routine. Used, eg, for reparsing the ++ * resume= entry when it changes */ ++ void (*write_side_effect) (void); ++ struct list_head sysfs_data_list; ++}; ++ ++enum { ++ TOI_SYSFS_DATA_NONE = 1, ++ TOI_SYSFS_DATA_CUSTOM, ++ TOI_SYSFS_DATA_BIT, ++ TOI_SYSFS_DATA_INTEGER, ++ TOI_SYSFS_DATA_UL, ++ TOI_SYSFS_DATA_LONG, ++ TOI_SYSFS_DATA_STRING ++}; ++ ++#define SYSFS_WRITEONLY 0200 ++#define SYSFS_READONLY 0444 ++#define SYSFS_RW 0644 ++ ++#define SYSFS_BIT(_name, _mode, _ul, _bit, _flags) { \ ++ .attr = {.name = _name , .mode = _mode }, \ ++ .type = TOI_SYSFS_DATA_BIT, \ ++ .flags = _flags, \ ++ .data = { .bit = { .bit_vector = _ul, .bit = _bit } } } ++ ++#define SYSFS_INT(_name, _mode, _int, _min, _max, _flags, _wse) { \ ++ .attr = {.name = _name , .mode = _mode }, \ ++ .type = TOI_SYSFS_DATA_INTEGER, \ ++ .flags = _flags, \ ++ .data = { .integer = { .variable = _int, .minimum = _min, \ ++ .maximum = _max } }, \ ++ .write_side_effect = _wse } ++ ++#define SYSFS_UL(_name, _mode, _ul, _min, _max, _flags) { \ ++ .attr = {.name = _name , .mode = _mode }, \ ++ .type = TOI_SYSFS_DATA_UL, \ ++ .flags = _flags, \ ++ .data = { .ul = { .variable = _ul, .minimum = _min, \ ++ .maximum = _max } } } ++ ++#define SYSFS_LONG(_name, _mode, _long, _min, _max, _flags) { \ ++ .attr = {.name = _name , .mode = _mode }, \ ++ .type = TOI_SYSFS_DATA_LONG, \ ++ .flags = _flags, \ ++ .data = { .a_long = { .variable = _long, .minimum = _min, \ ++ .maximum = _max } } } ++ ++#define SYSFS_STRING(_name, _mode, _string, _max_len, _flags, _wse) { \ ++ .attr = {.name = _name , .mode = _mode }, \ ++ .type = TOI_SYSFS_DATA_STRING, \ ++ .flags = _flags, \ ++ .data = { .string = { .variable = _string, .max_length = _max_len } }, \ ++ .write_side_effect = _wse } ++ ++#define SYSFS_CUSTOM(_name, _mode, _read, _write, _flags, _wse) { \ ++ .attr = {.name = _name , .mode = _mode }, \ ++ .type = TOI_SYSFS_DATA_CUSTOM, \ ++ .flags = _flags, \ ++ .data = { .special = { .read_sysfs = _read, .write_sysfs = _write } }, \ ++ .write_side_effect = _wse } ++ ++#define SYSFS_NONE(_name, _wse) { \ ++ .attr = {.name = _name , .mode = SYSFS_WRITEONLY }, \ ++ .type = TOI_SYSFS_DATA_NONE, \ ++ .write_side_effect = _wse, \ ++} ++ ++/* Flags */ ++#define SYSFS_NEEDS_SM_FOR_READ 1 ++#define SYSFS_NEEDS_SM_FOR_WRITE 2 ++#define SYSFS_HIBERNATE 4 ++#define SYSFS_RESUME 8 ++#define SYSFS_HIBERNATE_OR_RESUME (SYSFS_HIBERNATE | SYSFS_RESUME) ++#define SYSFS_HIBERNATING (SYSFS_HIBERNATE | SYSFS_NEEDS_SM_FOR_WRITE) ++#define SYSFS_RESUMING (SYSFS_RESUME | SYSFS_NEEDS_SM_FOR_WRITE) ++#define SYSFS_NEEDS_SM_FOR_BOTH \ ++ (SYSFS_NEEDS_SM_FOR_READ | SYSFS_NEEDS_SM_FOR_WRITE) ++ ++int toi_register_sysfs_file(struct kobject *kobj, ++ struct toi_sysfs_data *toi_sysfs_data); ++void toi_unregister_sysfs_file(struct kobject *kobj, ++ struct toi_sysfs_data *toi_sysfs_data); ++ ++extern struct kobject *tuxonice_kobj; ++ ++struct kobject *make_toi_sysdir(char *name); ++void remove_toi_sysdir(struct kobject *obj); ++extern void toi_cleanup_sysfs(void); ++ ++extern int toi_sysfs_init(void); ++extern void toi_sysfs_exit(void); +diff --git a/kernel/power/tuxonice_ui.c b/kernel/power/tuxonice_ui.c +new file mode 100644 +index 0000000..b0b3b40 +--- /dev/null ++++ b/kernel/power/tuxonice_ui.c +@@ -0,0 +1,250 @@ ++/* ++ * kernel/power/tuxonice_ui.c ++ * ++ * Copyright (C) 1998-2001 Gabor Kuti ++ * Copyright (C) 1998,2001,2002 Pavel Machek ++ * Copyright (C) 2002-2003 Florent Chabaud ++ * Copyright (C) 2002-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * Routines for TuxOnIce's user interface. ++ * ++ * The user interface code talks to a userspace program via a ++ * netlink socket. ++ * ++ * The kernel side: ++ * - starts the userui program; ++ * - sends text messages and progress bar status; ++ * ++ * The user space side: ++ * - passes messages regarding user requests (abort, toggle reboot etc) ++ * ++ */ ++ ++#define __KERNEL_SYSCALLS__ ++ ++#include ++ ++#include "tuxonice_sysfs.h" ++#include "tuxonice_modules.h" ++#include "tuxonice.h" ++#include "tuxonice_ui.h" ++#include "tuxonice_netlink.h" ++#include "tuxonice_power_off.h" ++#include "tuxonice_builtin.h" ++ ++static char local_printf_buf[1024]; /* Same as printk - should be safe */ ++struct ui_ops *toi_current_ui; ++EXPORT_SYMBOL_GPL(toi_current_ui); ++ ++/** ++ * toi_wait_for_keypress - Wait for keypress via userui or /dev/console. ++ * ++ * @timeout: Maximum time to wait. ++ * ++ * Wait for a keypress, either from userui or /dev/console if userui isn't ++ * available. The non-userui path is particularly for at boot-time, prior ++ * to userui being started, when we have an important warning to give to ++ * the user. ++ */ ++static char toi_wait_for_keypress(int timeout) ++{ ++ if (toi_current_ui && toi_current_ui->wait_for_key(timeout)) ++ return ' '; ++ ++ return toi_wait_for_keypress_dev_console(timeout); ++} ++ ++/* toi_early_boot_message() ++ * Description: Handle errors early in the process of booting. ++ * The user may press C to continue booting, perhaps ++ * invalidating the image, or space to reboot. ++ * This works from either the serial console or normally ++ * attached keyboard. ++ * ++ * Note that we come in here from init, while the kernel is ++ * locked. If we want to get events from the serial console, ++ * we need to temporarily unlock the kernel. ++ * ++ * toi_early_boot_message may also be called post-boot. ++ * In this case, it simply printks the message and returns. ++ * ++ * Arguments: int Whether we are able to erase the image. ++ * int default_answer. What to do when we timeout. This ++ * will normally be continue, but the user might ++ * provide command line options (__setup) to override ++ * particular cases. ++ * Char *. Pointer to a string explaining why we're moaning. ++ */ ++ ++#define say(message, a...) printk(KERN_EMERG message, ##a) ++ ++void toi_early_boot_message(int message_detail, int default_answer, ++ char *warning_reason, ...) ++{ ++#if defined(CONFIG_VT) || defined(CONFIG_SERIAL_CONSOLE) ++ unsigned long orig_state = get_toi_state(), continue_req = 0; ++ unsigned long orig_loglevel = console_loglevel; ++ int can_ask = 1; ++#else ++ int can_ask = 0; ++#endif ++ ++ va_list args; ++ int printed_len; ++ ++ if (!toi_wait) { ++ set_toi_state(TOI_CONTINUE_REQ); ++ can_ask = 0; ++ } ++ ++ if (warning_reason) { ++ va_start(args, warning_reason); ++ printed_len = vsnprintf(local_printf_buf, ++ sizeof(local_printf_buf), ++ warning_reason, ++ args); ++ va_end(args); ++ } ++ ++ if (!test_toi_state(TOI_BOOT_TIME)) { ++ printk("TuxOnIce: %s\n", local_printf_buf); ++ return; ++ } ++ ++ if (!can_ask) { ++ continue_req = !!default_answer; ++ goto post_ask; ++ } ++ ++#if defined(CONFIG_VT) || defined(CONFIG_SERIAL_CONSOLE) ++ console_loglevel = 7; ++ ++ say("=== TuxOnIce ===\n\n"); ++ if (warning_reason) { ++ say("BIG FAT WARNING!! %s\n\n", local_printf_buf); ++ switch (message_detail) { ++ case 0: ++ say("If you continue booting, note that any image WILL" ++ "NOT BE REMOVED.\nTuxOnIce is unable to do so " ++ "because the appropriate modules aren't\n" ++ "loaded. You should manually remove the image " ++ "to avoid any\npossibility of corrupting your " ++ "filesystem(s) later.\n"); ++ break; ++ case 1: ++ say("If you want to use the current TuxOnIce image, " ++ "reboot and try\nagain with the same kernel " ++ "that you hibernated from. If you want\n" ++ "to forget that image, continue and the image " ++ "will be erased.\n"); ++ break; ++ } ++ say("Press SPACE to reboot or C to continue booting with " ++ "this kernel\n\n"); ++ if (toi_wait > 0) ++ say("Default action if you don't select one in %d " ++ "seconds is: %s.\n", ++ toi_wait, ++ default_answer == TOI_CONTINUE_REQ ? ++ "continue booting" : "reboot"); ++ } else { ++ say("BIG FAT WARNING!!\n\n" ++ "You have tried to resume from this image before.\n" ++ "If it failed once, it may well fail again.\n" ++ "Would you like to remove the image and boot " ++ "normally?\nThis will be equivalent to entering " ++ "noresume on the\nkernel command line.\n\n" ++ "Press SPACE to remove the image or C to continue " ++ "resuming.\n\n"); ++ if (toi_wait > 0) ++ say("Default action if you don't select one in %d " ++ "seconds is: %s.\n", toi_wait, ++ !!default_answer ? ++ "continue resuming" : "remove the image"); ++ } ++ console_loglevel = orig_loglevel; ++ ++ set_toi_state(TOI_SANITY_CHECK_PROMPT); ++ clear_toi_state(TOI_CONTINUE_REQ); ++ ++ if (toi_wait_for_keypress(toi_wait) == 0) /* We timed out */ ++ continue_req = !!default_answer; ++ else ++ continue_req = test_toi_state(TOI_CONTINUE_REQ); ++ ++#endif /* CONFIG_VT or CONFIG_SERIAL_CONSOLE */ ++ ++post_ask: ++ if ((warning_reason) && (!continue_req)) ++ machine_restart(NULL); ++ ++ restore_toi_state(orig_state); ++ if (continue_req) ++ set_toi_state(TOI_CONTINUE_REQ); ++} ++EXPORT_SYMBOL_GPL(toi_early_boot_message); ++#undef say ++ ++/* ++ * User interface specific /sys/power/tuxonice entries. ++ */ ++ ++static struct toi_sysfs_data sysfs_params[] = { ++#if defined(CONFIG_NET) && defined(CONFIG_SYSFS) ++ SYSFS_INT("default_console_level", SYSFS_RW, ++ &toi_bkd.toi_default_console_level, 0, 7, 0, NULL), ++ SYSFS_UL("debug_sections", SYSFS_RW, &toi_bkd.toi_debug_state, 0, ++ 1 << 30, 0), ++ SYSFS_BIT("log_everything", SYSFS_RW, &toi_bkd.toi_action, TOI_LOGALL, ++ 0) ++#endif ++}; ++ ++static struct toi_module_ops userui_ops = { ++ .type = MISC_HIDDEN_MODULE, ++ .name = "printk ui", ++ .directory = "user_interface", ++ .module = THIS_MODULE, ++ .sysfs_data = sysfs_params, ++ .num_sysfs_entries = sizeof(sysfs_params) / ++ sizeof(struct toi_sysfs_data), ++}; ++ ++int toi_register_ui_ops(struct ui_ops *this_ui) ++{ ++ if (toi_current_ui) { ++ printk(KERN_INFO "Only one TuxOnIce user interface module can " ++ "be loaded at a time."); ++ return -EBUSY; ++ } ++ ++ toi_current_ui = this_ui; ++ ++ return 0; ++} ++EXPORT_SYMBOL_GPL(toi_register_ui_ops); ++ ++void toi_remove_ui_ops(struct ui_ops *this_ui) ++{ ++ if (toi_current_ui != this_ui) ++ return; ++ ++ toi_current_ui = NULL; ++} ++EXPORT_SYMBOL_GPL(toi_remove_ui_ops); ++ ++/* toi_console_sysfs_init ++ * Description: Boot time initialisation for user interface. ++ */ ++ ++int toi_ui_init(void) ++{ ++ return toi_register_module(&userui_ops); ++} ++ ++void toi_ui_exit(void) ++{ ++ toi_unregister_module(&userui_ops); ++} +diff --git a/kernel/power/tuxonice_ui.h b/kernel/power/tuxonice_ui.h +new file mode 100644 +index 0000000..85fb7cb +--- /dev/null ++++ b/kernel/power/tuxonice_ui.h +@@ -0,0 +1,97 @@ ++/* ++ * kernel/power/tuxonice_ui.h ++ * ++ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) ++ */ ++ ++enum { ++ DONT_CLEAR_BAR, ++ CLEAR_BAR ++}; ++ ++enum { ++ /* Userspace -> Kernel */ ++ USERUI_MSG_ABORT = 0x11, ++ USERUI_MSG_SET_STATE = 0x12, ++ USERUI_MSG_GET_STATE = 0x13, ++ USERUI_MSG_GET_DEBUG_STATE = 0x14, ++ USERUI_MSG_SET_DEBUG_STATE = 0x15, ++ USERUI_MSG_SPACE = 0x18, ++ USERUI_MSG_GET_POWERDOWN_METHOD = 0x1A, ++ USERUI_MSG_SET_POWERDOWN_METHOD = 0x1B, ++ USERUI_MSG_GET_LOGLEVEL = 0x1C, ++ USERUI_MSG_SET_LOGLEVEL = 0x1D, ++ USERUI_MSG_PRINTK = 0x1E, ++ ++ /* Kernel -> Userspace */ ++ USERUI_MSG_MESSAGE = 0x21, ++ USERUI_MSG_PROGRESS = 0x22, ++ USERUI_MSG_POST_ATOMIC_RESTORE = 0x25, ++ ++ USERUI_MSG_MAX, ++}; ++ ++struct userui_msg_params { ++ u32 a, b, c, d; ++ char text[255]; ++}; ++ ++struct ui_ops { ++ char (*wait_for_key) (int timeout); ++ u32 (*update_status) (u32 value, u32 maximum, const char *fmt, ...); ++ void (*prepare_status) (int clearbar, const char *fmt, ...); ++ void (*cond_pause) (int pause, char *message); ++ void (*abort)(int result_code, const char *fmt, ...); ++ void (*prepare)(void); ++ void (*cleanup)(void); ++ void (*message)(u32 section, u32 level, u32 normally_logged, ++ const char *fmt, ...); ++}; ++ ++extern struct ui_ops *toi_current_ui; ++ ++#define toi_update_status(val, max, fmt, args...) \ ++ (toi_current_ui ? (toi_current_ui->update_status) (val, max, fmt, ##args) : \ ++ max) ++ ++#define toi_prepare_console(void) \ ++ do { if (toi_current_ui) \ ++ (toi_current_ui->prepare)(); \ ++ } while (0) ++ ++#define toi_cleanup_console(void) \ ++ do { if (toi_current_ui) \ ++ (toi_current_ui->cleanup)(); \ ++ } while (0) ++ ++#define abort_hibernate(result, fmt, args...) \ ++ do { if (toi_current_ui) \ ++ (toi_current_ui->abort)(result, fmt, ##args); \ ++ else { \ ++ set_abort_result(result); \ ++ } \ ++ } while (0) ++ ++#define toi_cond_pause(pause, message) \ ++ do { if (toi_current_ui) \ ++ (toi_current_ui->cond_pause)(pause, message); \ ++ } while (0) ++ ++#define toi_prepare_status(clear, fmt, args...) \ ++ do { if (toi_current_ui) \ ++ (toi_current_ui->prepare_status)(clear, fmt, ##args); \ ++ else \ ++ printk(KERN_ERR fmt "%s", ##args, "\n"); \ ++ } while (0) ++ ++#define toi_message(sn, lev, log, fmt, a...) \ ++do { \ ++ if (toi_current_ui && (!sn || test_debug_state(sn))) \ ++ toi_current_ui->message(sn, lev, log, fmt, ##a); \ ++} while (0) ++ ++__exit void toi_ui_cleanup(void); ++extern int toi_ui_init(void); ++extern void toi_ui_exit(void); ++extern int toi_register_ui_ops(struct ui_ops *this_ui); ++extern void toi_remove_ui_ops(struct ui_ops *this_ui); +diff --git a/kernel/power/tuxonice_userui.c b/kernel/power/tuxonice_userui.c +new file mode 100644 +index 0000000..625d863 +--- /dev/null ++++ b/kernel/power/tuxonice_userui.c +@@ -0,0 +1,668 @@ ++/* ++ * kernel/power/user_ui.c ++ * ++ * Copyright (C) 2005-2007 Bernard Blackham ++ * Copyright (C) 2002-2010 Nigel Cunningham (nigel at tuxonice net) ++ * ++ * This file is released under the GPLv2. ++ * ++ * Routines for TuxOnIce's user interface. ++ * ++ * The user interface code talks to a userspace program via a ++ * netlink socket. ++ * ++ * The kernel side: ++ * - starts the userui program; ++ * - sends text messages and progress bar status; ++ * ++ * The user space side: ++ * - passes messages regarding user requests (abort, toggle reboot etc) ++ * ++ */ ++ ++#define __KERNEL_SYSCALLS__ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "tuxonice_sysfs.h" ++#include "tuxonice_modules.h" ++#include "tuxonice.h" ++#include "tuxonice_ui.h" ++#include "tuxonice_netlink.h" ++#include "tuxonice_power_off.h" ++ ++static char local_printf_buf[1024]; /* Same as printk - should be safe */ ++ ++static struct user_helper_data ui_helper_data; ++static struct toi_module_ops userui_ops; ++static int orig_kmsg; ++ ++static char lastheader[512]; ++static int lastheader_message_len; ++static int ui_helper_changed; /* Used at resume-time so don't overwrite value ++ set from initrd/ramfs. */ ++ ++/* Number of distinct progress amounts that userspace can display */ ++static int progress_granularity = 30; ++ ++static DECLARE_WAIT_QUEUE_HEAD(userui_wait_for_key); ++ ++/** ++ * ui_nl_set_state - Update toi_action based on a message from userui. ++ * ++ * @n: The bit (1 << bit) to set. ++ */ ++static void ui_nl_set_state(int n) ++{ ++ /* Only let them change certain settings */ ++ static const u32 toi_action_mask = ++ (1 << TOI_REBOOT) | (1 << TOI_PAUSE) | ++ (1 << TOI_LOGALL) | ++ (1 << TOI_SINGLESTEP) | ++ (1 << TOI_PAUSE_NEAR_PAGESET_END); ++ static unsigned long new_action; ++ ++ new_action = (toi_bkd.toi_action & (~toi_action_mask)) | ++ (n & toi_action_mask); ++ ++ printk(KERN_DEBUG "n is %x. Action flags being changed from %lx " ++ "to %lx.", n, toi_bkd.toi_action, new_action); ++ toi_bkd.toi_action = new_action; ++ ++ if (!test_action_state(TOI_PAUSE) && ++ !test_action_state(TOI_SINGLESTEP)) ++ wake_up_interruptible(&userui_wait_for_key); ++} ++ ++/** ++ * userui_post_atomic_restore - Tell userui that atomic restore just happened. ++ * ++ * Tell userui that atomic restore just occured, so that it can do things like ++ * redrawing the screen, re-getting settings and so on. ++ */ ++static void userui_post_atomic_restore(struct toi_boot_kernel_data *bkd) ++{ ++ toi_send_netlink_message(&ui_helper_data, ++ USERUI_MSG_POST_ATOMIC_RESTORE, NULL, 0); ++} ++ ++/** ++ * userui_storage_needed - Report how much memory in image header is needed. ++ */ ++static int userui_storage_needed(void) ++{ ++ return sizeof(ui_helper_data.program) + 1 + sizeof(int); ++} ++ ++/** ++ * userui_save_config_info - Fill buffer with config info for image header. ++ * ++ * @buf: Buffer into which to put the config info we want to save. ++ */ ++static int userui_save_config_info(char *buf) ++{ ++ *((int *) buf) = progress_granularity; ++ memcpy(buf + sizeof(int), ui_helper_data.program, ++ sizeof(ui_helper_data.program)); ++ return sizeof(ui_helper_data.program) + sizeof(int) + 1; ++} ++ ++/** ++ * userui_load_config_info - Restore config info from buffer. ++ * ++ * @buf: Buffer containing header info loaded. ++ * @size: Size of data loaded for this module. ++ */ ++static void userui_load_config_info(char *buf, int size) ++{ ++ progress_granularity = *((int *) buf); ++ size -= sizeof(int); ++ ++ /* Don't load the saved path if one has already been set */ ++ if (ui_helper_changed) ++ return; ++ ++ if (size > sizeof(ui_helper_data.program)) ++ size = sizeof(ui_helper_data.program); ++ ++ memcpy(ui_helper_data.program, buf + sizeof(int), size); ++ ui_helper_data.program[sizeof(ui_helper_data.program)-1] = '\0'; ++} ++ ++/** ++ * set_ui_program_set: Record that userui program was changed. ++ * ++ * Side effect routine for when the userui program is set. In an initrd or ++ * ramfs, the user may set a location for the userui program. If this happens, ++ * we don't want to reload the value that was saved in the image header. This ++ * routine allows us to flag that we shouldn't restore the program name from ++ * the image header. ++ */ ++static void set_ui_program_set(void) ++{ ++ ui_helper_changed = 1; ++} ++ ++/** ++ * userui_memory_needed - Tell core how much memory to reserve for us. ++ */ ++static int userui_memory_needed(void) ++{ ++ /* ball park figure of 128 pages */ ++ return 128 * PAGE_SIZE; ++} ++ ++/** ++ * userui_update_status - Update the progress bar and (if on) in-bar message. ++ * ++ * @value: Current progress percentage numerator. ++ * @maximum: Current progress percentage denominator. ++ * @fmt: Message to be displayed in the middle of the progress bar. ++ * ++ * Note that a NULL message does not mean that any previous message is erased! ++ * For that, you need toi_prepare_status with clearbar on. ++ * ++ * Returns an unsigned long, being the next numerator (as determined by the ++ * maximum and progress granularity) where status needs to be updated. ++ * This is to reduce unnecessary calls to update_status. ++ */ ++static u32 userui_update_status(u32 value, u32 maximum, const char *fmt, ...) ++{ ++ static u32 last_step = 9999; ++ struct userui_msg_params msg; ++ u32 this_step, next_update; ++ int bitshift; ++ ++ if (ui_helper_data.pid == -1) ++ return 0; ++ ++ if ((!maximum) || (!progress_granularity)) ++ return maximum; ++ ++ if (value < 0) ++ value = 0; ++ ++ if (value > maximum) ++ value = maximum; ++ ++ /* Try to avoid math problems - we can't do 64 bit math here ++ * (and shouldn't need it - anyone got screen resolution ++ * of 65536 pixels or more?) */ ++ bitshift = fls(maximum) - 16; ++ if (bitshift > 0) { ++ u32 temp_maximum = maximum >> bitshift; ++ u32 temp_value = value >> bitshift; ++ this_step = (u32) ++ (temp_value * progress_granularity / temp_maximum); ++ next_update = (((this_step + 1) * temp_maximum / ++ progress_granularity) + 1) << bitshift; ++ } else { ++ this_step = (u32) (value * progress_granularity / maximum); ++ next_update = ((this_step + 1) * maximum / ++ progress_granularity) + 1; ++ } ++ ++ if (this_step == last_step) ++ return next_update; ++ ++ memset(&msg, 0, sizeof(msg)); ++ ++ msg.a = this_step; ++ msg.b = progress_granularity; ++ ++ if (fmt) { ++ va_list args; ++ va_start(args, fmt); ++ vsnprintf(msg.text, sizeof(msg.text), fmt, args); ++ va_end(args); ++ msg.text[sizeof(msg.text)-1] = '\0'; ++ } ++ ++ toi_send_netlink_message(&ui_helper_data, USERUI_MSG_PROGRESS, ++ &msg, sizeof(msg)); ++ last_step = this_step; ++ ++ return next_update; ++} ++ ++/** ++ * userui_message - Display a message without necessarily logging it. ++ * ++ * @section: Type of message. Messages can be filtered by type. ++ * @level: Degree of importance of the message. Lower values = higher priority. ++ * @normally_logged: Whether logged even if log_everything is off. ++ * @fmt: Message (and parameters). ++ * ++ * This function is intended to do the same job as printk, but without normally ++ * logging what is printed. The point is to be able to get debugging info on ++ * screen without filling the logs with "1/534. ^M 2/534^M. 3/534^M" ++ * ++ * It may be called from an interrupt context - can't sleep! ++ */ ++static void userui_message(u32 section, u32 level, u32 normally_logged, ++ const char *fmt, ...) ++{ ++ struct userui_msg_params msg; ++ ++ if ((level) && (level > console_loglevel)) ++ return; ++ ++ memset(&msg, 0, sizeof(msg)); ++ ++ msg.a = section; ++ msg.b = level; ++ msg.c = normally_logged; ++ ++ if (fmt) { ++ va_list args; ++ va_start(args, fmt); ++ vsnprintf(msg.text, sizeof(msg.text), fmt, args); ++ va_end(args); ++ msg.text[sizeof(msg.text)-1] = '\0'; ++ } ++ ++ if (test_action_state(TOI_LOGALL)) ++ printk(KERN_INFO "%s\n", msg.text); ++ ++ toi_send_netlink_message(&ui_helper_data, USERUI_MSG_MESSAGE, ++ &msg, sizeof(msg)); ++} ++ ++/** ++ * wait_for_key_via_userui - Wait for userui to receive a keypress. ++ */ ++static void wait_for_key_via_userui(void) ++{ ++ DECLARE_WAITQUEUE(wait, current); ++ ++ add_wait_queue(&userui_wait_for_key, &wait); ++ set_current_state(TASK_INTERRUPTIBLE); ++ ++ interruptible_sleep_on(&userui_wait_for_key); ++ ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(&userui_wait_for_key, &wait); ++} ++ ++/** ++ * userui_prepare_status - Display high level messages. ++ * ++ * @clearbar: Whether to clear the progress bar. ++ * @fmt...: New message for the title. ++ * ++ * Prepare the 'nice display', drawing the header and version, along with the ++ * current action and perhaps also resetting the progress bar. ++ */ ++static void userui_prepare_status(int clearbar, const char *fmt, ...) ++{ ++ va_list args; ++ ++ if (fmt) { ++ va_start(args, fmt); ++ lastheader_message_len = vsnprintf(lastheader, 512, fmt, args); ++ va_end(args); ++ } ++ ++ if (clearbar) ++ toi_update_status(0, 1, NULL); ++ ++ if (ui_helper_data.pid == -1) ++ printk(KERN_EMERG "%s\n", lastheader); ++ else ++ toi_message(0, TOI_STATUS, 1, lastheader, NULL); ++} ++ ++/** ++ * toi_wait_for_keypress - Wait for keypress via userui. ++ * ++ * @timeout: Maximum time to wait. ++ * ++ * Wait for a keypress from userui. ++ * ++ * FIXME: Implement timeout? ++ */ ++static char userui_wait_for_keypress(int timeout) ++{ ++ char key = '\0'; ++ ++ if (ui_helper_data.pid != -1) { ++ wait_for_key_via_userui(); ++ key = ' '; ++ } ++ ++ return key; ++} ++ ++/** ++ * userui_abort_hibernate - Abort a cycle & tell user if they didn't request it. ++ * ++ * @result_code: Reason why we're aborting (1 << bit). ++ * @fmt: Message to display if telling the user what's going on. ++ * ++ * Abort a cycle. If this wasn't at the user's request (and we're displaying ++ * output), tell the user why and wait for them to acknowledge the message. ++ */ ++static void userui_abort_hibernate(int result_code, const char *fmt, ...) ++{ ++ va_list args; ++ int printed_len = 0; ++ ++ set_result_state(result_code); ++ ++ if (test_result_state(TOI_ABORTED)) ++ return; ++ ++ set_result_state(TOI_ABORTED); ++ ++ if (test_result_state(TOI_ABORT_REQUESTED)) ++ return; ++ ++ va_start(args, fmt); ++ printed_len = vsnprintf(local_printf_buf, sizeof(local_printf_buf), ++ fmt, args); ++ va_end(args); ++ if (ui_helper_data.pid != -1) ++ printed_len = sprintf(local_printf_buf + printed_len, ++ " (Press SPACE to continue)"); ++ ++ toi_prepare_status(CLEAR_BAR, "%s", local_printf_buf); ++ ++ if (ui_helper_data.pid != -1) ++ userui_wait_for_keypress(0); ++} ++ ++/** ++ * request_abort_hibernate - Abort hibernating or resuming at user request. ++ * ++ * Handle the user requesting the cancellation of a hibernation or resume by ++ * pressing escape. ++ */ ++static void request_abort_hibernate(void) ++{ ++ if (test_result_state(TOI_ABORT_REQUESTED) || ++ !test_action_state(TOI_CAN_CANCEL)) ++ return; ++ ++ if (test_toi_state(TOI_NOW_RESUMING)) { ++ toi_prepare_status(CLEAR_BAR, "Escape pressed. " ++ "Powering down again."); ++ set_toi_state(TOI_STOP_RESUME); ++ while (!test_toi_state(TOI_IO_STOPPED)) ++ schedule(); ++ if (toiActiveAllocator->mark_resume_attempted) ++ toiActiveAllocator->mark_resume_attempted(0); ++ toi_power_down(); ++ } ++ ++ toi_prepare_status(CLEAR_BAR, "--- ESCAPE PRESSED :" ++ " ABORTING HIBERNATION ---"); ++ set_abort_result(TOI_ABORT_REQUESTED); ++ wake_up_interruptible(&userui_wait_for_key); ++} ++ ++/** ++ * userui_user_rcv_msg - Receive a netlink message from userui. ++ * ++ * @skb: skb received. ++ * @nlh: Netlink header received. ++ */ ++static int userui_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) ++{ ++ int type; ++ int *data; ++ ++ type = nlh->nlmsg_type; ++ ++ /* A control message: ignore them */ ++ if (type < NETLINK_MSG_BASE) ++ return 0; ++ ++ /* Unknown message: reply with EINVAL */ ++ if (type >= USERUI_MSG_MAX) ++ return -EINVAL; ++ ++ /* All operations require privileges, even GET */ ++ if (security_netlink_recv(skb, CAP_NET_ADMIN)) ++ return -EPERM; ++ ++ /* Only allow one task to receive NOFREEZE privileges */ ++ if (type == NETLINK_MSG_NOFREEZE_ME && ui_helper_data.pid != -1) { ++ printk(KERN_INFO "Got NOFREEZE_ME request when " ++ "ui_helper_data.pid is %d.\n", ui_helper_data.pid); ++ return -EBUSY; ++ } ++ ++ data = (int *) NLMSG_DATA(nlh); ++ ++ switch (type) { ++ case USERUI_MSG_ABORT: ++ request_abort_hibernate(); ++ return 0; ++ case USERUI_MSG_GET_STATE: ++ toi_send_netlink_message(&ui_helper_data, ++ USERUI_MSG_GET_STATE, &toi_bkd.toi_action, ++ sizeof(toi_bkd.toi_action)); ++ return 0; ++ case USERUI_MSG_GET_DEBUG_STATE: ++ toi_send_netlink_message(&ui_helper_data, ++ USERUI_MSG_GET_DEBUG_STATE, ++ &toi_bkd.toi_debug_state, ++ sizeof(toi_bkd.toi_debug_state)); ++ return 0; ++ case USERUI_MSG_SET_STATE: ++ if (nlh->nlmsg_len < NLMSG_LENGTH(sizeof(int))) ++ return -EINVAL; ++ ui_nl_set_state(*data); ++ return 0; ++ case USERUI_MSG_SET_DEBUG_STATE: ++ if (nlh->nlmsg_len < NLMSG_LENGTH(sizeof(int))) ++ return -EINVAL; ++ toi_bkd.toi_debug_state = (*data); ++ return 0; ++ case USERUI_MSG_SPACE: ++ wake_up_interruptible(&userui_wait_for_key); ++ return 0; ++ case USERUI_MSG_GET_POWERDOWN_METHOD: ++ toi_send_netlink_message(&ui_helper_data, ++ USERUI_MSG_GET_POWERDOWN_METHOD, ++ &toi_poweroff_method, ++ sizeof(toi_poweroff_method)); ++ return 0; ++ case USERUI_MSG_SET_POWERDOWN_METHOD: ++ if (nlh->nlmsg_len != NLMSG_LENGTH(sizeof(char))) ++ return -EINVAL; ++ toi_poweroff_method = (unsigned long)(*data); ++ return 0; ++ case USERUI_MSG_GET_LOGLEVEL: ++ toi_send_netlink_message(&ui_helper_data, ++ USERUI_MSG_GET_LOGLEVEL, ++ &toi_bkd.toi_default_console_level, ++ sizeof(toi_bkd.toi_default_console_level)); ++ return 0; ++ case USERUI_MSG_SET_LOGLEVEL: ++ if (nlh->nlmsg_len < NLMSG_LENGTH(sizeof(int))) ++ return -EINVAL; ++ toi_bkd.toi_default_console_level = (*data); ++ return 0; ++ case USERUI_MSG_PRINTK: ++ printk(KERN_INFO "%s", (char *) data); ++ return 0; ++ } ++ ++ /* Unhandled here */ ++ return 1; ++} ++ ++/** ++ * userui_cond_pause - Possibly pause at user request. ++ * ++ * @pause: Whether to pause or just display the message. ++ * @message: Message to display at the start of pausing. ++ * ++ * Potentially pause and wait for the user to tell us to continue. We normally ++ * only pause when @pause is set. While paused, the user can do things like ++ * changing the loglevel, toggling the display of debugging sections and such ++ * like. ++ */ ++static void userui_cond_pause(int pause, char *message) ++{ ++ int displayed_message = 0, last_key = 0; ++ ++ while (last_key != 32 && ++ ui_helper_data.pid != -1 && ++ ((test_action_state(TOI_PAUSE) && pause) || ++ (test_action_state(TOI_SINGLESTEP)))) { ++ if (!displayed_message) { ++ toi_prepare_status(DONT_CLEAR_BAR, ++ "%s Press SPACE to continue.%s", ++ message ? message : "", ++ (test_action_state(TOI_SINGLESTEP)) ? ++ " Single step on." : ""); ++ displayed_message = 1; ++ } ++ last_key = userui_wait_for_keypress(0); ++ } ++ schedule(); ++} ++ ++/** ++ * userui_prepare_console - Prepare the console for use. ++ * ++ * Prepare a console for use, saving current kmsg settings and attempting to ++ * start userui. Console loglevel changes are handled by userui. ++ */ ++static void userui_prepare_console(void) ++{ ++ orig_kmsg = vt_kmsg_redirect(fg_console + 1); ++ ++ ui_helper_data.pid = -1; ++ ++ if (!userui_ops.enabled) { ++ printk(KERN_INFO "TuxOnIce: Userui disabled.\n"); ++ return; ++ } ++ ++ if (*ui_helper_data.program) ++ toi_netlink_setup(&ui_helper_data); ++ else ++ printk(KERN_INFO "TuxOnIce: Userui program not configured.\n"); ++} ++ ++/** ++ * userui_cleanup_console - Cleanup after a cycle. ++ * ++ * Tell userui to cleanup, and restore kmsg_redirect to its original value. ++ */ ++ ++static void userui_cleanup_console(void) ++{ ++ if (ui_helper_data.pid > -1) ++ toi_netlink_close(&ui_helper_data); ++ ++ vt_kmsg_redirect(orig_kmsg); ++} ++ ++/* ++ * User interface specific /sys/power/tuxonice entries. ++ */ ++ ++static struct toi_sysfs_data sysfs_params[] = { ++#if defined(CONFIG_NET) && defined(CONFIG_SYSFS) ++ SYSFS_BIT("enable_escape", SYSFS_RW, &toi_bkd.toi_action, ++ TOI_CAN_CANCEL, 0), ++ SYSFS_BIT("pause_between_steps", SYSFS_RW, &toi_bkd.toi_action, ++ TOI_PAUSE, 0), ++ SYSFS_INT("enabled", SYSFS_RW, &userui_ops.enabled, 0, 1, 0, NULL), ++ SYSFS_INT("progress_granularity", SYSFS_RW, &progress_granularity, 1, ++ 2048, 0, NULL), ++ SYSFS_STRING("program", SYSFS_RW, ui_helper_data.program, 255, 0, ++ set_ui_program_set), ++ SYSFS_INT("debug", SYSFS_RW, &ui_helper_data.debug, 0, 1, 0, NULL) ++#endif ++}; ++ ++static struct toi_module_ops userui_ops = { ++ .type = MISC_MODULE, ++ .name = "userui", ++ .shared_directory = "user_interface", ++ .module = THIS_MODULE, ++ .storage_needed = userui_storage_needed, ++ .save_config_info = userui_save_config_info, ++ .load_config_info = userui_load_config_info, ++ .memory_needed = userui_memory_needed, ++ .post_atomic_restore = userui_post_atomic_restore, ++ .sysfs_data = sysfs_params, ++ .num_sysfs_entries = sizeof(sysfs_params) / ++ sizeof(struct toi_sysfs_data), ++}; ++ ++static struct ui_ops my_ui_ops = { ++ .update_status = userui_update_status, ++ .message = userui_message, ++ .prepare_status = userui_prepare_status, ++ .abort = userui_abort_hibernate, ++ .cond_pause = userui_cond_pause, ++ .prepare = userui_prepare_console, ++ .cleanup = userui_cleanup_console, ++ .wait_for_key = userui_wait_for_keypress, ++}; ++ ++/** ++ * toi_user_ui_init - Boot time initialisation for user interface. ++ * ++ * Invoked from the core init routine. ++ */ ++static __init int toi_user_ui_init(void) ++{ ++ int result; ++ ++ ui_helper_data.nl = NULL; ++ strncpy(ui_helper_data.program, CONFIG_TOI_USERUI_DEFAULT_PATH, 255); ++ ui_helper_data.pid = -1; ++ ui_helper_data.skb_size = sizeof(struct userui_msg_params); ++ ui_helper_data.pool_limit = 6; ++ ui_helper_data.netlink_id = NETLINK_TOI_USERUI; ++ ui_helper_data.name = "userspace ui"; ++ ui_helper_data.rcv_msg = userui_user_rcv_msg; ++ ui_helper_data.interface_version = 8; ++ ui_helper_data.must_init = 0; ++ ui_helper_data.not_ready = userui_cleanup_console; ++ init_completion(&ui_helper_data.wait_for_process); ++ result = toi_register_module(&userui_ops); ++ if (!result) ++ result = toi_register_ui_ops(&my_ui_ops); ++ if (result) ++ toi_unregister_module(&userui_ops); ++ ++ return result; ++} ++ ++#ifdef MODULE ++/** ++ * toi_user_ui_ext - Cleanup code for if the core is unloaded. ++ */ ++static __exit void toi_user_ui_exit(void) ++{ ++ toi_netlink_close_complete(&ui_helper_data); ++ toi_remove_ui_ops(&my_ui_ops); ++ toi_unregister_module(&userui_ops); ++} ++ ++module_init(toi_user_ui_init); ++module_exit(toi_user_ui_exit); ++MODULE_AUTHOR("Nigel Cunningham"); ++MODULE_DESCRIPTION("TuxOnIce Userui Support"); ++MODULE_LICENSE("GPL"); ++#else ++late_initcall(toi_user_ui_init); ++#endif +diff --git a/kernel/power/user.c b/kernel/power/user.c +index bf0014d..d1c4ac2 100644 +--- a/kernel/power/user.c ++++ b/kernel/power/user.c +@@ -64,6 +64,7 @@ static struct snapshot_data { + } snapshot_state; + + atomic_t snapshot_device_available = ATOMIC_INIT(1); ++EXPORT_SYMBOL_GPL(snapshot_device_available); + + static int snapshot_open(struct inode *inode, struct file *filp) + { +diff --git a/kernel/printk.c b/kernel/printk.c +index 1751c45..b7257e3 100644 +--- a/kernel/printk.c ++++ b/kernel/printk.c +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -68,6 +69,7 @@ int console_printk[4] = { + MINIMUM_CONSOLE_LOGLEVEL, /* minimum_console_loglevel */ + DEFAULT_CONSOLE_LOGLEVEL, /* default_console_loglevel */ + }; ++EXPORT_SYMBOL_GPL(console_printk); + + static int saved_console_loglevel = -1; + +@@ -956,6 +958,7 @@ void suspend_console(void) + console_suspended = 1; + up(&console_sem); + } ++EXPORT_SYMBOL_GPL(suspend_console); + + void resume_console(void) + { +@@ -965,6 +968,7 @@ void resume_console(void) + console_suspended = 0; + release_console_sem(); + } ++EXPORT_SYMBOL_GPL(resume_console); + + /** + * acquire_console_sem - lock the console system for exclusive use. +diff --git a/mm/bootmem.c b/mm/bootmem.c +index 7d14868..e01836f 100644 +--- a/mm/bootmem.c ++++ b/mm/bootmem.c +@@ -23,6 +23,7 @@ + unsigned long max_low_pfn; + unsigned long min_low_pfn; + unsigned long max_pfn; ++EXPORT_SYMBOL_GPL(max_pfn); + + #ifdef CONFIG_CRASH_DUMP + /* +diff --git a/mm/highmem.c b/mm/highmem.c +index 9c1e627..b0facc3 100644 +--- a/mm/highmem.c ++++ b/mm/highmem.c +@@ -57,6 +57,7 @@ unsigned int nr_free_highpages (void) + + return pages; + } ++EXPORT_SYMBOL_GPL(nr_free_highpages); + + static int pkmap_count[LAST_PKMAP]; + static unsigned int last_pkmap_nr; +diff --git a/mm/memory.c b/mm/memory.c +index 09e4b1b..fe93399 100644 +--- a/mm/memory.c ++++ b/mm/memory.c +@@ -1243,6 +1243,7 @@ no_page_table: + return ERR_PTR(-EFAULT); + return page; + } ++EXPORT_SYMBOL_GPL(follow_page); + + int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, + unsigned long start, int nr_pages, unsigned int gup_flags, +diff --git a/mm/mmzone.c b/mm/mmzone.c +index f5b7d17..72a6770 100644 +--- a/mm/mmzone.c ++++ b/mm/mmzone.c +@@ -14,6 +14,7 @@ struct pglist_data *first_online_pgdat(void) + { + return NODE_DATA(first_online_node); + } ++EXPORT_SYMBOL_GPL(first_online_pgdat); + + struct pglist_data *next_online_pgdat(struct pglist_data *pgdat) + { +@@ -23,6 +24,7 @@ struct pglist_data *next_online_pgdat(struct pglist_data *pgdat) + return NULL; + return NODE_DATA(nid); + } ++EXPORT_SYMBOL_GPL(next_online_pgdat); + + /* + * next_zone - helper magic for for_each_zone() +@@ -42,6 +44,7 @@ struct zone *next_zone(struct zone *zone) + } + return zone; + } ++EXPORT_SYMBOL_GPL(next_zone); + + static inline int zref_in_nodemask(struct zoneref *zref, nodemask_t *nodes) + { +diff --git a/mm/page-writeback.c b/mm/page-writeback.c +index 0b19943..4d31aa0 100644 +--- a/mm/page-writeback.c ++++ b/mm/page-writeback.c +@@ -99,6 +99,7 @@ unsigned int dirty_expire_interval = 30 * 100; /* centiseconds */ + * Flag that makes the machine dump writes/reads and block dirtyings. + */ + int block_dump; ++EXPORT_SYMBOL_GPL(block_dump); + + /* + * Flag that puts the machine in "laptop mode". Doubles as a timeout in jiffies: +diff --git a/mm/page_alloc.c b/mm/page_alloc.c +index 8deb9d0..2ffc3f4 100644 +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c +@@ -2106,6 +2106,26 @@ static unsigned int nr_free_zone_pages(int offset) + return sum; + } + ++static unsigned int nr_unallocated_zone_pages(int offset) ++{ ++ struct zoneref *z; ++ struct zone *zone; ++ ++ /* Just pick one node, since fallback list is circular */ ++ unsigned int sum = 0; ++ ++ struct zonelist *zonelist = node_zonelist(numa_node_id(), GFP_KERNEL); ++ ++ for_each_zone_zonelist(zone, z, zonelist, offset) { ++ unsigned long high = high_wmark_pages(zone); ++ unsigned long left = zone_page_state(zone, NR_FREE_PAGES); ++ if (left > high) ++ sum += left - high; ++ } ++ ++ return sum; ++} ++ + /* + * Amount of free RAM allocatable within ZONE_DMA and ZONE_NORMAL + */ +@@ -2116,6 +2136,15 @@ unsigned int nr_free_buffer_pages(void) + EXPORT_SYMBOL_GPL(nr_free_buffer_pages); + + /* ++ * Amount of free RAM allocatable within ZONE_DMA and ZONE_NORMAL ++ */ ++unsigned int nr_unallocated_buffer_pages(void) ++{ ++ return nr_unallocated_zone_pages(gfp_zone(GFP_USER)); ++} ++EXPORT_SYMBOL_GPL(nr_unallocated_buffer_pages); ++ ++/* + * Amount of free RAM allocatable within all zones + */ + unsigned int nr_free_pagecache_pages(void) +diff --git a/mm/shmem.c b/mm/shmem.c +index eef4ebe..1adeead 100644 +--- a/mm/shmem.c ++++ b/mm/shmem.c +@@ -1568,6 +1568,8 @@ static struct inode *shmem_get_inode(struct super_block *sb, int mode, + memset(info, 0, (char *)inode - (char *)info); + spin_lock_init(&info->lock); + info->flags = flags & VM_NORESERVE; ++ if (flags & VM_ATOMIC_COPY) ++ inode->i_flags |= S_ATOMIC_COPY; + INIT_LIST_HEAD(&info->swaplist); + cache_no_acl(inode); + +diff --git a/mm/swap_state.c b/mm/swap_state.c +index 6d1daeb..eced4ef 100644 +--- a/mm/swap_state.c ++++ b/mm/swap_state.c +@@ -46,6 +46,7 @@ struct address_space swapper_space = { + .i_mmap_nonlinear = LIST_HEAD_INIT(swapper_space.i_mmap_nonlinear), + .backing_dev_info = &swap_backing_dev_info, + }; ++EXPORT_SYMBOL_GPL(swapper_space); + + #define INC_CACHE_INFO(x) do { swap_cache_info.x++; } while (0) + +diff --git a/mm/swapfile.c b/mm/swapfile.c +index 6c0585b..9c563b5 100644 +--- a/mm/swapfile.c ++++ b/mm/swapfile.c +@@ -39,7 +39,6 @@ + static bool swap_count_continued(struct swap_info_struct *, pgoff_t, + unsigned char); + static void free_swap_count_continuations(struct swap_info_struct *); +-static sector_t map_swap_entry(swp_entry_t, struct block_device**); + + static DEFINE_SPINLOCK(swap_lock); + static unsigned int nr_swapfiles; +@@ -477,6 +476,7 @@ noswap: + spin_unlock(&swap_lock); + return (swp_entry_t) {0}; + } ++EXPORT_SYMBOL_GPL(get_swap_page); + + /* The only caller of this function is now susupend routine */ + swp_entry_t get_swap_page_of_type(int type) +@@ -499,6 +499,7 @@ swp_entry_t get_swap_page_of_type(int type) + spin_unlock(&swap_lock); + return (swp_entry_t) {0}; + } ++EXPORT_SYMBOL_GPL(get_swap_page_of_type); + + static struct swap_info_struct *swap_info_get(swp_entry_t entry) + { +@@ -619,6 +620,7 @@ void swapcache_free(swp_entry_t entry, struct page *page) + spin_unlock(&swap_lock); + } + } ++EXPORT_SYMBOL_GPL(swap_free); + + /* + * How many references to page are currently swapped out? +@@ -1263,7 +1265,7 @@ static void drain_mmlist(void) + * Note that the type of this function is sector_t, but it returns page offset + * into the bdev, not sector offset. + */ +-static sector_t map_swap_entry(swp_entry_t entry, struct block_device **bdev) ++sector_t map_swap_entry(swp_entry_t entry, struct block_device **bdev) + { + struct swap_info_struct *sis; + struct swap_extent *start_se; +@@ -1290,6 +1292,7 @@ static sector_t map_swap_entry(swp_entry_t entry, struct block_device **bdev) + BUG_ON(se == start_se); /* It *must* be present */ + } + } ++EXPORT_SYMBOL_GPL(map_swap_entry); + + /* + * Returns the page offset into bdev for the specified page's swap entry. +@@ -1632,6 +1635,7 @@ out_dput: + out: + return err; + } ++EXPORT_SYMBOL_GPL(sys_swapoff); + + #ifdef CONFIG_PROC_FS + /* iterator */ +@@ -2055,6 +2059,7 @@ out: + } + return error; + } ++EXPORT_SYMBOL_GPL(sys_swapon); + + void si_swapinfo(struct sysinfo *val) + { +@@ -2072,6 +2077,7 @@ void si_swapinfo(struct sysinfo *val) + val->totalswap = total_swap_pages + nr_to_be_unused; + spin_unlock(&swap_lock); + } ++EXPORT_SYMBOL_GPL(si_swapinfo); + + /* + * Verify that a swap entry is valid and increment its swap map count. +@@ -2179,6 +2185,13 @@ int swapcache_prepare(swp_entry_t entry) + return __swap_duplicate(entry, SWAP_HAS_CACHE); + } + ++ ++struct swap_info_struct *get_swap_info_struct(unsigned type) ++{ ++ return swap_info[type]; ++} ++EXPORT_SYMBOL_GPL(get_swap_info_struct); ++ + /* + * swap_lock prevents swap_map being freed. Don't grab an extra + * reference on the swaphandle, it doesn't matter if it becomes unused. +diff --git a/mm/vmscan.c b/mm/vmscan.c +index c26986c..ac2a07d 100644 +--- a/mm/vmscan.c ++++ b/mm/vmscan.c +@@ -2285,6 +2285,9 @@ void wakeup_kswapd(struct zone *zone, int order) + if (!populated_zone(zone)) + return; + ++ if (freezer_is_on()) ++ return; ++ + pgdat = zone->zone_pgdat; + if (zone_watermark_ok(zone, order, low_wmark_pages(zone), 0, 0)) + return; +@@ -2372,6 +2375,7 @@ unsigned long shrink_all_memory(unsigned long nr_to_reclaim) + + return nr_reclaimed; + } ++EXPORT_SYMBOL_GPL(shrink_all_memory); + #endif /* CONFIG_HIBERNATION */ + + /* It's optimal to keep kswapds on the same CPUs as their memory, but diff --git a/projects/ION/linux/linux.i386.conf b/projects/ION/linux/linux.i386.conf index 43f33a7dc3..40ab47b25f 100644 --- a/projects/ION/linux/linux.i386.conf +++ b/projects/ION/linux/linux.i386.conf @@ -70,7 +70,7 @@ CONFIG_HAVE_KERNEL_LZO=y # CONFIG_KERNEL_BZIP2 is not set CONFIG_KERNEL_LZMA=y # CONFIG_KERNEL_LZO is not set -# CONFIG_SWAP is not set +CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y @@ -361,6 +361,7 @@ CONFIG_HZ=300 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y +# CONFIG_KEXEC_JUMP is not set CONFIG_PHYSICAL_START=0x400000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x400000 @@ -380,6 +381,30 @@ CONFIG_PM_SLEEP_SMP=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y +CONFIG_HIBERNATION_NVS=y +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="" +CONFIG_TOI_CORE=y + +# +# Image Storage (you need at least one allocator) +# +CONFIG_TOI_FILE=y +# CONFIG_TOI_SWAP is not set + +# +# General Options +# +CONFIG_TOI_CRYPTO=y +CONFIG_TOI_USERUI=y +CONFIG_TOI_USERUI_DEFAULT_PATH="/usr/sbin/tuxoniceui_text" +CONFIG_TOI_KEEP_IMAGE=y +CONFIG_TOI_REPLACE_SWSUSP=y +# CONFIG_TOI_IGNORE_LATE_INITCALL is not set +CONFIG_TOI_DEFAULT_WAIT=25 +CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE=2000 +# CONFIG_TOI_CHECKSUM is not set +CONFIG_TOI=y CONFIG_PM_RUNTIME=y CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y @@ -2144,6 +2169,7 @@ CONFIG_CRYPTO_DES=y # CONFIG_CRYPTO_DEFLATE is not set CONFIG_CRYPTO_ZLIB=y CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_LZF=y # # Random Number Generation diff --git a/projects/ION/linux/linux.x86_64.conf b/projects/ION/linux/linux.x86_64.conf index 0750c2800a..0dfc5e3c8e 100644 --- a/projects/ION/linux/linux.x86_64.conf +++ b/projects/ION/linux/linux.x86_64.conf @@ -71,7 +71,7 @@ CONFIG_HAVE_KERNEL_LZO=y # CONFIG_KERNEL_BZIP2 is not set CONFIG_KERNEL_LZMA=y # CONFIG_KERNEL_LZO is not set -# CONFIG_SWAP is not set +CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y @@ -346,6 +346,7 @@ CONFIG_HZ=300 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y +# CONFIG_KEXEC_JUMP is not set CONFIG_PHYSICAL_START=0x400000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x1000000 @@ -364,6 +365,30 @@ CONFIG_PM_SLEEP_SMP=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y +CONFIG_HIBERNATION_NVS=y +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="" +CONFIG_TOI_CORE=y + +# +# Image Storage (you need at least one allocator) +# +CONFIG_TOI_FILE=y +# CONFIG_TOI_SWAP is not set + +# +# General Options +# +CONFIG_TOI_CRYPTO=y +CONFIG_TOI_USERUI=y +CONFIG_TOI_USERUI_DEFAULT_PATH="/usr/sbin/tuxoniceui_text" +CONFIG_TOI_KEEP_IMAGE=y +CONFIG_TOI_REPLACE_SWSUSP=y +# CONFIG_TOI_IGNORE_LATE_INITCALL is not set +CONFIG_TOI_DEFAULT_WAIT=25 +CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE=2000 +# CONFIG_TOI_CHECKSUM is not set +CONFIG_TOI=y CONFIG_PM_RUNTIME=y CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y @@ -2098,6 +2123,7 @@ CONFIG_CRYPTO_DES=y # CONFIG_CRYPTO_DEFLATE is not set CONFIG_CRYPTO_ZLIB=y CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_LZF=y # # Random Number Generation diff --git a/projects/generic/linux/linux.i386.conf b/projects/generic/linux/linux.i386.conf index 67bc1b7c17..e961371c4f 100644 --- a/projects/generic/linux/linux.i386.conf +++ b/projects/generic/linux/linux.i386.conf @@ -70,7 +70,7 @@ CONFIG_HAVE_KERNEL_LZO=y # CONFIG_KERNEL_BZIP2 is not set CONFIG_KERNEL_LZMA=y # CONFIG_KERNEL_LZO is not set -# CONFIG_SWAP is not set +CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y @@ -362,6 +362,7 @@ CONFIG_HZ=300 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y +# CONFIG_KEXEC_JUMP is not set CONFIG_PHYSICAL_START=0x400000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x400000 @@ -381,6 +382,30 @@ CONFIG_PM_SLEEP_SMP=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y +CONFIG_HIBERNATION_NVS=y +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="" +CONFIG_TOI_CORE=y + +# +# Image Storage (you need at least one allocator) +# +CONFIG_TOI_FILE=y +# CONFIG_TOI_SWAP is not set + +# +# General Options +# +CONFIG_TOI_CRYPTO=y +CONFIG_TOI_USERUI=y +CONFIG_TOI_USERUI_DEFAULT_PATH="/usr/sbin/tuxoniceui_text" +CONFIG_TOI_KEEP_IMAGE=y +CONFIG_TOI_REPLACE_SWSUSP=y +# CONFIG_TOI_IGNORE_LATE_INITCALL is not set +CONFIG_TOI_DEFAULT_WAIT=25 +CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE=2000 +# CONFIG_TOI_CHECKSUM is not set +CONFIG_TOI=y CONFIG_PM_RUNTIME=y CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y @@ -2040,6 +2065,7 @@ CONFIG_RT2870=m # # CONFIG_RAR_REGISTER is not set # CONFIG_IIO is not set +# CONFIG_RAMZSWAP is not set # CONFIG_BATMAN_ADV is not set # CONFIG_SAMSUNG_LAPTOP is not set # CONFIG_STRIP is not set @@ -2381,6 +2407,7 @@ CONFIG_CRYPTO_DES=y # CONFIG_CRYPTO_DEFLATE is not set CONFIG_CRYPTO_ZLIB=y CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_LZF=y # # Random Number Generation diff --git a/projects/intel/linux/linux.i386.conf b/projects/intel/linux/linux.i386.conf index 9f9571b24a..7008dbea64 100644 --- a/projects/intel/linux/linux.i386.conf +++ b/projects/intel/linux/linux.i386.conf @@ -70,7 +70,7 @@ CONFIG_HAVE_KERNEL_LZO=y # CONFIG_KERNEL_BZIP2 is not set CONFIG_KERNEL_LZMA=y # CONFIG_KERNEL_LZO is not set -# CONFIG_SWAP is not set +CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y @@ -362,6 +362,7 @@ CONFIG_HZ=300 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y +# CONFIG_KEXEC_JUMP is not set CONFIG_PHYSICAL_START=0x400000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x400000 @@ -381,6 +382,30 @@ CONFIG_PM_SLEEP_SMP=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y +CONFIG_HIBERNATION_NVS=y +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="" +CONFIG_TOI_CORE=y + +# +# Image Storage (you need at least one allocator) +# +CONFIG_TOI_FILE=y +# CONFIG_TOI_SWAP is not set + +# +# General Options +# +CONFIG_TOI_CRYPTO=y +CONFIG_TOI_USERUI=y +CONFIG_TOI_USERUI_DEFAULT_PATH="/usr/sbin/tuxoniceui_text" +CONFIG_TOI_KEEP_IMAGE=y +CONFIG_TOI_REPLACE_SWSUSP=y +# CONFIG_TOI_IGNORE_LATE_INITCALL is not set +CONFIG_TOI_DEFAULT_WAIT=25 +CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE=2000 +# CONFIG_TOI_CHECKSUM is not set +CONFIG_TOI=y CONFIG_PM_RUNTIME=y CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y @@ -1985,6 +2010,7 @@ CONFIG_STAGING=y # # CONFIG_RAR_REGISTER is not set # CONFIG_IIO is not set +# CONFIG_RAMZSWAP is not set # CONFIG_BATMAN_ADV is not set # CONFIG_SAMSUNG_LAPTOP is not set # CONFIG_STRIP is not set @@ -2326,6 +2352,7 @@ CONFIG_CRYPTO_DES=y # CONFIG_CRYPTO_DEFLATE is not set CONFIG_CRYPTO_ZLIB=y CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_LZF=y # # Random Number Generation From 426fc6d844ca1b83f01840c52a8667ee7d5466e9 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Thu, 29 Apr 2010 18:22:36 +0200 Subject: [PATCH 139/171] xbmc: - install upower --- packages/mediacenter/xbmc/install | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mediacenter/xbmc/install b/packages/mediacenter/xbmc/install index 22bbae5fe0..5ecda158c7 100755 --- a/packages/mediacenter/xbmc/install +++ b/packages/mediacenter/xbmc/install @@ -17,6 +17,7 @@ $SCRIPTS/install libssh $SCRIPTS/install dbus $SCRIPTS/install hal $SCRIPTS/install udisks +$SCRIPTS/install upower $SCRIPTS/install ConsoleKit $SCRIPTS/install libXt From 1ebc9e4650d0aa4f4f4ee1b297b49b6bc292e148 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 30 Apr 2010 03:07:04 +0200 Subject: [PATCH 140/171] irserver: - fix init script (device must be the last) - remove variables --- packages/sysutils/remote/irserver/init.d/30_irserver | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/sysutils/remote/irserver/init.d/30_irserver b/packages/sysutils/remote/irserver/init.d/30_irserver index cc77fcf556..245dceac81 100755 --- a/packages/sysutils/remote/irserver/init.d/30_irserver +++ b/packages/sysutils/remote/irserver/init.d/30_irserver @@ -9,17 +9,13 @@ if [ "$REMOTE_BACKEND" = "irtrans" -o "$LCD_DRIVER" = "irtrans" ]; then progress "Starting IRtrans daemon" - IRTRANS_DEV="/dev/irtrans0" - IRSERVER_LOG="/var/log/irserver.log" - IRSERVER_PID="/var/run/irserver.pid" - [ ! "$REMOTE_BACKEND" = "irtrans" ] && \ IRSERVER_ARG="$IRSERVER_ARG -no_lirc" # dont run in lirc mode [ "$DEBUG" = "yes" ] && \ IRSERVER_ARG="$IRSERVER_ARG -loglevel 4" # set loglevel in debugmode - irserver -logfile $IRSERVER_LOG -pidfile $IRSERVER_PID \ - -daemon $IRTRANS_DEV $IRSERVER_ARG > /dev/null 2>&1 + irserver -logfile /var/log/irserver.log -pidfile /var/run/irserver.pid \ + $IRSERVER_ARG -daemon /dev/irtrans0 > /dev/null 2>&1 fi \ No newline at end of file From ea6a387f8a1b0a3f3865b9c9d8c20e0a5f812818 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 30 Apr 2010 23:07:23 +0200 Subject: [PATCH 141/171] new package: - add package libnih --- packages/devel/libnih-host/build | 22 ++++++++++++++++++++++ packages/devel/libnih/build | 26 ++++++++++++++++++++++++++ packages/devel/libnih/url | 1 + 3 files changed, 49 insertions(+) create mode 100755 packages/devel/libnih-host/build create mode 100755 packages/devel/libnih/build create mode 100644 packages/devel/libnih/url diff --git a/packages/devel/libnih-host/build b/packages/devel/libnih-host/build new file mode 100755 index 0000000000..af8fb87325 --- /dev/null +++ b/packages/devel/libnih-host/build @@ -0,0 +1,22 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/build toolchain +$SCRIPTS/build dbus-host +$SCRIPTS/unpack libnih + +setup_toolchain host + +cd $BUILD/libnih* + +mkdir -p objdir-host +cd objdir-host + +../configure --enable-static \ + --disable-shared + +make + +mkdir -p $ROOT/$TOOLCHAIN/bin + cp -f nih-dbus-tool/nih-dbus-tool $ROOT/$TOOLCHAIN/bin diff --git a/packages/devel/libnih/build b/packages/devel/libnih/build new file mode 100755 index 0000000000..2dcebc5bde --- /dev/null +++ b/packages/devel/libnih/build @@ -0,0 +1,26 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/build toolchain +$SCRIPTS/build dbus +$SCRIPTS/build libnih-host + +export NIH_DBUS_TOOL="$ROOT/$TOOLCHAIN/bin/nih-dbus-tool" + +cd $BUILD/$1* + +mkdir -p objdir-target +cd objdir-target + +../configure --host=$TARGET_NAME \ + --build=$HOST_NAME \ + --prefix=/usr \ + --enable-static \ + --disable-shared \ + --disable-nls \ + --enable-threading + +make + +$MAKEINSTALL diff --git a/packages/devel/libnih/url b/packages/devel/libnih/url new file mode 100644 index 0000000000..00e18dd843 --- /dev/null +++ b/packages/devel/libnih/url @@ -0,0 +1 @@ +http://upstart.ubuntu.com/download/libnih/1.0/libnih-1.0.2.tar.gz From 304503da246ae80c18b06150dd180146da3e93e0 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 30 Apr 2010 23:07:58 +0200 Subject: [PATCH 142/171] new package: - add package e2fsprogs --- packages/sysutils/e2fsprogs/build | 24 ++++++++++++++++++++++++ packages/sysutils/e2fsprogs/install | 17 +++++++++++++++++ packages/sysutils/e2fsprogs/url | 1 + 3 files changed, 42 insertions(+) create mode 100755 packages/sysutils/e2fsprogs/build create mode 100755 packages/sysutils/e2fsprogs/install create mode 100644 packages/sysutils/e2fsprogs/url diff --git a/packages/sysutils/e2fsprogs/build b/packages/sysutils/e2fsprogs/build new file mode 100755 index 0000000000..b590895a7d --- /dev/null +++ b/packages/sysutils/e2fsprogs/build @@ -0,0 +1,24 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/build toolchain + +cd $PKG_BUILD +./configure --host=$TARGET_NAME \ + --build=$HOST_NAME \ + --prefix=/usr \ + --enable-shared \ + --disable-static \ + --disable-libuuid \ + --disable-libblkid \ + --disable-debugfs \ + --disable-imager \ + --disable-resizer \ + --disable-uuidd \ + +make -C lib/et +make -C lib/ext2fs + +$MAKEINSTALL -C lib/et +$MAKEINSTALL -C lib/ext2fs diff --git a/packages/sysutils/e2fsprogs/install b/packages/sysutils/e2fsprogs/install new file mode 100755 index 0000000000..5c6656c51c --- /dev/null +++ b/packages/sysutils/e2fsprogs/install @@ -0,0 +1,17 @@ +#!/bin/sh + +. config/options + +mkdir -p $INSTALL/bin + cp $PKG_BUILD/mount/.libs/mount $INSTALL/bin + cp $PKG_BUILD/mount/.libs/umount $INSTALL/bin + +mkdir -p $INSTALL/sbin + cp $PKG_BUILD/fdisk/sfdisk $INSTALL/sbin + cp $PKG_BUILD/misc-utils/.libs/blkid $INSTALL/sbin + +mkdir -p $INSTALL/usr/lib + cp -PR $PKG_BUILD/shlibs/blkid/src/.libs/libblkid.so* $INSTALL/usr/lib + rm -rf $INSTALL/usr/lib/libblkid.so*T + cp -PR $PKG_BUILD/shlibs/uuid/src/.libs/libuuid.so* $INSTALL/usr/lib + rm -rf $INSTALL/usr/lib/libuuid.so*T diff --git a/packages/sysutils/e2fsprogs/url b/packages/sysutils/e2fsprogs/url new file mode 100644 index 0000000000..775aa96da0 --- /dev/null +++ b/packages/sysutils/e2fsprogs/url @@ -0,0 +1 @@ +http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.41.11.tar.gz \ No newline at end of file From 83b739af8ec15bc958f68ca22090c4b1c973a5a6 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 30 Apr 2010 23:08:32 +0200 Subject: [PATCH 143/171] new package: - add package ureadahead --- ...ace-add-trace-events-for-open-exec-an.diff | 155 ++++++++++++++++++ packages/sysutils/ureadahead/build | 20 +++ .../sysutils/ureadahead/init.d/07_ureadahead | 10 ++ packages/sysutils/ureadahead/install | 6 + packages/sysutils/ureadahead/url | 1 + 5 files changed, 192 insertions(+) create mode 100644 packages/linux/patches/0001-trace-add-trace-events-for-open-exec-an.diff create mode 100755 packages/sysutils/ureadahead/build create mode 100755 packages/sysutils/ureadahead/init.d/07_ureadahead create mode 100755 packages/sysutils/ureadahead/install create mode 100644 packages/sysutils/ureadahead/url diff --git a/packages/linux/patches/0001-trace-add-trace-events-for-open-exec-an.diff b/packages/linux/patches/0001-trace-add-trace-events-for-open-exec-an.diff new file mode 100644 index 0000000000..11961d0f50 --- /dev/null +++ b/packages/linux/patches/0001-trace-add-trace-events-for-open-exec-an.diff @@ -0,0 +1,155 @@ +From ee9c0b591bf16ca11bb354bc68dae75a903f3a64 Mon Sep 17 00:00:00 2001 +From: Scott James Remnant +Date: Tue, 27 Oct 2009 10:05:32 +0000 +Subject: [PATCH] trace: add trace events for open(), exec() and uselib() + +This patch uses TRACE_EVENT to add tracepoints for the open(), +exec() and uselib() syscalls so that ureadahead can cheaply trace +the boot sequence to determine what to read to speed up the next. + +It's not upstream because it will need to be rebased onto the syscall +trace events whenever that gets merged, and is a stop-gap. + +Signed-off-by: Scott James Remnant +--- + fs/exec.c | 8 +++++ + fs/open.c | 4 ++ + include/trace/events/fs.h | 71 +++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 83 insertions(+), 0 deletions(-) + create mode 100644 include/trace/events/fs.h + +diff --git a/fs/exec.c b/fs/exec.c +index 172ceb6..c936999 100644 +--- a/fs/exec.c ++++ b/fs/exec.c +@@ -56,6 +56,8 @@ + #include + #include + ++#include ++ + #include + #include + #include +@@ -130,6 +132,10 @@ SYSCALL_DEFINE1(uselib, const char __user *, library) + + fsnotify_open(file->f_path.dentry); + ++ tmp = getname(library); ++ trace_uselib(tmp); ++ putname(library); ++ + error = -ENOEXEC; + if(file->f_op) { + struct linux_binfmt * fmt; +@@ -665,6 +671,8 @@ struct file *open_exec(const char *name) + + fsnotify_open(file->f_path.dentry); + ++ trace_open_exec(name); ++ + err = deny_write_access(file); + if (err) + goto exit; +diff --git a/fs/open.c b/fs/open.c +index 04b9aad..41c87f3 100644 +--- a/fs/open.c ++++ b/fs/open.c +@@ -31,6 +31,9 @@ + #include + #include + ++#define CREATE_TRACE_POINTS ++#include ++ + int vfs_statfs(struct dentry *dentry, struct kstatfs *buf) + { + int retval = -ENODEV; +@@ -1041,6 +1044,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, int mode) + } else { + fsnotify_open(f->f_path.dentry); + fd_install(fd, f); ++ trace_do_sys_open(tmp, flags, mode); + } + } + putname(tmp); +diff --git a/include/trace/events/fs.h b/include/trace/events/fs.h +new file mode 100644 +index 0000000..e967c55 +--- /dev/null ++++ b/include/trace/events/fs.h +@@ -0,0 +1,71 @@ ++#undef TRACE_SYSTEM ++#define TRACE_SYSTEM fs ++ ++#if !defined(_TRACE_FS_H) || defined(TRACE_HEADER_MULTI_READ) ++#define _TRACE_FS_H ++ ++#include ++#include ++ ++TRACE_EVENT(do_sys_open, ++ ++ TP_PROTO(char *filename, int flags, int mode), ++ ++ TP_ARGS(filename, flags, mode), ++ ++ TP_STRUCT__entry( ++ __string( filename, filename ) ++ __field( int, flags ) ++ __field( int, mode ) ++ ), ++ ++ TP_fast_assign( ++ __assign_str(filename, filename); ++ __entry->flags = flags; ++ __entry->mode = mode; ++ ), ++ ++ TP_printk("\"%s\" %x %o", ++ __get_str(filename), __entry->flags, __entry->mode) ++); ++ ++TRACE_EVENT(uselib, ++ ++ TP_PROTO(char *filename), ++ ++ TP_ARGS(filename), ++ ++ TP_STRUCT__entry( ++ __string( filename, filename ) ++ ), ++ ++ TP_fast_assign( ++ __assign_str(filename, filename); ++ ), ++ ++ TP_printk("\"%s\"", ++ __get_str(filename)) ++); ++ ++TRACE_EVENT(open_exec, ++ ++ TP_PROTO(char *filename), ++ ++ TP_ARGS(filename), ++ ++ TP_STRUCT__entry( ++ __string( filename, filename ) ++ ), ++ ++ TP_fast_assign( ++ __assign_str(filename, filename); ++ ), ++ ++ TP_printk("\"%s\"", ++ __get_str(filename)) ++); ++ ++#endif /* _TRACE_FS_H */ ++ ++/* This part must be outside protection */ ++#include +-- +1.6.3.3 + diff --git a/packages/sysutils/ureadahead/build b/packages/sysutils/ureadahead/build new file mode 100755 index 0000000000..0ae6baad9e --- /dev/null +++ b/packages/sysutils/ureadahead/build @@ -0,0 +1,20 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/build toolchain +$SCRIPTS/build libnih +$SCRIPTS/build e2fsprogs + +cd $PKG_BUILD +EXT2FS_LIBS="-lext2fs -lcom_err" \ +./configure --host=$TARGET_NAME \ + --build=$HOST_NAME \ + --prefix=/usr \ + --sysconfdir=/etc \ + --datadir=/usr/share \ + --localstatedir=/var \ + --disable-static \ + --enable-shared \ + +make diff --git a/packages/sysutils/ureadahead/init.d/07_ureadahead b/packages/sysutils/ureadahead/init.d/07_ureadahead new file mode 100755 index 0000000000..9915d174b0 --- /dev/null +++ b/packages/sysutils/ureadahead/init.d/07_ureadahead @@ -0,0 +1,10 @@ +# start the ureadahead daemon +# +# runlevels: openelec, textmode + +( + progress "Starting ureadahead" + + ureadahead --daemon --timeout=30 > /dev/null 2>&1 + +)& \ No newline at end of file diff --git a/packages/sysutils/ureadahead/install b/packages/sysutils/ureadahead/install new file mode 100755 index 0000000000..7ab7a30d7c --- /dev/null +++ b/packages/sysutils/ureadahead/install @@ -0,0 +1,6 @@ +#!/bin/sh + +. config/options + +mkdir -p $INSTALL/usr/sbin + cp -P $PKG_BUILD/src/ureadahead $INSTALL/usr/sbin diff --git a/packages/sysutils/ureadahead/url b/packages/sysutils/ureadahead/url new file mode 100644 index 0000000000..400d2e3709 --- /dev/null +++ b/packages/sysutils/ureadahead/url @@ -0,0 +1 @@ +http://sources.openelec.tv/svn/ureadahead-111.tar.bz2 \ No newline at end of file From b02415a030558cf18570cbef70496ae03b86f407 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 30 Apr 2010 23:09:19 +0200 Subject: [PATCH 144/171] busybox: - start network later --- packages/sysutils/busybox/init.d/{08_network => 09_network} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/sysutils/busybox/init.d/{08_network => 09_network} (100%) diff --git a/packages/sysutils/busybox/init.d/08_network b/packages/sysutils/busybox/init.d/09_network similarity index 100% rename from packages/sysutils/busybox/init.d/08_network rename to packages/sysutils/busybox/init.d/09_network From 532a7f2facf2bb383de5c66983c09c03261c977c Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 30 Apr 2010 23:09:45 +0200 Subject: [PATCH 145/171] busybox: - start userconfig later --- packages/sysutils/busybox/init.d/{07_userconfig => 08_userconfig} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/sysutils/busybox/init.d/{07_userconfig => 08_userconfig} (100%) diff --git a/packages/sysutils/busybox/init.d/07_userconfig b/packages/sysutils/busybox/init.d/08_userconfig similarity index 100% rename from packages/sysutils/busybox/init.d/07_userconfig rename to packages/sysutils/busybox/init.d/08_userconfig From a51509a2b311ce932fd0cccdac155706e222940e Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 1 May 2010 12:15:11 +0200 Subject: [PATCH 146/171] linux: - add debug kernel options direct in kernel config --- packages/linux/unpack | 53 ------------ projects/ION/linux/linux.i386.conf | 103 ++++++++++++++++++++-- projects/ION/linux/linux.x86_64.conf | 113 ++++++++++++++++++++++--- projects/generic/linux/linux.i386.conf | 105 +++++++++++++++++++++-- projects/intel/linux/linux.i386.conf | 103 ++++++++++++++++++++-- projects/intel/linux/linux.x86_64.conf | 105 +++++++++++++++++++++-- 6 files changed, 495 insertions(+), 87 deletions(-) diff --git a/packages/linux/unpack b/packages/linux/unpack index ace32d60d4..2e9ad1774e 100755 --- a/packages/linux/unpack +++ b/packages/linux/unpack @@ -27,57 +27,4 @@ sed -i -e "s|^CONFIG_INITRAMFS_SOURCE=.*$|CONFIG_INITRAMFS_SOURCE=\"$ROOT/$PKG_D # copy some extra firmware to linux tree cp -R $PKG_DIR/firmware/* $LINUX/firmware - if [ "$DEVTOOLS" = yes ]; then - echo "CONFIG_DEBUG_KERNEL=y" >> $LINUX/.config # needed for bootchart - echo "CONFIG_SCHEDSTATS=y" >> $LINUX/.config # needed for bootchart - echo "CONFIG_SCHED_DEBUG=y" >> $LINUX/.config # needed for bootchart - echo "# CONFIG_DEBUG_PERF_USE_VMALLOC is not set" >> $LINUX/.config - echo "# CONFIG_PCI_DEBUG is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_DRIVER is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_DEVRES is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_SHIRQ is not set" >> $LINUX/.config - echo "# CONFIG_DETECT_SOFTLOCKUP is not set" >> $LINUX/.config - echo "# CONFIG_DETECT_HUNG_TASK is not set" >> $LINUX/.config - echo "# CONFIG_TIMER_STATS is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_OBJECTS is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_KMEMLEAK is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_RT_MUTEXES is not set" >> $LINUX/.config - echo "# CONFIG_RT_MUTEX_TESTER is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_SPINLOCK is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_MUTEXES is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_LOCK_ALLOC is not set" >> $LINUX/.config - echo "# CONFIG_PROVE_LOCKING is not set" >> $LINUX/.config - echo "# CONFIG_LOCK_STAT is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_SPINLOCK_SLEEP is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_KOBJECT is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_HIGHMEM is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_INFO is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_VM is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_VIRTUAL is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_WRITECOUNT is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_LIST is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_SG is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_NOTIFIERS is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_CREDENTIALS is not set" >> $LINUX/.config - echo "# CONFIG_BOOT_PRINTK_DELAY is not set" >> $LINUX/.config - echo "# CONFIG_RCU_TORTURE_TEST is not set" >> $LINUX/.config - echo "# CONFIG_BACKTRACE_SELF_TEST is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set" >> $LINUX/.config - echo "# CONFIG_FAULT_INJECTION is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_PAGEALLOC is not set" >> $LINUX/.config - echo "# CONFIG_KGDB is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_STACKOVERFLOW is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_STACK_USAGE is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_PER_CPU_MAPS is not set" >> $LINUX/.config - echo "# CONFIG_X86_PTDUMP is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_RODATA is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_NX_TEST is not set" >> $LINUX/.config - echo "# CONFIG_CPA_DEBUG is not set" >> $LINUX/.config - echo "# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set" >> $LINUX/.config - echo "# CONFIG_MAXSMP is not set" >> $LINUX/.config - echo "# CONFIG_IOMMU_DEBUG is not set" >> $LINUX/.config - fi - make -C $LINUX oldconfig diff --git a/projects/ION/linux/linux.i386.conf b/projects/ION/linux/linux.i386.conf index 40ab47b25f..3728529dfa 100644 --- a/projects/ION/linux/linux.i386.conf +++ b/projects/ION/linux/linux.i386.conf @@ -123,7 +123,9 @@ CONFIG_ANON_INODES=y CONFIG_EMBEDDED=y CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y -# CONFIG_KALLSYMS is not set +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y @@ -143,7 +145,9 @@ CONFIG_HAVE_PERF_EVENTS=y # Kernel Performance Events And Counters # CONFIG_PERF_EVENTS=y +CONFIG_EVENT_PROFILE=y # CONFIG_PERF_COUNTERS is not set +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set # CONFIG_VM_EVENT_COUNTERS is not set CONFIG_PCI_QUIRKS=y # CONFIG_SLUB_DEBUG is not set @@ -152,7 +156,9 @@ CONFIG_PCI_QUIRKS=y CONFIG_SLUB=y # CONFIG_SLOB is not set # CONFIG_PROFILING is not set +CONFIG_TRACEPOINTS=y CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y @@ -166,6 +172,7 @@ CONFIG_HAVE_USER_RETURN_NOTIFIER=y # # GCOV-based kernel profiling # +# CONFIG_GCOV_KERNEL is not set # CONFIG_SLOW_WORK is not set CONFIG_HAVE_GENERIC_DMA_COHERENT=y CONFIG_RT_MUTEXES=y @@ -498,6 +505,7 @@ CONFIG_PCIEAER=y CONFIG_ARCH_SUPPORTS_MSI=y CONFIG_PCI_MSI=y CONFIG_PCI_LEGACY=y +# CONFIG_PCI_DEBUG is not set # CONFIG_PCI_STUB is not set CONFIG_HT_IRQ=y # CONFIG_PCI_IOV is not set @@ -585,6 +593,7 @@ CONFIG_SCTP_HMAC_SHA1=y # Network testing # # CONFIG_NET_PKTGEN is not set +# CONFIG_NET_DROP_MONITOR is not set # CONFIG_HAMRADIO is not set # CONFIG_CAN is not set # CONFIG_IRDA is not set @@ -617,6 +626,7 @@ CONFIG_CFG80211=m # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set # CONFIG_CFG80211_REG_DEBUG is not set CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set # CONFIG_WIRELESS_OLD_REGULATORY is not set CONFIG_CFG80211_WEXT=y CONFIG_WIRELESS_EXT_SYSFS=y @@ -630,6 +640,7 @@ CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUGFS is not set # CONFIG_MAC80211_DEBUG_MENU is not set # CONFIG_WIMAX is not set CONFIG_RFKILL=m @@ -652,6 +663,8 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set # CONFIG_CONNECTOR is not set # CONFIG_MTD is not set @@ -894,6 +907,7 @@ CONFIG_ATH5K=m CONFIG_ATH9K_HW=m CONFIG_ATH9K_COMMON=m CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUGFS is not set # CONFIG_AR9170_USB is not set # CONFIG_B43 is not set # CONFIG_B43LEGACY is not set @@ -1857,7 +1871,9 @@ CONFIG_EXT4_FS=y # CONFIG_EXT4_FS_XATTR is not set # CONFIG_EXT4_DEBUG is not set CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set CONFIG_REISERFS_FS=m # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set @@ -2019,17 +2035,54 @@ CONFIG_FRAME_WARN=1024 # CONFIG_MAGIC_SYSRQ is not set # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_DEBUG_FS is not set +CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set -# CONFIG_DEBUG_KERNEL is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DETECT_SOFTLOCKUP is not set +# CONFIG_DETECT_HUNG_TASK is not set +CONFIG_SCHED_DEBUG=y +CONFIG_SCHEDSTATS=y +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_HIGHMEM is not set CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_WRITECOUNT is not set # CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set CONFIG_ARCH_WANT_FRAME_POINTERS=y -# CONFIG_FRAME_POINTER is not set +CONFIG_FRAME_POINTER=y +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set CONFIG_SYSCTL_SYSCALL_CHECK=y +# CONFIG_DEBUG_PAGEALLOC is not set CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_NOP_TRACER=y +CONFIG_HAVE_FTRACE_NMI_ENTER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y @@ -2037,17 +2090,52 @@ CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_RING_BUFFER=y +CONFIG_FTRACE_NMI_ENTER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_TRACING=y +CONFIG_GENERIC_TRACER=y CONFIG_TRACING_SUPPORT=y -# CONFIG_FTRACE is not set +CONFIG_FTRACE=y +CONFIG_FUNCTION_TRACER=y +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_SYSPROF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_FTRACE_SYSCALLS is not set +# CONFIG_BOOT_TRACER is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_POWER_TRACER is not set +# CONFIG_KSYM_TRACER is not set +CONFIG_STACK_TRACER=y +# CONFIG_KMEMTRACE is not set +# CONFIG_WORKQUEUE_TRACER is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +CONFIG_DYNAMIC_FTRACE=y +# CONFIG_FUNCTION_PROFILER is not set +CONFIG_FTRACE_MCOUNT_RECORD=y +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_MMIOTRACE is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set +# CONFIG_DYNAMIC_DEBUG is not set # CONFIG_DMA_API_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set CONFIG_HAVE_ARCH_KMEMCHECK=y CONFIG_STRICT_DEVMEM=y # CONFIG_X86_VERBOSE_BOOTUP is not set # CONFIG_EARLY_PRINTK is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_X86_PTDUMP is not set +# CONFIG_DEBUG_RODATA is not set +# CONFIG_DEBUG_NX_TEST is not set # CONFIG_4KSTACKS is not set CONFIG_DOUBLEFAULT=y # CONFIG_IOMMU_STRESS is not set @@ -2061,7 +2149,10 @@ CONFIG_IO_DELAY_0X80=y # CONFIG_IO_DELAY_UDELAY is not set # CONFIG_IO_DELAY_NONE is not set CONFIG_DEFAULT_IO_DELAY_TYPE=0 +# CONFIG_DEBUG_BOOT_PARAMS is not set +# CONFIG_CPA_DEBUG is not set CONFIG_OPTIMIZE_INLINING=y +# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set # # Security options @@ -2178,7 +2269,7 @@ CONFIG_CRYPTO_LZF=y # CONFIG_CRYPTO_HW is not set CONFIG_HAVE_KVM=y # CONFIG_VIRTUALIZATION is not set -# CONFIG_BINARY_PRINTF is not set +CONFIG_BINARY_PRINTF=y # # Library routines diff --git a/projects/ION/linux/linux.x86_64.conf b/projects/ION/linux/linux.x86_64.conf index 0dfc5e3c8e..2206eeb4e6 100644 --- a/projects/ION/linux/linux.x86_64.conf +++ b/projects/ION/linux/linux.x86_64.conf @@ -24,8 +24,8 @@ CONFIG_GENERIC_BUG=y CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_TIME_VSYSCALL=y @@ -123,7 +123,9 @@ CONFIG_SYSCTL=y CONFIG_ANON_INODES=y CONFIG_EMBEDDED=y CONFIG_SYSCTL_SYSCALL=y -# CONFIG_KALLSYMS is not set +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y @@ -143,7 +145,9 @@ CONFIG_HAVE_PERF_EVENTS=y # Kernel Performance Events And Counters # CONFIG_PERF_EVENTS=y +CONFIG_EVENT_PROFILE=y # CONFIG_PERF_COUNTERS is not set +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set # CONFIG_VM_EVENT_COUNTERS is not set CONFIG_PCI_QUIRKS=y # CONFIG_SLUB_DEBUG is not set @@ -152,7 +156,9 @@ CONFIG_PCI_QUIRKS=y CONFIG_SLUB=y # CONFIG_SLOB is not set # CONFIG_PROFILING is not set +CONFIG_TRACEPOINTS=y CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y @@ -166,6 +172,7 @@ CONFIG_HAVE_USER_RETURN_NOTIFIER=y # # GCOV-based kernel profiling # +# CONFIG_GCOV_KERNEL is not set # CONFIG_SLOW_WORK is not set # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set CONFIG_RT_MUTEXES=y @@ -266,6 +273,7 @@ CONFIG_X86_CPU=y CONFIG_X86_INTERNODE_CACHE_SHIFT=6 CONFIG_X86_CMPXCHG=y CONFIG_X86_L1_CACHE_SHIFT=6 +CONFIG_X86_XADD=y CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_TSC=y @@ -287,6 +295,7 @@ CONFIG_GART_IOMMU=y CONFIG_SWIOTLB=y CONFIG_IOMMU_HELPER=y # CONFIG_IOMMU_API is not set +# CONFIG_MAXSMP is not set CONFIG_NR_CPUS=4 CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y @@ -359,6 +368,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # # Power management and ACPI options # +CONFIG_ARCH_HIBERNATION_HEADER=y CONFIG_PM=y # CONFIG_PM_DEBUG is not set CONFIG_PM_SLEEP_SMP=y @@ -414,7 +424,6 @@ CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_SBS=y # CONFIG_SFI is not set -# CONFIG_APM is not set # # CPU Frequency scaling @@ -472,6 +481,7 @@ CONFIG_PCIEAER=y CONFIG_ARCH_SUPPORTS_MSI=y CONFIG_PCI_MSI=y CONFIG_PCI_LEGACY=y +# CONFIG_PCI_DEBUG is not set # CONFIG_PCI_STUB is not set CONFIG_HT_IRQ=y # CONFIG_PCI_IOV is not set @@ -556,6 +566,7 @@ CONFIG_SCTP_HMAC_SHA1=y # Network testing # # CONFIG_NET_PKTGEN is not set +# CONFIG_NET_DROP_MONITOR is not set # CONFIG_HAMRADIO is not set # CONFIG_CAN is not set # CONFIG_IRDA is not set @@ -588,6 +599,7 @@ CONFIG_CFG80211=m # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set # CONFIG_CFG80211_REG_DEBUG is not set CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set # CONFIG_WIRELESS_OLD_REGULATORY is not set CONFIG_CFG80211_WEXT=y CONFIG_WIRELESS_EXT_SYSFS=y @@ -601,6 +613,7 @@ CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUGFS is not set # CONFIG_MAC80211_DEBUG_MENU is not set # CONFIG_WIMAX is not set CONFIG_RFKILL=m @@ -623,6 +636,8 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set # CONFIG_CONNECTOR is not set # CONFIG_MTD is not set @@ -863,6 +878,7 @@ CONFIG_ATH5K=m CONFIG_ATH9K_HW=m CONFIG_ATH9K_COMMON=m CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUGFS is not set # CONFIG_AR9170_USB is not set # CONFIG_B43 is not set # CONFIG_B43LEGACY is not set @@ -1811,7 +1827,9 @@ CONFIG_EXT4_FS=y # CONFIG_EXT4_FS_XATTR is not set # CONFIG_EXT4_DEBUG is not set CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set CONFIG_REISERFS_FS=m # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set @@ -1973,17 +1991,53 @@ CONFIG_FRAME_WARN=1024 # CONFIG_MAGIC_SYSRQ is not set # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_DEBUG_FS is not set +CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set -# CONFIG_DEBUG_KERNEL is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DETECT_SOFTLOCKUP is not set +# CONFIG_DETECT_HUNG_TASK is not set +CONFIG_SCHED_DEBUG=y +CONFIG_SCHEDSTATS=y +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_WRITECOUNT is not set # CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set CONFIG_ARCH_WANT_FRAME_POINTERS=y -# CONFIG_FRAME_POINTER is not set +CONFIG_FRAME_POINTER=y +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set CONFIG_SYSCTL_SYSCALL_CHECK=y +# CONFIG_DEBUG_PAGEALLOC is not set CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_NOP_TRACER=y +CONFIG_HAVE_FTRACE_NMI_ENTER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y @@ -1991,17 +2045,54 @@ CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_RING_BUFFER=y +CONFIG_FTRACE_NMI_ENTER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_TRACING=y +CONFIG_GENERIC_TRACER=y CONFIG_TRACING_SUPPORT=y -# CONFIG_FTRACE is not set +CONFIG_FTRACE=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FUNCTION_GRAPH_TRACER=y +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_SYSPROF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_FTRACE_SYSCALLS is not set +# CONFIG_BOOT_TRACER is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_POWER_TRACER is not set +# CONFIG_KSYM_TRACER is not set +CONFIG_STACK_TRACER=y +# CONFIG_KMEMTRACE is not set +# CONFIG_WORKQUEUE_TRACER is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +CONFIG_DYNAMIC_FTRACE=y +# CONFIG_FUNCTION_PROFILER is not set +CONFIG_FTRACE_MCOUNT_RECORD=y +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_MMIOTRACE is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set +# CONFIG_DYNAMIC_DEBUG is not set # CONFIG_DMA_API_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set CONFIG_HAVE_ARCH_KMEMCHECK=y CONFIG_STRICT_DEVMEM=y # CONFIG_X86_VERBOSE_BOOTUP is not set # CONFIG_EARLY_PRINTK is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_X86_PTDUMP is not set +# CONFIG_DEBUG_RODATA is not set +# CONFIG_DEBUG_NX_TEST is not set +# CONFIG_IOMMU_DEBUG is not set # CONFIG_IOMMU_STRESS is not set CONFIG_HAVE_MMIOTRACE_SUPPORT=y CONFIG_IO_DELAY_TYPE_0X80=0 @@ -2013,7 +2104,10 @@ CONFIG_IO_DELAY_0X80=y # CONFIG_IO_DELAY_UDELAY is not set # CONFIG_IO_DELAY_NONE is not set CONFIG_DEFAULT_IO_DELAY_TYPE=0 +# CONFIG_DEBUG_BOOT_PARAMS is not set +# CONFIG_CPA_DEBUG is not set CONFIG_OPTIMIZE_INLINING=y +# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set # # Security options @@ -2132,7 +2226,7 @@ CONFIG_CRYPTO_LZF=y # CONFIG_CRYPTO_HW is not set CONFIG_HAVE_KVM=y # CONFIG_VIRTUALIZATION is not set -# CONFIG_BINARY_PRINTF is not set +CONFIG_BINARY_PRINTF=y # # Library routines @@ -2148,7 +2242,6 @@ CONFIG_CRC_ITU_T=y CONFIG_CRC32=y # CONFIG_CRC7 is not set CONFIG_LIBCRC32C=y -CONFIG_AUDIT_GENERIC=y CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y diff --git a/projects/generic/linux/linux.i386.conf b/projects/generic/linux/linux.i386.conf index e961371c4f..07ba1f50ca 100644 --- a/projects/generic/linux/linux.i386.conf +++ b/projects/generic/linux/linux.i386.conf @@ -123,7 +123,9 @@ CONFIG_ANON_INODES=y CONFIG_EMBEDDED=y CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y -# CONFIG_KALLSYMS is not set +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y @@ -143,7 +145,9 @@ CONFIG_HAVE_PERF_EVENTS=y # Kernel Performance Events And Counters # CONFIG_PERF_EVENTS=y +CONFIG_EVENT_PROFILE=y # CONFIG_PERF_COUNTERS is not set +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set # CONFIG_VM_EVENT_COUNTERS is not set CONFIG_PCI_QUIRKS=y # CONFIG_SLUB_DEBUG is not set @@ -152,7 +156,9 @@ CONFIG_PCI_QUIRKS=y CONFIG_SLUB=y # CONFIG_SLOB is not set # CONFIG_PROFILING is not set +CONFIG_TRACEPOINTS=y CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y @@ -166,6 +172,7 @@ CONFIG_HAVE_USER_RETURN_NOTIFIER=y # # GCOV-based kernel profiling # +# CONFIG_GCOV_KERNEL is not set # CONFIG_SLOW_WORK is not set CONFIG_HAVE_GENERIC_DMA_COHERENT=y CONFIG_RT_MUTEXES=y @@ -500,6 +507,7 @@ CONFIG_PCIEAER=y CONFIG_ARCH_SUPPORTS_MSI=y CONFIG_PCI_MSI=y CONFIG_PCI_LEGACY=y +# CONFIG_PCI_DEBUG is not set # CONFIG_PCI_STUB is not set CONFIG_HT_IRQ=y # CONFIG_PCI_IOV is not set @@ -587,6 +595,7 @@ CONFIG_SCTP_HMAC_SHA1=y # Network testing # # CONFIG_NET_PKTGEN is not set +# CONFIG_NET_DROP_MONITOR is not set # CONFIG_HAMRADIO is not set # CONFIG_CAN is not set # CONFIG_IRDA is not set @@ -622,6 +631,7 @@ CONFIG_CFG80211=m # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set # CONFIG_CFG80211_REG_DEBUG is not set CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set # CONFIG_WIRELESS_OLD_REGULATORY is not set CONFIG_CFG80211_WEXT=y CONFIG_WIRELESS_EXT_SYSFS=y @@ -638,6 +648,7 @@ CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUGFS is not set # CONFIG_MAC80211_DEBUG_MENU is not set # CONFIG_WIMAX is not set CONFIG_RFKILL=m @@ -661,6 +672,8 @@ CONFIG_FW_LOADER=y CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE=" radeon/R600_rlc.bin radeon/R700_rlc.bin" CONFIG_EXTRA_FIRMWARE_DIR="firmware" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set # CONFIG_CONNECTOR is not set # CONFIG_MTD is not set @@ -922,6 +935,7 @@ CONFIG_R8169=m # CONFIG_SIS190 is not set # CONFIG_SKGE is not set CONFIG_SKY2=m +# CONFIG_SKY2_DEBUG is not set CONFIG_VIA_VELOCITY=m CONFIG_TIGON3=m CONFIG_BNX2=m @@ -954,6 +968,7 @@ CONFIG_ATH5K=m CONFIG_ATH9K_HW=m CONFIG_ATH9K_COMMON=m CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUGFS is not set CONFIG_AR9170_USB=m CONFIG_AR9170_LEDS=y CONFIG_B43=m @@ -989,6 +1004,7 @@ CONFIG_LIBIPW=m CONFIG_IWLWIFI=m CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y # CONFIG_IWLWIFI_DEBUG is not set +# CONFIG_IWLWIFI_DEVICE_TRACING is not set CONFIG_IWLAGN=m CONFIG_IWL4965=y CONFIG_IWL5000=y @@ -2095,7 +2111,9 @@ CONFIG_EXT4_FS=y # CONFIG_EXT4_FS_XATTR is not set # CONFIG_EXT4_DEBUG is not set CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set CONFIG_REISERFS_FS=m # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set @@ -2257,17 +2275,54 @@ CONFIG_FRAME_WARN=1024 # CONFIG_MAGIC_SYSRQ is not set # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_DEBUG_FS is not set +CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set -# CONFIG_DEBUG_KERNEL is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DETECT_SOFTLOCKUP is not set +# CONFIG_DETECT_HUNG_TASK is not set +CONFIG_SCHED_DEBUG=y +CONFIG_SCHEDSTATS=y +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_HIGHMEM is not set CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_WRITECOUNT is not set # CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set CONFIG_ARCH_WANT_FRAME_POINTERS=y -# CONFIG_FRAME_POINTER is not set +CONFIG_FRAME_POINTER=y +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set CONFIG_SYSCTL_SYSCALL_CHECK=y +# CONFIG_DEBUG_PAGEALLOC is not set CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_NOP_TRACER=y +CONFIG_HAVE_FTRACE_NMI_ENTER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y @@ -2275,17 +2330,52 @@ CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_RING_BUFFER=y +CONFIG_FTRACE_NMI_ENTER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_TRACING=y +CONFIG_GENERIC_TRACER=y CONFIG_TRACING_SUPPORT=y -# CONFIG_FTRACE is not set +CONFIG_FTRACE=y +CONFIG_FUNCTION_TRACER=y +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_SYSPROF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_FTRACE_SYSCALLS is not set +# CONFIG_BOOT_TRACER is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_POWER_TRACER is not set +# CONFIG_KSYM_TRACER is not set +CONFIG_STACK_TRACER=y +# CONFIG_KMEMTRACE is not set +# CONFIG_WORKQUEUE_TRACER is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +CONFIG_DYNAMIC_FTRACE=y +# CONFIG_FUNCTION_PROFILER is not set +CONFIG_FTRACE_MCOUNT_RECORD=y +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_MMIOTRACE is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set +# CONFIG_DYNAMIC_DEBUG is not set # CONFIG_DMA_API_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set CONFIG_HAVE_ARCH_KMEMCHECK=y CONFIG_STRICT_DEVMEM=y # CONFIG_X86_VERBOSE_BOOTUP is not set # CONFIG_EARLY_PRINTK is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_X86_PTDUMP is not set +# CONFIG_DEBUG_RODATA is not set +# CONFIG_DEBUG_NX_TEST is not set # CONFIG_4KSTACKS is not set CONFIG_DOUBLEFAULT=y # CONFIG_IOMMU_STRESS is not set @@ -2299,7 +2389,10 @@ CONFIG_IO_DELAY_0X80=y # CONFIG_IO_DELAY_UDELAY is not set # CONFIG_IO_DELAY_NONE is not set CONFIG_DEFAULT_IO_DELAY_TYPE=0 +# CONFIG_DEBUG_BOOT_PARAMS is not set +# CONFIG_CPA_DEBUG is not set CONFIG_OPTIMIZE_INLINING=y +# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set # # Security options @@ -2416,7 +2509,7 @@ CONFIG_CRYPTO_LZF=y # CONFIG_CRYPTO_HW is not set CONFIG_HAVE_KVM=y # CONFIG_VIRTUALIZATION is not set -# CONFIG_BINARY_PRINTF is not set +CONFIG_BINARY_PRINTF=y # # Library routines diff --git a/projects/intel/linux/linux.i386.conf b/projects/intel/linux/linux.i386.conf index 7008dbea64..f4361806cf 100644 --- a/projects/intel/linux/linux.i386.conf +++ b/projects/intel/linux/linux.i386.conf @@ -123,7 +123,9 @@ CONFIG_ANON_INODES=y CONFIG_EMBEDDED=y CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y -# CONFIG_KALLSYMS is not set +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y @@ -143,7 +145,9 @@ CONFIG_HAVE_PERF_EVENTS=y # Kernel Performance Events And Counters # CONFIG_PERF_EVENTS=y +CONFIG_EVENT_PROFILE=y # CONFIG_PERF_COUNTERS is not set +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set # CONFIG_VM_EVENT_COUNTERS is not set CONFIG_PCI_QUIRKS=y # CONFIG_SLUB_DEBUG is not set @@ -152,7 +156,9 @@ CONFIG_PCI_QUIRKS=y CONFIG_SLUB=y # CONFIG_SLOB is not set # CONFIG_PROFILING is not set +CONFIG_TRACEPOINTS=y CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y @@ -166,6 +172,7 @@ CONFIG_HAVE_USER_RETURN_NOTIFIER=y # # GCOV-based kernel profiling # +# CONFIG_GCOV_KERNEL is not set # CONFIG_SLOW_WORK is not set CONFIG_HAVE_GENERIC_DMA_COHERENT=y CONFIG_RT_MUTEXES=y @@ -500,6 +507,7 @@ CONFIG_PCIEAER=y CONFIG_ARCH_SUPPORTS_MSI=y CONFIG_PCI_MSI=y CONFIG_PCI_LEGACY=y +# CONFIG_PCI_DEBUG is not set # CONFIG_PCI_STUB is not set CONFIG_HT_IRQ=y # CONFIG_PCI_IOV is not set @@ -587,6 +595,7 @@ CONFIG_SCTP_HMAC_SHA1=y # Network testing # # CONFIG_NET_PKTGEN is not set +# CONFIG_NET_DROP_MONITOR is not set # CONFIG_HAMRADIO is not set # CONFIG_CAN is not set # CONFIG_IRDA is not set @@ -618,6 +627,7 @@ CONFIG_CFG80211=m # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set # CONFIG_CFG80211_REG_DEBUG is not set CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set # CONFIG_WIRELESS_OLD_REGULATORY is not set CONFIG_CFG80211_WEXT=y CONFIG_WIRELESS_EXT_SYSFS=y @@ -631,6 +641,7 @@ CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUGFS is not set # CONFIG_MAC80211_DEBUG_MENU is not set # CONFIG_WIMAX is not set CONFIG_RFKILL=m @@ -653,6 +664,8 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set # CONFIG_CONNECTOR is not set # CONFIG_MTD is not set @@ -880,6 +893,7 @@ CONFIG_WLAN=y CONFIG_IWLWIFI=m CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y # CONFIG_IWLWIFI_DEBUG is not set +# CONFIG_IWLWIFI_DEVICE_TRACING is not set CONFIG_IWLAGN=m CONFIG_IWL4965=y CONFIG_IWL5000=y @@ -2040,7 +2054,9 @@ CONFIG_EXT4_FS=y # CONFIG_EXT4_FS_XATTR is not set # CONFIG_EXT4_DEBUG is not set CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set CONFIG_REISERFS_FS=m # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set @@ -2202,17 +2218,54 @@ CONFIG_FRAME_WARN=1024 # CONFIG_MAGIC_SYSRQ is not set # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_DEBUG_FS is not set +CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set -# CONFIG_DEBUG_KERNEL is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DETECT_SOFTLOCKUP is not set +# CONFIG_DETECT_HUNG_TASK is not set +CONFIG_SCHED_DEBUG=y +CONFIG_SCHEDSTATS=y +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_HIGHMEM is not set CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_WRITECOUNT is not set # CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set CONFIG_ARCH_WANT_FRAME_POINTERS=y -# CONFIG_FRAME_POINTER is not set +CONFIG_FRAME_POINTER=y +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set CONFIG_SYSCTL_SYSCALL_CHECK=y +# CONFIG_DEBUG_PAGEALLOC is not set CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_NOP_TRACER=y +CONFIG_HAVE_FTRACE_NMI_ENTER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y @@ -2220,17 +2273,52 @@ CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_RING_BUFFER=y +CONFIG_FTRACE_NMI_ENTER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_TRACING=y +CONFIG_GENERIC_TRACER=y CONFIG_TRACING_SUPPORT=y -# CONFIG_FTRACE is not set +CONFIG_FTRACE=y +CONFIG_FUNCTION_TRACER=y +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_SYSPROF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_FTRACE_SYSCALLS is not set +# CONFIG_BOOT_TRACER is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_POWER_TRACER is not set +# CONFIG_KSYM_TRACER is not set +CONFIG_STACK_TRACER=y +# CONFIG_KMEMTRACE is not set +# CONFIG_WORKQUEUE_TRACER is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +CONFIG_DYNAMIC_FTRACE=y +# CONFIG_FUNCTION_PROFILER is not set +CONFIG_FTRACE_MCOUNT_RECORD=y +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_MMIOTRACE is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set +# CONFIG_DYNAMIC_DEBUG is not set # CONFIG_DMA_API_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set CONFIG_HAVE_ARCH_KMEMCHECK=y CONFIG_STRICT_DEVMEM=y # CONFIG_X86_VERBOSE_BOOTUP is not set # CONFIG_EARLY_PRINTK is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_X86_PTDUMP is not set +# CONFIG_DEBUG_RODATA is not set +# CONFIG_DEBUG_NX_TEST is not set # CONFIG_4KSTACKS is not set CONFIG_DOUBLEFAULT=y # CONFIG_IOMMU_STRESS is not set @@ -2244,7 +2332,10 @@ CONFIG_IO_DELAY_0X80=y # CONFIG_IO_DELAY_UDELAY is not set # CONFIG_IO_DELAY_NONE is not set CONFIG_DEFAULT_IO_DELAY_TYPE=0 +# CONFIG_DEBUG_BOOT_PARAMS is not set +# CONFIG_CPA_DEBUG is not set CONFIG_OPTIMIZE_INLINING=y +# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set # # Security options @@ -2361,7 +2452,7 @@ CONFIG_CRYPTO_LZF=y # CONFIG_CRYPTO_HW is not set CONFIG_HAVE_KVM=y # CONFIG_VIRTUALIZATION is not set -# CONFIG_BINARY_PRINTF is not set +CONFIG_BINARY_PRINTF=y # # Library routines diff --git a/projects/intel/linux/linux.x86_64.conf b/projects/intel/linux/linux.x86_64.conf index e2789b0706..03a7a8614e 100644 --- a/projects/intel/linux/linux.x86_64.conf +++ b/projects/intel/linux/linux.x86_64.conf @@ -123,7 +123,9 @@ CONFIG_SYSCTL=y CONFIG_ANON_INODES=y CONFIG_EMBEDDED=y CONFIG_SYSCTL_SYSCALL=y -# CONFIG_KALLSYMS is not set +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y @@ -143,7 +145,9 @@ CONFIG_HAVE_PERF_EVENTS=y # Kernel Performance Events And Counters # CONFIG_PERF_EVENTS=y +CONFIG_EVENT_PROFILE=y # CONFIG_PERF_COUNTERS is not set +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set # CONFIG_VM_EVENT_COUNTERS is not set CONFIG_PCI_QUIRKS=y # CONFIG_SLUB_DEBUG is not set @@ -152,7 +156,9 @@ CONFIG_PCI_QUIRKS=y CONFIG_SLUB=y # CONFIG_SLOB is not set # CONFIG_PROFILING is not set +CONFIG_TRACEPOINTS=y CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y @@ -166,6 +172,7 @@ CONFIG_HAVE_USER_RETURN_NOTIFIER=y # # GCOV-based kernel profiling # +# CONFIG_GCOV_KERNEL is not set # CONFIG_SLOW_WORK is not set # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set CONFIG_RT_MUTEXES=y @@ -290,6 +297,7 @@ CONFIG_GART_IOMMU=y CONFIG_SWIOTLB=y CONFIG_IOMMU_HELPER=y # CONFIG_IOMMU_API is not set +# CONFIG_MAXSMP is not set CONFIG_NR_CPUS=8 CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y @@ -476,6 +484,7 @@ CONFIG_PCIEAER=y CONFIG_ARCH_SUPPORTS_MSI=y CONFIG_PCI_MSI=y CONFIG_PCI_LEGACY=y +# CONFIG_PCI_DEBUG is not set # CONFIG_PCI_STUB is not set CONFIG_HT_IRQ=y # CONFIG_PCI_IOV is not set @@ -560,6 +569,7 @@ CONFIG_SCTP_HMAC_SHA1=y # Network testing # # CONFIG_NET_PKTGEN is not set +# CONFIG_NET_DROP_MONITOR is not set # CONFIG_HAMRADIO is not set # CONFIG_CAN is not set # CONFIG_IRDA is not set @@ -591,6 +601,7 @@ CONFIG_CFG80211=m # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set # CONFIG_CFG80211_REG_DEBUG is not set CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set # CONFIG_WIRELESS_OLD_REGULATORY is not set CONFIG_CFG80211_WEXT=y CONFIG_WIRELESS_EXT_SYSFS=y @@ -604,6 +615,7 @@ CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel" # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUGFS is not set # CONFIG_MAC80211_DEBUG_MENU is not set # CONFIG_WIMAX is not set CONFIG_RFKILL=m @@ -626,6 +638,8 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set # CONFIG_CONNECTOR is not set # CONFIG_MTD is not set @@ -851,6 +865,7 @@ CONFIG_WLAN=y CONFIG_IWLWIFI=m CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y # CONFIG_IWLWIFI_DEBUG is not set +# CONFIG_IWLWIFI_DEVICE_TRACING is not set CONFIG_IWLAGN=m CONFIG_IWL4965=y CONFIG_IWL5000=y @@ -1998,7 +2013,9 @@ CONFIG_EXT4_FS=y # CONFIG_EXT4_FS_XATTR is not set # CONFIG_EXT4_DEBUG is not set CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set CONFIG_REISERFS_FS=m # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set @@ -2160,17 +2177,53 @@ CONFIG_FRAME_WARN=1024 # CONFIG_MAGIC_SYSRQ is not set # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_DEBUG_FS is not set +CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set -# CONFIG_DEBUG_KERNEL is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DETECT_SOFTLOCKUP is not set +# CONFIG_DETECT_HUNG_TASK is not set +CONFIG_SCHED_DEBUG=y +CONFIG_SCHEDSTATS=y +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_WRITECOUNT is not set # CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set CONFIG_ARCH_WANT_FRAME_POINTERS=y -# CONFIG_FRAME_POINTER is not set +CONFIG_FRAME_POINTER=y +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set CONFIG_SYSCTL_SYSCALL_CHECK=y +# CONFIG_DEBUG_PAGEALLOC is not set CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_NOP_TRACER=y +CONFIG_HAVE_FTRACE_NMI_ENTER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y @@ -2178,17 +2231,54 @@ CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_RING_BUFFER=y +CONFIG_FTRACE_NMI_ENTER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_TRACING=y +CONFIG_GENERIC_TRACER=y CONFIG_TRACING_SUPPORT=y -# CONFIG_FTRACE is not set +CONFIG_FTRACE=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FUNCTION_GRAPH_TRACER=y +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_SYSPROF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_FTRACE_SYSCALLS is not set +# CONFIG_BOOT_TRACER is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_POWER_TRACER is not set +# CONFIG_KSYM_TRACER is not set +CONFIG_STACK_TRACER=y +# CONFIG_KMEMTRACE is not set +# CONFIG_WORKQUEUE_TRACER is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +CONFIG_DYNAMIC_FTRACE=y +# CONFIG_FUNCTION_PROFILER is not set +CONFIG_FTRACE_MCOUNT_RECORD=y +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_MMIOTRACE is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set +# CONFIG_DYNAMIC_DEBUG is not set # CONFIG_DMA_API_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set CONFIG_HAVE_ARCH_KMEMCHECK=y CONFIG_STRICT_DEVMEM=y # CONFIG_X86_VERBOSE_BOOTUP is not set # CONFIG_EARLY_PRINTK is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_X86_PTDUMP is not set +# CONFIG_DEBUG_RODATA is not set +# CONFIG_DEBUG_NX_TEST is not set +# CONFIG_IOMMU_DEBUG is not set # CONFIG_IOMMU_STRESS is not set CONFIG_HAVE_MMIOTRACE_SUPPORT=y CONFIG_IO_DELAY_TYPE_0X80=0 @@ -2200,7 +2290,10 @@ CONFIG_IO_DELAY_0X80=y # CONFIG_IO_DELAY_UDELAY is not set # CONFIG_IO_DELAY_NONE is not set CONFIG_DEFAULT_IO_DELAY_TYPE=0 +# CONFIG_DEBUG_BOOT_PARAMS is not set +# CONFIG_CPA_DEBUG is not set CONFIG_OPTIMIZE_INLINING=y +# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set # # Security options @@ -2319,7 +2412,7 @@ CONFIG_CRYPTO_LZF=y # CONFIG_CRYPTO_HW is not set CONFIG_HAVE_KVM=y # CONFIG_VIRTUALIZATION is not set -# CONFIG_BINARY_PRINTF is not set +CONFIG_BINARY_PRINTF=y # # Library routines From e2268d59a61d292b8b8c802ce0709d3f6a6d8441 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 2 May 2010 16:18:05 +0200 Subject: [PATCH 147/171] new package: - add package grep, we need an full featured grep for upcoming pm-utils --- packages/sysutils/busybox/install | 3 ++ packages/sysutils/grep/build | 14 +++++++ packages/sysutils/grep/install | 6 +++ .../grep/patches/10-grep_fix-0.1.diff | 42 +++++++++++++++++++ packages/sysutils/grep/url | 1 + 5 files changed, 66 insertions(+) create mode 100755 packages/sysutils/grep/build create mode 100755 packages/sysutils/grep/install create mode 100644 packages/sysutils/grep/patches/10-grep_fix-0.1.diff create mode 100644 packages/sysutils/grep/url diff --git a/packages/sysutils/busybox/install b/packages/sysutils/busybox/install index 3fdc1919e3..c625bf2074 100755 --- a/packages/sysutils/busybox/install +++ b/packages/sysutils/busybox/install @@ -55,3 +55,6 @@ USER_PWD="`$ROOT/$TOOLCHAIN/bin/cryptpw $USER_PASSWORD`" mkdir -p $INSTALL/etc/network cp $PKG_DIR/config/interfaces $INSTALL/etc/network + +# we need an full-featured grep for pm-utils, so we install this :-( + $SCRIPTS/install grep diff --git a/packages/sysutils/grep/build b/packages/sysutils/grep/build new file mode 100755 index 0000000000..05c6f139e4 --- /dev/null +++ b/packages/sysutils/grep/build @@ -0,0 +1,14 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/build toolchain + +cd $PKG_BUILD +./configure --host=$TARGET_NAME \ + --build=$HOST_NAME \ + --prefix=/usr \ + --enable-shared \ + --disable-static \ + +make \ No newline at end of file diff --git a/packages/sysutils/grep/install b/packages/sysutils/grep/install new file mode 100755 index 0000000000..fda81c3a2a --- /dev/null +++ b/packages/sysutils/grep/install @@ -0,0 +1,6 @@ +#!/bin/sh + +. config/options + +mkdir -p $INSTALL/usr/bin + cp -P $PKG_BUILD/src/grep $INSTALL/usr/bin diff --git a/packages/sysutils/grep/patches/10-grep_fix-0.1.diff b/packages/sysutils/grep/patches/10-grep_fix-0.1.diff new file mode 100644 index 0000000000..3e60903ddd --- /dev/null +++ b/packages/sysutils/grep/patches/10-grep_fix-0.1.diff @@ -0,0 +1,42 @@ +Hi Nelson, + +Thanks for the report. +I debated whether to add an entry to NEWS, but opted not to, +since it is unlikely that anyone will see the result of this fix. + +Here's the patch: + +From 651d212abe771d2a32db746895ae28dd434527b6 Mon Sep 17 00:00:00 2001 +From: Jim Meyering redhat.com> +Date: Wed, 7 Apr 2010 13:36:02 +0200 +Subject: [PATCH] grep: make kwset's obstack use xmalloc, not malloc + +This insidious bug could make grep fail to diagnose a failed malloc, +and then proceed to dereference the resulting NULL pointer. +Note that this bug was unlikely ever to cause real trouble; without +the fix, grep would segfault upon OOM, now it exits with a diagnostic. +* src/kwset.c (malloc) [GREP]: Define without the "(s)" macro +parameter, so that unadorned uses of malloc are also mapped to xmalloc. +One such use is in the expansion of obstack_init. +Report and patch by Nelson H. F. Beebe, in +http://thread.gmane.org/gmane.comp.gnu.grep.bugs/2995 +--- + src/kwset.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/src/kwset.c b/src/kwset.c +index 050562e..995be79 100644 +--- a/src/kwset.c ++++ b/src/kwset.c +@@ -40,7 +40,7 @@ + #ifdef GREP + # include "xalloc.h" + # undef malloc +-# define malloc(s) xmalloc(s) ++# define malloc xmalloc + #endif + + #define NCHAR (UCHAR_MAX + 1) +-- +1.7.1.rc0.212.gbd88f + diff --git a/packages/sysutils/grep/url b/packages/sysutils/grep/url new file mode 100644 index 0000000000..37b71ebbd5 --- /dev/null +++ b/packages/sysutils/grep/url @@ -0,0 +1 @@ +ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/grep/grep-2.6.3.tar.gz \ No newline at end of file From 3aa4f4cdaa77d3367f7750a5765a4a25570a6eef Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 2 May 2010 16:19:20 +0200 Subject: [PATCH 148/171] busybox: - add applet id (needed for pm-utils) - remove package grep (we have now the full featured grep) - add applet ifplugd --- packages/sysutils/busybox/config/busybox.conf | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/sysutils/busybox/config/busybox.conf b/packages/sysutils/busybox/config/busybox.conf index e19516e704..e4b7c98d9d 100644 --- a/packages/sysutils/busybox/config/busybox.conf +++ b/packages/sysutils/busybox/config/busybox.conf @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Busybox version: 1.16.1 -# Mon Apr 12 16:04:50 2010 +# Sun May 2 15:07:06 2010 # CONFIG_HAVE_DOT_CONFIG=y @@ -186,7 +186,7 @@ CONFIG_FEATURE_ENV_LONG_OPTIONS=y CONFIG_HEAD=y CONFIG_FEATURE_FANCY_HEAD=y # CONFIG_HOSTID is not set -# CONFIG_ID is not set +CONFIG_ID=y CONFIG_INSTALL=y CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y # CONFIG_LENGTH is not set @@ -367,10 +367,10 @@ CONFIG_FEATURE_FIND_PATH=y # CONFIG_FEATURE_FIND_REGEX is not set # CONFIG_FEATURE_FIND_CONTEXT is not set CONFIG_FEATURE_FIND_LINKS=y -CONFIG_GREP=y -CONFIG_FEATURE_GREP_EGREP_ALIAS=y -CONFIG_FEATURE_GREP_FGREP_ALIAS=y -CONFIG_FEATURE_GREP_CONTEXT=y +# CONFIG_GREP is not set +# CONFIG_FEATURE_GREP_EGREP_ALIAS is not set +# CONFIG_FEATURE_GREP_FGREP_ALIAS is not set +# CONFIG_FEATURE_GREP_CONTEXT is not set CONFIG_XARGS=y CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y @@ -684,7 +684,7 @@ CONFIG_FEATURE_IFCONFIG_STATUS=y CONFIG_FEATURE_IFCONFIG_HW=y CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y # CONFIG_IFENSLAVE is not set -# CONFIG_IFPLUGD is not set +CONFIG_IFPLUGD=y CONFIG_IFUPDOWN=y CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" CONFIG_FEATURE_IFUPDOWN_IP=y From 2f8153a31befd145f403aec2b5024143784c3634 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 2 May 2010 16:19:41 +0200 Subject: [PATCH 149/171] new package: - add package pm-utils --- packages/sysutils/pm-utils/build | 15 ++++++++++ packages/sysutils/pm-utils/install | 47 ++++++++++++++++++++++++++++++ packages/sysutils/pm-utils/url | 1 + 3 files changed, 63 insertions(+) create mode 100755 packages/sysutils/pm-utils/build create mode 100755 packages/sysutils/pm-utils/install create mode 100644 packages/sysutils/pm-utils/url diff --git a/packages/sysutils/pm-utils/build b/packages/sysutils/pm-utils/build new file mode 100755 index 0000000000..1733fbe5bd --- /dev/null +++ b/packages/sysutils/pm-utils/build @@ -0,0 +1,15 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/build toolchain + +cd $PKG_BUILD +./configure --host=$TARGET_NAME \ + --build=$HOST_NAME \ + --prefix=/usr \ + --sysconfdir=/etc \ + --datadir=/usr/share \ + --localstatedir=/var \ + +make diff --git a/packages/sysutils/pm-utils/install b/packages/sysutils/pm-utils/install new file mode 100755 index 0000000000..c5b626e3ab --- /dev/null +++ b/packages/sysutils/pm-utils/install @@ -0,0 +1,47 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/install grep + +mkdir -p $INSTALL/etc/pm/config.d +mkdir -p $INSTALL/etc/pm/power.d +mkdir -p $INSTALL/etc/pm/sleep.d + +mkdir -p $INSTALL/usr/bin + for file in import-fdi-quirkdb on_ac_power pm-is-supported; do + cp -P $PKG_BUILD/src/$file $INSTALL/usr/bin + done + +mkdir -p $INSTALL/usr/lib/pm-utils/bin + for file in pm-action pm-pmu pm-reset-swap service; do + cp -P $PKG_BUILD/src/$file $INSTALL/usr/lib/pm-utils/bin + done + +mkdir -p $INSTALL/usr/lib/pm-utils/ + for file in defaults functions pm-functions; do + cp -P $PKG_BUILD/pm/$file $INSTALL/usr/lib/pm-utils + done + +mkdir -p $INSTALL/usr/lib/pm-utils/module.d + for file in kernel tuxonice uswsusp; do + cp -P $PKG_BUILD/pm/module.d/$file $INSTALL/usr/lib/pm-utils/module.d + done + +mkdir -p $INSTALL/usr/lib/pm-utils/power.d + for file in sched-powersave; do + cp -P $PKG_BUILD/pm/power.d/$file $INSTALL/usr/lib/pm-utils/power.d + chmod +x $INSTALL/usr/lib/pm-utils/power.d/$file + done + +mkdir -p $INSTALL/usr/lib/pm-utils/sleep.d + for file in 00logging 00powersave 01grub 49bluetooth 55NetworkManager 75modules 90clock 94cpufreq 95led 98video-quirk-db-handler 99video; do + cp -P $PKG_BUILD/pm/sleep.d/$file $INSTALL/usr/lib/pm-utils/sleep.d + chmod +x $INSTALL/usr/lib/pm-utils/sleep.d/$file + done + +mkdir -p $INSTALL/usr/sbin + cp -P $PKG_BUILD/src/pm-powersave $INSTALL/usr/sbin + for file in pm-hibernate pm-suspend pm-suspend-hybrid; do + ln -sf /usr/lib/pm-utils/bin/pm-action $INSTALL/usr/sbin/$file + done diff --git a/packages/sysutils/pm-utils/url b/packages/sysutils/pm-utils/url new file mode 100644 index 0000000000..74e83fcab0 --- /dev/null +++ b/packages/sysutils/pm-utils/url @@ -0,0 +1 @@ +http://sources.openelec.tv/svn/pm-utils-20100428.tar.bz2 \ No newline at end of file From 131603f472f32f23ada536fccc48a1a070963a49 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 2 May 2010 16:21:16 +0200 Subject: [PATCH 150/171] busybox: - mount debugfs (for ureadahead) - create /var/lib/ureadahead and /storage/.cache/ureadahead --- packages/sysutils/busybox/init.d/05_mount_filesystem | 1 + packages/sysutils/busybox/init.d/06_make_directorys | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/packages/sysutils/busybox/init.d/05_mount_filesystem b/packages/sysutils/busybox/init.d/05_mount_filesystem index 6435ec78ac..9a7641e436 100755 --- a/packages/sysutils/busybox/init.d/05_mount_filesystem +++ b/packages/sysutils/busybox/init.d/05_mount_filesystem @@ -6,3 +6,4 @@ progress "mounting needed filesystems" $IONICE mount -n -t ramfs none /var + $IONICE mount -n -t debugfs none /sys/kernel/debug diff --git a/packages/sysutils/busybox/init.d/06_make_directorys b/packages/sysutils/busybox/init.d/06_make_directorys index fde0d0c8f8..785d3a2ce5 100755 --- a/packages/sysutils/busybox/init.d/06_make_directorys +++ b/packages/sysutils/busybox/init.d/06_make_directorys @@ -23,3 +23,7 @@ progress "make variable directory structure" $IONICE mkdir -p /var/lib/polkit-1 \ /var/lib/udisks \ /var/lib/upower + +# ureadahead: + $IONICE mkdir -p /storage/.cache/ureadahead + ln -sf /storage/.cache/ureadahead /var/lib/ureadahead From badbf085ffa6f542b787f85e9e0c30fb414a4fd1 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 2 May 2010 16:22:21 +0200 Subject: [PATCH 151/171] lcdproc: - rework init script - add sleep from 11 sec to ensure irserver is already loaded --- packages/sysutils/lcdproc/init.d/33_lcdproc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/sysutils/lcdproc/init.d/33_lcdproc b/packages/sysutils/lcdproc/init.d/33_lcdproc index a64dcfcb81..8d3480afc8 100755 --- a/packages/sysutils/lcdproc/init.d/33_lcdproc +++ b/packages/sysutils/lcdproc/init.d/33_lcdproc @@ -2,12 +2,16 @@ # # runlevels: openelec, textmode -[ -f /storage/.config/lcd.conf ] && . /storage/.config/lcd.conf +( + [ -f /storage/.config/lcd.conf ] && . /storage/.config/lcd.conf || exit 0 -if [ ! "$LCD_DRIVER" = "none" -a -z "$LCD_DRIVER" ]; then + if [ ! "$LCD_DRIVER" = none ]; then - progress "Starting LCD daemon" + progress "Starting LCD daemon with driver: $LCD_DRIVER" - LCDd -c /etc/LCDd.conf -d $LCD_DRIVER > /dev/null 2>&1 + usleep 10000000 # sleep 10sec. to for irserver loading -fi \ No newline at end of file + LCDd -c /etc/LCDd.conf -d $LCD_DRIVER > /dev/null 2>&1 + + fi +)& \ No newline at end of file From dd7237950a52880e5c0f13a5cd83f7112d0bf389 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 2 May 2010 16:23:28 +0200 Subject: [PATCH 152/171] image: - install pm-utils - install ureadahead --- packages/image/install | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/image/install b/packages/image/install index 12d0bece25..ef78007ecd 100755 --- a/packages/image/install +++ b/packages/image/install @@ -56,6 +56,9 @@ case "$2" in $SCRIPTS/install busybox $SCRIPTS/install util-linux-ng + $SCRIPTS/install pm-utils + $SCRIPTS/install ureadahead + echo "OpenELEC" > $INSTALL/etc/distribution echo "$PROJECT.$TARGET_ARCH" > $INSTALL/etc/arch echo "$OPENELEC_VERSION" > $INSTALL/etc/version From 4d479bc6a7a8719efbe7eddaea6dfcdab63f3234 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 2 May 2010 18:46:46 +0200 Subject: [PATCH 153/171] projects/*/linux: - remove swap support - remove hibernation support (incl. toxonice) because wakeup needs longer as an fresh boot --- projects/ION/linux/linux.i386.conf | 28 +------------------------ projects/ION/linux/linux.x86_64.conf | 28 +------------------------ projects/generic/linux/linux.i386.conf | 29 +------------------------- projects/intel/linux/linux.i386.conf | 29 +------------------------- projects/intel/linux/linux.x86_64.conf | 29 +------------------------- 5 files changed, 5 insertions(+), 138 deletions(-) diff --git a/projects/ION/linux/linux.i386.conf b/projects/ION/linux/linux.i386.conf index 3728529dfa..ab12dee30b 100644 --- a/projects/ION/linux/linux.i386.conf +++ b/projects/ION/linux/linux.i386.conf @@ -70,7 +70,7 @@ CONFIG_HAVE_KERNEL_LZO=y # CONFIG_KERNEL_BZIP2 is not set CONFIG_KERNEL_LZMA=y # CONFIG_KERNEL_LZO is not set -CONFIG_SWAP=y +# CONFIG_SWAP is not set CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y @@ -368,7 +368,6 @@ CONFIG_HZ=300 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y -# CONFIG_KEXEC_JUMP is not set CONFIG_PHYSICAL_START=0x400000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x400000 @@ -388,30 +387,6 @@ CONFIG_PM_SLEEP_SMP=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y -CONFIG_HIBERNATION_NVS=y -CONFIG_HIBERNATION=y -CONFIG_PM_STD_PARTITION="" -CONFIG_TOI_CORE=y - -# -# Image Storage (you need at least one allocator) -# -CONFIG_TOI_FILE=y -# CONFIG_TOI_SWAP is not set - -# -# General Options -# -CONFIG_TOI_CRYPTO=y -CONFIG_TOI_USERUI=y -CONFIG_TOI_USERUI_DEFAULT_PATH="/usr/sbin/tuxoniceui_text" -CONFIG_TOI_KEEP_IMAGE=y -CONFIG_TOI_REPLACE_SWSUSP=y -# CONFIG_TOI_IGNORE_LATE_INITCALL is not set -CONFIG_TOI_DEFAULT_WAIT=25 -CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE=2000 -# CONFIG_TOI_CHECKSUM is not set -CONFIG_TOI=y CONFIG_PM_RUNTIME=y CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y @@ -2260,7 +2235,6 @@ CONFIG_CRYPTO_DES=y # CONFIG_CRYPTO_DEFLATE is not set CONFIG_CRYPTO_ZLIB=y CONFIG_CRYPTO_LZO=y -CONFIG_CRYPTO_LZF=y # # Random Number Generation diff --git a/projects/ION/linux/linux.x86_64.conf b/projects/ION/linux/linux.x86_64.conf index 2206eeb4e6..f80bab3937 100644 --- a/projects/ION/linux/linux.x86_64.conf +++ b/projects/ION/linux/linux.x86_64.conf @@ -71,7 +71,7 @@ CONFIG_HAVE_KERNEL_LZO=y # CONFIG_KERNEL_BZIP2 is not set CONFIG_KERNEL_LZMA=y # CONFIG_KERNEL_LZO is not set -CONFIG_SWAP=y +# CONFIG_SWAP is not set CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y @@ -355,7 +355,6 @@ CONFIG_HZ=300 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y -# CONFIG_KEXEC_JUMP is not set CONFIG_PHYSICAL_START=0x400000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x1000000 @@ -368,37 +367,12 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # # Power management and ACPI options # -CONFIG_ARCH_HIBERNATION_HEADER=y CONFIG_PM=y # CONFIG_PM_DEBUG is not set CONFIG_PM_SLEEP_SMP=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y -CONFIG_HIBERNATION_NVS=y -CONFIG_HIBERNATION=y -CONFIG_PM_STD_PARTITION="" -CONFIG_TOI_CORE=y - -# -# Image Storage (you need at least one allocator) -# -CONFIG_TOI_FILE=y -# CONFIG_TOI_SWAP is not set - -# -# General Options -# -CONFIG_TOI_CRYPTO=y -CONFIG_TOI_USERUI=y -CONFIG_TOI_USERUI_DEFAULT_PATH="/usr/sbin/tuxoniceui_text" -CONFIG_TOI_KEEP_IMAGE=y -CONFIG_TOI_REPLACE_SWSUSP=y -# CONFIG_TOI_IGNORE_LATE_INITCALL is not set -CONFIG_TOI_DEFAULT_WAIT=25 -CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE=2000 -# CONFIG_TOI_CHECKSUM is not set -CONFIG_TOI=y CONFIG_PM_RUNTIME=y CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y diff --git a/projects/generic/linux/linux.i386.conf b/projects/generic/linux/linux.i386.conf index 07ba1f50ca..700f9125a2 100644 --- a/projects/generic/linux/linux.i386.conf +++ b/projects/generic/linux/linux.i386.conf @@ -70,7 +70,7 @@ CONFIG_HAVE_KERNEL_LZO=y # CONFIG_KERNEL_BZIP2 is not set CONFIG_KERNEL_LZMA=y # CONFIG_KERNEL_LZO is not set -CONFIG_SWAP=y +# CONFIG_SWAP is not set CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y @@ -369,7 +369,6 @@ CONFIG_HZ=300 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y -# CONFIG_KEXEC_JUMP is not set CONFIG_PHYSICAL_START=0x400000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x400000 @@ -389,30 +388,6 @@ CONFIG_PM_SLEEP_SMP=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y -CONFIG_HIBERNATION_NVS=y -CONFIG_HIBERNATION=y -CONFIG_PM_STD_PARTITION="" -CONFIG_TOI_CORE=y - -# -# Image Storage (you need at least one allocator) -# -CONFIG_TOI_FILE=y -# CONFIG_TOI_SWAP is not set - -# -# General Options -# -CONFIG_TOI_CRYPTO=y -CONFIG_TOI_USERUI=y -CONFIG_TOI_USERUI_DEFAULT_PATH="/usr/sbin/tuxoniceui_text" -CONFIG_TOI_KEEP_IMAGE=y -CONFIG_TOI_REPLACE_SWSUSP=y -# CONFIG_TOI_IGNORE_LATE_INITCALL is not set -CONFIG_TOI_DEFAULT_WAIT=25 -CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE=2000 -# CONFIG_TOI_CHECKSUM is not set -CONFIG_TOI=y CONFIG_PM_RUNTIME=y CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y @@ -2081,7 +2056,6 @@ CONFIG_RT2870=m # # CONFIG_RAR_REGISTER is not set # CONFIG_IIO is not set -# CONFIG_RAMZSWAP is not set # CONFIG_BATMAN_ADV is not set # CONFIG_SAMSUNG_LAPTOP is not set # CONFIG_STRIP is not set @@ -2500,7 +2474,6 @@ CONFIG_CRYPTO_DES=y # CONFIG_CRYPTO_DEFLATE is not set CONFIG_CRYPTO_ZLIB=y CONFIG_CRYPTO_LZO=y -CONFIG_CRYPTO_LZF=y # # Random Number Generation diff --git a/projects/intel/linux/linux.i386.conf b/projects/intel/linux/linux.i386.conf index f4361806cf..cfb468d977 100644 --- a/projects/intel/linux/linux.i386.conf +++ b/projects/intel/linux/linux.i386.conf @@ -70,7 +70,7 @@ CONFIG_HAVE_KERNEL_LZO=y # CONFIG_KERNEL_BZIP2 is not set CONFIG_KERNEL_LZMA=y # CONFIG_KERNEL_LZO is not set -CONFIG_SWAP=y +# CONFIG_SWAP is not set CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y @@ -369,7 +369,6 @@ CONFIG_HZ=300 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y -# CONFIG_KEXEC_JUMP is not set CONFIG_PHYSICAL_START=0x400000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x400000 @@ -389,30 +388,6 @@ CONFIG_PM_SLEEP_SMP=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y -CONFIG_HIBERNATION_NVS=y -CONFIG_HIBERNATION=y -CONFIG_PM_STD_PARTITION="" -CONFIG_TOI_CORE=y - -# -# Image Storage (you need at least one allocator) -# -CONFIG_TOI_FILE=y -# CONFIG_TOI_SWAP is not set - -# -# General Options -# -CONFIG_TOI_CRYPTO=y -CONFIG_TOI_USERUI=y -CONFIG_TOI_USERUI_DEFAULT_PATH="/usr/sbin/tuxoniceui_text" -CONFIG_TOI_KEEP_IMAGE=y -CONFIG_TOI_REPLACE_SWSUSP=y -# CONFIG_TOI_IGNORE_LATE_INITCALL is not set -CONFIG_TOI_DEFAULT_WAIT=25 -CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE=2000 -# CONFIG_TOI_CHECKSUM is not set -CONFIG_TOI=y CONFIG_PM_RUNTIME=y CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y @@ -2024,7 +1999,6 @@ CONFIG_STAGING=y # # CONFIG_RAR_REGISTER is not set # CONFIG_IIO is not set -# CONFIG_RAMZSWAP is not set # CONFIG_BATMAN_ADV is not set # CONFIG_SAMSUNG_LAPTOP is not set # CONFIG_STRIP is not set @@ -2443,7 +2417,6 @@ CONFIG_CRYPTO_DES=y # CONFIG_CRYPTO_DEFLATE is not set CONFIG_CRYPTO_ZLIB=y CONFIG_CRYPTO_LZO=y -CONFIG_CRYPTO_LZF=y # # Random Number Generation diff --git a/projects/intel/linux/linux.x86_64.conf b/projects/intel/linux/linux.x86_64.conf index 03a7a8614e..da6ec3e2cf 100644 --- a/projects/intel/linux/linux.x86_64.conf +++ b/projects/intel/linux/linux.x86_64.conf @@ -71,7 +71,7 @@ CONFIG_HAVE_KERNEL_LZO=y # CONFIG_KERNEL_BZIP2 is not set CONFIG_KERNEL_LZMA=y # CONFIG_KERNEL_LZO is not set -CONFIG_SWAP=y +# CONFIG_SWAP is not set CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y @@ -357,7 +357,6 @@ CONFIG_HZ=300 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y -# CONFIG_KEXEC_JUMP is not set CONFIG_PHYSICAL_START=0x400000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x1000000 @@ -370,37 +369,12 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # # Power management and ACPI options # -CONFIG_ARCH_HIBERNATION_HEADER=y CONFIG_PM=y # CONFIG_PM_DEBUG is not set CONFIG_PM_SLEEP_SMP=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y -CONFIG_HIBERNATION_NVS=y -CONFIG_HIBERNATION=y -CONFIG_PM_STD_PARTITION="" -CONFIG_TOI_CORE=y - -# -# Image Storage (you need at least one allocator) -# -CONFIG_TOI_FILE=y -# CONFIG_TOI_SWAP is not set - -# -# General Options -# -CONFIG_TOI_CRYPTO=y -CONFIG_TOI_USERUI=y -CONFIG_TOI_USERUI_DEFAULT_PATH="/usr/local/sbin/tuxoniceui_text" -CONFIG_TOI_KEEP_IMAGE=y -CONFIG_TOI_REPLACE_SWSUSP=y -# CONFIG_TOI_IGNORE_LATE_INITCALL is not set -CONFIG_TOI_DEFAULT_WAIT=25 -CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE=2000 -# CONFIG_TOI_CHECKSUM is not set -CONFIG_TOI=y CONFIG_PM_RUNTIME=y CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y @@ -1983,7 +1957,6 @@ CONFIG_STAGING=y # # CONFIG_RAR_REGISTER is not set # CONFIG_IIO is not set -# CONFIG_RAMZSWAP is not set # CONFIG_BATMAN_ADV is not set # CONFIG_SAMSUNG_LAPTOP is not set # CONFIG_STRIP is not set From 14f7ed057ed6359f6836ea87fa413ad40b9d51c8 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 2 May 2010 18:47:20 +0200 Subject: [PATCH 154/171] linux: - remove tuxonice patch --- .../patches/tuxonice-3.1-for-2.6.33.diff | 21427 ---------------- 1 file changed, 21427 deletions(-) delete mode 100644 packages/linux/patches/tuxonice-3.1-for-2.6.33.diff diff --git a/packages/linux/patches/tuxonice-3.1-for-2.6.33.diff b/packages/linux/patches/tuxonice-3.1-for-2.6.33.diff deleted file mode 100644 index fdd7bee0d9..0000000000 --- a/packages/linux/patches/tuxonice-3.1-for-2.6.33.diff +++ /dev/null @@ -1,21427 +0,0 @@ -diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt -index e7848a0..616afc2 100644 ---- a/Documentation/kernel-parameters.txt -+++ b/Documentation/kernel-parameters.txt -@@ -2703,6 +2703,9 @@ and is between 256 and 4096 characters. It is defined in the file - medium is write-protected). - Example: quirks=0419:aaf5:rl,0421:0433:rc - -+ uuid_debug= (Boolean) whether to enable debugging of TuxOnIce's -+ uuid support. -+ - vdso= [X86,SH] - vdso=2: enable compat VDSO (default with COMPAT_VDSO) - vdso=1: enable VDSO (default) -diff --git a/Documentation/power/tuxonice-internals.txt b/Documentation/power/tuxonice-internals.txt -new file mode 100644 -index 0000000..7a96186 ---- /dev/null -+++ b/Documentation/power/tuxonice-internals.txt -@@ -0,0 +1,477 @@ -+ TuxOnIce 3.0 Internal Documentation. -+ Updated to 26 March 2009 -+ -+1. Introduction. -+ -+ TuxOnIce 3.0 is an addition to the Linux Kernel, designed to -+ allow the user to quickly shutdown and quickly boot a computer, without -+ needing to close documents or programs. It is equivalent to the -+ hibernate facility in some laptops. This implementation, however, -+ requires no special BIOS or hardware support. -+ -+ The code in these files is based upon the original implementation -+ prepared by Gabor Kuti and additional work by Pavel Machek and a -+ host of others. This code has been substantially reworked by Nigel -+ Cunningham, again with the help and testing of many others, not the -+ least of whom is Michael Frank. At its heart, however, the operation is -+ essentially the same as Gabor's version. -+ -+2. Overview of operation. -+ -+ The basic sequence of operations is as follows: -+ -+ a. Quiesce all other activity. -+ b. Ensure enough memory and storage space are available, and attempt -+ to free memory/storage if necessary. -+ c. Allocate the required memory and storage space. -+ d. Write the image. -+ e. Power down. -+ -+ There are a number of complicating factors which mean that things are -+ not as simple as the above would imply, however... -+ -+ o The activity of each process must be stopped at a point where it will -+ not be holding locks necessary for saving the image, or unexpectedly -+ restart operations due to something like a timeout and thereby make -+ our image inconsistent. -+ -+ o It is desirous that we sync outstanding I/O to disk before calculating -+ image statistics. This reduces corruption if one should suspend but -+ then not resume, and also makes later parts of the operation safer (see -+ below). -+ -+ o We need to get as close as we can to an atomic copy of the data. -+ Inconsistencies in the image will result in inconsistent memory contents at -+ resume time, and thus in instability of the system and/or file system -+ corruption. This would appear to imply a maximum image size of one half of -+ the amount of RAM, but we have a solution... (again, below). -+ -+ o In 2.6, we choose to play nicely with the other suspend-to-disk -+ implementations. -+ -+3. Detailed description of internals. -+ -+ a. Quiescing activity. -+ -+ Safely quiescing the system is achieved using three separate but related -+ aspects. -+ -+ First, we note that the vast majority of processes don't need to run during -+ suspend. They can be 'frozen'. We therefore implement a refrigerator -+ routine, which processes enter and in which they remain until the cycle is -+ complete. Processes enter the refrigerator via try_to_freeze() invocations -+ at appropriate places. A process cannot be frozen in any old place. It -+ must not be holding locks that will be needed for writing the image or -+ freezing other processes. For this reason, userspace processes generally -+ enter the refrigerator via the signal handling code, and kernel threads at -+ the place in their event loops where they drop locks and yield to other -+ processes or sleep. -+ -+ The task of freezing processes is complicated by the fact that there can be -+ interdependencies between processes. Freezing process A before process B may -+ mean that process B cannot be frozen, because it stops at waiting for -+ process A rather than in the refrigerator. This issue is seen where -+ userspace waits on freezeable kernel threads or fuse filesystem threads. To -+ address this issue, we implement the following algorithm for quiescing -+ activity: -+ -+ - Freeze filesystems (including fuse - userspace programs starting -+ new requests are immediately frozen; programs already running -+ requests complete their work before being frozen in the next -+ step) -+ - Freeze userspace -+ - Thaw filesystems (this is safe now that userspace is frozen and no -+ fuse requests are outstanding). -+ - Invoke sys_sync (noop on fuse). -+ - Freeze filesystems -+ - Freeze kernel threads -+ -+ If we need to free memory, we thaw kernel threads and filesystems, but not -+ userspace. We can then free caches without worrying about deadlocks due to -+ swap files being on frozen filesystems or such like. -+ -+ b. Ensure enough memory & storage are available. -+ -+ We have a number of constraints to meet in order to be able to successfully -+ suspend and resume. -+ -+ First, the image will be written in two parts, described below. One of these -+ parts needs to have an atomic copy made, which of course implies a maximum -+ size of one half of the amount of system memory. The other part ('pageset') -+ is not atomically copied, and can therefore be as large or small as desired. -+ -+ Second, we have constraints on the amount of storage available. In these -+ calculations, we may also consider any compression that will be done. The -+ cryptoapi module allows the user to configure an expected compression ratio. -+ -+ Third, the user can specify an arbitrary limit on the image size, in -+ megabytes. This limit is treated as a soft limit, so that we don't fail the -+ attempt to suspend if we cannot meet this constraint. -+ -+ c. Allocate the required memory and storage space. -+ -+ Having done the initial freeze, we determine whether the above constraints -+ are met, and seek to allocate the metadata for the image. If the constraints -+ are not met, or we fail to allocate the required space for the metadata, we -+ seek to free the amount of memory that we calculate is needed and try again. -+ We allow up to four iterations of this loop before aborting the cycle. If we -+ do fail, it should only be because of a bug in TuxOnIce's calculations. -+ -+ These steps are merged together in the prepare_image function, found in -+ prepare_image.c. The functions are merged because of the cyclical nature -+ of the problem of calculating how much memory and storage is needed. Since -+ the data structures containing the information about the image must -+ themselves take memory and use storage, the amount of memory and storage -+ required changes as we prepare the image. Since the changes are not large, -+ only one or two iterations will be required to achieve a solution. -+ -+ The recursive nature of the algorithm is miminised by keeping user space -+ frozen while preparing the image, and by the fact that our records of which -+ pages are to be saved and which pageset they are saved in use bitmaps (so -+ that changes in number or fragmentation of the pages to be saved don't -+ feedback via changes in the amount of memory needed for metadata). The -+ recursiveness is thus limited to any extra slab pages allocated to store the -+ extents that record storage used, and the effects of seeking to free memory. -+ -+ d. Write the image. -+ -+ We previously mentioned the need to create an atomic copy of the data, and -+ the half-of-memory limitation that is implied in this. This limitation is -+ circumvented by dividing the memory to be saved into two parts, called -+ pagesets. -+ -+ Pageset2 contains most of the page cache - the pages on the active and -+ inactive LRU lists that aren't needed or modified while TuxOnIce is -+ running, so they can be safely written without an atomic copy. They are -+ therefore saved first and reloaded last. While saving these pages, -+ TuxOnIce carefully ensures that the work of writing the pages doesn't make -+ the image inconsistent. With the support for Kernel (Video) Mode Setting -+ going into the kernel at the time of writing, we need to check for pages -+ on the LRU that are used by KMS, and exclude them from pageset2. They are -+ atomically copied as part of pageset 1. -+ -+ Once pageset2 has been saved, we prepare to do the atomic copy of remaining -+ memory. As part of the preparation, we power down drivers, thereby providing -+ them with the opportunity to have their state recorded in the image. The -+ amount of memory allocated by drivers for this is usually negligible, but if -+ DRI is in use, video drivers may require significants amounts. Ideally we -+ would be able to query drivers while preparing the image as to the amount of -+ memory they will need. Unfortunately no such mechanism exists at the time of -+ writing. For this reason, TuxOnIce allows the user to set an -+ 'extra_pages_allowance', which is used to seek to ensure sufficient memory -+ is available for drivers at this point. TuxOnIce also lets the user set this -+ value to 0. In this case, a test driver suspend is done while preparing the -+ image, and the difference (plus a margin) used instead. TuxOnIce will also -+ automatically restart the hibernation process (twice at most) if it finds -+ that the extra pages allowance is not sufficient. It will then use what was -+ actually needed (plus a margin, again). Failure to hibernate should thus -+ be an extremely rare occurence. -+ -+ Having suspended the drivers, we save the CPU context before making an -+ atomic copy of pageset1, resuming the drivers and saving the atomic copy. -+ After saving the two pagesets, we just need to save our metadata before -+ powering down. -+ -+ As we mentioned earlier, the contents of pageset2 pages aren't needed once -+ they've been saved. We therefore use them as the destination of our atomic -+ copy. In the unlikely event that pageset1 is larger, extra pages are -+ allocated while the image is being prepared. This is normally only a real -+ possibility when the system has just been booted and the page cache is -+ small. -+ -+ This is where we need to be careful about syncing, however. Pageset2 will -+ probably contain filesystem meta data. If this is overwritten with pageset1 -+ and then a sync occurs, the filesystem will be corrupted - at least until -+ resume time and another sync of the restored data. Since there is a -+ possibility that the user might not resume or (may it never be!) that -+ TuxOnIce might oops, we do our utmost to avoid syncing filesystems after -+ copying pageset1. -+ -+ e. Power down. -+ -+ Powering down uses standard kernel routines. TuxOnIce supports powering down -+ using the ACPI S3, S4 and S5 methods or the kernel's non-ACPI power-off. -+ Supporting suspend to ram (S3) as a power off option might sound strange, -+ but it allows the user to quickly get their system up and running again if -+ the battery doesn't run out (we just need to re-read the overwritten pages) -+ and if the battery does run out (or the user removes power), they can still -+ resume. -+ -+4. Data Structures. -+ -+ TuxOnIce uses three main structures to store its metadata and configuration -+ information: -+ -+ a) Pageflags bitmaps. -+ -+ TuxOnIce records which pages will be in pageset1, pageset2, the destination -+ of the atomic copy and the source of the atomically restored image using -+ bitmaps. The code used is that written for swsusp, with small improvements -+ to match TuxOnIce's requirements. -+ -+ The pageset1 bitmap is thus easily stored in the image header for use at -+ resume time. -+ -+ As mentioned above, using bitmaps also means that the amount of memory and -+ storage required for recording the above information is constant. This -+ greatly simplifies the work of preparing the image. In earlier versions of -+ TuxOnIce, extents were used to record which pages would be stored. In that -+ case, however, eating memory could result in greater fragmentation of the -+ lists of pages, which in turn required more memory to store the extents and -+ more storage in the image header. These could in turn require further -+ freeing of memory, and another iteration. All of this complexity is removed -+ by having bitmaps. -+ -+ Bitmaps also make a lot of sense because TuxOnIce only ever iterates -+ through the lists. There is therefore no cost to not being able to find the -+ nth page in order 0 time. We only need to worry about the cost of finding -+ the n+1th page, given the location of the nth page. Bitwise optimisations -+ help here. -+ -+ b) Extents for block data. -+ -+ TuxOnIce supports writing the image to multiple block devices. In the case -+ of swap, multiple partitions and/or files may be in use, and we happily use -+ them all (with the exception of compcache pages, which we allocate but do -+ not use). This use of multiple block devices is accomplished as follows: -+ -+ Whatever the actual source of the allocated storage, the destination of the -+ image can be viewed in terms of one or more block devices, and on each -+ device, a list of sectors. To simplify matters, we only use contiguous, -+ PAGE_SIZE aligned sectors, like the swap code does. -+ -+ Since sector numbers on each bdev may well not start at 0, it makes much -+ more sense to use extents here. Contiguous ranges of pages can thus be -+ represented in the extents by contiguous values. -+ -+ Variations in block size are taken account of in transforming this data -+ into the parameters for bio submission. -+ -+ We can thus implement a layer of abstraction wherein the core of TuxOnIce -+ doesn't have to worry about which device we're currently writing to or -+ where in the device we are. It simply requests that the next page in the -+ pageset or header be written, leaving the details to this lower layer. -+ The lower layer remembers where in the sequence of devices and blocks each -+ pageset starts. The header always starts at the beginning of the allocated -+ storage. -+ -+ So extents are: -+ -+ struct extent { -+ unsigned long minimum, maximum; -+ struct extent *next; -+ } -+ -+ These are combined into chains of extents for a device: -+ -+ struct extent_chain { -+ int size; /* size of the extent ie sum (max-min+1) */ -+ int allocs, frees; -+ char *name; -+ struct extent *first, *last_touched; -+ }; -+ -+ For each bdev, we need to store a little more info: -+ -+ struct suspend_bdev_info { -+ struct block_device *bdev; -+ dev_t dev_t; -+ int bmap_shift; -+ int blocks_per_page; -+ }; -+ -+ The dev_t is used to identify the device in the stored image. As a result, -+ we expect devices at resume time to have the same major and minor numbers -+ as they had while suspending. This is primarily a concern where the user -+ utilises LVM for storage, as they will need to dmsetup their partitions in -+ such a way as to maintain this consistency at resume time. -+ -+ bmap_shift and blocks_per_page apply the effects of variations in blocks -+ per page settings for the filesystem and underlying bdev. For most -+ filesystems, these are the same, but for xfs, they can have independant -+ values. -+ -+ Combining these two structures together, we have everything we need to -+ record what devices and what blocks on each device are being used to -+ store the image, and to submit i/o using bio_submit. -+ -+ The last elements in the picture are a means of recording how the storage -+ is being used. -+ -+ We do this first and foremost by implementing a layer of abstraction on -+ top of the devices and extent chains which allows us to view however many -+ devices there might be as one long storage tape, with a single 'head' that -+ tracks a 'current position' on the tape: -+ -+ struct extent_iterate_state { -+ struct extent_chain *chains; -+ int num_chains; -+ int current_chain; -+ struct extent *current_extent; -+ unsigned long current_offset; -+ }; -+ -+ That is, *chains points to an array of size num_chains of extent chains. -+ For the filewriter, this is always a single chain. For the swapwriter, the -+ array is of size MAX_SWAPFILES. -+ -+ current_chain, current_extent and current_offset thus point to the current -+ index in the chains array (and into a matching array of struct -+ suspend_bdev_info), the current extent in that chain (to optimise access), -+ and the current value in the offset. -+ -+ The image is divided into three parts: -+ - The header -+ - Pageset 1 -+ - Pageset 2 -+ -+ The header always starts at the first device and first block. We know its -+ size before we begin to save the image because we carefully account for -+ everything that will be stored in it. -+ -+ The second pageset (LRU) is stored first. It begins on the next page after -+ the end of the header. -+ -+ The first pageset is stored second. It's start location is only known once -+ pageset2 has been saved, since pageset2 may be compressed as it is written. -+ This location is thus recorded at the end of saving pageset2. It is page -+ aligned also. -+ -+ Since this information is needed at resume time, and the location of extents -+ in memory will differ at resume time, this needs to be stored in a portable -+ way: -+ -+ struct extent_iterate_saved_state { -+ int chain_num; -+ int extent_num; -+ unsigned long offset; -+ }; -+ -+ We can thus implement a layer of abstraction wherein the core of TuxOnIce -+ doesn't have to worry about which device we're currently writing to or -+ where in the device we are. It simply requests that the next page in the -+ pageset or header be written, leaving the details to this layer, and -+ invokes the routines to remember and restore the position, without having -+ to worry about the details of how the data is arranged on disk or such like. -+ -+ c) Modules -+ -+ One aim in designing TuxOnIce was to make it flexible. We wanted to allow -+ for the implementation of different methods of transforming a page to be -+ written to disk and different methods of getting the pages stored. -+ -+ In early versions (the betas and perhaps Suspend1), compression support was -+ inlined in the image writing code, and the data structures and code for -+ managing swap were intertwined with the rest of the code. A number of people -+ had expressed interest in implementing image encryption, and alternative -+ methods of storing the image. -+ -+ In order to achieve this, TuxOnIce was given a modular design. -+ -+ A module is a single file which encapsulates the functionality needed -+ to transform a pageset of data (encryption or compression, for example), -+ or to write the pageset to a device. The former type of module is called -+ a 'page-transformer', the later a 'writer'. -+ -+ Modules are linked together in pipeline fashion. There may be zero or more -+ page transformers in a pipeline, and there is always exactly one writer. -+ The pipeline follows this pattern: -+ -+ --------------------------------- -+ | TuxOnIce Core | -+ --------------------------------- -+ | -+ | -+ --------------------------------- -+ | Page transformer 1 | -+ --------------------------------- -+ | -+ | -+ --------------------------------- -+ | Page transformer 2 | -+ --------------------------------- -+ | -+ | -+ --------------------------------- -+ | Writer | -+ --------------------------------- -+ -+ During the writing of an image, the core code feeds pages one at a time -+ to the first module. This module performs whatever transformations it -+ implements on the incoming data, completely consuming the incoming data and -+ feeding output in a similar manner to the next module. -+ -+ All routines are SMP safe, and the final result of the transformations is -+ written with an index (provided by the core) and size of the output by the -+ writer. As a result, we can have multithreaded I/O without needing to -+ worry about the sequence in which pages are written (or read). -+ -+ During reading, the pipeline works in the reverse direction. The core code -+ calls the first module with the address of a buffer which should be filled. -+ (Note that the buffer size is always PAGE_SIZE at this time). This module -+ will in turn request data from the next module and so on down until the -+ writer is made to read from the stored image. -+ -+ Part of definition of the structure of a module thus looks like this: -+ -+ int (*rw_init) (int rw, int stream_number); -+ int (*rw_cleanup) (int rw); -+ int (*write_chunk) (struct page *buffer_page); -+ int (*read_chunk) (struct page *buffer_page, int sync); -+ -+ It should be noted that the _cleanup routine may be called before the -+ full stream of data has been read or written. While writing the image, -+ the user may (depending upon settings) choose to abort suspending, and -+ if we are in the midst of writing the last portion of the image, a portion -+ of the second pageset may be reread. This may also happen if an error -+ occurs and we seek to abort the process of writing the image. -+ -+ The modular design is also useful in a number of other ways. It provides -+ a means where by we can add support for: -+ -+ - providing overall initialisation and cleanup routines; -+ - serialising configuration information in the image header; -+ - providing debugging information to the user; -+ - determining memory and image storage requirements; -+ - dis/enabling components at run-time; -+ - configuring the module (see below); -+ -+ ...and routines for writers specific to their work: -+ - Parsing a resume= location; -+ - Determining whether an image exists; -+ - Marking a resume as having been attempted; -+ - Invalidating an image; -+ -+ Since some parts of the core - the user interface and storage manager -+ support - have use for some of these functions, they are registered as -+ 'miscellaneous' modules as well. -+ -+ d) Sysfs data structures. -+ -+ This brings us naturally to support for configuring TuxOnIce. We desired to -+ provide a way to make TuxOnIce as flexible and configurable as possible. -+ The user shouldn't have to reboot just because they want to now hibernate to -+ a file instead of a partition, for example. -+ -+ To accomplish this, TuxOnIce implements a very generic means whereby the -+ core and modules can register new sysfs entries. All TuxOnIce entries use -+ a single _store and _show routine, both of which are found in -+ tuxonice_sysfs.c in the kernel/power directory. These routines handle the -+ most common operations - getting and setting the values of bits, integers, -+ longs, unsigned longs and strings in one place, and allow overrides for -+ customised get and set options as well as side-effect routines for all -+ reads and writes. -+ -+ When combined with some simple macros, a new sysfs entry can then be defined -+ in just a couple of lines: -+ -+ SYSFS_INT("progress_granularity", SYSFS_RW, &progress_granularity, 1, -+ 2048, 0, NULL), -+ -+ This defines a sysfs entry named "progress_granularity" which is rw and -+ allows the user to access an integer stored at &progress_granularity, giving -+ it a value between 1 and 2048 inclusive. -+ -+ Sysfs entries are registered under /sys/power/tuxonice, and entries for -+ modules are located in a subdirectory named after the module. -+ -diff --git a/Documentation/power/tuxonice.txt b/Documentation/power/tuxonice.txt -new file mode 100644 -index 0000000..3bf0575 ---- /dev/null -+++ b/Documentation/power/tuxonice.txt -@@ -0,0 +1,948 @@ -+ --- TuxOnIce, version 3.0 --- -+ -+1. What is it? -+2. Why would you want it? -+3. What do you need to use it? -+4. Why not just use the version already in the kernel? -+5. How do you use it? -+6. What do all those entries in /sys/power/tuxonice do? -+7. How do you get support? -+8. I think I've found a bug. What should I do? -+9. When will XXX be supported? -+10 How does it work? -+11. Who wrote TuxOnIce? -+ -+1. What is it? -+ -+ Imagine you're sitting at your computer, working away. For some reason, you -+ need to turn off your computer for a while - perhaps it's time to go home -+ for the day. When you come back to your computer next, you're going to want -+ to carry on where you left off. Now imagine that you could push a button and -+ have your computer store the contents of its memory to disk and power down. -+ Then, when you next start up your computer, it loads that image back into -+ memory and you can carry on from where you were, just as if you'd never -+ turned the computer off. You have far less time to start up, no reopening of -+ applications or finding what directory you put that file in yesterday. -+ That's what TuxOnIce does. -+ -+ TuxOnIce has a long heritage. It began life as work by Gabor Kuti, who, -+ with some help from Pavel Machek, got an early version going in 1999. The -+ project was then taken over by Florent Chabaud while still in alpha version -+ numbers. Nigel Cunningham came on the scene when Florent was unable to -+ continue, moving the project into betas, then 1.0, 2.0 and so on up to -+ the present series. During the 2.0 series, the name was contracted to -+ Suspend2 and the website suspend2.net created. Beginning around July 2007, -+ a transition to calling the software TuxOnIce was made, to seek to help -+ make it clear that TuxOnIce is more concerned with hibernation than suspend -+ to ram. -+ -+ Pavel Machek's swsusp code, which was merged around 2.5.17 retains the -+ original name, and was essentially a fork of the beta code until Rafael -+ Wysocki came on the scene in 2005 and began to improve it further. -+ -+2. Why would you want it? -+ -+ Why wouldn't you want it? -+ -+ Being able to save the state of your system and quickly restore it improves -+ your productivity - you get a useful system in far less time than through -+ the normal boot process. You also get to be completely 'green', using zero -+ power, or as close to that as possible (the computer may still provide -+ minimal power to some devices, so they can initiate a power on, but that -+ will be the same amount of power as would be used if you told the computer -+ to shutdown. -+ -+3. What do you need to use it? -+ -+ a. Kernel Support. -+ -+ i) The TuxOnIce patch. -+ -+ TuxOnIce is part of the Linux Kernel. This version is not part of Linus's -+ 2.6 tree at the moment, so you will need to download the kernel source and -+ apply the latest patch. Having done that, enable the appropriate options in -+ make [menu|x]config (under Power Management Options - look for "Enhanced -+ Hibernation"), compile and install your kernel. TuxOnIce works with SMP, -+ Highmem, preemption, fuse filesystems, x86-32, PPC and x86_64. -+ -+ TuxOnIce patches are available from http://tuxonice.net. -+ -+ ii) Compression support. -+ -+ Compression support is implemented via the cryptoapi. You will therefore want -+ to select any Cryptoapi transforms that you want to use on your image from -+ the Cryptoapi menu while configuring your kernel. We recommend the use of the -+ LZO compression method - it is very fast and still achieves good compression. -+ -+ You can also tell TuxOnIce to write its image to an encrypted and/or -+ compressed filesystem/swap partition. In that case, you don't need to do -+ anything special for TuxOnIce when it comes to kernel configuration. -+ -+ iii) Configuring other options. -+ -+ While you're configuring your kernel, try to configure as much as possible -+ to build as modules. We recommend this because there are a number of drivers -+ that are still in the process of implementing proper power management -+ support. In those cases, the best way to work around their current lack is -+ to build them as modules and remove the modules while hibernating. You might -+ also bug the driver authors to get their support up to speed, or even help! -+ -+ b. Storage. -+ -+ i) Swap. -+ -+ TuxOnIce can store the hibernation image in your swap partition, a swap file or -+ a combination thereof. Whichever combination you choose, you will probably -+ want to create enough swap space to store the largest image you could have, -+ plus the space you'd normally use for swap. A good rule of thumb would be -+ to calculate the amount of swap you'd want without using TuxOnIce, and then -+ add the amount of memory you have. This swapspace can be arranged in any way -+ you'd like. It can be in one partition or file, or spread over a number. The -+ only requirement is that they be active when you start a hibernation cycle. -+ -+ There is one exception to this requirement. TuxOnIce has the ability to turn -+ on one swap file or partition at the start of hibernating and turn it back off -+ at the end. If you want to ensure you have enough memory to store a image -+ when your memory is fully used, you might want to make one swap partition or -+ file for 'normal' use, and another for TuxOnIce to activate & deactivate -+ automatically. (Further details below). -+ -+ ii) Normal files. -+ -+ TuxOnIce includes a 'file allocator'. The file allocator can store your -+ image in a simple file. Since Linux has the concept of everything being a -+ file, this is more powerful than it initially sounds. If, for example, you -+ were to set up a network block device file, you could hibernate to a network -+ server. This has been tested and works to a point, but nbd itself isn't -+ stateless enough for our purposes. -+ -+ Take extra care when setting up the file allocator. If you just type -+ commands without thinking and then try to hibernate, you could cause -+ irreversible corruption on your filesystems! Make sure you have backups. -+ -+ Most people will only want to hibernate to a local file. To achieve that, do -+ something along the lines of: -+ -+ echo "TuxOnIce" > /hibernation-file -+ dd if=/dev/zero bs=1M count=512 >> /hibernation-file -+ -+ This will create a 512MB file called /hibernation-file. To get TuxOnIce to use -+ it: -+ -+ echo /hibernation-file > /sys/power/tuxonice/file/target -+ -+ Then -+ -+ cat /sys/power/tuxonice/resume -+ -+ Put the results of this into your bootloader's configuration (see also step -+ C, below): -+ -+ ---EXAMPLE-ONLY-DON'T-COPY-AND-PASTE--- -+ # cat /sys/power/tuxonice/resume -+ file:/dev/hda2:0x1e001 -+ -+ In this example, we would edit the append= line of our lilo.conf|menu.lst -+ so that it included: -+ -+ resume=file:/dev/hda2:0x1e001 -+ ---EXAMPLE-ONLY-DON'T-COPY-AND-PASTE--- -+ -+ For those who are thinking 'Could I make the file sparse?', the answer is -+ 'No!'. At the moment, there is no way for TuxOnIce to fill in the holes in -+ a sparse file while hibernating. In the longer term (post merge!), I'd like -+ to change things so that the file could be dynamically resized and have -+ holes filled as needed. Right now, however, that's not possible and not a -+ priority. -+ -+ c. Bootloader configuration. -+ -+ Using TuxOnIce also requires that you add an extra parameter to -+ your lilo.conf or equivalent. Here's an example for a swap partition: -+ -+ append="resume=swap:/dev/hda1" -+ -+ This would tell TuxOnIce that /dev/hda1 is a swap partition you -+ have. TuxOnIce will use the swap signature of this partition as a -+ pointer to your data when you hibernate. This means that (in this example) -+ /dev/hda1 doesn't need to be _the_ swap partition where all of your data -+ is actually stored. It just needs to be a swap partition that has a -+ valid signature. -+ -+ You don't need to have a swap partition for this purpose. TuxOnIce -+ can also use a swap file, but usage is a little more complex. Having made -+ your swap file, turn it on and do -+ -+ cat /sys/power/tuxonice/swap/headerlocations -+ -+ (this assumes you've already compiled your kernel with TuxOnIce -+ support and booted it). The results of the cat command will tell you -+ what you need to put in lilo.conf: -+ -+ For swap partitions like /dev/hda1, simply use resume=/dev/hda1. -+ For swapfile `swapfile`, use resume=swap:/dev/hda2:0x242d. -+ -+ If the swapfile changes for any reason (it is moved to a different -+ location, it is deleted and recreated, or the filesystem is -+ defragmented) then you will have to check -+ /sys/power/tuxonice/swap/headerlocations for a new resume_block value. -+ -+ Once you've compiled and installed the kernel and adjusted your bootloader -+ configuration, you should only need to reboot for the most basic part -+ of TuxOnIce to be ready. -+ -+ If you only compile in the swap allocator, or only compile in the file -+ allocator, you don't need to add the "swap:" part of the resume= -+ parameters above. resume=/dev/hda2:0x242d will work just as well. If you -+ have compiled both and your storage is on swap, you can also use this -+ format (the swap allocator is the default allocator). -+ -+ When compiling your kernel, one of the options in the 'Power Management -+ Support' menu, just above the 'Enhanced Hibernation (TuxOnIce)' entry is -+ called 'Default resume partition'. This can be used to set a default value -+ for the resume= parameter. -+ -+ d. The hibernate script. -+ -+ Since the driver model in 2.6 kernels is still being developed, you may need -+ to do more than just configure TuxOnIce. Users of TuxOnIce usually start the -+ process via a script which prepares for the hibernation cycle, tells the -+ kernel to do its stuff and then restore things afterwards. This script might -+ involve: -+ -+ - Switching to a text console and back if X doesn't like the video card -+ status on resume. -+ - Un/reloading drivers that don't play well with hibernation. -+ -+ Note that you might not be able to unload some drivers if there are -+ processes using them. You might have to kill off processes that hold -+ devices open. Hint: if your X server accesses an USB mouse, doing a -+ 'chvt' to a text console releases the device and you can unload the -+ module. -+ -+ Check out the latest script (available on tuxonice.net). -+ -+ e. The userspace user interface. -+ -+ TuxOnIce has very limited support for displaying status if you only apply -+ the kernel patch - it can printk messages, but that is all. In addition, -+ some of the functions mentioned in this document (such as cancelling a cycle -+ or performing interactive debugging) are unavailable. To utilise these -+ functions, or simply get a nice display, you need the 'userui' component. -+ Userui comes in three flavours, usplash, fbsplash and text. Text should -+ work on any console. Usplash and fbsplash require the appropriate -+ (distro specific?) support. -+ -+ To utilise a userui, TuxOnIce just needs to be told where to find the -+ userspace binary: -+ -+ echo "/usr/local/sbin/tuxoniceui_fbsplash" > /sys/power/tuxonice/user_interface/program -+ -+ The hibernate script can do this for you, and a default value for this -+ setting can be configured when compiling the kernel. This path is also -+ stored in the image header, so if you have an initrd or initramfs, you can -+ use the userui during the first part of resuming (prior to the atomic -+ restore) by putting the binary in the same path in your initrd/ramfs. -+ Alternatively, you can put it in a different location and do an echo -+ similar to the above prior to the echo > do_resume. The value saved in the -+ image header will then be ignored. -+ -+4. Why not just use the version already in the kernel? -+ -+ The version in the vanilla kernel has a number of drawbacks. The most -+ serious of these are: -+ - it has a maximum image size of 1/2 total memory; -+ - it doesn't allocate storage until after it has snapshotted memory. -+ This means that you can't be sure hibernating will work until you -+ see it start to write the image; -+ - it does not allow you to press escape to cancel a cycle; -+ - it does not allow you to press escape to cancel resuming; -+ - it does not allow you to automatically swapon a file when -+ starting a cycle; -+ - it does not allow you to use multiple swap partitions or files; -+ - it does not allow you to use ordinary files; -+ - it just invalidates an image and continues to boot if you -+ accidentally boot the wrong kernel after hibernating; -+ - it doesn't support any sort of nice display while hibernating; -+ - it is moving toward requiring that you have an initrd/initramfs -+ to ever have a hope of resuming (uswsusp). While uswsusp will -+ address some of the concerns above, it won't address all of them, -+ and will be more complicated to get set up; -+ - it doesn't have support for suspend-to-both (write a hibernation -+ image, then suspend to ram; I think this is known as ReadySafe -+ under M$). -+ -+5. How do you use it? -+ -+ A hibernation cycle can be started directly by doing: -+ -+ echo > /sys/power/tuxonice/do_hibernate -+ -+ In practice, though, you'll probably want to use the hibernate script -+ to unload modules, configure the kernel the way you like it and so on. -+ In that case, you'd do (as root): -+ -+ hibernate -+ -+ See the hibernate script's man page for more details on the options it -+ takes. -+ -+ If you're using the text or splash user interface modules, one feature of -+ TuxOnIce that you might find useful is that you can press Escape at any time -+ during hibernating, and the process will be aborted. -+ -+ Due to the way hibernation works, this means you'll have your system back and -+ perfectly usable almost instantly. The only exception is when it's at the -+ very end of writing the image. Then it will need to reload a small (usually -+ 4-50MBs, depending upon the image characteristics) portion first. -+ -+ Likewise, when resuming, you can press escape and resuming will be aborted. -+ The computer will then powerdown again according to settings at that time for -+ the powerdown method or rebooting. -+ -+ You can change the settings for powering down while the image is being -+ written by pressing 'R' to toggle rebooting and 'O' to toggle between -+ suspending to ram and powering down completely). -+ -+ If you run into problems with resuming, adding the "noresume" option to -+ the kernel command line will let you skip the resume step and recover your -+ system. This option shouldn't normally be needed, because TuxOnIce modifies -+ the image header prior to the atomic restore, and will thus prompt you -+ if it detects that you've tried to resume an image before (this flag is -+ removed if you press Escape to cancel a resume, so you won't be prompted -+ then). -+ -+ Recent kernels (2.6.24 onwards) add support for resuming from a different -+ kernel to the one that was hibernated (thanks to Rafael for his work on -+ this - I've just embraced and enhanced the support for TuxOnIce). This -+ should further reduce the need for you to use the noresume option. -+ -+6. What do all those entries in /sys/power/tuxonice do? -+ -+ /sys/power/tuxonice is the directory which contains files you can use to -+ tune and configure TuxOnIce to your liking. The exact contents of -+ the directory will depend upon the version of TuxOnIce you're -+ running and the options you selected at compile time. In the following -+ descriptions, names in brackets refer to compile time options. -+ (Note that they're all dependant upon you having selected CONFIG_TUXONICE -+ in the first place!). -+ -+ Since the values of these settings can open potential security risks, the -+ writeable ones are accessible only to the root user. You may want to -+ configure sudo to allow you to invoke your hibernate script as an ordinary -+ user. -+ -+ - alloc/failure_test -+ -+ This debugging option provides a way of testing TuxOnIce's handling of -+ memory allocation failures. Each allocation type that TuxOnIce makes has -+ been given a unique number (see the source code). Echo the appropriate -+ number into this entry, and when TuxOnIce attempts to do that allocation, -+ it will pretend there was a failure and act accordingly. -+ -+ - alloc/find_max_mem_allocated -+ -+ This debugging option will cause TuxOnIce to find the maximum amount of -+ memory it used during a cycle, and report that information in debugging -+ information at the end of the cycle. -+ -+ - alt_resume_param -+ -+ Instead of powering down after writing a hibernation image, TuxOnIce -+ supports resuming from a different image. This entry lets you set the -+ location of the signature for that image (the resume= value you'd use -+ for it). Using an alternate image and keep_image mode, you can do things -+ like using an alternate image to power down an uninterruptible power -+ supply. -+ -+ - block_io/target_outstanding_io -+ -+ This value controls the amount of memory that the block I/O code says it -+ needs when the core code is calculating how much memory is needed for -+ hibernating and for resuming. It doesn't directly control the amount of -+ I/O that is submitted at any one time - that depends on the amount of -+ available memory (we may have more available than we asked for), the -+ throughput that is being achieved and the ability of the CPU to keep up -+ with disk throughput (particularly where we're compressing pages). -+ -+ - checksum/enabled -+ -+ Use cryptoapi hashing routines to verify that Pageset2 pages don't change -+ while we're saving the first part of the image, and to get any pages that -+ do change resaved in the atomic copy. This should normally not be needed, -+ but if you're seeing issues, please enable this. If your issues stop you -+ being able to resume, enable this option, hibernate and cancel the cycle -+ after the atomic copy is done. If the debugging info shows a non-zero -+ number of pages resaved, please report this to Nigel. -+ -+ - compression/algorithm -+ -+ Set the cryptoapi algorithm used for compressing the image. -+ -+ - compression/expected_compression -+ -+ These values allow you to set an expected compression ratio, which TuxOnice -+ will use in calculating whether it meets constraints on the image size. If -+ this expected compression ratio is not attained, the hibernation cycle will -+ abort, so it is wise to allow some spare. You can see what compression -+ ratio is achieved in the logs after hibernating. -+ -+ - debug_info: -+ -+ This file returns information about your configuration that may be helpful -+ in diagnosing problems with hibernating. -+ -+ - did_suspend_to_both: -+ -+ This file can be used when you hibernate with powerdown method 3 (ie suspend -+ to ram after writing the image). There can be two outcomes in this case. We -+ can resume from the suspend-to-ram before the battery runs out, or we can run -+ out of juice and and up resuming like normal. This entry lets you find out, -+ post resume, which way we went. If the value is 1, we resumed from suspend -+ to ram. This can be useful when actions need to be run post suspend-to-ram -+ that don't need to be run if we did the normal resume from power off. -+ -+ - do_hibernate: -+ -+ When anything is written to this file, the kernel side of TuxOnIce will -+ begin to attempt to write an image to disk and power down. You'll normally -+ want to run the hibernate script instead, to get modules unloaded first. -+ -+ - do_resume: -+ -+ When anything is written to this file TuxOnIce will attempt to read and -+ restore an image. If there is no image, it will return almost immediately. -+ If an image exists, the echo > will never return. Instead, the original -+ kernel context will be restored and the original echo > do_hibernate will -+ return. -+ -+ - */enabled -+ -+ These option can be used to temporarily disable various parts of TuxOnIce. -+ -+ - extra_pages_allowance -+ -+ When TuxOnIce does its atomic copy, it calls the driver model suspend -+ and resume methods. If you have DRI enabled with a driver such as fglrx, -+ this can result in the driver allocating a substantial amount of memory -+ for storing its state. Extra_pages_allowance tells TuxOnIce how much -+ extra memory it should ensure is available for those allocations. If -+ your attempts at hibernating end with a message in dmesg indicating that -+ insufficient extra pages were allowed, you need to increase this value. -+ -+ - file/target: -+ -+ Read this value to get the current setting. Write to it to point TuxOnice -+ at a new storage location for the file allocator. See section 3.b.ii above -+ for details of how to set up the file allocator. -+ -+ - freezer_test -+ -+ This entry can be used to get TuxOnIce to just test the freezer and prepare -+ an image without actually doing a hibernation cycle. It is useful for -+ diagnosing freezing and image preparation issues. -+ -+ - full_pageset2 -+ -+ TuxOnIce divides the pages that are stored in an image into two sets. The -+ difference between the two sets is that pages in pageset 1 are atomically -+ copied, and pages in pageset 2 are written to disk without being copied -+ first. A page CAN be written to disk without being copied first if and only -+ if its contents will not be modified or used at any time after userspace -+ processes are frozen. A page MUST be in pageset 1 if its contents are -+ modified or used at any time after userspace processes have been frozen. -+ -+ Normally (ie if this option is enabled), TuxOnIce will put all pages on the -+ per-zone LRUs in pageset2, then remove those pages used by any userspace -+ user interface helper and TuxOnIce storage manager that are running, -+ together with pages used by the GEM memory manager introduced around 2.6.28 -+ kernels. -+ -+ If this option is disabled, a much more conservative approach will be taken. -+ The only pages in pageset2 will be those belonging to userspace processes, -+ with the exclusion of those belonging to the TuxOnIce userspace helpers -+ mentioned above. This will result in a much smaller pageset2, and will -+ therefore result in smaller images than are possible with this option -+ enabled. -+ -+ - ignore_rootfs -+ -+ TuxOnIce records which device is mounted as the root filesystem when -+ writing the hibernation image. It will normally check at resume time that -+ this device isn't already mounted - that would be a cause of filesystem -+ corruption. In some particular cases (RAM based root filesystems), you -+ might want to disable this check. This option allows you to do that. -+ -+ - image_exists: -+ -+ Can be used in a script to determine whether a valid image exists at the -+ location currently pointed to by resume=. Returns up to three lines. -+ The first is whether an image exists (-1 for unsure, otherwise 0 or 1). -+ If an image eixsts, additional lines will return the machine and version. -+ Echoing anything to this entry removes any current image. -+ -+ - image_size_limit: -+ -+ The maximum size of hibernation image written to disk, measured in megabytes -+ (1024*1024). -+ -+ - last_result: -+ -+ The result of the last hibernation cycle, as defined in -+ include/linux/suspend-debug.h with the values SUSPEND_ABORTED to -+ SUSPEND_KEPT_IMAGE. This is a bitmask. -+ -+ - late_cpu_hotplug: -+ -+ This sysfs entry controls whether cpu hotplugging is done - as normal - just -+ before (unplug) and after (replug) the atomic copy/restore (so that all -+ CPUs/cores are available for multithreaded I/O). The alternative is to -+ unplug all secondary CPUs/cores at the start of hibernating/resuming, and -+ replug them at the end of resuming. No multithreaded I/O will be possible in -+ this configuration, but the odd machine has been reported to require it. -+ -+ - lid_file: -+ -+ This determines which ACPI button file we look in to determine whether the -+ lid is open or closed after resuming from suspend to disk or power off. -+ If the entry is set to "lid/LID", we'll open /proc/acpi/button/lid/LID/state -+ and check its contents at the appropriate moment. See post_wake_state below -+ for more details on how this entry is used. -+ -+ - log_everything (CONFIG_PM_DEBUG): -+ -+ Setting this option results in all messages printed being logged. Normally, -+ only a subset are logged, so as to not slow the process and not clutter the -+ logs. Useful for debugging. It can be toggled during a cycle by pressing -+ 'L'. -+ -+ - no_load_direct: -+ -+ This is a debugging option. If, when loading the atomically copied pages of -+ an image, TuxOnIce finds that the destination address for a page is free, -+ it will normally allocate the image, load the data directly into that -+ address and skip it in the atomic restore. If this option is disabled, the -+ page will be loaded somewhere else and atomically restored like other pages. -+ -+ - no_flusher_thread: -+ -+ When doing multithreaded I/O (see below), the first online CPU can be used -+ to _just_ submit compressed pages when writing the image, rather than -+ compressing and submitting data. This option is normally disabled, but has -+ been included because Nigel would like to see whether it will be more useful -+ as the number of cores/cpus in computers increases. -+ -+ - no_multithreaded_io: -+ -+ TuxOnIce will normally create one thread per cpu/core on your computer, -+ each of which will then perform I/O. This will generally result in -+ throughput that's the maximum the storage medium can handle. There -+ shouldn't be any reason to disable multithreaded I/O now, but this option -+ has been retained for debugging purposes. -+ -+ - no_pageset2 -+ -+ See the entry for full_pageset2 above for an explanation of pagesets. -+ Enabling this option causes TuxOnIce to do an atomic copy of all pages, -+ thereby limiting the maximum image size to 1/2 of memory, as swsusp does. -+ -+ - no_pageset2_if_unneeded -+ -+ See the entry for full_pageset2 above for an explanation of pagesets. -+ Enabling this option causes TuxOnIce to act like no_pageset2 was enabled -+ if and only it isn't needed anyway. This option may still make TuxOnIce -+ less reliable because pageset2 pages are normally used to store the -+ atomic copy - drivers that want to do allocations of larger amounts of -+ memory in one shot will be more likely to find that those amounts aren't -+ available if this option is enabled. -+ -+ - pause_between_steps (CONFIG_PM_DEBUG): -+ -+ This option is used during debugging, to make TuxOnIce pause between -+ each step of the process. It is ignored when the nice display is on. -+ -+ - post_wake_state: -+ -+ TuxOnIce provides support for automatically waking after a user-selected -+ delay, and using a different powerdown method if the lid is still closed. -+ (Yes, we're assuming a laptop). This entry lets you choose what state -+ should be entered next. The values are those described under -+ powerdown_method, below. It can be used to suspend to RAM after hibernating, -+ then powerdown properly (say) 20 minutes. It can also be used to power down -+ properly, then wake at (say) 6.30am and suspend to RAM until you're ready -+ to use the machine. -+ -+ - powerdown_method: -+ -+ Used to select a method by which TuxOnIce should powerdown after writing the -+ image. Currently: -+ -+ 0: Don't use ACPI to power off. -+ 3: Attempt to enter Suspend-to-ram. -+ 4: Attempt to enter ACPI S4 mode. -+ 5: Attempt to power down via ACPI S5 mode. -+ -+ Note that these options are highly dependant upon your hardware & software: -+ -+ 3: When succesful, your machine suspends to ram instead of powering off. -+ The advantage of using this mode is that it doesn't matter whether your -+ battery has enough charge to make it through to your next resume. If it -+ lasts, you will simply resume from suspend to ram (and the image on disk -+ will be discarded). If the battery runs out, you will resume from disk -+ instead. The disadvantage is that it takes longer than a normal -+ suspend-to-ram to enter the state, since the suspend-to-disk image needs -+ to be written first. -+ 4/5: When successful, your machine will be off and comsume (almost) no power. -+ But it might still react to some external events like opening the lid or -+ trafic on a network or usb device. For the bios, resume is then the same -+ as warm boot, similar to a situation where you used the command `reboot' -+ to reboot your machine. If your machine has problems on warm boot or if -+ you want to protect your machine with the bios password, this is probably -+ not the right choice. Mode 4 may be necessary on some machines where ACPI -+ wake up methods need to be run to properly reinitialise hardware after a -+ hibernation cycle. -+ 0: Switch the machine completely off. The only possible wakeup is the power -+ button. For the bios, resume is then the same as a cold boot, in -+ particular you would have to provide your bios boot password if your -+ machine uses that feature for booting. -+ -+ - progressbar_granularity_limit: -+ -+ This option can be used to limit the granularity of the progress bar -+ displayed with a bootsplash screen. The value is the maximum number of -+ steps. That is, 10 will make the progress bar jump in 10% increments. -+ -+ - reboot: -+ -+ This option causes TuxOnIce to reboot rather than powering down -+ at the end of saving an image. It can be toggled during a cycle by pressing -+ 'R'. -+ -+ - resume: -+ -+ This sysfs entry can be used to read and set the location in which TuxOnIce -+ will look for the signature of an image - the value set using resume= at -+ boot time or CONFIG_PM_STD_PARTITION ("Default resume partition"). By -+ writing to this file as well as modifying your bootloader's configuration -+ file (eg menu.lst), you can set or reset the location of your image or the -+ method of storing the image without rebooting. -+ -+ - replace_swsusp (CONFIG_TOI_REPLACE_SWSUSP): -+ -+ This option makes -+ -+ echo disk > /sys/power/state -+ -+ activate TuxOnIce instead of swsusp. Regardless of whether this option is -+ enabled, any invocation of swsusp's resume time trigger will cause TuxOnIce -+ to check for an image too. This is due to the fact that at resume time, we -+ can't know whether this option was enabled until we see if an image is there -+ for us to resume from. (And when an image exists, we don't care whether we -+ did replace swsusp anyway - we just want to resume). -+ -+ - resume_commandline: -+ -+ This entry can be read after resuming to see the commandline that was used -+ when resuming began. You might use this to set up two bootloader entries -+ that are the same apart from the fact that one includes a extra append= -+ argument "at_work=1". You could then grep resume_commandline in your -+ post-resume scripts and configure networking (for example) differently -+ depending upon whether you're at home or work. resume_commandline can be -+ set to arbitrary text if you wish to remove sensitive contents. -+ -+ - swap/swapfilename: -+ -+ This entry is used to specify the swapfile or partition that -+ TuxOnIce will attempt to swapon/swapoff automatically. Thus, if -+ I normally use /dev/hda1 for swap, and want to use /dev/hda2 for specifically -+ for my hibernation image, I would -+ -+ echo /dev/hda2 > /sys/power/tuxonice/swap/swapfile -+ -+ /dev/hda2 would then be automatically swapon'd and swapoff'd. Note that the -+ swapon and swapoff occur while other processes are frozen (including kswapd) -+ so this swap file will not be used up when attempting to free memory. The -+ parition/file is also given the highest priority, so other swapfiles/partitions -+ will only be used to save the image when this one is filled. -+ -+ The value of this file is used by headerlocations along with any currently -+ activated swapfiles/partitions. -+ -+ - swap/headerlocations: -+ -+ This option tells you the resume= options to use for swap devices you -+ currently have activated. It is particularly useful when you only want to -+ use a swap file to store your image. See above for further details. -+ -+ - test_bio -+ -+ This is a debugging option. When enabled, TuxOnIce will not hibernate. -+ Instead, when asked to write an image, it will skip the atomic copy, -+ just doing the writing of the image and then returning control to the -+ user at the point where it would have powered off. This is useful for -+ testing throughput in different configurations. -+ -+ - test_filter_speed -+ -+ This is a debugging option. When enabled, TuxOnIce will not hibernate. -+ Instead, when asked to write an image, it will not write anything or do -+ an atomic copy, but will only run any enabled compression algorithm on the -+ data that would have been written (the source pages of the atomic copy in -+ the case of pageset 1). This is useful for comparing the performance of -+ compression algorithms and for determining the extent to which an upgrade -+ to your storage method would improve hibernation speed. -+ -+ - user_interface/debug_sections (CONFIG_PM_DEBUG): -+ -+ This value, together with the console log level, controls what debugging -+ information is displayed. The console log level determines the level of -+ detail, and this value determines what detail is displayed. This value is -+ a bit vector, and the meaning of the bits can be found in the kernel tree -+ in include/linux/tuxonice.h. It can be overridden using the kernel's -+ command line option suspend_dbg. -+ -+ - user_interface/default_console_level (CONFIG_PM_DEBUG): -+ -+ This determines the value of the console log level at the start of a -+ hibernation cycle. If debugging is compiled in, the console log level can be -+ changed during a cycle by pressing the digit keys. Meanings are: -+ -+ 0: Nice display. -+ 1: Nice display plus numerical progress. -+ 2: Errors only. -+ 3: Low level debugging info. -+ 4: Medium level debugging info. -+ 5: High level debugging info. -+ 6: Verbose debugging info. -+ -+ - user_interface/enable_escape: -+ -+ Setting this to "1" will enable you abort a hibernation cycle or resuming by -+ pressing escape, "0" (default) disables this feature. Note that enabling -+ this option means that you cannot initiate a hibernation cycle and then walk -+ away from your computer, expecting it to be secure. With feature disabled, -+ you can validly have this expectation once TuxOnice begins to write the -+ image to disk. (Prior to this point, it is possible that TuxOnice might -+ about because of failure to freeze all processes or because constraints -+ on its ability to save the image are not met). -+ -+ - user_interface/program -+ -+ This entry is used to tell TuxOnice what userspace program to use for -+ providing a user interface while hibernating. The program uses a netlink -+ socket to pass messages back and forward to the kernel, allowing all of the -+ functions formerly implemented in the kernel user interface components. -+ -+ - version: -+ -+ The version of TuxOnIce you have compiled into the currently running kernel. -+ -+ - wake_alarm_dir: -+ -+ As mentioned above (post_wake_state), TuxOnIce supports automatically waking -+ after some delay. This entry allows you to select which wake alarm to use. -+ It should contain the value "rtc0" if you're wanting to use -+ /sys/class/rtc/rtc0. -+ -+ - wake_delay: -+ -+ This value determines the delay from the end of writing the image until the -+ wake alarm is triggered. You can set an absolute time by writing the desired -+ time into /sys/class/rtc//wakealarm and leaving these values -+ empty. -+ -+ Note that for the wakeup to actually occur, you may need to modify entries -+ in /proc/acpi/wakeup. This is done by echoing the name of the button in the -+ first column (eg PBTN) into the file. -+ -+7. How do you get support? -+ -+ Glad you asked. TuxOnIce is being actively maintained and supported -+ by Nigel (the guy doing most of the kernel coding at the moment), Bernard -+ (who maintains the hibernate script and userspace user interface components) -+ and its users. -+ -+ Resources availble include HowTos, FAQs and a Wiki, all available via -+ tuxonice.net. You can find the mailing lists there. -+ -+8. I think I've found a bug. What should I do? -+ -+ By far and a way, the most common problems people have with TuxOnIce -+ related to drivers not having adequate power management support. In this -+ case, it is not a bug with TuxOnIce, but we can still help you. As we -+ mentioned above, such issues can usually be worked around by building the -+ functionality as modules and unloading them while hibernating. Please visit -+ the Wiki for up-to-date lists of known issues and work arounds. -+ -+ If this information doesn't help, try running: -+ -+ hibernate --bug-report -+ -+ ..and sending the output to the users mailing list. -+ -+ Good information on how to provide us with useful information from an -+ oops is found in the file REPORTING-BUGS, in the top level directory -+ of the kernel tree. If you get an oops, please especially note the -+ information about running what is printed on the screen through ksymoops. -+ The raw information is useless. -+ -+9. When will XXX be supported? -+ -+ If there's a feature missing from TuxOnIce that you'd like, feel free to -+ ask. We try to be obliging, within reason. -+ -+ Patches are welcome. Please send to the list. -+ -+10. How does it work? -+ -+ TuxOnIce does its work in a number of steps. -+ -+ a. Freezing system activity. -+ -+ The first main stage in hibernating is to stop all other activity. This is -+ achieved in stages. Processes are considered in fours groups, which we will -+ describe in reverse order for clarity's sake: Threads with the PF_NOFREEZE -+ flag, kernel threads without this flag, userspace processes with the -+ PF_SYNCTHREAD flag and all other processes. The first set (PF_NOFREEZE) are -+ untouched by the refrigerator code. They are allowed to run during hibernating -+ and resuming, and are used to support user interaction, storage access or the -+ like. Other kernel threads (those unneeded while hibernating) are frozen last. -+ This leaves us with userspace processes that need to be frozen. When a -+ process enters one of the *_sync system calls, we set a PF_SYNCTHREAD flag on -+ that process for the duration of that call. Processes that have this flag are -+ frozen after processes without it, so that we can seek to ensure that dirty -+ data is synced to disk as quickly as possible in a situation where other -+ processes may be submitting writes at the same time. Freezing the processes -+ that are submitting data stops new I/O from being submitted. Syncthreads can -+ then cleanly finish their work. So the order is: -+ -+ - Userspace processes without PF_SYNCTHREAD or PF_NOFREEZE; -+ - Userspace processes with PF_SYNCTHREAD (they won't have NOFREEZE); -+ - Kernel processes without PF_NOFREEZE. -+ -+ b. Eating memory. -+ -+ For a successful hibernation cycle, you need to have enough disk space to store the -+ image and enough memory for the various limitations of TuxOnIce's -+ algorithm. You can also specify a maximum image size. In order to attain -+ to those constraints, TuxOnIce may 'eat' memory. If, after freezing -+ processes, the constraints aren't met, TuxOnIce will thaw all the -+ other processes and begin to eat memory until its calculations indicate -+ the constraints are met. It will then freeze processes again and recheck -+ its calculations. -+ -+ c. Allocation of storage. -+ -+ Next, TuxOnIce allocates the storage that will be used to save -+ the image. -+ -+ The core of TuxOnIce knows nothing about how or where pages are stored. We -+ therefore request the active allocator (remember you might have compiled in -+ more than one!) to allocate enough storage for our expect image size. If -+ this request cannot be fulfilled, we eat more memory and try again. If it -+ is fulfiled, we seek to allocate additional storage, just in case our -+ expected compression ratio (if any) isn't achieved. This time, however, we -+ just continue if we can't allocate enough storage. -+ -+ If these calls to our allocator change the characteristics of the image -+ such that we haven't allocated enough memory, we also loop. (The allocator -+ may well need to allocate space for its storage information). -+ -+ d. Write the first part of the image. -+ -+ TuxOnIce stores the image in two sets of pages called 'pagesets'. -+ Pageset 2 contains pages on the active and inactive lists; essentially -+ the page cache. Pageset 1 contains all other pages, including the kernel. -+ We use two pagesets for one important reason: We need to make an atomic copy -+ of the kernel to ensure consistency of the image. Without a second pageset, -+ that would limit us to an image that was at most half the amount of memory -+ available. Using two pagesets allows us to store a full image. Since pageset -+ 2 pages won't be needed in saving pageset 1, we first save pageset 2 pages. -+ We can then make our atomic copy of the remaining pages using both pageset 2 -+ pages and any other pages that are free. While saving both pagesets, we are -+ careful not to corrupt the image. Among other things, we use lowlevel block -+ I/O routines that don't change the pagecache contents. -+ -+ The next step, then, is writing pageset 2. -+ -+ e. Suspending drivers and storing processor context. -+ -+ Having written pageset2, TuxOnIce calls the power management functions to -+ notify drivers of the hibernation, and saves the processor state in preparation -+ for the atomic copy of memory we are about to make. -+ -+ f. Atomic copy. -+ -+ At this stage, everything else but the TuxOnIce code is halted. Processes -+ are frozen or idling, drivers are quiesced and have stored (ideally and where -+ necessary) their configuration in memory we are about to atomically copy. -+ In our lowlevel architecture specific code, we have saved the CPU state. -+ We can therefore now do our atomic copy before resuming drivers etc. -+ -+ g. Save the atomic copy (pageset 1). -+ -+ TuxOnice can then write the atomic copy of the remaining pages. Since we -+ have copied the pages into other locations, we can continue to use the -+ normal block I/O routines without fear of corruption our image. -+ -+ f. Save the image header. -+ -+ Nearly there! We save our settings and other parameters needed for -+ reloading pageset 1 in an 'image header'. We also tell our allocator to -+ serialise its data at this stage, so that it can reread the image at resume -+ time. -+ -+ g. Set the image header. -+ -+ Finally, we edit the header at our resume= location. The signature is -+ changed by the allocator to reflect the fact that an image exists, and to -+ point to the start of that data if necessary (swap allocator). -+ -+ h. Power down. -+ -+ Or reboot if we're debugging and the appropriate option is selected. -+ -+ Whew! -+ -+ Reloading the image. -+ -------------------- -+ -+ Reloading the image is essentially the reverse of all the above. We load -+ our copy of pageset 1, being careful to choose locations that aren't going -+ to be overwritten as we copy it back (We start very early in the boot -+ process, so there are no other processes to quiesce here). We then copy -+ pageset 1 back to its original location in memory and restore the process -+ context. We are now running with the original kernel. Next, we reload the -+ pageset 2 pages, free the memory and swap used by TuxOnIce, restore -+ the pageset header and restart processes. Sounds easy in comparison to -+ hibernating, doesn't it! -+ -+ There is of course more to TuxOnIce than this, but this explanation -+ should be a good start. If there's interest, I'll write further -+ documentation on range pages and the low level I/O. -+ -+11. Who wrote TuxOnIce? -+ -+ (Answer based on the writings of Florent Chabaud, credits in files and -+ Nigel's limited knowledge; apologies to anyone missed out!) -+ -+ The main developers of TuxOnIce have been... -+ -+ Gabor Kuti -+ Pavel Machek -+ Florent Chabaud -+ Bernard Blackham -+ Nigel Cunningham -+ -+ Significant portions of swsusp, the code in the vanilla kernel which -+ TuxOnIce enhances, have been worked on by Rafael Wysocki. Thanks should -+ also be expressed to him. -+ -+ The above mentioned developers have been aided in their efforts by a host -+ of hundreds, if not thousands of testers and people who have submitted bug -+ fixes & suggestions. Of special note are the efforts of Michael Frank, who -+ had his computers repetitively hibernate and resume for literally tens of -+ thousands of cycles and developed scripts to stress the system and test -+ TuxOnIce far beyond the point most of us (Nigel included!) would consider -+ testing. His efforts have contributed as much to TuxOnIce as any of the -+ names above. -diff --git a/MAINTAINERS b/MAINTAINERS -index 2533fc4..e14223f 100644 ---- a/MAINTAINERS -+++ b/MAINTAINERS -@@ -5380,6 +5380,13 @@ S: Maintained - F: drivers/tc/ - F: include/linux/tc.h - -+TUXONICE (ENHANCED HIBERNATION) -+P: Nigel Cunningham -+M: nigel@tuxonice.net -+L: tuxonice-devel@tuxonice.net -+W: http://tuxonice.net -+S: Maintained -+ - U14-34F SCSI DRIVER - M: Dario Ballabio - L: linux-scsi@vger.kernel.org -diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c -index 573b3bd..073736f 100644 ---- a/arch/powerpc/mm/pgtable_32.c -+++ b/arch/powerpc/mm/pgtable_32.c -@@ -422,6 +422,7 @@ void kernel_map_pages(struct page *page, int numpages, int enable) - - change_page_attr(page, numpages, enable ? PAGE_KERNEL : __pgprot(0)); - } -+EXPORT_SYMBOL_GPL(kernel_map_pages); - #endif /* CONFIG_DEBUG_PAGEALLOC */ - - static int fixmaps; -diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c -index 704bddc..acdf978 100644 ---- a/arch/x86/kernel/reboot.c -+++ b/arch/x86/kernel/reboot.c -@@ -710,6 +710,7 @@ void machine_restart(char *cmd) - { - machine_ops.restart(cmd); - } -+EXPORT_SYMBOL_GPL(machine_restart); - - void machine_halt(void) - { -diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c -index 1d4eb93..035b423 100644 ---- a/arch/x86/mm/pageattr.c -+++ b/arch/x86/mm/pageattr.c -@@ -1296,6 +1296,7 @@ void kernel_map_pages(struct page *page, int numpages, int enable) - */ - __flush_tlb_all(); - } -+EXPORT_SYMBOL_GPL(kernel_map_pages); - - #ifdef CONFIG_HIBERNATION - -@@ -1310,7 +1311,7 @@ bool kernel_page_present(struct page *page) - pte = lookup_address((unsigned long)page_address(page), &level); - return (pte_val(*pte) & _PAGE_PRESENT); - } -- -+EXPORT_SYMBOL_GPL(kernel_page_present); - #endif /* CONFIG_HIBERNATION */ - - #endif /* CONFIG_DEBUG_PAGEALLOC */ -diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c -index 0a979f3..7cdace5 100644 ---- a/arch/x86/power/cpu.c -+++ b/arch/x86/power/cpu.c -@@ -112,9 +112,7 @@ void save_processor_state(void) - { - __save_processor_state(&saved_context); - } --#ifdef CONFIG_X86_32 - EXPORT_SYMBOL(save_processor_state); --#endif - - static void do_fpu_end(void) - { -diff --git a/arch/x86/power/hibernate_32.c b/arch/x86/power/hibernate_32.c -index 81197c6..ff7e534 100644 ---- a/arch/x86/power/hibernate_32.c -+++ b/arch/x86/power/hibernate_32.c -@@ -8,6 +8,7 @@ - - #include - #include -+#include - - #include - #include -@@ -163,6 +164,7 @@ int swsusp_arch_resume(void) - restore_image(); - return 0; - } -+EXPORT_SYMBOL_GPL(swsusp_arch_resume); - - /* - * pfn_is_nosave - check if given pfn is in the 'nosave' section -diff --git a/arch/x86/power/hibernate_64.c b/arch/x86/power/hibernate_64.c -index 65fdc86..e5c31f6 100644 ---- a/arch/x86/power/hibernate_64.c -+++ b/arch/x86/power/hibernate_64.c -@@ -10,6 +10,7 @@ - - #include - #include -+#include - #include - #include - #include -@@ -118,6 +119,7 @@ int swsusp_arch_resume(void) - restore_image(); - return 0; - } -+EXPORT_SYMBOL_GPL(swsusp_arch_resume); - - /* - * pfn_is_nosave - check if given pfn is in the 'nosave' section -@@ -168,3 +170,4 @@ int arch_hibernation_header_restore(void *addr) - restore_cr3 = rdr->cr3; - return (rdr->magic == RESTORE_MAGIC) ? 0 : -EINVAL; - } -+EXPORT_SYMBOL_GPL(arch_hibernation_header_restore); -diff --git a/block/Makefile b/block/Makefile -index cb2d515..f35a848 100644 ---- a/block/Makefile -+++ b/block/Makefile -@@ -5,7 +5,7 @@ - obj-$(CONFIG_BLOCK) := elevator.o blk-core.o blk-tag.o blk-sysfs.o \ - blk-barrier.o blk-settings.o blk-ioc.o blk-map.o \ - blk-exec.o blk-merge.o blk-softirq.o blk-timeout.o \ -- blk-iopoll.o ioctl.o genhd.o scsi_ioctl.o -+ blk-iopoll.o ioctl.o genhd.o scsi_ioctl.o uuid.o - - obj-$(CONFIG_BLK_DEV_BSG) += bsg.o - obj-$(CONFIG_BLK_CGROUP) += blk-cgroup.o -diff --git a/block/blk-core.c b/block/blk-core.c -index d1a9a0a..d229a5b 100644 ---- a/block/blk-core.c -+++ b/block/blk-core.c -@@ -37,6 +37,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(block_remap); - EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_remap); - EXPORT_TRACEPOINT_SYMBOL_GPL(block_bio_complete); - -+int trap_non_toi_io; -+EXPORT_SYMBOL_GPL(trap_non_toi_io); -+ - static int __make_request(struct request_queue *q, struct bio *bio); - - /* -@@ -1555,6 +1558,9 @@ void submit_bio(int rw, struct bio *bio) - - bio->bi_rw |= rw; - -+ if (unlikely(trap_non_toi_io)) -+ BUG_ON(!bio_rw_flagged(bio, BIO_RW_TUXONICE)); -+ - /* - * If it's a regular read/write or a barrier with data attached, - * go through the normal accounting stuff before submission. -diff --git a/block/genhd.c b/block/genhd.c -index d13ba76..a69521c 100644 ---- a/block/genhd.c -+++ b/block/genhd.c -@@ -18,6 +18,8 @@ - #include - #include - #include -+#include -+#include - - #include "blk.h" - -@@ -1286,3 +1288,82 @@ int invalidate_partition(struct gendisk *disk, int partno) - } - - EXPORT_SYMBOL(invalidate_partition); -+ -+dev_t blk_lookup_uuid(const char *uuid) -+{ -+ dev_t devt = MKDEV(0, 0); -+ struct class_dev_iter iter; -+ struct device *dev; -+ -+ class_dev_iter_init(&iter, &block_class, NULL, &disk_type); -+ while (!devt && (dev = class_dev_iter_next(&iter))) { -+ struct gendisk *disk = dev_to_disk(dev); -+ struct disk_part_iter piter; -+ struct hd_struct *part; -+ -+ disk_part_iter_init(&piter, disk, DISK_PITER_INCL_PART0); -+ -+ while ((part = disk_part_iter_next(&piter))) { -+ if (part_matches_uuid(part, uuid)) { -+ devt = part_devt(part); -+ break; -+ } -+ } -+ disk_part_iter_exit(&piter); -+ } -+ class_dev_iter_exit(&iter); -+ return devt; -+} -+EXPORT_SYMBOL_GPL(blk_lookup_uuid); -+ -+/* Caller uses NULL, key to start. For each match found, we return a bdev on -+ * which we have done blkdev_get, and we do the blkdev_put on block devices -+ * that are passed to us. When no more matches are found, we return NULL. -+ */ -+struct block_device *next_bdev_of_type(struct block_device *last, -+ const char *key) -+{ -+ dev_t devt = MKDEV(0, 0); -+ struct class_dev_iter iter; -+ struct device *dev; -+ struct block_device *next = NULL, *bdev; -+ int got_last = 0; -+ -+ if (!key) -+ goto out; -+ -+ class_dev_iter_init(&iter, &block_class, NULL, &disk_type); -+ while (!devt && (dev = class_dev_iter_next(&iter))) { -+ struct gendisk *disk = dev_to_disk(dev); -+ struct disk_part_iter piter; -+ struct hd_struct *part; -+ -+ disk_part_iter_init(&piter, disk, DISK_PITER_INCL_PART0); -+ -+ while ((part = disk_part_iter_next(&piter))) { -+ bdev = bdget(part_devt(part)); -+ if (last && !got_last) { -+ if (last == bdev) -+ got_last = 1; -+ continue; -+ } -+ -+ if (blkdev_get(bdev, FMODE_READ)) -+ continue; -+ -+ if (bdev_matches_key(bdev, key)) { -+ next = bdev; -+ break; -+ } -+ -+ blkdev_put(bdev, FMODE_READ); -+ } -+ disk_part_iter_exit(&piter); -+ } -+ class_dev_iter_exit(&iter); -+out: -+ if (last) -+ blkdev_put(last, FMODE_READ); -+ return next; -+} -+EXPORT_SYMBOL_GPL(next_bdev_of_type); -diff --git a/block/uuid.c b/block/uuid.c -new file mode 100644 -index 0000000..3862685 ---- /dev/null -+++ b/block/uuid.c -@@ -0,0 +1,528 @@ -+#include -+#include -+#include -+ -+static int debug_enabled; -+ -+#define PRINTK(fmt, args...) do { \ -+ if (debug_enabled) \ -+ printk(KERN_DEBUG fmt, ## args); \ -+ } while(0) -+ -+#define PRINT_HEX_DUMP(v1, v2, v3, v4, v5, v6, v7, v8) \ -+ do { \ -+ if (debug_enabled) \ -+ print_hex_dump(v1, v2, v3, v4, v5, v6, v7, v8); \ -+ } while(0) -+ -+/* -+ * Simple UUID translation -+ */ -+ -+struct uuid_info { -+ const char *key; -+ const char *name; -+ long bkoff; -+ unsigned sboff; -+ unsigned sig_len; -+ const char *magic; -+ int uuid_offset; -+ int last_mount_offset; -+ int last_mount_size; -+}; -+ -+/* -+ * Based on libuuid's blkid_magic array. Note that I don't -+ * have uuid offsets for all of these yet - mssing ones are 0x0. -+ * Further information welcome. -+ * -+ * Rearranged by page of fs signature for optimisation. -+ */ -+static struct uuid_info uuid_list[] = { -+ { NULL, "oracleasm", 0, 32, 8, "ORCLDISK", 0x0, 0, 0 }, -+ { "ntfs", "ntfs", 0, 3, 8, "NTFS ", 0x0, 0, 0 }, -+ { "vfat", "vfat", 0, 0x52, 5, "MSWIN", 0x0, 0, 0 }, -+ { "vfat", "vfat", 0, 0x52, 8, "FAT32 ", 0x0, 0, 0 }, -+ { "vfat", "vfat", 0, 0x36, 5, "MSDOS", 0x0, 0, 0 }, -+ { "vfat", "vfat", 0, 0x36, 8, "FAT16 ", 0x0, 0, 0 }, -+ { "vfat", "vfat", 0, 0x36, 8, "FAT12 ", 0x0, 0, 0 }, -+ { "vfat", "vfat", 0, 0, 1, "\353", 0x0, 0, 0 }, -+ { "vfat", "vfat", 0, 0, 1, "\351", 0x0, 0, 0 }, -+ { "vfat", "vfat", 0, 0x1fe, 2, "\125\252", 0x0, 0, 0 }, -+ { "xfs", "xfs", 0, 0, 4, "XFSB", 0x14, 0, 0 }, -+ { "romfs", "romfs", 0, 0, 8, "-rom1fs-", 0x0, 0, 0 }, -+ { "bfs", "bfs", 0, 0, 4, "\316\372\173\033", 0, 0, 0 }, -+ { "cramfs", "cramfs", 0, 0, 4, "E=\315\050", 0x0, 0, 0 }, -+ { "qnx4", "qnx4", 0, 4, 6, "QNX4FS", 0, 0, 0 }, -+ { NULL, "crypt_LUKS", 0, 0, 6, "LUKS\xba\xbe", 0x0, 0, 0 }, -+ { "squashfs", "squashfs", 0, 0, 4, "sqsh", 0, 0, 0 }, -+ { "squashfs", "squashfs", 0, 0, 4, "hsqs", 0, 0, 0 }, -+ { "ocfs", "ocfs", 0, 8, 9, "OracleCFS", 0x0, 0, 0 }, -+ { "lvm2pv", "lvm2pv", 0, 0x018, 8, "LVM2 001", 0x0, 0, 0 }, -+ { "sysv", "sysv", 0, 0x3f8, 4, "\020~\030\375", 0, 0, 0 }, -+ { "ext", "ext", 1, 0x38, 2, "\123\357", 0x468, 0x42c, 4 }, -+ { "minix", "minix", 1, 0x10, 2, "\177\023", 0, 0, 0 }, -+ { "minix", "minix", 1, 0x10, 2, "\217\023", 0, 0, 0 }, -+ { "minix", "minix", 1, 0x10, 2, "\150\044", 0, 0, 0 }, -+ { "minix", "minix", 1, 0x10, 2, "\170\044", 0, 0, 0 }, -+ { "lvm2pv", "lvm2pv", 1, 0x018, 8, "LVM2 001", 0x0, 0, 0 }, -+ { "vxfs", "vxfs", 1, 0, 4, "\365\374\001\245", 0, 0, 0 }, -+ { "hfsplus", "hfsplus", 1, 0, 2, "BD", 0x0, 0, 0 }, -+ { "hfsplus", "hfsplus", 1, 0, 2, "H+", 0x0, 0, 0 }, -+ { "hfsplus", "hfsplus", 1, 0, 2, "HX", 0x0, 0, 0 }, -+ { "hfs", "hfs", 1, 0, 2, "BD", 0x0, 0, 0 }, -+ { "ocfs2", "ocfs2", 1, 0, 6, "OCFSV2", 0x0, 0, 0 }, -+ { "lvm2pv", "lvm2pv", 0, 0x218, 8, "LVM2 001", 0x0, 0, 0 }, -+ { "lvm2pv", "lvm2pv", 1, 0x218, 8, "LVM2 001", 0x0, 0, 0 }, -+ { "ocfs2", "ocfs2", 2, 0, 6, "OCFSV2", 0x0, 0, 0 }, -+ { "swap", "swap", 0, 0xff6, 10, "SWAP-SPACE", 0x40c, 0, 0 }, -+ { "swap", "swap", 0, 0xff6, 10, "SWAPSPACE2", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0xff6, 9, "S1SUSPEND", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0xff6, 9, "S2SUSPEND", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0xff6, 9, "ULSUSPEND", 0x40c, 0, 0 }, -+ { "ocfs2", "ocfs2", 4, 0, 6, "OCFSV2", 0x0, 0, 0 }, -+ { "ocfs2", "ocfs2", 8, 0, 6, "OCFSV2", 0x0, 0, 0 }, -+ { "hpfs", "hpfs", 8, 0, 4, "I\350\225\371", 0, 0, 0 }, -+ { "reiserfs", "reiserfs", 8, 0x34, 8, "ReIsErFs", 0x10054, 0, 0 }, -+ { "reiserfs", "reiserfs", 8, 20, 8, "ReIsErFs", 0x10054, 0, 0 }, -+ { "zfs", "zfs", 8, 0, 8, "\0\0\x02\xf5\xb0\x07\xb1\x0c", 0x0, 0, 0 }, -+ { "zfs", "zfs", 8, 0, 8, "\x0c\xb1\x07\xb0\xf5\x02\0\0", 0x0, 0, 0 }, -+ { "ufs", "ufs", 8, 0x55c, 4, "T\031\001\000", 0, 0, 0 }, -+ { "swap", "swap", 0, 0x1ff6, 10, "SWAP-SPACE", 0x40c, 0, 0 }, -+ { "swap", "swap", 0, 0x1ff6, 10, "SWAPSPACE2", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0x1ff6, 9, "S1SUSPEND", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0x1ff6, 9, "S2SUSPEND", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0x1ff6, 9, "ULSUSPEND", 0x40c, 0, 0 }, -+ { "reiserfs", "reiserfs", 64, 0x34, 9, "ReIsEr2Fs", 0x10054, 0, 0 }, -+ { "reiserfs", "reiserfs", 64, 0x34, 9, "ReIsEr3Fs", 0x10054, 0, 0 }, -+ { "reiserfs", "reiserfs", 64, 0x34, 8, "ReIsErFs", 0x10054, 0, 0 }, -+ { "reiser4", "reiser4", 64, 0, 7, "ReIsEr4", 0x100544, 0, 0 }, -+ { "gfs2", "gfs2", 64, 0, 4, "\x01\x16\x19\x70", 0x0, 0, 0 }, -+ { "gfs", "gfs", 64, 0, 4, "\x01\x16\x19\x70", 0x0, 0, 0 }, -+ { "btrfs", "btrfs", 64, 0x40, 8, "_BHRfS_M", 0x0, 0, 0 }, -+ { "swap", "swap", 0, 0x3ff6, 10, "SWAP-SPACE", 0x40c, 0, 0 }, -+ { "swap", "swap", 0, 0x3ff6, 10, "SWAPSPACE2", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0x3ff6, 9, "S1SUSPEND", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0x3ff6, 9, "S2SUSPEND", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0x3ff6, 9, "ULSUSPEND", 0x40c, 0, 0 }, -+ { "udf", "udf", 32, 1, 5, "BEA01", 0x0, 0, 0 }, -+ { "udf", "udf", 32, 1, 5, "BOOT2", 0x0, 0, 0 }, -+ { "udf", "udf", 32, 1, 5, "CD001", 0x0, 0, 0 }, -+ { "udf", "udf", 32, 1, 5, "CDW02", 0x0, 0, 0 }, -+ { "udf", "udf", 32, 1, 5, "NSR02", 0x0, 0, 0 }, -+ { "udf", "udf", 32, 1, 5, "NSR03", 0x0, 0, 0 }, -+ { "udf", "udf", 32, 1, 5, "TEA01", 0x0, 0, 0 }, -+ { "iso9660", "iso9660", 32, 1, 5, "CD001", 0x0, 0, 0 }, -+ { "iso9660", "iso9660", 32, 9, 5, "CDROM", 0x0, 0, 0 }, -+ { "jfs", "jfs", 32, 0, 4, "JFS1", 0x88, 0, 0 }, -+ { "swap", "swap", 0, 0x7ff6, 10, "SWAP-SPACE", 0x40c, 0, 0 }, -+ { "swap", "swap", 0, 0x7ff6, 10, "SWAPSPACE2", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0x7ff6, 9, "S1SUSPEND", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0x7ff6, 9, "S2SUSPEND", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0x7ff6, 9, "ULSUSPEND", 0x40c, 0, 0 }, -+ { "swap", "swap", 0, 0xfff6, 10, "SWAP-SPACE", 0x40c, 0, 0 }, -+ { "swap", "swap", 0, 0xfff6, 10, "SWAPSPACE2", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0xfff6, 9, "S1SUSPEND", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0xfff6, 9, "S2SUSPEND", 0x40c, 0, 0 }, -+ { "swap", "swsuspend", 0, 0xfff6, 9, "ULSUSPEND", 0x40c, 0, 0 }, -+ { "zfs", "zfs", 264, 0, 8, "\0\0\x02\xf5\xb0\x07\xb1\x0c", 0x0, 0, 0 }, -+ { "zfs", "zfs", 264, 0, 8, "\x0c\xb1\x07\xb0\xf5\x02\0\0", 0x0, 0, 0 }, -+ { NULL, NULL, 0, 0, 0, NULL, 0x0, 0, 0 } -+}; -+ -+static int null_uuid(const char *uuid) -+{ -+ int i; -+ -+ for (i = 0; i < 16 && !uuid[i]; i++); -+ -+ return (i == 16); -+} -+ -+ -+static void uuid_end_bio(struct bio *bio, int err) -+{ -+ struct page *page = bio->bi_io_vec[0].bv_page; -+ -+ BUG_ON(!test_bit(BIO_UPTODATE, &bio->bi_flags)); -+ -+ unlock_page(page); -+ bio_put(bio); -+} -+ -+ -+/** -+ * submit - submit BIO request -+ * @dev: The block device we're using. -+ * @page_num: The page we're reading. -+ * -+ * Based on Patrick Mochell's pmdisk code from long ago: "Straight from the -+ * textbook - allocate and initialize the bio. If we're writing, make sure -+ * the page is marked as dirty. Then submit it and carry on." -+ **/ -+static struct page *read_bdev_page(struct block_device *dev, int page_num) -+{ -+ struct bio *bio = NULL; -+ struct page *page = alloc_page(GFP_NOFS); -+ -+ if (!page) { -+ printk(KERN_ERR "Failed to allocate a page for reading data " -+ "in UUID checks."); -+ return NULL; -+ } -+ -+ bio = bio_alloc(GFP_NOFS, 1); -+ bio->bi_bdev = dev; -+ bio->bi_sector = page_num << 3; -+ bio->bi_end_io = uuid_end_bio; -+ -+ PRINTK("Submitting bio on device %lx, page %d.\n", -+ (unsigned long) dev->bd_dev, page_num); -+ -+ if (bio_add_page(bio, page, PAGE_SIZE, 0) < PAGE_SIZE) { -+ printk(KERN_DEBUG "ERROR: adding page to bio at %d\n", -+ page_num); -+ bio_put(bio); -+ __free_page(page); -+ printk(KERN_DEBUG "read_bdev_page freed page %p (in error " -+ "path).\n", page); -+ return ERR_PTR(-EFAULT); -+ } -+ -+ lock_page(page); -+ submit_bio(READ | (1 << BIO_RW_SYNCIO) | -+ (1 << BIO_RW_UNPLUG), bio); -+ -+ wait_on_page_locked(page); -+ return page; -+} -+ -+int bdev_matches_key(struct block_device *bdev, const char *key) -+{ -+ unsigned char *data = NULL; -+ struct page *data_page = NULL; -+ -+ int dev_offset, pg_num, pg_off, i; -+ int last_pg_num = -1; -+ int result = 0; -+ char buf[50]; -+ -+ if (null_uuid(key)) { -+ PRINTK("Refusing to find a NULL key.\n"); -+ return 0; -+ } -+ -+ if (!bdev->bd_disk) { -+ bdevname(bdev, buf); -+ PRINTK("bdev %s has no bd_disk.\n", buf); -+ return 0; -+ } -+ -+ if (!bdev->bd_disk->queue) { -+ bdevname(bdev, buf); -+ PRINTK("bdev %s has no queue.\n", buf); -+ return 0; -+ } -+ -+ for (i = 0; uuid_list[i].name; i++) { -+ struct uuid_info *dat = &uuid_list[i]; -+ -+ if (!dat->key || strcmp(dat->key, key)) -+ continue; -+ -+ dev_offset = (dat->bkoff << 10) + dat->sboff; -+ pg_num = dev_offset >> 12; -+ pg_off = dev_offset & 0xfff; -+ -+ if ((((pg_num + 1) << 3) - 1) > bdev->bd_part->nr_sects >> 1) -+ continue; -+ -+ if (pg_num != last_pg_num) { -+ if (data_page) -+ __free_page(data_page); -+ data_page = read_bdev_page(bdev, pg_num); -+ if (!data_page) { -+ result = -ENOMEM; -+ break; -+ } -+ data = page_address(data_page); -+ } -+ -+ last_pg_num = pg_num; -+ -+ if (strncmp(&data[pg_off], dat->magic, dat->sig_len)) -+ continue; -+ -+ result = 1; -+ break; -+ } -+ -+ if (data_page) -+ __free_page(data_page); -+ -+ return result; -+} -+ -+int part_matches_uuid(struct hd_struct *part, const char *uuid) -+{ -+ struct block_device *bdev; -+ unsigned char *data = NULL; -+ struct page *data_page = NULL; -+ -+ int dev_offset, pg_num, pg_off; -+ int uuid_pg_num, uuid_pg_off, i; -+ unsigned char *uuid_data = NULL; -+ struct page *uuid_data_page = NULL; -+ -+ int last_pg_num = -1, last_uuid_pg_num = 0; -+ int result = 0; -+ char buf[50]; -+ -+ if (null_uuid(uuid)) { -+ PRINTK("Refusing to find a NULL uuid.\n"); -+ return 0; -+ } -+ -+ bdev = bdget(part_devt(part)); -+ -+ PRINTK("blkdev_get %p.\n", part); -+ -+ if (blkdev_get(bdev, FMODE_READ)) { -+ PRINTK("blkdev_get failed.\n"); -+ return 0; -+ } -+ -+ if (!bdev->bd_disk) { -+ bdevname(bdev, buf); -+ PRINTK("bdev %s has no bd_disk.\n", buf); -+ goto out; -+ } -+ -+ if (!bdev->bd_disk->queue) { -+ bdevname(bdev, buf); -+ PRINTK("bdev %s has no queue.\n", buf); -+ goto out; -+ } -+ -+ PRINT_HEX_DUMP(KERN_EMERG, "part_matches_uuid looking for ", -+ DUMP_PREFIX_NONE, 16, 1, uuid, 16, 0); -+ -+ for (i = 0; uuid_list[i].name; i++) { -+ struct uuid_info *dat = &uuid_list[i]; -+ dev_offset = (dat->bkoff << 10) + dat->sboff; -+ pg_num = dev_offset >> 12; -+ pg_off = dev_offset & 0xfff; -+ uuid_pg_num = dat->uuid_offset >> 12; -+ uuid_pg_off = dat->uuid_offset & 0xfff; -+ -+ if ((((pg_num + 1) << 3) - 1) > part->nr_sects >> 1) -+ continue; -+ -+ /* Ignore partition types with no UUID offset */ -+ if (!dat->uuid_offset) -+ continue; -+ -+ if (pg_num != last_pg_num) { -+ if (data_page) -+ __free_page(data_page); -+ data_page = read_bdev_page(bdev, pg_num); -+ if (!data_page) { -+ result = -ENOMEM; -+ break; -+ } -+ data = page_address(data_page); -+ } -+ -+ last_pg_num = pg_num; -+ -+ if (strncmp(&data[pg_off], dat->magic, dat->sig_len)) -+ continue; -+ -+ /* Does the UUID match? */ -+ if (uuid_pg_num > part->nr_sects >> 3) -+ continue; -+ -+ if (!uuid_data || uuid_pg_num != last_uuid_pg_num) { -+ if (uuid_data_page) -+ __free_page(uuid_data_page); -+ uuid_data_page = read_bdev_page(bdev, uuid_pg_num); -+ if (!uuid_data_page) { -+ result = -ENOMEM; -+ break; -+ } -+ uuid_data = page_address(uuid_data_page); -+ } -+ -+ last_uuid_pg_num = uuid_pg_num; -+ -+ PRINT_HEX_DUMP(KERN_EMERG, "part_matches_uuid considering ", -+ DUMP_PREFIX_NONE, 16, 1, -+ &uuid_data[uuid_pg_off], 16, 0); -+ -+ if (!memcmp(&uuid_data[uuid_pg_off], uuid, 16)) { -+ PRINTK("We have a match.\n"); -+ result = 1; -+ break; -+ } -+ } -+ -+ if (data_page) -+ __free_page(data_page); -+ -+ if (uuid_data_page) -+ __free_page(uuid_data_page); -+ -+out: -+ blkdev_put(bdev, FMODE_READ); -+ return result; -+} -+ -+void free_fs_info(struct fs_info *fs_info) -+{ -+ if (!fs_info || IS_ERR(fs_info)) -+ return; -+ -+ if (fs_info->last_mount) -+ kfree(fs_info->last_mount); -+ -+ kfree(fs_info); -+} -+EXPORT_SYMBOL_GPL(free_fs_info); -+ -+struct fs_info *fs_info_from_block_dev(struct block_device *bdev) -+{ -+ unsigned char *data = NULL; -+ struct page *data_page = NULL; -+ -+ int dev_offset, pg_num, pg_off; -+ int uuid_pg_num, uuid_pg_off, i; -+ unsigned char *uuid_data = NULL; -+ struct page *uuid_data_page = NULL; -+ -+ int last_pg_num = -1, last_uuid_pg_num = 0; -+ char buf[50]; -+ struct fs_info *fs_info = NULL; -+ -+ bdevname(bdev, buf); -+ -+ PRINTK(KERN_EMERG "uuid_from_block_dev looking for partition type " -+ "of %s.\n", buf); -+ -+ for (i = 0; uuid_list[i].name; i++) { -+ struct uuid_info *dat = &uuid_list[i]; -+ dev_offset = (dat->bkoff << 10) + dat->sboff; -+ pg_num = dev_offset >> 12; -+ pg_off = dev_offset & 0xfff; -+ uuid_pg_num = dat->uuid_offset >> 12; -+ uuid_pg_off = dat->uuid_offset & 0xfff; -+ -+ if ((((pg_num + 1) << 3) - 1) > bdev->bd_part->nr_sects >> 1) -+ continue; -+ -+ /* Ignore partition types with no UUID offset */ -+ if (!dat->uuid_offset) -+ continue; -+ -+ if (pg_num != last_pg_num) { -+ if (data_page) -+ __free_page(data_page); -+ data_page = read_bdev_page(bdev, pg_num); -+ if (!data_page) { -+ fs_info = ERR_PTR(-ENOMEM); -+ break; -+ } -+ data = page_address(data_page); -+ } -+ -+ last_pg_num = pg_num; -+ -+ if (strncmp(&data[pg_off], dat->magic, dat->sig_len)) -+ continue; -+ -+ PRINTK("This partition looks like %s.\n", dat->name); -+ -+ fs_info = kzalloc(sizeof(struct fs_info), GFP_KERNEL); -+ -+ if (!fs_info) { -+ PRINTK("Failed to allocate fs_info struct."); -+ fs_info = ERR_PTR(-ENOMEM); -+ break; -+ } -+ -+ /* UUID can't be off the end of the disk */ -+ if ((uuid_pg_num > bdev->bd_part->nr_sects >> 3) || -+ !dat->uuid_offset) -+ goto no_uuid; -+ -+ if (!uuid_data || uuid_pg_num != last_uuid_pg_num) { -+ if (uuid_data_page) -+ __free_page(uuid_data_page); -+ uuid_data_page = read_bdev_page(bdev, uuid_pg_num); -+ if (!uuid_data_page) { -+ fs_info = ERR_PTR(-ENOMEM); -+ break; -+ } -+ uuid_data = page_address(uuid_data_page); -+ } -+ -+ last_uuid_pg_num = uuid_pg_num; -+ memcpy(&fs_info->uuid, &uuid_data[uuid_pg_off], 16); -+ -+no_uuid: -+ PRINT_HEX_DUMP(KERN_EMERG, "fs_info_from_block_dev " -+ "returning uuid ", DUMP_PREFIX_NONE, 16, 1, -+ fs_info->uuid, 16, 0); -+ -+ if (dat->last_mount_size) { -+ int pg = dat->last_mount_offset >> 12, sz; -+ int off = dat->last_mount_offset & 0xfff; -+ struct page *last_mount = read_bdev_page(bdev, pg); -+ unsigned char *last_mount_data; -+ char *ptr; -+ -+ if (!last_mount) { -+ fs_info = ERR_PTR(-ENOMEM); -+ break; -+ } -+ last_mount_data = page_address(last_mount); -+ sz = dat->last_mount_size; -+ ptr = kmalloc(sz, GFP_KERNEL); -+ -+ if (!ptr) { -+ printk(KERN_EMERG "fs_info_from_block_dev " -+ "failed to get memory for last mount " -+ "timestamp."); -+ free_fs_info(fs_info); -+ fs_info = ERR_PTR(-ENOMEM); -+ } else { -+ fs_info->last_mount = ptr; -+ fs_info->last_mount_size = sz; -+ memcpy(ptr, &last_mount_data[off], sz); -+ } -+ -+ __free_page(last_mount); -+ } -+ break; -+ } -+ -+ if (data_page) -+ __free_page(data_page); -+ -+ if (uuid_data_page) -+ __free_page(uuid_data_page); -+ -+ return fs_info; -+} -+EXPORT_SYMBOL_GPL(fs_info_from_block_dev); -+ -+static int __init uuid_debug_setup(char *str) -+{ -+ int value; -+ -+ if (sscanf(str, "=%d", &value)) -+ debug_enabled = value; -+ -+ return 1; -+} -+ -+__setup("uuid_debug", uuid_debug_setup); -diff --git a/crypto/Kconfig b/crypto/Kconfig -index 81c185a..94cb5e8 100644 ---- a/crypto/Kconfig -+++ b/crypto/Kconfig -@@ -806,6 +806,13 @@ config CRYPTO_LZO - help - This is the LZO algorithm. - -+config CRYPTO_LZF -+ tristate "LZF compression algorithm" -+ select CRYPTO_ALGAPI -+ help -+ This is the LZF algorithm. It is especially useful for TuxOnIce, -+ because it achieves good compression quickly. -+ - comment "Random Number Generation" - - config CRYPTO_ANSI_CPRNG -diff --git a/crypto/Makefile b/crypto/Makefile -index 9e8f619..a06b213 100644 ---- a/crypto/Makefile -+++ b/crypto/Makefile -@@ -77,6 +77,7 @@ obj-$(CONFIG_CRYPTO_DEFLATE) += deflate.o - obj-$(CONFIG_CRYPTO_ZLIB) += zlib.o - obj-$(CONFIG_CRYPTO_MICHAEL_MIC) += michael_mic.o - obj-$(CONFIG_CRYPTO_CRC32C) += crc32c.o -+obj-$(CONFIG_CRYPTO_LZF) += lzf.o - obj-$(CONFIG_CRYPTO_AUTHENC) += authenc.o - obj-$(CONFIG_CRYPTO_LZO) += lzo.o - obj-$(CONFIG_CRYPTO_RNG2) += rng.o -diff --git a/crypto/lzf.c b/crypto/lzf.c -new file mode 100644 -index 0000000..ccaf83a ---- /dev/null -+++ b/crypto/lzf.c -@@ -0,0 +1,326 @@ -+/* -+ * Cryptoapi LZF compression module. -+ * -+ * Copyright (c) 2004-2008 Nigel Cunningham -+ * -+ * based on the deflate.c file: -+ * -+ * Copyright (c) 2003 James Morris -+ * -+ * and upon the LZF compression module donated to the TuxOnIce project with -+ * the following copyright: -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License as published by the Free -+ * Software Foundation; either version 2 of the License, or (at your option) -+ * any later version. -+ * Copyright (c) 2000-2003 Marc Alexander Lehmann -+ * -+ * Redistribution and use in source and binary forms, with or without modifica- -+ * tion, are permitted provided that the following conditions are met: -+ * -+ * 1. Redistributions of source code must retain the above copyright notice, -+ * this list of conditions and the following disclaimer. -+ * -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * -+ * 3. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- -+ * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- -+ * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- -+ * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -+ * OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * Alternatively, the contents of this file may be used under the terms of -+ * the GNU General Public License version 2 (the "GPL"), in which case the -+ * provisions of the GPL are applicable instead of the above. If you wish to -+ * allow the use of your version of this file only under the terms of the -+ * GPL and not to allow others to use your version of this file under the -+ * BSD license, indicate your decision by deleting the provisions above and -+ * replace them with the notice and other provisions required by the GPL. If -+ * you do not delete the provisions above, a recipient may use your version -+ * of this file under either the BSD or the GPL. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+struct lzf_ctx { -+ void *hbuf; -+ unsigned int bufofs; -+}; -+ -+/* -+ * size of hashtable is (1 << hlog) * sizeof (char *) -+ * decompression is independent of the hash table size -+ * the difference between 15 and 14 is very small -+ * for small blocks (and 14 is also faster). -+ * For a low-memory configuration, use hlog == 13; -+ * For best compression, use 15 or 16. -+ */ -+static const int hlog = 13; -+ -+/* -+ * don't play with this unless you benchmark! -+ * decompression is not dependent on the hash function -+ * the hashing function might seem strange, just believe me -+ * it works ;) -+ */ -+static inline u16 first(const u8 *p) -+{ -+ return ((p[0]) << 8) + p[1]; -+} -+ -+static inline u16 next(u8 v, const u8 *p) -+{ -+ return ((v) << 8) + p[2]; -+} -+ -+static inline u32 idx(unsigned int h) -+{ -+ return (((h ^ (h << 5)) >> (3*8 - hlog)) + h*3) & ((1 << hlog) - 1); -+} -+ -+/* -+ * IDX works because it is very similar to a multiplicative hash, e.g. -+ * (h * 57321 >> (3*8 - hlog)) -+ * the next one is also quite good, albeit slow ;) -+ * (int)(cos(h & 0xffffff) * 1e6) -+ */ -+ -+static const int max_lit = (1 << 5); -+static const int max_off = (1 << 13); -+static const int max_ref = ((1 << 8) + (1 << 3)); -+ -+/* -+ * compressed format -+ * -+ * 000LLLLL ; literal -+ * LLLOOOOO oooooooo ; backref L -+ * 111OOOOO LLLLLLLL oooooooo ; backref L+7 -+ * -+ */ -+ -+static void lzf_compress_exit(struct crypto_tfm *tfm) -+{ -+ struct lzf_ctx *ctx = crypto_tfm_ctx(tfm); -+ -+ if (!ctx->hbuf) -+ return; -+ -+ vfree(ctx->hbuf); -+ ctx->hbuf = NULL; -+} -+ -+static int lzf_compress_init(struct crypto_tfm *tfm) -+{ -+ struct lzf_ctx *ctx = crypto_tfm_ctx(tfm); -+ -+ /* Get LZF ready to go */ -+ ctx->hbuf = vmalloc_32((1 << hlog) * sizeof(char *)); -+ if (ctx->hbuf) -+ return 0; -+ -+ printk(KERN_WARNING "Failed to allocate %ld bytes for lzf workspace\n", -+ (long) ((1 << hlog) * sizeof(char *))); -+ return -ENOMEM; -+} -+ -+static int lzf_compress(struct crypto_tfm *tfm, const u8 *in_data, -+ unsigned int in_len, u8 *out_data, unsigned int *out_len) -+{ -+ struct lzf_ctx *ctx = crypto_tfm_ctx(tfm); -+ const u8 **htab = ctx->hbuf; -+ const u8 **hslot; -+ const u8 *ip = in_data; -+ u8 *op = out_data; -+ const u8 *in_end = ip + in_len; -+ u8 *out_end = op + *out_len - 3; -+ const u8 *ref; -+ -+ unsigned int hval = first(ip); -+ unsigned long off; -+ int lit = 0; -+ -+ memset(htab, 0, sizeof(htab)); -+ -+ for (;;) { -+ if (ip < in_end - 2) { -+ hval = next(hval, ip); -+ hslot = htab + idx(hval); -+ ref = *hslot; -+ *hslot = ip; -+ -+ off = ip - ref - 1; -+ if (off < max_off -+ && ip + 4 < in_end && ref > in_data -+ && *(u16 *) ref == *(u16 *) ip && ref[2] == ip[2] -+ ) { -+ /* match found at *ref++ */ -+ unsigned int len = 2; -+ unsigned int maxlen = in_end - ip - len; -+ maxlen = maxlen > max_ref ? max_ref : maxlen; -+ -+ do { -+ len++; -+ } while (len < maxlen && ref[len] == ip[len]); -+ -+ if (op + lit + 1 + 3 >= out_end) { -+ *out_len = PAGE_SIZE; -+ return 0; -+ } -+ -+ if (lit) { -+ *op++ = lit - 1; -+ lit = -lit; -+ do { -+ *op++ = ip[lit]; -+ } while (++lit); -+ } -+ -+ len -= 2; -+ ip++; -+ -+ if (len < 7) { -+ *op++ = (off >> 8) + (len << 5); -+ } else { -+ *op++ = (off >> 8) + (7 << 5); -+ *op++ = len - 7; -+ } -+ -+ *op++ = off; -+ -+ ip += len; -+ hval = first(ip); -+ hval = next(hval, ip); -+ htab[idx(hval)] = ip; -+ ip++; -+ continue; -+ } -+ } else if (ip == in_end) -+ break; -+ -+ /* one more literal byte we must copy */ -+ lit++; -+ ip++; -+ -+ if (lit == max_lit) { -+ if (op + 1 + max_lit >= out_end) { -+ *out_len = PAGE_SIZE; -+ return 0; -+ } -+ -+ *op++ = max_lit - 1; -+ memcpy(op, ip - max_lit, max_lit); -+ op += max_lit; -+ lit = 0; -+ } -+ } -+ -+ if (lit) { -+ if (op + lit + 1 >= out_end) { -+ *out_len = PAGE_SIZE; -+ return 0; -+ } -+ -+ *op++ = lit - 1; -+ lit = -lit; -+ do { -+ *op++ = ip[lit]; -+ } while (++lit); -+ } -+ -+ *out_len = op - out_data; -+ return 0; -+} -+ -+static int lzf_decompress(struct crypto_tfm *tfm, const u8 *src, -+ unsigned int slen, u8 *dst, unsigned int *dlen) -+{ -+ u8 const *ip = src; -+ u8 *op = dst; -+ u8 const *const in_end = ip + slen; -+ u8 *const out_end = op + *dlen; -+ -+ *dlen = PAGE_SIZE; -+ do { -+ unsigned int ctrl = *ip++; -+ -+ if (ctrl < (1 << 5)) { -+ /* literal run */ -+ ctrl++; -+ -+ if (op + ctrl > out_end) -+ return 0; -+ memcpy(op, ip, ctrl); -+ op += ctrl; -+ ip += ctrl; -+ } else { /* back reference */ -+ -+ unsigned int len = ctrl >> 5; -+ -+ u8 *ref = op - ((ctrl & 0x1f) << 8) - 1; -+ -+ if (len == 7) -+ len += *ip++; -+ -+ ref -= *ip++; -+ len += 2; -+ -+ if (op + len > out_end || ref < (u8 *) dst) -+ return 0; -+ -+ do { -+ *op++ = *ref++; -+ } while (--len); -+ } -+ } while (op < out_end && ip < in_end); -+ -+ *dlen = op - (u8 *) dst; -+ return 0; -+} -+ -+static struct crypto_alg alg = { -+ .cra_name = "lzf", -+ .cra_flags = CRYPTO_ALG_TYPE_COMPRESS, -+ .cra_ctxsize = sizeof(struct lzf_ctx), -+ .cra_module = THIS_MODULE, -+ .cra_list = LIST_HEAD_INIT(alg.cra_list), -+ .cra_init = lzf_compress_init, -+ .cra_exit = lzf_compress_exit, -+ .cra_u = { .compress = { -+ .coa_compress = lzf_compress, -+ .coa_decompress = lzf_decompress } } -+}; -+ -+static int __init init(void) -+{ -+ return crypto_register_alg(&alg); -+} -+ -+static void __exit fini(void) -+{ -+ crypto_unregister_alg(&alg); -+} -+ -+module_init(init); -+module_exit(fini); -+ -+MODULE_LICENSE("GPL"); -+MODULE_DESCRIPTION("LZF Compression Algorithm"); -+MODULE_AUTHOR("Marc Alexander Lehmann & Nigel Cunningham"); -diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c -index a5142bd..3fed8b2 100644 ---- a/drivers/base/power/main.c -+++ b/drivers/base/power/main.c -@@ -66,6 +66,7 @@ void device_pm_lock(void) - { - mutex_lock(&dpm_list_mtx); - } -+EXPORT_SYMBOL_GPL(device_pm_lock); - - /** - * device_pm_unlock - Unlock the list of active devices used by the PM core. -@@ -74,6 +75,7 @@ void device_pm_unlock(void) - { - mutex_unlock(&dpm_list_mtx); - } -+EXPORT_SYMBOL_GPL(device_pm_unlock); - - /** - * device_pm_add - Add a device to the PM core's list of active devices. -diff --git a/drivers/char/vt.c b/drivers/char/vt.c -index 50faa1f..567839a 100644 ---- a/drivers/char/vt.c -+++ b/drivers/char/vt.c -@@ -2465,6 +2465,7 @@ int vt_kmsg_redirect(int new) - else - return kmsg_con; - } -+EXPORT_SYMBOL_GPL(vt_kmsg_redirect); - - /* - * Console on virtual terminal -diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c -index 8bf3770..f1d1e03 100644 ---- a/drivers/gpu/drm/drm_gem.c -+++ b/drivers/gpu/drm/drm_gem.c -@@ -138,7 +138,8 @@ drm_gem_object_alloc(struct drm_device *dev, size_t size) - goto free; - - obj->dev = dev; -- obj->filp = shmem_file_setup("drm mm object", size, VM_NORESERVE); -+ obj->filp = shmem_file_setup("drm mm object", size, -+ VM_NORESERVE | VM_ATOMIC_COPY); - if (IS_ERR(obj->filp)) - goto free; - -diff --git a/drivers/md/md.c b/drivers/md/md.c -index a20a71e..6f221e5 100644 ---- a/drivers/md/md.c -+++ b/drivers/md/md.c -@@ -6469,6 +6469,9 @@ void md_do_sync(mddev_t *mddev) - mddev->curr_resync = 2; - - try_again: -+ while (freezer_is_on()) -+ yield(); -+ - if (kthread_should_stop()) - set_bit(MD_RECOVERY_INTR, &mddev->recovery); - -@@ -6491,6 +6494,10 @@ void md_do_sync(mddev_t *mddev) - * time 'round when curr_resync == 2 - */ - continue; -+ -+ while (freezer_is_on()) -+ yield(); -+ - /* We need to wait 'interruptible' so as not to - * contribute to the load average, and not to - * be caught by 'softlockup' -@@ -6503,6 +6510,7 @@ void md_do_sync(mddev_t *mddev) - " share one or more physical units)\n", - desc, mdname(mddev), mdname(mddev2)); - mddev_put(mddev2); -+ try_to_freeze(); - if (signal_pending(current)) - flush_signals(current); - schedule(); -@@ -6612,6 +6620,9 @@ void md_do_sync(mddev_t *mddev) - || kthread_should_stop()); - } - -+ while (freezer_is_on()) -+ yield(); -+ - if (kthread_should_stop()) - goto interrupted; - -@@ -6656,6 +6667,9 @@ void md_do_sync(mddev_t *mddev) - last_mark = next; - } - -+ while (freezer_is_on()) -+ yield(); -+ - - if (kthread_should_stop()) - goto interrupted; -diff --git a/fs/block_dev.c b/fs/block_dev.c -index d11d028..b2388cc 100644 ---- a/fs/block_dev.c -+++ b/fs/block_dev.c -@@ -335,6 +335,93 @@ out_unlock: - } - EXPORT_SYMBOL(thaw_bdev); - -+#ifdef CONFIG_FS_FREEZER_DEBUG -+#define FS_PRINTK(fmt, args...) printk(fmt, ## args) -+#else -+#define FS_PRINTK(fmt, args...) -+#endif -+ -+/* #define DEBUG_FS_FREEZING */ -+ -+/** -+ * freeze_filesystems - lock all filesystems and force them into a consistent -+ * state -+ * @which: What combination of fuse & non-fuse to freeze. -+ */ -+void freeze_filesystems(int which) -+{ -+ struct super_block *sb; -+ -+ lockdep_off(); -+ -+ /* -+ * Freeze in reverse order so filesystems dependant upon others are -+ * frozen in the right order (eg. loopback on ext3). -+ */ -+ list_for_each_entry_reverse(sb, &super_blocks, s_list) { -+ FS_PRINTK(KERN_INFO "Considering %s.%s: (root %p, bdev %x)", -+ sb->s_type->name ? sb->s_type->name : "?", -+ sb->s_subtype ? sb->s_subtype : "", sb->s_root, -+ sb->s_bdev ? sb->s_bdev->bd_dev : 0); -+ -+ if (sb->s_type->fs_flags & FS_IS_FUSE && -+ sb->s_frozen == SB_UNFROZEN && -+ which & FS_FREEZER_FUSE) { -+ sb->s_frozen = SB_FREEZE_TRANS; -+ sb->s_flags |= MS_FROZEN; -+ FS_PRINTK("Fuse filesystem done.\n"); -+ continue; -+ } -+ -+ if (!sb->s_root || !sb->s_bdev || -+ (sb->s_frozen == SB_FREEZE_TRANS) || -+ (sb->s_flags & MS_RDONLY) || -+ (sb->s_flags & MS_FROZEN) || -+ !(which & FS_FREEZER_NORMAL)) { -+ FS_PRINTK(KERN_INFO "Nope.\n"); -+ continue; -+ } -+ -+ FS_PRINTK(KERN_INFO "Freezing %x... ", sb->s_bdev->bd_dev); -+ freeze_bdev(sb->s_bdev); -+ sb->s_flags |= MS_FROZEN; -+ FS_PRINTK(KERN_INFO "Done.\n"); -+ } -+ -+ lockdep_on(); -+} -+ -+/** -+ * thaw_filesystems - unlock all filesystems -+ * @which: What combination of fuse & non-fuse to thaw. -+ */ -+void thaw_filesystems(int which) -+{ -+ struct super_block *sb; -+ -+ lockdep_off(); -+ -+ list_for_each_entry(sb, &super_blocks, s_list) { -+ if (!(sb->s_flags & MS_FROZEN)) -+ continue; -+ -+ if (sb->s_type->fs_flags & FS_IS_FUSE) { -+ if (!(which & FS_FREEZER_FUSE)) -+ continue; -+ -+ sb->s_frozen = SB_UNFROZEN; -+ } else { -+ if (!(which & FS_FREEZER_NORMAL)) -+ continue; -+ -+ thaw_bdev(sb->s_bdev, sb); -+ } -+ sb->s_flags &= ~MS_FROZEN; -+ } -+ -+ lockdep_on(); -+} -+ - static int blkdev_writepage(struct page *page, struct writeback_control *wbc) - { - return block_write_full_page(page, blkdev_get_block, wbc); -diff --git a/fs/drop_caches.c b/fs/drop_caches.c -index 31f4b0e..ff7df7a 100644 ---- a/fs/drop_caches.c -+++ b/fs/drop_caches.c -@@ -8,6 +8,7 @@ - #include - #include - #include -+#include - - /* A global variable is a bit ugly, but it keeps the code simple */ - int sysctl_drop_caches; -@@ -33,7 +34,7 @@ static void drop_pagecache_sb(struct super_block *sb) - iput(toput_inode); - } - --static void drop_pagecache(void) -+void drop_pagecache(void) - { - struct super_block *sb; - -@@ -61,6 +62,7 @@ static void drop_slab(void) - nr_objects = shrink_slab(1000, GFP_KERNEL, 1000); - } while (nr_objects > 10); - } -+EXPORT_SYMBOL_GPL(drop_pagecache); - - int drop_caches_sysctl_handler(ctl_table *table, int write, - void __user *buffer, size_t *length, loff_t *ppos) -diff --git a/fs/fuse/control.c b/fs/fuse/control.c -index 3773fd6..6272b60 100644 ---- a/fs/fuse/control.c -+++ b/fs/fuse/control.c -@@ -341,6 +341,7 @@ static void fuse_ctl_kill_sb(struct super_block *sb) - static struct file_system_type fuse_ctl_fs_type = { - .owner = THIS_MODULE, - .name = "fusectl", -+ .fs_flags = FS_IS_FUSE, - .get_sb = fuse_ctl_get_sb, - .kill_sb = fuse_ctl_kill_sb, - }; -diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c -index 51d9e33..12ad477 100644 ---- a/fs/fuse/dev.c -+++ b/fs/fuse/dev.c -@@ -7,6 +7,7 @@ - */ - - #include "fuse_i.h" -+#include "fuse.h" - - #include - #include -@@ -16,6 +17,7 @@ - #include - #include - #include -+#include - - MODULE_ALIAS_MISCDEV(FUSE_MINOR); - -@@ -758,6 +760,8 @@ static ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov, - if (!fc) - return -EPERM; - -+ FUSE_MIGHT_FREEZE(file->f_mapping->host->i_sb, "fuse_dev_read"); -+ - restart: - spin_lock(&fc->lock); - err = -EAGAIN; -@@ -999,6 +1003,9 @@ static ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov, - if (!fc) - return -EPERM; - -+ FUSE_MIGHT_FREEZE(iocb->ki_filp->f_mapping->host->i_sb, -+ "fuse_dev_write"); -+ - fuse_copy_init(&cs, fc, 0, NULL, iov, nr_segs); - if (nbytes < sizeof(struct fuse_out_header)) - return -EINVAL; -diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c -index 4787ae6..797b7dd 100644 ---- a/fs/fuse/dir.c -+++ b/fs/fuse/dir.c -@@ -7,12 +7,14 @@ - */ - - #include "fuse_i.h" -+#include "fuse.h" - - #include - #include - #include - #include - #include -+#include - - #if BITS_PER_LONG >= 64 - static inline void fuse_dentry_settime(struct dentry *entry, u64 time) -@@ -174,6 +176,9 @@ static int fuse_dentry_revalidate(struct dentry *entry, struct nameidata *nd) - return 0; - - fc = get_fuse_conn(inode); -+ -+ FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_dentry_revalidate"); -+ - req = fuse_get_req(fc); - if (IS_ERR(req)) - return 0; -@@ -268,6 +273,8 @@ int fuse_lookup_name(struct super_block *sb, u64 nodeid, struct qstr *name, - if (name->len > FUSE_NAME_MAX) - goto out; - -+ FUSE_MIGHT_FREEZE(sb, "fuse_lookup_name"); -+ - req = fuse_get_req(fc); - err = PTR_ERR(req); - if (IS_ERR(req)) -@@ -331,6 +338,8 @@ static struct dentry *fuse_lookup(struct inode *dir, struct dentry *entry, - if (err) - goto out_err; - -+ FUSE_MIGHT_FREEZE(dir->i_sb, "fuse_lookup"); -+ - err = -EIO; - if (inode && get_node_id(inode) == FUSE_ROOT_ID) - goto out_iput; -@@ -392,6 +401,8 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry, int mode, - if (IS_ERR(forget_req)) - return PTR_ERR(forget_req); - -+ FUSE_MIGHT_FREEZE(dir->i_sb, "fuse_create_open"); -+ - req = fuse_get_req(fc); - err = PTR_ERR(req); - if (IS_ERR(req)) -@@ -485,6 +496,8 @@ static int create_new_entry(struct fuse_conn *fc, struct fuse_req *req, - int err; - struct fuse_req *forget_req; - -+ FUSE_MIGHT_FREEZE(dir->i_sb, "create_new_entry"); -+ - forget_req = fuse_get_req(fc); - if (IS_ERR(forget_req)) { - fuse_put_request(fc, req); -@@ -587,7 +600,11 @@ static int fuse_mkdir(struct inode *dir, struct dentry *entry, int mode) - { - struct fuse_mkdir_in inarg; - struct fuse_conn *fc = get_fuse_conn(dir); -- struct fuse_req *req = fuse_get_req(fc); -+ struct fuse_req *req; -+ -+ FUSE_MIGHT_FREEZE(dir->i_sb, "fuse_mkdir"); -+ -+ req = fuse_get_req(fc); - if (IS_ERR(req)) - return PTR_ERR(req); - -@@ -611,7 +628,11 @@ static int fuse_symlink(struct inode *dir, struct dentry *entry, - { - struct fuse_conn *fc = get_fuse_conn(dir); - unsigned len = strlen(link) + 1; -- struct fuse_req *req = fuse_get_req(fc); -+ struct fuse_req *req; -+ -+ FUSE_MIGHT_FREEZE(dir->i_sb, "fuse_symlink"); -+ -+ req = fuse_get_req(fc); - if (IS_ERR(req)) - return PTR_ERR(req); - -@@ -628,7 +649,11 @@ static int fuse_unlink(struct inode *dir, struct dentry *entry) - { - int err; - struct fuse_conn *fc = get_fuse_conn(dir); -- struct fuse_req *req = fuse_get_req(fc); -+ struct fuse_req *req; -+ -+ FUSE_MIGHT_FREEZE(dir->i_sb, "fuse_unlink"); -+ -+ req = fuse_get_req(fc); - if (IS_ERR(req)) - return PTR_ERR(req); - -@@ -661,7 +686,11 @@ static int fuse_rmdir(struct inode *dir, struct dentry *entry) - { - int err; - struct fuse_conn *fc = get_fuse_conn(dir); -- struct fuse_req *req = fuse_get_req(fc); -+ struct fuse_req *req; -+ -+ FUSE_MIGHT_FREEZE(dir->i_sb, "fuse_rmdir"); -+ -+ req = fuse_get_req(fc); - if (IS_ERR(req)) - return PTR_ERR(req); - -diff --git a/fs/fuse/file.c b/fs/fuse/file.c -index a9f5e13..4647e11 100644 ---- a/fs/fuse/file.c -+++ b/fs/fuse/file.c -@@ -7,11 +7,13 @@ - */ - - #include "fuse_i.h" -+#include "fuse.h" - - #include - #include - #include - #include -+#include - #include - - static const struct file_operations fuse_direct_io_file_operations; -@@ -109,6 +111,8 @@ int fuse_do_open(struct fuse_conn *fc, u64 nodeid, struct file *file, - int err; - int opcode = isdir ? FUSE_OPENDIR : FUSE_OPEN; - -+ FUSE_MIGHT_FREEZE(file->f_path.dentry->d_inode->i_sb, "fuse_send_open"); -+ - ff = fuse_file_alloc(fc); - if (!ff) - return -ENOMEM; -@@ -316,6 +320,8 @@ static int fuse_flush(struct file *file, fl_owner_t id) - if (fc->no_flush) - return 0; - -+ FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_flush"); -+ - req = fuse_get_req_nofail(fc, file); - memset(&inarg, 0, sizeof(inarg)); - inarg.fh = ff->fh; -@@ -367,6 +373,8 @@ int fuse_fsync_common(struct file *file, struct dentry *de, int datasync, - if ((!isdir && fc->no_fsync) || (isdir && fc->no_fsyncdir)) - return 0; - -+ FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_fsync_common"); -+ - /* - * Start writeback against all dirty pages of the inode, then - * wait for all outstanding writes, before sending the FSYNC -@@ -474,6 +482,8 @@ static int fuse_readpage(struct file *file, struct page *page) - if (is_bad_inode(inode)) - goto out; - -+ FUSE_MIGHT_FREEZE(file->f_mapping->host->i_sb, "fuse_readpage"); -+ - /* - * Page writeback can extend beyond the liftime of the - * page-cache page, so make sure we read a properly synced -@@ -576,6 +586,9 @@ static int fuse_readpages_fill(void *_data, struct page *page) - struct inode *inode = data->inode; - struct fuse_conn *fc = get_fuse_conn(inode); - -+ FUSE_MIGHT_FREEZE(data->file->f_mapping->host->i_sb, -+ "fuse_readpages_fill"); -+ - fuse_wait_on_page_writeback(inode, page->index); - - if (req->num_pages && -@@ -606,6 +619,8 @@ static int fuse_readpages(struct file *file, struct address_space *mapping, - if (is_bad_inode(inode)) - goto out; - -+ FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_readpages"); -+ - data.file = file; - data.inode = inode; - data.req = fuse_get_req(fc); -@@ -719,6 +734,8 @@ static int fuse_buffered_write(struct file *file, struct inode *inode, - if (is_bad_inode(inode)) - return -EIO; - -+ FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_buffered_write"); -+ - /* - * Make sure writepages on the same page are not mixed up with - * plain writes. -@@ -878,6 +895,8 @@ static ssize_t fuse_perform_write(struct file *file, - struct fuse_req *req; - ssize_t count; - -+ FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_perform_write"); -+ - req = fuse_get_req(fc); - if (IS_ERR(req)) { - err = PTR_ERR(req); -@@ -1025,6 +1044,8 @@ ssize_t fuse_direct_io(struct file *file, const char __user *buf, - ssize_t res = 0; - struct fuse_req *req; - -+ FUSE_MIGHT_FREEZE(file->f_mapping->host->i_sb, "fuse_direct_io"); -+ - req = fuse_get_req(fc); - if (IS_ERR(req)) - return PTR_ERR(req); -@@ -1412,6 +1433,8 @@ static int fuse_getlk(struct file *file, struct file_lock *fl) - struct fuse_lk_out outarg; - int err; - -+ FUSE_MIGHT_FREEZE(file->f_mapping->host->i_sb, "fuse_getlk"); -+ - req = fuse_get_req(fc); - if (IS_ERR(req)) - return PTR_ERR(req); -@@ -1447,6 +1470,8 @@ static int fuse_setlk(struct file *file, struct file_lock *fl, int flock) - if (fl->fl_flags & FL_CLOSE) - return 0; - -+ FUSE_MIGHT_FREEZE(file->f_mapping->host->i_sb, "fuse_setlk"); -+ - req = fuse_get_req(fc); - if (IS_ERR(req)) - return PTR_ERR(req); -@@ -1513,6 +1538,8 @@ static sector_t fuse_bmap(struct address_space *mapping, sector_t block) - if (!inode->i_sb->s_bdev || fc->no_bmap) - return 0; - -+ FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_bmap"); -+ - req = fuse_get_req(fc); - if (IS_ERR(req)) - return 0; -diff --git a/fs/fuse/fuse.h b/fs/fuse/fuse.h -new file mode 100644 -index 0000000..170e49a ---- /dev/null -+++ b/fs/fuse/fuse.h -@@ -0,0 +1,13 @@ -+#define FUSE_MIGHT_FREEZE(superblock, desc) \ -+do { \ -+ int printed = 0; \ -+ while (superblock->s_frozen != SB_UNFROZEN) { \ -+ if (!printed) { \ -+ printk(KERN_INFO "%d frozen in " desc ".\n", \ -+ current->pid); \ -+ printed = 1; \ -+ } \ -+ try_to_freeze(); \ -+ yield(); \ -+ } \ -+} while (0) -diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c -index 1a822ce..9b69d61 100644 ---- a/fs/fuse/inode.c -+++ b/fs/fuse/inode.c -@@ -1062,7 +1062,7 @@ static void fuse_kill_sb_anon(struct super_block *sb) - static struct file_system_type fuse_fs_type = { - .owner = THIS_MODULE, - .name = "fuse", -- .fs_flags = FS_HAS_SUBTYPE, -+ .fs_flags = FS_HAS_SUBTYPE | FS_IS_FUSE, - .get_sb = fuse_get_sb, - .kill_sb = fuse_kill_sb_anon, - }; -@@ -1094,7 +1094,7 @@ static struct file_system_type fuseblk_fs_type = { - .name = "fuseblk", - .get_sb = fuse_get_sb_blk, - .kill_sb = fuse_kill_sb_blk, -- .fs_flags = FS_REQUIRES_DEV | FS_HAS_SUBTYPE, -+ .fs_flags = FS_REQUIRES_DEV | FS_HAS_SUBTYPE | FS_IS_FUSE, - }; - - static inline int register_fuseblk(void) -diff --git a/fs/namei.c b/fs/namei.c -index a4855af..3d57581 100644 ---- a/fs/namei.c -+++ b/fs/namei.c -@@ -2268,6 +2268,8 @@ int vfs_unlink(struct inode *dir, struct dentry *dentry) - if (!dir->i_op->unlink) - return -EPERM; - -+ vfs_check_frozen(dir->i_sb, SB_FREEZE_WRITE); -+ - vfs_dq_init(dir); - - mutex_lock(&dentry->d_inode->i_mutex); -diff --git a/fs/super.c b/fs/super.c -index aff046b..affb662 100644 ---- a/fs/super.c -+++ b/fs/super.c -@@ -42,6 +42,8 @@ - - - LIST_HEAD(super_blocks); -+EXPORT_SYMBOL_GPL(super_blocks); -+ - DEFINE_SPINLOCK(sb_lock); - - /** -diff --git a/include/linux/Kbuild b/include/linux/Kbuild -index 756f831..9953b39 100644 ---- a/include/linux/Kbuild -+++ b/include/linux/Kbuild -@@ -213,6 +213,7 @@ unifdef-y += filter.h - unifdef-y += flat.h - unifdef-y += futex.h - unifdef-y += fs.h -+unifdef-y += freezer.h - unifdef-y += gameport.h - unifdef-y += generic_serial.h - unifdef-y += hdlcdrv.h -diff --git a/include/linux/bio.h b/include/linux/bio.h -index 7fc5606..07e9b97 100644 ---- a/include/linux/bio.h -+++ b/include/linux/bio.h -@@ -175,8 +175,11 @@ enum bio_rw_flags { - BIO_RW_META, - BIO_RW_DISCARD, - BIO_RW_NOIDLE, -+ BIO_RW_TUXONICE, - }; - -+extern int trap_non_toi_io; -+ - /* - * First four bits must match between bio->bi_rw and rq->cmd_flags, make - * that explicit here. -diff --git a/include/linux/freezer.h b/include/linux/freezer.h -index 5a361f8..a66f2a9 100644 ---- a/include/linux/freezer.h -+++ b/include/linux/freezer.h -@@ -121,6 +121,19 @@ static inline void set_freezable(void) - current->flags &= ~PF_NOFREEZE; - } - -+extern int freezer_state; -+#define FREEZER_OFF 0 -+#define FREEZER_FILESYSTEMS_FROZEN 1 -+#define FREEZER_USERSPACE_FROZEN 2 -+#define FREEZER_FULLY_ON 3 -+ -+static inline int freezer_is_on(void) -+{ -+ return freezer_state == FREEZER_FULLY_ON; -+} -+ -+extern void thaw_kernel_threads(void); -+ - /* - * Tell the freezer that the current task should be frozen by it and that it - * should send a fake signal to the task to freeze it. -@@ -172,6 +185,8 @@ static inline int freeze_processes(void) { BUG(); return 0; } - static inline void thaw_processes(void) {} - - static inline int try_to_freeze(void) { return 0; } -+static inline int freezer_is_on(void) { return 0; } -+static inline void thaw_kernel_threads(void) { } - - static inline void freezer_do_not_count(void) {} - static inline void freezer_count(void) {} -diff --git a/include/linux/fs.h b/include/linux/fs.h -index ebb1cd5..e30e318 100644 ---- a/include/linux/fs.h -+++ b/include/linux/fs.h -@@ -173,6 +173,7 @@ struct inodes_stat_t { - #define FS_REQUIRES_DEV 1 - #define FS_BINARY_MOUNTDATA 2 - #define FS_HAS_SUBTYPE 4 -+#define FS_IS_FUSE 8 /* Fuse filesystem - bdev freeze these too */ - #define FS_REVAL_DOT 16384 /* Check the paths ".", ".." for staleness */ - #define FS_RENAME_DOES_D_MOVE 32768 /* FS will handle d_move() - * during rename() internally. -@@ -206,6 +207,7 @@ struct inodes_stat_t { - #define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */ - #define MS_I_VERSION (1<<23) /* Update inode I_version field */ - #define MS_STRICTATIME (1<<24) /* Always perform atime updates */ -+#define MS_FROZEN (1<<25) /* Frozen by freeze_filesystems() */ - #define MS_ACTIVE (1<<30) - #define MS_NOUSER (1<<31) - -@@ -232,6 +234,8 @@ struct inodes_stat_t { - #define S_NOCMTIME 128 /* Do not update file c/mtime */ - #define S_SWAPFILE 256 /* Do not truncate: swapon got its bmaps */ - #define S_PRIVATE 512 /* Inode is fs-internal */ -+#define S_ATOMIC_COPY 1024 /* Pages mapped with this inode need to be -+ atomically copied (gem) */ - - /* - * Note that nosuid etc flags are inode-specific: setting some file-system -@@ -379,6 +383,7 @@ struct inodes_stat_t { - #include - #include - #include -+#include - - #include - #include -@@ -1391,8 +1396,11 @@ enum { - SB_FREEZE_TRANS = 2, - }; - --#define vfs_check_frozen(sb, level) \ -- wait_event((sb)->s_wait_unfrozen, ((sb)->s_frozen < (level))) -+#define vfs_check_frozen(sb, level) do { \ -+ freezer_do_not_count(); \ -+ wait_event((sb)->s_wait_unfrozen, ((sb)->s_frozen < (level))); \ -+ freezer_count(); \ -+} while (0) - - #define get_fs_excl() atomic_inc(¤t->fs_excl) - #define put_fs_excl() atomic_dec(¤t->fs_excl) -@@ -1947,6 +1955,13 @@ extern struct super_block *freeze_bdev(struct block_device *); - extern void emergency_thaw_all(void); - extern int thaw_bdev(struct block_device *bdev, struct super_block *sb); - extern int fsync_bdev(struct block_device *); -+extern int fsync_super(struct super_block *); -+extern int fsync_no_super(struct block_device *); -+#define FS_FREEZER_FUSE 1 -+#define FS_FREEZER_NORMAL 2 -+#define FS_FREEZER_ALL (FS_FREEZER_FUSE | FS_FREEZER_NORMAL) -+void freeze_filesystems(int which); -+void thaw_filesystems(int which); - #else - static inline void bd_forget(struct inode *inode) {} - static inline int sync_blockdev(struct block_device *bdev) { return 0; } -diff --git a/include/linux/mm.h b/include/linux/mm.h -index 60c467b..1e722c2 100644 ---- a/include/linux/mm.h -+++ b/include/linux/mm.h -@@ -97,6 +97,7 @@ extern unsigned int kobjsize(const void *objp); - #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */ - #define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */ - #define VM_MAPPED_COPY 0x01000000 /* T if mapped copy of data (nommu mmap) */ -+#define VM_ATOMIC_COPY 0x01000000 /* TOI should do atomic copy (mmu) */ - #define VM_INSERTPAGE 0x02000000 /* The vma has had "vm_insert_page()" done on it */ - #define VM_ALWAYSDUMP 0x04000000 /* Always include in core dumps */ - -@@ -1309,6 +1310,7 @@ int drop_caches_sysctl_handler(struct ctl_table *, int, - void __user *, size_t *, loff_t *); - unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask, - unsigned long lru_pages); -+void drop_pagecache(void); - - #ifndef CONFIG_MMU - #define randomize_va_space 0 -diff --git a/include/linux/netlink.h b/include/linux/netlink.h -index fde27c0..0d86cc7 100644 ---- a/include/linux/netlink.h -+++ b/include/linux/netlink.h -@@ -24,6 +24,8 @@ - /* leave room for NETLINK_DM (DM Events) */ - #define NETLINK_SCSITRANSPORT 18 /* SCSI Transports */ - #define NETLINK_ECRYPTFS 19 -+#define NETLINK_TOI_USERUI 20 /* TuxOnIce's userui */ -+#define NETLINK_TOI_USM 21 /* Userspace storage manager */ - - #define MAX_LINKS 32 - -diff --git a/include/linux/suspend.h b/include/linux/suspend.h -index 5e781d8..a1c07f3 100644 ---- a/include/linux/suspend.h -+++ b/include/linux/suspend.h -@@ -329,4 +329,70 @@ static inline void unlock_system_sleep(void) - } - #endif - -+enum { -+ TOI_CAN_HIBERNATE, -+ TOI_CAN_RESUME, -+ TOI_RESUME_DEVICE_OK, -+ TOI_NORESUME_SPECIFIED, -+ TOI_SANITY_CHECK_PROMPT, -+ TOI_CONTINUE_REQ, -+ TOI_RESUMED_BEFORE, -+ TOI_BOOT_TIME, -+ TOI_NOW_RESUMING, -+ TOI_IGNORE_LOGLEVEL, -+ TOI_TRYING_TO_RESUME, -+ TOI_LOADING_ALT_IMAGE, -+ TOI_STOP_RESUME, -+ TOI_IO_STOPPED, -+ TOI_NOTIFIERS_PREPARE, -+ TOI_CLUSTER_MODE, -+ TOI_BOOT_KERNEL, -+}; -+ -+#ifdef CONFIG_TOI -+ -+/* Used in init dir files */ -+extern unsigned long toi_state; -+#define set_toi_state(bit) (set_bit(bit, &toi_state)) -+#define clear_toi_state(bit) (clear_bit(bit, &toi_state)) -+#define test_toi_state(bit) (test_bit(bit, &toi_state)) -+extern int toi_running; -+ -+#define test_action_state(bit) (test_bit(bit, &toi_bkd.toi_action)) -+extern int try_tuxonice_hibernate(void); -+ -+#else /* !CONFIG_TOI */ -+ -+#define toi_state (0) -+#define set_toi_state(bit) do { } while (0) -+#define clear_toi_state(bit) do { } while (0) -+#define test_toi_state(bit) (0) -+#define toi_running (0) -+ -+static inline int try_tuxonice_hibernate(void) { return 0; } -+#define test_action_state(bit) (0) -+ -+#endif /* CONFIG_TOI */ -+ -+#ifdef CONFIG_HIBERNATION -+#ifdef CONFIG_TOI -+extern void try_tuxonice_resume(void); -+#else -+#define try_tuxonice_resume() do { } while (0) -+#endif -+ -+extern int resume_attempted; -+extern int software_resume(void); -+ -+static inline void check_resume_attempted(void) -+{ -+ if (resume_attempted) -+ return; -+ -+ software_resume(); -+} -+#else -+#define check_resume_attempted() do { } while (0) -+#define resume_attempted (0) -+#endif - #endif /* _LINUX_SUSPEND_H */ -diff --git a/include/linux/swap.h b/include/linux/swap.h -index a2602a8..06c4630 100644 ---- a/include/linux/swap.h -+++ b/include/linux/swap.h -@@ -196,6 +196,7 @@ struct swap_list_t { - extern unsigned long totalram_pages; - extern unsigned long totalreserve_pages; - extern unsigned int nr_free_buffer_pages(void); -+extern unsigned int nr_unallocated_buffer_pages(void); - extern unsigned int nr_free_pagecache_pages(void); - - /* Definition of global_page_state not available yet */ -@@ -325,8 +326,10 @@ extern void swapcache_free(swp_entry_t, struct page *page); - extern int free_swap_and_cache(swp_entry_t); - extern int swap_type_of(dev_t, sector_t, struct block_device **); - extern unsigned int count_swap_pages(int, int); -+extern sector_t map_swap_entry(swp_entry_t entry, struct block_device **); - extern sector_t map_swap_page(struct page *, struct block_device **); - extern sector_t swapdev_block(int, pgoff_t); -+extern struct swap_info_struct *get_swap_info_struct(unsigned); - extern int reuse_swap_page(struct page *); - extern int try_to_free_swap(struct page *); - struct backing_dev_info; -diff --git a/include/linux/uuid.h b/include/linux/uuid.h -new file mode 100644 -index 0000000..a968f0f ---- /dev/null -+++ b/include/linux/uuid.h -@@ -0,0 +1,18 @@ -+#include -+ -+struct hd_struct; -+struct block_device; -+ -+struct fs_info { -+ char uuid[16]; -+ char *last_mount; -+ int last_mount_size; -+}; -+ -+int part_matches_uuid(struct hd_struct *part, const char *uuid); -+dev_t blk_lookup_uuid(const char *uuid); -+struct fs_info *fs_info_from_block_dev(struct block_device *bdev); -+void free_fs_info(struct fs_info *fs_info); -+int bdev_matches_key(struct block_device *bdev, const char *key); -+struct block_device *next_bdev_of_type(struct block_device *last, -+ const char *key); -diff --git a/init/do_mounts.c b/init/do_mounts.c -index bb008d0..5273dc9 100644 ---- a/init/do_mounts.c -+++ b/init/do_mounts.c -@@ -143,6 +143,7 @@ fail: - done: - return res; - } -+EXPORT_SYMBOL_GPL(name_to_dev_t); - - static int __init root_dev_setup(char *line) - { -@@ -413,6 +414,8 @@ void __init prepare_namespace(void) - if (is_floppy && rd_doload && rd_load_disk(0)) - ROOT_DEV = Root_RAM0; - -+ check_resume_attempted(); -+ - mount_root(); - out: - devtmpfs_mount("dev"); -diff --git a/init/do_mounts_initrd.c b/init/do_mounts_initrd.c -index 614241b..f3ea292 100644 ---- a/init/do_mounts_initrd.c -+++ b/init/do_mounts_initrd.c -@@ -6,6 +6,7 @@ - #include - #include - #include -+#include - #include - - #include "do_mounts.h" -@@ -68,6 +69,11 @@ static void __init handle_initrd(void) - - current->flags &= ~PF_FREEZER_SKIP; - -+ if (!resume_attempted) -+ printk(KERN_ERR "TuxOnIce: No attempt was made to resume from " -+ "any image that might exist.\n"); -+ clear_toi_state(TOI_BOOT_TIME); -+ - /* move initrd to rootfs' /old */ - sys_fchdir(old_fd); - sys_mount("/", ".", NULL, MS_MOVE, NULL); -diff --git a/init/main.c b/init/main.c -index 4cb47a1..36eac80 100644 ---- a/init/main.c -+++ b/init/main.c -@@ -116,6 +116,7 @@ extern void softirq_init(void); - char __initdata boot_command_line[COMMAND_LINE_SIZE]; - /* Untouched saved command line (eg. for /proc) */ - char *saved_command_line; -+EXPORT_SYMBOL_GPL(saved_command_line); - /* Command line for parameter parsing */ - static char *static_command_line; - -diff --git a/kernel/cpu.c b/kernel/cpu.c -index 677f253..aad27c8 100644 ---- a/kernel/cpu.c -+++ b/kernel/cpu.c -@@ -402,6 +402,7 @@ int disable_nonboot_cpus(void) - stop_machine_destroy(); - return error; - } -+EXPORT_SYMBOL_GPL(disable_nonboot_cpus); - - void __weak arch_enable_nonboot_cpus_begin(void) - { -@@ -440,6 +441,7 @@ void __ref enable_nonboot_cpus(void) - out: - cpu_maps_update_done(); - } -+EXPORT_SYMBOL_GPL(enable_nonboot_cpus); - - static int alloc_frozen_cpus(void) - { -diff --git a/kernel/fork.c b/kernel/fork.c -index f88bd98..17bbf09 100644 ---- a/kernel/fork.c -+++ b/kernel/fork.c -@@ -86,6 +86,7 @@ int max_threads; /* tunable limit on nr_threads */ - DEFINE_PER_CPU(unsigned long, process_counts) = 0; - - __cacheline_aligned DEFINE_RWLOCK(tasklist_lock); /* outer */ -+EXPORT_SYMBOL_GPL(tasklist_lock); - - int nr_processes(void) - { -diff --git a/kernel/kmod.c b/kernel/kmod.c -index bf0e231..de63918 100644 ---- a/kernel/kmod.c -+++ b/kernel/kmod.c -@@ -326,6 +326,7 @@ int usermodehelper_disable(void) - usermodehelper_disabled = 0; - return -EAGAIN; - } -+EXPORT_SYMBOL_GPL(usermodehelper_disable); - - /** - * usermodehelper_enable - allow new helpers to be started again -@@ -334,6 +335,7 @@ void usermodehelper_enable(void) - { - usermodehelper_disabled = 0; - } -+EXPORT_SYMBOL_GPL(usermodehelper_enable); - - static void helper_lock(void) - { -diff --git a/kernel/pid.c b/kernel/pid.c -index 2e17c9c..f83eb67 100644 ---- a/kernel/pid.c -+++ b/kernel/pid.c -@@ -382,6 +382,7 @@ struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns) - { - return pid_task(find_pid_ns(nr, ns), PIDTYPE_PID); - } -+EXPORT_SYMBOL_GPL(find_task_by_pid_ns); - - struct task_struct *find_task_by_vpid(pid_t vnr) - { -diff --git a/kernel/power/Kconfig b/kernel/power/Kconfig -index 91e09d3..733ff64 100644 ---- a/kernel/power/Kconfig -+++ b/kernel/power/Kconfig -@@ -38,6 +38,13 @@ config CAN_PM_TRACE - def_bool y - depends on PM_DEBUG && PM_SLEEP && EXPERIMENTAL - -+config FS_FREEZER_DEBUG -+ bool "Filesystem freezer debugging" -+ depends on PM_DEBUG -+ default n -+ ---help--- -+ This option enables debugging of the filesystem freezing code. -+ - config PM_TRACE - bool - help -@@ -183,6 +190,238 @@ config PM_STD_PARTITION - suspended image to. It will simply pick the first available swap - device. - -+menuconfig TOI_CORE -+ tristate "Enhanced Hibernation (TuxOnIce)" -+ depends on HIBERNATION -+ default y -+ ---help--- -+ TuxOnIce is the 'new and improved' suspend support. -+ -+ See the TuxOnIce home page (tuxonice.net) -+ for FAQs, HOWTOs and other documentation. -+ -+ comment "Image Storage (you need at least one allocator)" -+ depends on TOI_CORE -+ -+ config TOI_FILE -+ tristate "File Allocator" -+ depends on TOI_CORE -+ default y -+ ---help--- -+ This option enables support for storing an image in a -+ simple file. You might want this if your swap is -+ sometimes full enough that you don't have enough spare -+ space to store an image. -+ -+ config TOI_SWAP -+ tristate "Swap Allocator" -+ depends on TOI_CORE && SWAP -+ default y -+ ---help--- -+ This option enables support for storing an image in your -+ swap space. -+ -+ comment "General Options" -+ depends on TOI_CORE -+ -+ config TOI_CRYPTO -+ tristate "Compression support" -+ depends on TOI_CORE && CRYPTO -+ default y -+ ---help--- -+ This option adds support for using cryptoapi compression -+ algorithms. Compression is particularly useful as it can -+ more than double your suspend and resume speed (depending -+ upon how well your image compresses). -+ -+ You probably want this, so say Y here. -+ -+ comment "No compression support available without Cryptoapi support." -+ depends on TOI_CORE && !CRYPTO -+ -+ config TOI_USERUI -+ tristate "Userspace User Interface support" -+ depends on TOI_CORE && NET && (VT || SERIAL_CONSOLE) -+ default y -+ ---help--- -+ This option enabled support for a userspace based user interface -+ to TuxOnIce, which allows you to have a nice display while suspending -+ and resuming, and also enables features such as pressing escape to -+ cancel a cycle or interactive debugging. -+ -+ config TOI_USERUI_DEFAULT_PATH -+ string "Default userui program location" -+ default "/usr/local/sbin/tuxoniceui_text" -+ depends on TOI_USERUI -+ ---help--- -+ This entry allows you to specify a default path to the userui binary. -+ -+ config TOI_KEEP_IMAGE -+ bool "Allow Keep Image Mode" -+ depends on TOI_CORE -+ ---help--- -+ This option allows you to keep and image and reuse it. It is intended -+ __ONLY__ for use with systems where all filesystems are mounted read- -+ only (kiosks, for example). To use it, compile this option in and boot -+ normally. Set the KEEP_IMAGE flag in /sys/power/tuxonice and suspend. -+ When you resume, the image will not be removed. You will be unable to turn -+ off swap partitions (assuming you are using the swap allocator), but future -+ suspends simply do a power-down. The image can be updated using the -+ kernel command line parameter suspend_act= to turn off the keep image -+ bit. Keep image mode is a little less user friendly on purpose - it -+ should not be used without thought! -+ -+ config TOI_REPLACE_SWSUSP -+ bool "Replace swsusp by default" -+ default y -+ depends on TOI_CORE -+ ---help--- -+ TuxOnIce can replace swsusp. This option makes that the default state, -+ requiring you to echo 0 > /sys/power/tuxonice/replace_swsusp if you want -+ to use the vanilla kernel functionality. Note that your initrd/ramfs will -+ need to do this before trying to resume, too. -+ With overriding swsusp enabled, echoing disk to /sys/power/state will -+ start a TuxOnIce cycle. If resume= doesn't specify an allocator and both -+ the swap and file allocators are compiled in, the swap allocator will be -+ used by default. -+ -+ config TOI_IGNORE_LATE_INITCALL -+ bool "Wait for initrd/ramfs to run, by default" -+ default n -+ depends on TOI_CORE -+ ---help--- -+ When booting, TuxOnIce can check for an image and start to resume prior -+ to any initrd/ramfs running (via a late initcall). -+ -+ If you don't have an initrd/ramfs, this is what you want to happen - -+ otherwise you won't be able to safely resume. You should set this option -+ to 'No'. -+ -+ If, however, you want your initrd/ramfs to run anyway before resuming, -+ you need to tell TuxOnIce to ignore that earlier opportunity to resume. -+ This can be done either by using this compile time option, or by -+ overriding this option with the boot-time parameter toi_initramfs_resume_only=1. -+ -+ Note that if TuxOnIce can't resume at the earlier opportunity, the -+ value of this option won't matter - the initramfs/initrd (if any) will -+ run anyway. -+ -+ menuconfig TOI_CLUSTER -+ tristate "Cluster support" -+ default n -+ depends on TOI_CORE && NET && BROKEN -+ ---help--- -+ Support for linking multiple machines in a cluster so that they suspend -+ and resume together. -+ -+ config TOI_DEFAULT_CLUSTER_INTERFACE -+ string "Default cluster interface" -+ depends on TOI_CLUSTER -+ ---help--- -+ The default interface on which to communicate with other nodes in -+ the cluster. -+ -+ If no value is set here, cluster support will be disabled by default. -+ -+ config TOI_DEFAULT_CLUSTER_KEY -+ string "Default cluster key" -+ default "Default" -+ depends on TOI_CLUSTER -+ ---help--- -+ The default key used by this node. All nodes in the same cluster -+ have the same key. Multiple clusters may coexist on the same lan -+ by using different values for this key. -+ -+ config TOI_CLUSTER_IMAGE_TIMEOUT -+ int "Timeout when checking for image" -+ default 15 -+ depends on TOI_CLUSTER -+ ---help--- -+ Timeout (seconds) before continuing to boot when waiting to see -+ whether other nodes might have an image. Set to -1 to wait -+ indefinitely. In WAIT_UNTIL_NODES is non zero, we might continue -+ booting sooner than this timeout. -+ -+ config TOI_CLUSTER_WAIT_UNTIL_NODES -+ int "Nodes without image before continuing" -+ default 0 -+ depends on TOI_CLUSTER -+ ---help--- -+ When booting and no image is found, we wait to see if other nodes -+ have an image before continuing to boot. This value lets us -+ continue after seeing a certain number of nodes without an image, -+ instead of continuing to wait for the timeout. Set to 0 to only -+ use the timeout. -+ -+ config TOI_DEFAULT_CLUSTER_PRE_HIBERNATE -+ string "Default pre-hibernate script" -+ depends on TOI_CLUSTER -+ ---help--- -+ The default script to be called when starting to hibernate. -+ -+ config TOI_DEFAULT_CLUSTER_POST_HIBERNATE -+ string "Default post-hibernate script" -+ depends on TOI_CLUSTER -+ ---help--- -+ The default script to be called after resuming from hibernation. -+ -+ config TOI_DEFAULT_WAIT -+ int "Default waiting time for emergency boot messages" -+ default "25" -+ range -1 32768 -+ depends on TOI_CORE -+ help -+ TuxOnIce can display warnings very early in the process of resuming, -+ if (for example) it appears that you have booted a kernel that doesn't -+ match an image on disk. It can then give you the opportunity to either -+ continue booting that kernel, or reboot the machine. This option can be -+ used to control how long to wait in such circumstances. -1 means wait -+ forever. 0 means don't wait at all (do the default action, which will -+ generally be to continue booting and remove the image). Values of 1 or -+ more indicate a number of seconds (up to 255) to wait before doing the -+ default. -+ -+ config TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE -+ int "Default extra pages allowance" -+ default "2000" -+ range 500 32768 -+ depends on TOI_CORE -+ help -+ This value controls the default for the allowance TuxOnIce makes for -+ drivers to allocate extra memory during the atomic copy. The default -+ value of 2000 will be okay in most cases. If you are using -+ DRI, the easiest way to find what value to use is to try to hibernate -+ and look at how many pages were actually needed in the sysfs entry -+ /sys/power/tuxonice/debug_info (first number on the last line), adding -+ a little extra because the value is not always the same. -+ -+ config TOI_CHECKSUM -+ bool "Checksum pageset2" -+ default n -+ depends on TOI_CORE -+ select CRYPTO -+ select CRYPTO_ALGAPI -+ select CRYPTO_MD4 -+ ---help--- -+ Adds support for checksumming pageset2 pages, to ensure you really get an -+ atomic copy. Since some filesystems (XFS especially) change metadata even -+ when there's no other activity, we need this to check for pages that have -+ been changed while we were saving the page cache. If your debugging output -+ always says no pages were resaved, you may be able to safely disable this -+ option. -+ -+config TOI -+ bool -+ depends on TOI_CORE!=n -+ default y -+ -+config TOI_EXPORTS -+ bool -+ depends on TOI_SWAP=m || TOI_FILE=m || \ -+ TOI_CRYPTO=m || TOI_CLUSTER=m || \ -+ TOI_USERUI=m || TOI_CORE=m -+ default y -+ - config APM_EMULATION - tristate "Advanced Power Management Emulation" - depends on PM && SYS_SUPPORTS_APM_EMULATION -diff --git a/kernel/power/Makefile b/kernel/power/Makefile -index 4319181..18c4733 100644 ---- a/kernel/power/Makefile -+++ b/kernel/power/Makefile -@@ -3,6 +3,35 @@ ifeq ($(CONFIG_PM_DEBUG),y) - EXTRA_CFLAGS += -DDEBUG - endif - -+tuxonice_core-y := tuxonice_modules.o -+ -+obj-$(CONFIG_TOI) += tuxonice_builtin.o -+ -+tuxonice_core-$(CONFIG_PM_DEBUG) += tuxonice_alloc.o -+ -+# Compile these in after allocation debugging, if used. -+ -+tuxonice_core-y += tuxonice_sysfs.o tuxonice_highlevel.o \ -+ tuxonice_io.o tuxonice_pagedir.o tuxonice_prepare_image.o \ -+ tuxonice_extent.o tuxonice_pageflags.o tuxonice_ui.o \ -+ tuxonice_power_off.o tuxonice_atomic_copy.o -+ -+tuxonice_core-$(CONFIG_TOI_CHECKSUM) += tuxonice_checksum.o -+ -+tuxonice_core-$(CONFIG_NET) += tuxonice_storage.o tuxonice_netlink.o -+ -+obj-$(CONFIG_TOI_CORE) += tuxonice_core.o -+obj-$(CONFIG_TOI_CRYPTO) += tuxonice_compress.o -+ -+tuxonice_bio-y := tuxonice_bio_core.o tuxonice_bio_chains.o \ -+ tuxonice_bio_signature.o -+ -+obj-$(CONFIG_TOI_SWAP) += tuxonice_bio.o tuxonice_swap.o -+obj-$(CONFIG_TOI_FILE) += tuxonice_bio.o tuxonice_file.o -+obj-$(CONFIG_TOI_CLUSTER) += tuxonice_cluster.o -+ -+obj-$(CONFIG_TOI_USERUI) += tuxonice_userui.o -+ - obj-$(CONFIG_PM) += main.o - obj-$(CONFIG_PM_SLEEP) += console.o - obj-$(CONFIG_FREEZER) += process.o -diff --git a/kernel/power/console.c b/kernel/power/console.c -index 218e5af..95a6bdc 100644 ---- a/kernel/power/console.c -+++ b/kernel/power/console.c -@@ -24,6 +24,7 @@ int pm_prepare_console(void) - orig_kmsg = vt_kmsg_redirect(SUSPEND_CONSOLE); - return 0; - } -+EXPORT_SYMBOL_GPL(pm_prepare_console); - - void pm_restore_console(void) - { -@@ -32,4 +33,5 @@ void pm_restore_console(void) - vt_kmsg_redirect(orig_kmsg); - } - } -+EXPORT_SYMBOL_GPL(pm_restore_console); - #endif -diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c -index bbfe472..07c550b 100644 ---- a/kernel/power/hibernate.c -+++ b/kernel/power/hibernate.c -@@ -25,11 +25,12 @@ - #include - #include - --#include "power.h" -+#include "tuxonice.h" - - - static int noresume = 0; --static char resume_file[256] = CONFIG_PM_STD_PARTITION; -+char resume_file[256] = CONFIG_PM_STD_PARTITION; -+EXPORT_SYMBOL_GPL(resume_file); - dev_t swsusp_resume_device; - sector_t swsusp_resume_block; - int in_suspend __nosavedata = 0; -@@ -116,55 +117,60 @@ static int hibernation_test(int level) { return 0; } - * hibernation - */ - --static int platform_begin(int platform_mode) -+int platform_begin(int platform_mode) - { - return (platform_mode && hibernation_ops) ? - hibernation_ops->begin() : 0; - } -+EXPORT_SYMBOL_GPL(platform_begin); - - /** - * platform_end - tell the platform driver that we've entered the - * working state - */ - --static void platform_end(int platform_mode) -+void platform_end(int platform_mode) - { - if (platform_mode && hibernation_ops) - hibernation_ops->end(); - } -+EXPORT_SYMBOL_GPL(platform_end); - - /** - * platform_pre_snapshot - prepare the machine for hibernation using the - * platform driver if so configured and return an error code if it fails - */ - --static int platform_pre_snapshot(int platform_mode) -+int platform_pre_snapshot(int platform_mode) - { - return (platform_mode && hibernation_ops) ? - hibernation_ops->pre_snapshot() : 0; - } -+EXPORT_SYMBOL_GPL(platform_pre_snapshot); - - /** - * platform_leave - prepare the machine for switching to the normal mode - * of operation using the platform driver (called with interrupts disabled) - */ - --static void platform_leave(int platform_mode) -+void platform_leave(int platform_mode) - { - if (platform_mode && hibernation_ops) - hibernation_ops->leave(); - } -+EXPORT_SYMBOL_GPL(platform_leave); - - /** - * platform_finish - switch the machine to the normal mode of operation - * using the platform driver (must be called after platform_prepare()) - */ - --static void platform_finish(int platform_mode) -+void platform_finish(int platform_mode) - { - if (platform_mode && hibernation_ops) - hibernation_ops->finish(); - } -+EXPORT_SYMBOL_GPL(platform_finish); - - /** - * platform_pre_restore - prepare the platform for the restoration from a -@@ -172,11 +178,12 @@ static void platform_finish(int platform_mode) - * called, platform_restore_cleanup() must be called. - */ - --static int platform_pre_restore(int platform_mode) -+int platform_pre_restore(int platform_mode) - { - return (platform_mode && hibernation_ops) ? - hibernation_ops->pre_restore() : 0; - } -+EXPORT_SYMBOL_GPL(platform_pre_restore); - - /** - * platform_restore_cleanup - switch the platform to the normal mode of -@@ -185,22 +192,24 @@ static int platform_pre_restore(int platform_mode) - * regardless of the result of platform_pre_restore(). - */ - --static void platform_restore_cleanup(int platform_mode) -+void platform_restore_cleanup(int platform_mode) - { - if (platform_mode && hibernation_ops) - hibernation_ops->restore_cleanup(); - } -+EXPORT_SYMBOL_GPL(platform_restore_cleanup); - - /** - * platform_recover - recover the platform from a failure to suspend - * devices. - */ - --static void platform_recover(int platform_mode) -+void platform_recover(int platform_mode) - { - if (platform_mode && hibernation_ops && hibernation_ops->recover) - hibernation_ops->recover(); - } -+EXPORT_SYMBOL_GPL(platform_recover); - - /** - * swsusp_show_speed - print the time elapsed between two events. -@@ -525,6 +534,7 @@ int hibernation_platform_enter(void) - - return error; - } -+EXPORT_SYMBOL_GPL(hibernation_platform_enter); - - /** - * power_down - Shut the machine down for hibernation. -@@ -576,6 +586,9 @@ int hibernate(void) - { - int error; - -+ if (test_action_state(TOI_REPLACE_SWSUSP)) -+ return try_tuxonice_hibernate(); -+ - mutex_lock(&pm_mutex); - /* The snapshot device should not be opened while we're running */ - if (!atomic_add_unless(&snapshot_device_available, -1, 0)) { -@@ -656,11 +669,19 @@ int hibernate(void) - * - */ - --static int software_resume(void) -+int software_resume(void) - { - int error; - unsigned int flags; - -+ resume_attempted = 1; -+ -+ /* -+ * We can't know (until an image header - if any - is loaded), whether -+ * we did override swsusp. We therefore ensure that both are tried. -+ */ -+ try_tuxonice_resume(); -+ - /* - * If the user said "noresume".. bail out early. - */ -@@ -989,6 +1010,7 @@ static int __init resume_offset_setup(char *str) - static int __init noresume_setup(char *str) - { - noresume = 1; -+ set_toi_state(TOI_NORESUME_SPECIFIED); - return 1; - } - -diff --git a/kernel/power/main.c b/kernel/power/main.c -index 0998c71..9509733 100644 ---- a/kernel/power/main.c -+++ b/kernel/power/main.c -@@ -16,6 +16,7 @@ - #include "power.h" - - DEFINE_MUTEX(pm_mutex); -+EXPORT_SYMBOL_GPL(pm_mutex); - - unsigned int pm_flags; - EXPORT_SYMBOL(pm_flags); -@@ -24,7 +25,8 @@ EXPORT_SYMBOL(pm_flags); - - /* Routines for PM-transition notifications */ - --static BLOCKING_NOTIFIER_HEAD(pm_chain_head); -+BLOCKING_NOTIFIER_HEAD(pm_chain_head); -+EXPORT_SYMBOL_GPL(pm_chain_head); - - int register_pm_notifier(struct notifier_block *nb) - { -@@ -43,6 +45,7 @@ int pm_notifier_call_chain(unsigned long val) - return (blocking_notifier_call_chain(&pm_chain_head, val, NULL) - == NOTIFY_BAD) ? -EINVAL : 0; - } -+EXPORT_SYMBOL_GPL(pm_notifier_call_chain); - - #ifdef CONFIG_PM_DEBUG - int pm_test_level = TEST_NONE; -@@ -110,6 +113,7 @@ power_attr(pm_test); - #endif /* CONFIG_PM_SLEEP */ - - struct kobject *power_kobj; -+EXPORT_SYMBOL_GPL(power_kobj); - - /** - * state - control system power state. -diff --git a/kernel/power/power.h b/kernel/power/power.h -index 46c5a26..d8c8f32 100644 ---- a/kernel/power/power.h -+++ b/kernel/power/power.h -@@ -31,8 +31,12 @@ static inline char *check_image_kernel(struct swsusp_info *info) - return arch_hibernation_header_restore(info) ? - "architecture specific data" : NULL; - } -+#else -+extern char *check_image_kernel(struct swsusp_info *info); - #endif /* CONFIG_ARCH_HIBERNATION_HEADER */ -+extern int init_header(struct swsusp_info *info); - -+extern char resume_file[256]; - /* - * Keep some memory free so that I/O operations can succeed without paging - * [Might this be more than 4 MB?] -@@ -49,6 +53,7 @@ static inline char *check_image_kernel(struct swsusp_info *info) - extern int hibernation_snapshot(int platform_mode); - extern int hibernation_restore(int platform_mode); - extern int hibernation_platform_enter(void); -+extern void platform_recover(int platform_mode); - #endif - - extern int pfn_is_nosave(unsigned long); -@@ -63,6 +68,8 @@ static struct kobj_attribute _name##_attr = { \ - .store = _name##_store, \ - } - -+extern struct pbe *restore_pblist; -+ - /* Preferred image size in bytes (default 500 MB) */ - extern unsigned long image_size; - extern int in_suspend; -@@ -236,3 +243,86 @@ static inline void suspend_thaw_processes(void) - { - } - #endif -+ -+extern struct page *saveable_page(struct zone *z, unsigned long p); -+#ifdef CONFIG_HIGHMEM -+extern struct page *saveable_highmem_page(struct zone *z, unsigned long p); -+#else -+static -+inline struct page *saveable_highmem_page(struct zone *z, unsigned long p) -+{ -+ return NULL; -+} -+#endif -+ -+#define PBES_PER_PAGE (PAGE_SIZE / sizeof(struct pbe)) -+extern struct list_head nosave_regions; -+ -+/** -+ * This structure represents a range of page frames the contents of which -+ * should not be saved during the suspend. -+ */ -+ -+struct nosave_region { -+ struct list_head list; -+ unsigned long start_pfn; -+ unsigned long end_pfn; -+}; -+ -+#ifndef PHYS_PFN_OFFSET -+#define PHYS_PFN_OFFSET 0 -+#endif -+ -+#define ZONE_START(thiszone) ((thiszone)->zone_start_pfn - PHYS_PFN_OFFSET) -+ -+#define BM_END_OF_MAP (~0UL) -+ -+#define BM_BITS_PER_BLOCK (PAGE_SIZE * BITS_PER_BYTE) -+ -+struct bm_block { -+ struct list_head hook; /* hook into a list of bitmap blocks */ -+ unsigned long start_pfn; /* pfn represented by the first bit */ -+ unsigned long end_pfn; /* pfn represented by the last bit plus 1 */ -+ unsigned long *data; /* bitmap representing pages */ -+}; -+ -+/* struct bm_position is used for browsing memory bitmaps */ -+ -+struct bm_position { -+ struct bm_block *block; -+ int bit; -+}; -+ -+struct memory_bitmap { -+ struct list_head blocks; /* list of bitmap blocks */ -+ struct linked_page *p_list; /* list of pages used to store zone -+ * bitmap objects and bitmap block -+ * objects -+ */ -+ struct bm_position cur; /* most recently used bit position */ -+ struct bm_position iter; /* most recently used bit position -+ * when iterating over a bitmap. -+ */ -+}; -+ -+extern int memory_bm_create(struct memory_bitmap *bm, gfp_t gfp_mask, -+ int safe_needed); -+extern void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free); -+extern void memory_bm_set_bit(struct memory_bitmap *bm, unsigned long pfn); -+extern void memory_bm_clear_bit(struct memory_bitmap *bm, unsigned long pfn); -+extern int memory_bm_test_bit(struct memory_bitmap *bm, unsigned long pfn); -+extern unsigned long memory_bm_next_pfn(struct memory_bitmap *bm); -+extern void memory_bm_position_reset(struct memory_bitmap *bm); -+extern void memory_bm_clear(struct memory_bitmap *bm); -+extern void memory_bm_copy(struct memory_bitmap *source, -+ struct memory_bitmap *dest); -+extern void memory_bm_dup(struct memory_bitmap *source, -+ struct memory_bitmap *dest); -+ -+#ifdef CONFIG_TOI -+struct toi_module_ops; -+extern int memory_bm_read(struct memory_bitmap *bm, int (*rw_chunk) -+ (int rw, struct toi_module_ops *owner, char *buffer, int buffer_size)); -+extern int memory_bm_write(struct memory_bitmap *bm, int (*rw_chunk) -+ (int rw, struct toi_module_ops *owner, char *buffer, int buffer_size)); -+#endif -diff --git a/kernel/power/process.c b/kernel/power/process.c -index 5ade1bd..e24a702 100644 ---- a/kernel/power/process.c -+++ b/kernel/power/process.c -@@ -15,6 +15,13 @@ - #include - #include - #include -+#include -+ -+int freezer_state; -+EXPORT_SYMBOL_GPL(freezer_state); -+ -+int freezer_sync; -+EXPORT_SYMBOL_GPL(freezer_sync); - - /* - * Timeout for stopping processes -@@ -93,7 +100,8 @@ static int try_to_freeze_tasks(bool sig_only) - do_each_thread(g, p) { - task_lock(p); - if (freezing(p) && !freezer_should_skip(p)) -- printk(KERN_ERR " %s\n", p->comm); -+ printk(KERN_ERR " %s (%d) failed to freeze.\n", -+ p->comm, p->pid); - cancel_freezing(p); - task_unlock(p); - } while_each_thread(g, p); -@@ -113,17 +121,26 @@ int freeze_processes(void) - { - int error; - -- printk("Freezing user space processes ... "); -+ printk(KERN_INFO "Stopping fuse filesystems.\n"); -+ freeze_filesystems(FS_FREEZER_FUSE); -+ freezer_state = FREEZER_FILESYSTEMS_FROZEN; -+ printk(KERN_INFO "Freezing user space processes ... "); - error = try_to_freeze_tasks(true); - if (error) - goto Exit; - printk("done.\n"); - -- printk("Freezing remaining freezable tasks ... "); -+ if (freezer_sync) -+ sys_sync(); -+ printk(KERN_INFO "Stopping normal filesystems.\n"); -+ freeze_filesystems(FS_FREEZER_NORMAL); -+ freezer_state = FREEZER_USERSPACE_FROZEN; -+ printk(KERN_INFO "Freezing remaining freezable tasks ... "); - error = try_to_freeze_tasks(false); - if (error) - goto Exit; - printk("done."); -+ freezer_state = FREEZER_FULLY_ON; - - oom_killer_disable(); - Exit: -@@ -132,6 +149,7 @@ int freeze_processes(void) - - return error; - } -+EXPORT_SYMBOL_GPL(freeze_processes); - - static void thaw_tasks(bool nosig_only) - { -@@ -155,12 +173,39 @@ static void thaw_tasks(bool nosig_only) - - void thaw_processes(void) - { -+ int old_state = freezer_state; -+ -+ if (old_state == FREEZER_OFF) -+ return; -+ -+ freezer_state = FREEZER_OFF; -+ - oom_killer_enable(); - -+ printk(KERN_INFO "Restarting all filesystems ...\n"); -+ thaw_filesystems(FS_FREEZER_ALL); -+ -+ printk(KERN_INFO "Restarting tasks ... "); -+ if (old_state == FREEZER_FULLY_ON) -+ thaw_tasks(true); -+ - printk("Restarting tasks ... "); -- thaw_tasks(true); - thaw_tasks(false); - schedule(); - printk("done.\n"); - } -+EXPORT_SYMBOL_GPL(thaw_processes); - -+void thaw_kernel_threads(void) -+{ -+ freezer_state = FREEZER_USERSPACE_FROZEN; -+ printk(KERN_INFO "Restarting normal filesystems.\n"); -+ thaw_filesystems(FS_FREEZER_NORMAL); -+ thaw_tasks(true); -+} -+ -+/* -+ * It's ugly putting this EXPORT down here, but it's necessary so that it -+ * doesn't matter whether the fs-freezing patch is applied or not. -+ */ -+EXPORT_SYMBOL_GPL(thaw_kernel_threads); -diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c -index 36cb168..7f6da8f 100644 ---- a/kernel/power/snapshot.c -+++ b/kernel/power/snapshot.c -@@ -34,6 +34,8 @@ - #include - - #include "power.h" -+#include "tuxonice_builtin.h" -+#include "tuxonice_pagedir.h" - - static int swsusp_page_is_free(struct page *); - static void swsusp_set_page_forbidden(struct page *); -@@ -53,6 +55,10 @@ unsigned long image_size = 500 * 1024 * 1024; - * directly to their "original" page frames. - */ - struct pbe *restore_pblist; -+EXPORT_SYMBOL_GPL(restore_pblist); -+ -+int resume_attempted; -+EXPORT_SYMBOL_GPL(resume_attempted); - - /* Pointer to an auxiliary buffer (1 page) */ - static void *buffer; -@@ -95,6 +101,9 @@ static void *get_image_page(gfp_t gfp_mask, int safe_needed) - - unsigned long get_safe_page(gfp_t gfp_mask) - { -+ if (toi_running) -+ return toi_get_nonconflicting_page(); -+ - return (unsigned long)get_image_page(gfp_mask, PG_SAFE); - } - -@@ -231,47 +240,22 @@ static void *chain_alloc(struct chain_allocator *ca, unsigned int size) - * the represented memory area. - */ - --#define BM_END_OF_MAP (~0UL) -- --#define BM_BITS_PER_BLOCK (PAGE_SIZE * BITS_PER_BYTE) -- --struct bm_block { -- struct list_head hook; /* hook into a list of bitmap blocks */ -- unsigned long start_pfn; /* pfn represented by the first bit */ -- unsigned long end_pfn; /* pfn represented by the last bit plus 1 */ -- unsigned long *data; /* bitmap representing pages */ --}; -- - static inline unsigned long bm_block_bits(struct bm_block *bb) - { - return bb->end_pfn - bb->start_pfn; - } - --/* strcut bm_position is used for browsing memory bitmaps */ -- --struct bm_position { -- struct bm_block *block; -- int bit; --}; -- --struct memory_bitmap { -- struct list_head blocks; /* list of bitmap blocks */ -- struct linked_page *p_list; /* list of pages used to store zone -- * bitmap objects and bitmap block -- * objects -- */ -- struct bm_position cur; /* most recently used bit position */ --}; -- - /* Functions that operate on memory bitmaps */ - --static void memory_bm_position_reset(struct memory_bitmap *bm) -+void memory_bm_position_reset(struct memory_bitmap *bm) - { - bm->cur.block = list_entry(bm->blocks.next, struct bm_block, hook); - bm->cur.bit = 0; --} - --static void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free); -+ bm->iter.block = list_entry(bm->blocks.next, struct bm_block, hook); -+ bm->iter.bit = 0; -+} -+EXPORT_SYMBOL_GPL(memory_bm_position_reset); - - /** - * create_bm_block_list - create a list of block bitmap objects -@@ -379,7 +363,7 @@ static int create_mem_extents(struct list_head *list, gfp_t gfp_mask) - /** - * memory_bm_create - allocate memory for a memory bitmap - */ --static int -+int - memory_bm_create(struct memory_bitmap *bm, gfp_t gfp_mask, int safe_needed) - { - struct chain_allocator ca; -@@ -435,11 +419,12 @@ memory_bm_create(struct memory_bitmap *bm, gfp_t gfp_mask, int safe_needed) - memory_bm_free(bm, PG_UNSAFE_CLEAR); - goto Exit; - } -+EXPORT_SYMBOL_GPL(memory_bm_create); - - /** - * memory_bm_free - free memory occupied by the memory bitmap @bm - */ --static void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free) -+void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free) - { - struct bm_block *bb; - -@@ -451,6 +436,7 @@ static void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free) - - INIT_LIST_HEAD(&bm->blocks); - } -+EXPORT_SYMBOL_GPL(memory_bm_free); - - /** - * memory_bm_find_bit - find the bit in the bitmap @bm that corresponds -@@ -489,7 +475,7 @@ static int memory_bm_find_bit(struct memory_bitmap *bm, unsigned long pfn, - return 0; - } - --static void memory_bm_set_bit(struct memory_bitmap *bm, unsigned long pfn) -+void memory_bm_set_bit(struct memory_bitmap *bm, unsigned long pfn) - { - void *addr; - unsigned int bit; -@@ -499,6 +485,7 @@ static void memory_bm_set_bit(struct memory_bitmap *bm, unsigned long pfn) - BUG_ON(error); - set_bit(bit, addr); - } -+EXPORT_SYMBOL_GPL(memory_bm_set_bit); - - static int mem_bm_set_bit_check(struct memory_bitmap *bm, unsigned long pfn) - { -@@ -512,7 +499,7 @@ static int mem_bm_set_bit_check(struct memory_bitmap *bm, unsigned long pfn) - return error; - } - --static void memory_bm_clear_bit(struct memory_bitmap *bm, unsigned long pfn) -+void memory_bm_clear_bit(struct memory_bitmap *bm, unsigned long pfn) - { - void *addr; - unsigned int bit; -@@ -522,8 +509,9 @@ static void memory_bm_clear_bit(struct memory_bitmap *bm, unsigned long pfn) - BUG_ON(error); - clear_bit(bit, addr); - } -+EXPORT_SYMBOL_GPL(memory_bm_clear_bit); - --static int memory_bm_test_bit(struct memory_bitmap *bm, unsigned long pfn) -+int memory_bm_test_bit(struct memory_bitmap *bm, unsigned long pfn) - { - void *addr; - unsigned int bit; -@@ -533,6 +521,7 @@ static int memory_bm_test_bit(struct memory_bitmap *bm, unsigned long pfn) - BUG_ON(error); - return test_bit(bit, addr); - } -+EXPORT_SYMBOL_GPL(memory_bm_test_bit); - - static bool memory_bm_pfn_present(struct memory_bitmap *bm, unsigned long pfn) - { -@@ -551,43 +540,178 @@ static bool memory_bm_pfn_present(struct memory_bitmap *bm, unsigned long pfn) - * this function. - */ - --static unsigned long memory_bm_next_pfn(struct memory_bitmap *bm) -+unsigned long memory_bm_next_pfn(struct memory_bitmap *bm) - { - struct bm_block *bb; - int bit; - -- bb = bm->cur.block; -+ bb = bm->iter.block; - do { -- bit = bm->cur.bit; -+ bit = bm->iter.bit; - bit = find_next_bit(bb->data, bm_block_bits(bb), bit); - if (bit < bm_block_bits(bb)) - goto Return_pfn; - - bb = list_entry(bb->hook.next, struct bm_block, hook); -- bm->cur.block = bb; -- bm->cur.bit = 0; -+ bm->iter.block = bb; -+ bm->iter.bit = 0; - } while (&bb->hook != &bm->blocks); - - memory_bm_position_reset(bm); - return BM_END_OF_MAP; - - Return_pfn: -- bm->cur.bit = bit + 1; -+ bm->iter.bit = bit + 1; - return bb->start_pfn + bit; - } -+EXPORT_SYMBOL_GPL(memory_bm_next_pfn); - --/** -- * This structure represents a range of page frames the contents of which -- * should not be saved during the suspend. -- */ -+void memory_bm_clear(struct memory_bitmap *bm) -+{ -+ unsigned long pfn; - --struct nosave_region { -- struct list_head list; -- unsigned long start_pfn; -- unsigned long end_pfn; --}; -+ memory_bm_position_reset(bm); -+ pfn = memory_bm_next_pfn(bm); -+ while (pfn != BM_END_OF_MAP) { -+ memory_bm_clear_bit(bm, pfn); -+ pfn = memory_bm_next_pfn(bm); -+ } -+} -+EXPORT_SYMBOL_GPL(memory_bm_clear); -+ -+void memory_bm_copy(struct memory_bitmap *source, struct memory_bitmap *dest) -+{ -+ unsigned long pfn; -+ -+ memory_bm_position_reset(source); -+ pfn = memory_bm_next_pfn(source); -+ while (pfn != BM_END_OF_MAP) { -+ memory_bm_set_bit(dest, pfn); -+ pfn = memory_bm_next_pfn(source); -+ } -+} -+EXPORT_SYMBOL_GPL(memory_bm_copy); -+ -+void memory_bm_dup(struct memory_bitmap *source, struct memory_bitmap *dest) -+{ -+ memory_bm_clear(dest); -+ memory_bm_copy(source, dest); -+} -+EXPORT_SYMBOL_GPL(memory_bm_dup); -+ -+#ifdef CONFIG_TOI -+#define DEFINE_MEMORY_BITMAP(name) \ -+struct memory_bitmap *name; \ -+EXPORT_SYMBOL_GPL(name) -+ -+DEFINE_MEMORY_BITMAP(pageset1_map); -+DEFINE_MEMORY_BITMAP(pageset1_copy_map); -+DEFINE_MEMORY_BITMAP(pageset2_map); -+DEFINE_MEMORY_BITMAP(page_resave_map); -+DEFINE_MEMORY_BITMAP(io_map); -+DEFINE_MEMORY_BITMAP(nosave_map); -+DEFINE_MEMORY_BITMAP(free_map); -+ -+int memory_bm_write(struct memory_bitmap *bm, int (*rw_chunk) -+ (int rw, struct toi_module_ops *owner, char *buffer, int buffer_size)) -+{ -+ int result = 0; -+ unsigned int nr = 0; -+ struct bm_block *bb; -+ -+ if (!bm) -+ return result; - --static LIST_HEAD(nosave_regions); -+ list_for_each_entry(bb, &bm->blocks, hook) -+ nr++; -+ -+ result = (*rw_chunk)(WRITE, NULL, (char *) &nr, sizeof(unsigned int)); -+ if (result) -+ return result; -+ -+ list_for_each_entry(bb, &bm->blocks, hook) { -+ result = (*rw_chunk)(WRITE, NULL, (char *) &bb->start_pfn, -+ 2 * sizeof(unsigned long)); -+ if (result) -+ return result; -+ -+ result = (*rw_chunk)(WRITE, NULL, (char *) bb->data, PAGE_SIZE); -+ if (result) -+ return result; -+ } -+ -+ return 0; -+} -+EXPORT_SYMBOL_GPL(memory_bm_write); -+ -+int memory_bm_read(struct memory_bitmap *bm, int (*rw_chunk) -+ (int rw, struct toi_module_ops *owner, char *buffer, int buffer_size)) -+{ -+ int result = 0; -+ unsigned int nr, i; -+ struct bm_block *bb; -+ -+ if (!bm) -+ return result; -+ -+ result = memory_bm_create(bm, GFP_KERNEL, 0); -+ -+ if (result) -+ return result; -+ -+ result = (*rw_chunk)(READ, NULL, (char *) &nr, sizeof(unsigned int)); -+ if (result) -+ goto Free; -+ -+ for (i = 0; i < nr; i++) { -+ unsigned long pfn; -+ -+ result = (*rw_chunk)(READ, NULL, (char *) &pfn, -+ sizeof(unsigned long)); -+ if (result) -+ goto Free; -+ -+ list_for_each_entry(bb, &bm->blocks, hook) -+ if (bb->start_pfn == pfn) -+ break; -+ -+ if (&bb->hook == &bm->blocks) { -+ printk(KERN_ERR -+ "TuxOnIce: Failed to load memory bitmap.\n"); -+ result = -EINVAL; -+ goto Free; -+ } -+ -+ result = (*rw_chunk)(READ, NULL, (char *) &pfn, -+ sizeof(unsigned long)); -+ if (result) -+ goto Free; -+ -+ if (pfn != bb->end_pfn) { -+ printk(KERN_ERR -+ "TuxOnIce: Failed to load memory bitmap. " -+ "End PFN doesn't match what was saved.\n"); -+ result = -EINVAL; -+ goto Free; -+ } -+ -+ result = (*rw_chunk)(READ, NULL, (char *) bb->data, PAGE_SIZE); -+ -+ if (result) -+ goto Free; -+ } -+ -+ return 0; -+ -+Free: -+ memory_bm_free(bm, PG_ANY); -+ return result; -+} -+EXPORT_SYMBOL_GPL(memory_bm_read); -+#endif -+ -+LIST_HEAD(nosave_regions); -+EXPORT_SYMBOL_GPL(nosave_regions); - - /** - * register_nosave_region - register a range of page frames the contents -@@ -823,7 +947,7 @@ static unsigned int count_free_highmem_pages(void) - * We should save the page if it isn't Nosave or NosaveFree, or Reserved, - * and it isn't a part of a free chunk of pages. - */ --static struct page *saveable_highmem_page(struct zone *zone, unsigned long pfn) -+struct page *saveable_highmem_page(struct zone *zone, unsigned long pfn) - { - struct page *page; - -@@ -842,6 +966,7 @@ static struct page *saveable_highmem_page(struct zone *zone, unsigned long pfn) - - return page; - } -+EXPORT_SYMBOL_GPL(saveable_highmem_page); - - /** - * count_highmem_pages - compute the total number of saveable highmem -@@ -867,11 +992,6 @@ static unsigned int count_highmem_pages(void) - } - return n; - } --#else --static inline void *saveable_highmem_page(struct zone *z, unsigned long p) --{ -- return NULL; --} - #endif /* CONFIG_HIGHMEM */ - - /** -@@ -882,7 +1002,7 @@ static inline void *saveable_highmem_page(struct zone *z, unsigned long p) - * of pages statically defined as 'unsaveable', and it isn't a part of - * a free chunk of pages. - */ --static struct page *saveable_page(struct zone *zone, unsigned long pfn) -+struct page *saveable_page(struct zone *zone, unsigned long pfn) - { - struct page *page; - -@@ -904,6 +1024,7 @@ static struct page *saveable_page(struct zone *zone, unsigned long pfn) - - return page; - } -+EXPORT_SYMBOL_GPL(saveable_page); - - /** - * count_data_pages - compute the total number of saveable non-highmem -@@ -1500,6 +1621,9 @@ asmlinkage int swsusp_save(void) - { - unsigned int nr_pages, nr_highmem; - -+ if (toi_running) -+ return toi_post_context_save(); -+ - printk(KERN_INFO "PM: Creating hibernation image: \n"); - - drain_local_pages(NULL); -@@ -1540,14 +1664,14 @@ asmlinkage int swsusp_save(void) - } - - #ifndef CONFIG_ARCH_HIBERNATION_HEADER --static int init_header_complete(struct swsusp_info *info) -+int init_header_complete(struct swsusp_info *info) - { - memcpy(&info->uts, init_utsname(), sizeof(struct new_utsname)); - info->version_code = LINUX_VERSION_CODE; - return 0; - } - --static char *check_image_kernel(struct swsusp_info *info) -+char *check_image_kernel(struct swsusp_info *info) - { - if (info->version_code != LINUX_VERSION_CODE) - return "kernel version"; -@@ -1561,6 +1685,7 @@ static char *check_image_kernel(struct swsusp_info *info) - return "machine"; - return NULL; - } -+EXPORT_SYMBOL_GPL(check_image_kernel); - #endif /* CONFIG_ARCH_HIBERNATION_HEADER */ - - unsigned long snapshot_get_image_size(void) -@@ -1568,7 +1693,7 @@ unsigned long snapshot_get_image_size(void) - return nr_copy_pages + nr_meta_pages + 1; - } - --static int init_header(struct swsusp_info *info) -+int init_header(struct swsusp_info *info) - { - memset(info, 0, sizeof(struct swsusp_info)); - info->num_physpages = num_physpages; -@@ -1578,6 +1703,7 @@ static int init_header(struct swsusp_info *info) - info->size <<= PAGE_SHIFT; - return init_header_complete(info); - } -+EXPORT_SYMBOL_GPL(init_header); - - /** - * pack_pfns - pfns corresponding to the set bits found in the bitmap @bm -diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c -index 6f10dfc..cecd9a8 100644 ---- a/kernel/power/suspend.c -+++ b/kernel/power/suspend.c -@@ -226,6 +226,7 @@ int suspend_devices_and_enter(suspend_state_t state) - suspend_ops->recover(); - goto Resume_devices; - } -+EXPORT_SYMBOL_GPL(suspend_devices_and_enter); - - /** - * suspend_finish - Do final work before exiting suspend sequence. -diff --git a/kernel/power/tuxonice.h b/kernel/power/tuxonice.h -new file mode 100644 -index 0000000..e7bc111 ---- /dev/null -+++ b/kernel/power/tuxonice.h -@@ -0,0 +1,211 @@ -+/* -+ * kernel/power/tuxonice.h -+ * -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * It contains declarations used throughout swsusp. -+ * -+ */ -+ -+#ifndef KERNEL_POWER_TOI_H -+#define KERNEL_POWER_TOI_H -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include "tuxonice_pageflags.h" -+#include "power.h" -+ -+#define TOI_CORE_VERSION "3.1" -+#define TOI_HEADER_VERSION 2 -+#define MY_BOOT_KERNEL_DATA_VERSION 3 -+ -+struct toi_boot_kernel_data { -+ int version; -+ int size; -+ unsigned long toi_action; -+ unsigned long toi_debug_state; -+ u32 toi_default_console_level; -+ int toi_io_time[2][2]; -+ char toi_nosave_commandline[COMMAND_LINE_SIZE]; -+ unsigned long pages_used[33]; -+ unsigned long compress_bytes_in; -+ unsigned long compress_bytes_out; -+}; -+ -+extern struct toi_boot_kernel_data toi_bkd; -+ -+/* Location of book kernel data struct in kernel being resumed */ -+extern unsigned long boot_kernel_data_buffer; -+ -+/* == Action states == */ -+ -+enum { -+ TOI_REBOOT, -+ TOI_PAUSE, -+ TOI_LOGALL, -+ TOI_CAN_CANCEL, -+ TOI_KEEP_IMAGE, -+ TOI_FREEZER_TEST, -+ TOI_SINGLESTEP, -+ TOI_PAUSE_NEAR_PAGESET_END, -+ TOI_TEST_FILTER_SPEED, -+ TOI_TEST_BIO, -+ TOI_NO_PAGESET2, -+ TOI_IGNORE_ROOTFS, -+ TOI_REPLACE_SWSUSP, -+ TOI_PAGESET2_FULL, -+ TOI_ABORT_ON_RESAVE_NEEDED, -+ TOI_NO_MULTITHREADED_IO, -+ TOI_NO_DIRECT_LOAD, /* Obsolete */ -+ TOI_LATE_CPU_HOTPLUG, -+ TOI_GET_MAX_MEM_ALLOCD, -+ TOI_NO_FLUSHER_THREAD, -+ TOI_NO_PS2_IF_UNNEEDED -+}; -+ -+#define clear_action_state(bit) (test_and_clear_bit(bit, &toi_bkd.toi_action)) -+ -+/* == Result states == */ -+ -+enum { -+ TOI_ABORTED, -+ TOI_ABORT_REQUESTED, -+ TOI_NOSTORAGE_AVAILABLE, -+ TOI_INSUFFICIENT_STORAGE, -+ TOI_FREEZING_FAILED, -+ TOI_KEPT_IMAGE, -+ TOI_WOULD_EAT_MEMORY, -+ TOI_UNABLE_TO_FREE_ENOUGH_MEMORY, -+ TOI_PM_SEM, -+ TOI_DEVICE_REFUSED, -+ TOI_SYSDEV_REFUSED, -+ TOI_EXTRA_PAGES_ALLOW_TOO_SMALL, -+ TOI_UNABLE_TO_PREPARE_IMAGE, -+ TOI_FAILED_MODULE_INIT, -+ TOI_FAILED_MODULE_CLEANUP, -+ TOI_FAILED_IO, -+ TOI_OUT_OF_MEMORY, -+ TOI_IMAGE_ERROR, -+ TOI_PLATFORM_PREP_FAILED, -+ TOI_CPU_HOTPLUG_FAILED, -+ TOI_ARCH_PREPARE_FAILED, -+ TOI_RESAVE_NEEDED, -+ TOI_CANT_SUSPEND, -+ TOI_NOTIFIERS_PREPARE_FAILED, -+ TOI_PRE_SNAPSHOT_FAILED, -+ TOI_PRE_RESTORE_FAILED, -+ TOI_USERMODE_HELPERS_ERR, -+ TOI_CANT_USE_ALT_RESUME, -+ TOI_HEADER_TOO_BIG, -+ TOI_NUM_RESULT_STATES /* Used in printing debug info only */ -+}; -+ -+extern unsigned long toi_result; -+ -+#define set_result_state(bit) (test_and_set_bit(bit, &toi_result)) -+#define set_abort_result(bit) (test_and_set_bit(TOI_ABORTED, &toi_result), \ -+ test_and_set_bit(bit, &toi_result)) -+#define clear_result_state(bit) (test_and_clear_bit(bit, &toi_result)) -+#define test_result_state(bit) (test_bit(bit, &toi_result)) -+ -+/* == Debug sections and levels == */ -+ -+/* debugging levels. */ -+enum { -+ TOI_STATUS = 0, -+ TOI_ERROR = 2, -+ TOI_LOW, -+ TOI_MEDIUM, -+ TOI_HIGH, -+ TOI_VERBOSE, -+}; -+ -+enum { -+ TOI_ANY_SECTION, -+ TOI_EAT_MEMORY, -+ TOI_IO, -+ TOI_HEADER, -+ TOI_WRITER, -+ TOI_MEMORY, -+}; -+ -+#define set_debug_state(bit) (test_and_set_bit(bit, &toi_bkd.toi_debug_state)) -+#define clear_debug_state(bit) \ -+ (test_and_clear_bit(bit, &toi_bkd.toi_debug_state)) -+#define test_debug_state(bit) (test_bit(bit, &toi_bkd.toi_debug_state)) -+ -+/* == Steps in hibernating == */ -+ -+enum { -+ STEP_HIBERNATE_PREPARE_IMAGE, -+ STEP_HIBERNATE_SAVE_IMAGE, -+ STEP_HIBERNATE_POWERDOWN, -+ STEP_RESUME_CAN_RESUME, -+ STEP_RESUME_LOAD_PS1, -+ STEP_RESUME_DO_RESTORE, -+ STEP_RESUME_READ_PS2, -+ STEP_RESUME_GO, -+ STEP_RESUME_ALT_IMAGE, -+ STEP_CLEANUP, -+ STEP_QUIET_CLEANUP -+}; -+ -+/* == TuxOnIce states == -+ (see also include/linux/suspend.h) */ -+ -+#define get_toi_state() (toi_state) -+#define restore_toi_state(saved_state) \ -+ do { toi_state = saved_state; } while (0) -+ -+/* == Module support == */ -+ -+struct toi_core_fns { -+ int (*post_context_save)(void); -+ unsigned long (*get_nonconflicting_page)(void); -+ int (*try_hibernate)(void); -+ void (*try_resume)(void); -+}; -+ -+extern struct toi_core_fns *toi_core_fns; -+ -+/* == All else == */ -+#define KB(x) ((x) << (PAGE_SHIFT - 10)) -+#define MB(x) ((x) >> (20 - PAGE_SHIFT)) -+ -+extern int toi_start_anything(int toi_or_resume); -+extern void toi_finish_anything(int toi_or_resume); -+ -+extern int save_image_part1(void); -+extern int toi_atomic_restore(void); -+ -+extern int toi_try_hibernate(void); -+extern void toi_try_resume(void); -+ -+extern int __toi_post_context_save(void); -+ -+extern unsigned int nr_hibernates; -+extern char alt_resume_param[256]; -+ -+extern void copyback_post(void); -+extern int toi_hibernate(void); -+extern unsigned long extra_pd1_pages_used; -+ -+#define SECTOR_SIZE 512 -+ -+extern void toi_early_boot_message(int can_erase_image, int default_answer, -+ char *warning_reason, ...); -+ -+extern int do_check_can_resume(void); -+extern int do_toi_step(int step); -+extern int toi_launch_userspace_program(char *command, int channel_no, -+ enum umh_wait wait, int debug); -+ -+extern char tuxonice_signature[9]; -+extern int freezer_sync; -+#endif -diff --git a/kernel/power/tuxonice_alloc.c b/kernel/power/tuxonice_alloc.c -new file mode 100644 -index 0000000..891c5b2 ---- /dev/null -+++ b/kernel/power/tuxonice_alloc.c -@@ -0,0 +1,313 @@ -+/* -+ * kernel/power/tuxonice_alloc.c -+ * -+ * Copyright (C) 2008-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ */ -+ -+#ifdef CONFIG_PM_DEBUG -+#include -+#include -+#include "tuxonice_modules.h" -+#include "tuxonice_alloc.h" -+#include "tuxonice_sysfs.h" -+#include "tuxonice.h" -+ -+#define TOI_ALLOC_PATHS 40 -+ -+static DEFINE_MUTEX(toi_alloc_mutex); -+ -+static struct toi_module_ops toi_alloc_ops; -+ -+static int toi_fail_num; -+static int trace_allocs; -+static atomic_t toi_alloc_count[TOI_ALLOC_PATHS], -+ toi_free_count[TOI_ALLOC_PATHS], -+ toi_test_count[TOI_ALLOC_PATHS], -+ toi_fail_count[TOI_ALLOC_PATHS]; -+static int toi_cur_allocd[TOI_ALLOC_PATHS], toi_max_allocd[TOI_ALLOC_PATHS]; -+static int cur_allocd, max_allocd; -+ -+static char *toi_alloc_desc[TOI_ALLOC_PATHS] = { -+ "", /* 0 */ -+ "get_io_info_struct", -+ "extent", -+ "extent (loading chain)", -+ "userui channel", -+ "userui arg", /* 5 */ -+ "attention list metadata", -+ "extra pagedir memory metadata", -+ "bdev metadata", -+ "extra pagedir memory", -+ "header_locations_read", /* 10 */ -+ "bio queue", -+ "prepare_readahead", -+ "i/o buffer", -+ "writer buffer in bio_init", -+ "checksum buffer", /* 15 */ -+ "compression buffer", -+ "filewriter signature op", -+ "set resume param alloc1", -+ "set resume param alloc2", -+ "debugging info buffer", /* 20 */ -+ "check can resume buffer", -+ "write module config buffer", -+ "read module config buffer", -+ "write image header buffer", -+ "read pageset1 buffer", /* 25 */ -+ "get_have_image_data buffer", -+ "checksum page", -+ "worker rw loop", -+ "get nonconflicting page", -+ "ps1 load addresses", /* 30 */ -+ "remove swap image", -+ "swap image exists", -+ "swap parse sig location", -+ "sysfs kobj", -+ "swap mark resume attempted buffer", /* 35 */ -+ "cluster member", -+ "boot kernel data buffer", -+ "setting swap signature", -+ "block i/o bdev struct" -+}; -+ -+#define MIGHT_FAIL(FAIL_NUM, FAIL_VAL) \ -+ do { \ -+ BUG_ON(FAIL_NUM >= TOI_ALLOC_PATHS); \ -+ \ -+ if (FAIL_NUM == toi_fail_num) { \ -+ atomic_inc(&toi_test_count[FAIL_NUM]); \ -+ toi_fail_num = 0; \ -+ return FAIL_VAL; \ -+ } \ -+ } while (0) -+ -+static void alloc_update_stats(int fail_num, void *result, int size) -+{ -+ if (!result) { -+ atomic_inc(&toi_fail_count[fail_num]); -+ return; -+ } -+ -+ atomic_inc(&toi_alloc_count[fail_num]); -+ if (unlikely(test_action_state(TOI_GET_MAX_MEM_ALLOCD))) { -+ mutex_lock(&toi_alloc_mutex); -+ toi_cur_allocd[fail_num]++; -+ cur_allocd += size; -+ if (unlikely(cur_allocd > max_allocd)) { -+ int i; -+ -+ for (i = 0; i < TOI_ALLOC_PATHS; i++) -+ toi_max_allocd[i] = toi_cur_allocd[i]; -+ max_allocd = cur_allocd; -+ } -+ mutex_unlock(&toi_alloc_mutex); -+ } -+} -+ -+static void free_update_stats(int fail_num, int size) -+{ -+ BUG_ON(fail_num >= TOI_ALLOC_PATHS); -+ atomic_inc(&toi_free_count[fail_num]); -+ if (unlikely(atomic_read(&toi_free_count[fail_num]) > -+ atomic_read(&toi_alloc_count[fail_num]))) -+ dump_stack(); -+ if (unlikely(test_action_state(TOI_GET_MAX_MEM_ALLOCD))) { -+ mutex_lock(&toi_alloc_mutex); -+ cur_allocd -= size; -+ toi_cur_allocd[fail_num]--; -+ mutex_unlock(&toi_alloc_mutex); -+ } -+} -+ -+void *toi_kzalloc(int fail_num, size_t size, gfp_t flags) -+{ -+ void *result; -+ -+ if (toi_alloc_ops.enabled) -+ MIGHT_FAIL(fail_num, NULL); -+ result = kzalloc(size, flags); -+ if (toi_alloc_ops.enabled) -+ alloc_update_stats(fail_num, result, size); -+ if (fail_num == trace_allocs) -+ dump_stack(); -+ return result; -+} -+EXPORT_SYMBOL_GPL(toi_kzalloc); -+ -+unsigned long toi_get_free_pages(int fail_num, gfp_t mask, -+ unsigned int order) -+{ -+ unsigned long result; -+ -+ if (toi_alloc_ops.enabled) -+ MIGHT_FAIL(fail_num, 0); -+ result = __get_free_pages(mask, order); -+ if (toi_alloc_ops.enabled) -+ alloc_update_stats(fail_num, (void *) result, -+ PAGE_SIZE << order); -+ if (fail_num == trace_allocs) -+ dump_stack(); -+ return result; -+} -+EXPORT_SYMBOL_GPL(toi_get_free_pages); -+ -+struct page *toi_alloc_page(int fail_num, gfp_t mask) -+{ -+ struct page *result; -+ -+ if (toi_alloc_ops.enabled) -+ MIGHT_FAIL(fail_num, NULL); -+ result = alloc_page(mask); -+ if (toi_alloc_ops.enabled) -+ alloc_update_stats(fail_num, (void *) result, PAGE_SIZE); -+ if (fail_num == trace_allocs) -+ dump_stack(); -+ return result; -+} -+EXPORT_SYMBOL_GPL(toi_alloc_page); -+ -+unsigned long toi_get_zeroed_page(int fail_num, gfp_t mask) -+{ -+ unsigned long result; -+ -+ if (fail_num == trace_allocs) -+ dump_stack(); -+ if (toi_alloc_ops.enabled) -+ MIGHT_FAIL(fail_num, 0); -+ result = get_zeroed_page(mask); -+ if (toi_alloc_ops.enabled) -+ alloc_update_stats(fail_num, (void *) result, PAGE_SIZE); -+ if (fail_num == trace_allocs) -+ dump_stack(); -+ return result; -+} -+EXPORT_SYMBOL_GPL(toi_get_zeroed_page); -+ -+void toi_kfree(int fail_num, const void *arg, int size) -+{ -+ if (arg && toi_alloc_ops.enabled) -+ free_update_stats(fail_num, size); -+ -+ if (fail_num == trace_allocs) -+ dump_stack(); -+ kfree(arg); -+} -+EXPORT_SYMBOL_GPL(toi_kfree); -+ -+void toi_free_page(int fail_num, unsigned long virt) -+{ -+ if (virt && toi_alloc_ops.enabled) -+ free_update_stats(fail_num, PAGE_SIZE); -+ -+ if (fail_num == trace_allocs) -+ dump_stack(); -+ free_page(virt); -+} -+EXPORT_SYMBOL_GPL(toi_free_page); -+ -+void toi__free_page(int fail_num, struct page *page) -+{ -+ if (page && toi_alloc_ops.enabled) -+ free_update_stats(fail_num, PAGE_SIZE); -+ -+ if (fail_num == trace_allocs) -+ dump_stack(); -+ __free_page(page); -+} -+EXPORT_SYMBOL_GPL(toi__free_page); -+ -+void toi_free_pages(int fail_num, struct page *page, int order) -+{ -+ if (page && toi_alloc_ops.enabled) -+ free_update_stats(fail_num, PAGE_SIZE << order); -+ -+ if (fail_num == trace_allocs) -+ dump_stack(); -+ __free_pages(page, order); -+} -+ -+void toi_alloc_print_debug_stats(void) -+{ -+ int i, header_done = 0; -+ -+ if (!toi_alloc_ops.enabled) -+ return; -+ -+ for (i = 0; i < TOI_ALLOC_PATHS; i++) -+ if (atomic_read(&toi_alloc_count[i]) != -+ atomic_read(&toi_free_count[i])) { -+ if (!header_done) { -+ printk(KERN_INFO "Idx Allocs Frees Tests " -+ " Fails Max Description\n"); -+ header_done = 1; -+ } -+ -+ printk(KERN_INFO "%3d %7d %7d %7d %7d %7d %s\n", i, -+ atomic_read(&toi_alloc_count[i]), -+ atomic_read(&toi_free_count[i]), -+ atomic_read(&toi_test_count[i]), -+ atomic_read(&toi_fail_count[i]), -+ toi_max_allocd[i], -+ toi_alloc_desc[i]); -+ } -+} -+EXPORT_SYMBOL_GPL(toi_alloc_print_debug_stats); -+ -+static int toi_alloc_initialise(int starting_cycle) -+{ -+ int i; -+ -+ if (!starting_cycle) -+ return 0; -+ -+ for (i = 0; i < TOI_ALLOC_PATHS; i++) { -+ atomic_set(&toi_alloc_count[i], 0); -+ atomic_set(&toi_free_count[i], 0); -+ atomic_set(&toi_test_count[i], 0); -+ atomic_set(&toi_fail_count[i], 0); -+ toi_cur_allocd[i] = 0; -+ toi_max_allocd[i] = 0; -+ }; -+ -+ max_allocd = 0; -+ cur_allocd = 0; -+ return 0; -+} -+ -+static struct toi_sysfs_data sysfs_params[] = { -+ SYSFS_INT("failure_test", SYSFS_RW, &toi_fail_num, 0, 99, 0, NULL), -+ SYSFS_INT("trace", SYSFS_RW, &trace_allocs, 0, TOI_ALLOC_PATHS, 0, -+ NULL), -+ SYSFS_BIT("find_max_mem_allocated", SYSFS_RW, &toi_bkd.toi_action, -+ TOI_GET_MAX_MEM_ALLOCD, 0), -+ SYSFS_INT("enabled", SYSFS_RW, &toi_alloc_ops.enabled, 0, 1, 0, -+ NULL) -+}; -+ -+static struct toi_module_ops toi_alloc_ops = { -+ .type = MISC_HIDDEN_MODULE, -+ .name = "allocation debugging", -+ .directory = "alloc", -+ .module = THIS_MODULE, -+ .early = 1, -+ .initialise = toi_alloc_initialise, -+ -+ .sysfs_data = sysfs_params, -+ .num_sysfs_entries = sizeof(sysfs_params) / -+ sizeof(struct toi_sysfs_data), -+}; -+ -+int toi_alloc_init(void) -+{ -+ int result = toi_register_module(&toi_alloc_ops); -+ return result; -+} -+ -+void toi_alloc_exit(void) -+{ -+ toi_unregister_module(&toi_alloc_ops); -+} -+#endif -diff --git a/kernel/power/tuxonice_alloc.h b/kernel/power/tuxonice_alloc.h -new file mode 100644 -index 0000000..6cd19ba ---- /dev/null -+++ b/kernel/power/tuxonice_alloc.h -@@ -0,0 +1,51 @@ -+/* -+ * kernel/power/tuxonice_alloc.h -+ * -+ * Copyright (C) 2008-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ */ -+ -+#define TOI_WAIT_GFP (GFP_NOFS | __GFP_NOWARN) -+#define TOI_ATOMIC_GFP (GFP_ATOMIC | __GFP_NOWARN) -+ -+#ifdef CONFIG_PM_DEBUG -+extern void *toi_kzalloc(int fail_num, size_t size, gfp_t flags); -+extern void toi_kfree(int fail_num, const void *arg, int size); -+ -+extern unsigned long toi_get_free_pages(int fail_num, gfp_t mask, -+ unsigned int order); -+#define toi_get_free_page(FAIL_NUM, MASK) toi_get_free_pages(FAIL_NUM, MASK, 0) -+extern unsigned long toi_get_zeroed_page(int fail_num, gfp_t mask); -+extern void toi_free_page(int fail_num, unsigned long buf); -+extern void toi__free_page(int fail_num, struct page *page); -+extern void toi_free_pages(int fail_num, struct page *page, int order); -+extern struct page *toi_alloc_page(int fail_num, gfp_t mask); -+extern int toi_alloc_init(void); -+extern void toi_alloc_exit(void); -+ -+extern void toi_alloc_print_debug_stats(void); -+ -+#else /* CONFIG_PM_DEBUG */ -+ -+#define toi_kzalloc(FAIL, SIZE, FLAGS) (kzalloc(SIZE, FLAGS)) -+#define toi_kfree(FAIL, ALLOCN, SIZE) (kfree(ALLOCN)) -+ -+#define toi_get_free_pages(FAIL, FLAGS, ORDER) __get_free_pages(FLAGS, ORDER) -+#define toi_get_free_page(FAIL, FLAGS) __get_free_page(FLAGS) -+#define toi_get_zeroed_page(FAIL, FLAGS) get_zeroed_page(FLAGS) -+#define toi_free_page(FAIL, ALLOCN) do { free_page(ALLOCN); } while (0) -+#define toi__free_page(FAIL, PAGE) __free_page(PAGE) -+#define toi_free_pages(FAIL, PAGE, ORDER) __free_pages(PAGE, ORDER) -+#define toi_alloc_page(FAIL, MASK) alloc_page(MASK) -+static inline int toi_alloc_init(void) -+{ -+ return 0; -+} -+ -+static inline void toi_alloc_exit(void) { } -+ -+static inline void toi_alloc_print_debug_stats(void) { } -+ -+#endif -diff --git a/kernel/power/tuxonice_atomic_copy.c b/kernel/power/tuxonice_atomic_copy.c -new file mode 100644 -index 0000000..1807f8b ---- /dev/null -+++ b/kernel/power/tuxonice_atomic_copy.c -@@ -0,0 +1,418 @@ -+/* -+ * kernel/power/tuxonice_atomic_copy.c -+ * -+ * Copyright 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * Distributed under GPLv2. -+ * -+ * Routines for doing the atomic save/restore. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include "tuxonice.h" -+#include "tuxonice_storage.h" -+#include "tuxonice_power_off.h" -+#include "tuxonice_ui.h" -+#include "tuxonice_io.h" -+#include "tuxonice_prepare_image.h" -+#include "tuxonice_pageflags.h" -+#include "tuxonice_checksum.h" -+#include "tuxonice_builtin.h" -+#include "tuxonice_atomic_copy.h" -+#include "tuxonice_alloc.h" -+#include "tuxonice_modules.h" -+ -+unsigned long extra_pd1_pages_used; -+ -+/** -+ * free_pbe_list - free page backup entries used by the atomic copy code. -+ * @list: List to free. -+ * @highmem: Whether the list is in highmem. -+ * -+ * Normally, this function isn't used. If, however, we need to abort before -+ * doing the atomic copy, we use this to free the pbes previously allocated. -+ **/ -+static void free_pbe_list(struct pbe **list, int highmem) -+{ -+ while (*list) { -+ int i; -+ struct pbe *free_pbe, *next_page = NULL; -+ struct page *page; -+ -+ if (highmem) { -+ page = (struct page *) *list; -+ free_pbe = (struct pbe *) kmap(page); -+ } else { -+ page = virt_to_page(*list); -+ free_pbe = *list; -+ } -+ -+ for (i = 0; i < PBES_PER_PAGE; i++) { -+ if (!free_pbe) -+ break; -+ if (highmem) -+ toi__free_page(29, free_pbe->address); -+ else -+ toi_free_page(29, -+ (unsigned long) free_pbe->address); -+ free_pbe = free_pbe->next; -+ } -+ -+ if (highmem) { -+ if (free_pbe) -+ next_page = free_pbe; -+ kunmap(page); -+ } else { -+ if (free_pbe) -+ next_page = free_pbe; -+ } -+ -+ toi__free_page(29, page); -+ *list = (struct pbe *) next_page; -+ }; -+} -+ -+/** -+ * copyback_post - post atomic-restore actions -+ * -+ * After doing the atomic restore, we have a few more things to do: -+ * 1) We want to retain some values across the restore, so we now copy -+ * these from the nosave variables to the normal ones. -+ * 2) Set the status flags. -+ * 3) Resume devices. -+ * 4) Tell userui so it can redraw & restore settings. -+ * 5) Reread the page cache. -+ **/ -+void copyback_post(void) -+{ -+ struct toi_boot_kernel_data *bkd = -+ (struct toi_boot_kernel_data *) boot_kernel_data_buffer; -+ -+ /* -+ * The boot kernel's data may be larger (newer version) or -+ * smaller (older version) than ours. Copy the minimum -+ * of the two sizes, so that we don't overwrite valid values -+ * from pre-atomic copy. -+ */ -+ -+ memcpy(&toi_bkd, (char *) boot_kernel_data_buffer, -+ min_t(int, sizeof(struct toi_boot_kernel_data), -+ bkd->size)); -+ -+ if (toi_activate_storage(1)) -+ panic("Failed to reactivate our storage."); -+ -+ toi_post_atomic_restore_modules(bkd); -+ -+ toi_cond_pause(1, "About to reload secondary pagedir."); -+ -+ if (read_pageset2(0)) -+ panic("Unable to successfully reread the page cache."); -+ -+ /* -+ * If the user wants to sleep again after resuming from full-off, -+ * it's most likely to be in order to suspend to ram, so we'll -+ * do this check after loading pageset2, to give them the fastest -+ * wakeup when they are ready to use the computer again. -+ */ -+ toi_check_resleep(); -+} -+ -+/** -+ * toi_copy_pageset1 - do the atomic copy of pageset1 -+ * -+ * Make the atomic copy of pageset1. We can't use copy_page (as we once did) -+ * because we can't be sure what side effects it has. On my old Duron, with -+ * 3DNOW, kernel_fpu_begin increments preempt count, making our preempt -+ * count at resume time 4 instead of 3. -+ * -+ * We don't want to call kmap_atomic unconditionally because it has the side -+ * effect of incrementing the preempt count, which will leave it one too high -+ * post resume (the page containing the preempt count will be copied after -+ * its incremented. This is essentially the same problem. -+ **/ -+void toi_copy_pageset1(void) -+{ -+ int i; -+ unsigned long source_index, dest_index; -+ -+ memory_bm_position_reset(pageset1_map); -+ memory_bm_position_reset(pageset1_copy_map); -+ -+ source_index = memory_bm_next_pfn(pageset1_map); -+ dest_index = memory_bm_next_pfn(pageset1_copy_map); -+ -+ for (i = 0; i < pagedir1.size; i++) { -+ unsigned long *origvirt, *copyvirt; -+ struct page *origpage, *copypage; -+ int loop = (PAGE_SIZE / sizeof(unsigned long)) - 1, -+ was_present1, was_present2; -+ -+ origpage = pfn_to_page(source_index); -+ copypage = pfn_to_page(dest_index); -+ -+ origvirt = PageHighMem(origpage) ? -+ kmap_atomic(origpage, KM_USER0) : -+ page_address(origpage); -+ -+ copyvirt = PageHighMem(copypage) ? -+ kmap_atomic(copypage, KM_USER1) : -+ page_address(copypage); -+ -+ was_present1 = kernel_page_present(origpage); -+ if (!was_present1) -+ kernel_map_pages(origpage, 1, 1); -+ -+ was_present2 = kernel_page_present(copypage); -+ if (!was_present2) -+ kernel_map_pages(copypage, 1, 1); -+ -+ while (loop >= 0) { -+ *(copyvirt + loop) = *(origvirt + loop); -+ loop--; -+ } -+ -+ if (!was_present1) -+ kernel_map_pages(origpage, 1, 0); -+ -+ if (!was_present2) -+ kernel_map_pages(copypage, 1, 0); -+ -+ if (PageHighMem(origpage)) -+ kunmap_atomic(origvirt, KM_USER0); -+ -+ if (PageHighMem(copypage)) -+ kunmap_atomic(copyvirt, KM_USER1); -+ -+ source_index = memory_bm_next_pfn(pageset1_map); -+ dest_index = memory_bm_next_pfn(pageset1_copy_map); -+ } -+} -+ -+/** -+ * __toi_post_context_save - steps after saving the cpu context -+ * -+ * Steps taken after saving the CPU state to make the actual -+ * atomic copy. -+ * -+ * Called from swsusp_save in snapshot.c via toi_post_context_save. -+ **/ -+int __toi_post_context_save(void) -+{ -+ unsigned long old_ps1_size = pagedir1.size; -+ -+ check_checksums(); -+ -+ free_checksum_pages(); -+ -+ toi_recalculate_image_contents(1); -+ -+ extra_pd1_pages_used = pagedir1.size > old_ps1_size ? -+ pagedir1.size - old_ps1_size : 0; -+ -+ if (extra_pd1_pages_used > extra_pd1_pages_allowance) { -+ printk(KERN_INFO "Pageset1 has grown by %lu pages. " -+ "extra_pages_allowance is currently only %lu.\n", -+ pagedir1.size - old_ps1_size, -+ extra_pd1_pages_allowance); -+ -+ /* -+ * Highlevel code will see this, clear the state and -+ * retry if we haven't already done so twice. -+ */ -+ set_abort_result(TOI_EXTRA_PAGES_ALLOW_TOO_SMALL); -+ return 1; -+ } -+ -+ if (!test_action_state(TOI_TEST_FILTER_SPEED) && -+ !test_action_state(TOI_TEST_BIO)) -+ toi_copy_pageset1(); -+ -+ return 0; -+} -+ -+/** -+ * toi_hibernate - high level code for doing the atomic copy -+ * -+ * High-level code which prepares to do the atomic copy. Loosely based -+ * on the swsusp version, but with the following twists: -+ * - We set toi_running so the swsusp code uses our code paths. -+ * - We give better feedback regarding what goes wrong if there is a -+ * problem. -+ * - We use an extra function to call the assembly, just in case this code -+ * is in a module (return address). -+ **/ -+int toi_hibernate(void) -+{ -+ int error; -+ -+ toi_running = 1; /* For the swsusp code we use :< */ -+ -+ error = toi_lowlevel_builtin(); -+ -+ toi_running = 0; -+ return error; -+} -+ -+/** -+ * toi_atomic_restore - prepare to do the atomic restore -+ * -+ * Get ready to do the atomic restore. This part gets us into the same -+ * state we are in prior to do calling do_toi_lowlevel while -+ * hibernating: hot-unplugging secondary cpus and freeze processes, -+ * before starting the thread that will do the restore. -+ **/ -+int toi_atomic_restore(void) -+{ -+ int error; -+ -+ toi_running = 1; -+ -+ toi_prepare_status(DONT_CLEAR_BAR, "Atomic restore."); -+ -+ memcpy(&toi_bkd.toi_nosave_commandline, saved_command_line, -+ strlen(saved_command_line)); -+ -+ toi_pre_atomic_restore_modules(&toi_bkd); -+ -+ if (add_boot_kernel_data_pbe()) -+ goto Failed; -+ -+ toi_prepare_status(DONT_CLEAR_BAR, "Doing atomic copy/restore."); -+ -+ if (toi_go_atomic(PMSG_QUIESCE, 0)) -+ goto Failed; -+ -+ /* We'll ignore saved state, but this gets preempt count (etc) right */ -+ save_processor_state(); -+ -+ error = swsusp_arch_resume(); -+ /* -+ * Code below is only ever reached in case of failure. Otherwise -+ * execution continues at place where swsusp_arch_suspend was called. -+ * -+ * We don't know whether it's safe to continue (this shouldn't happen), -+ * so lets err on the side of caution. -+ */ -+ BUG(); -+ -+Failed: -+ free_pbe_list(&restore_pblist, 0); -+#ifdef CONFIG_HIGHMEM -+ free_pbe_list(&restore_highmem_pblist, 1); -+#endif -+ toi_running = 0; -+ return 1; -+} -+ -+/** -+ * toi_go_atomic - do the actual atomic copy/restore -+ * @state: The state to use for dpm_suspend_start & power_down calls. -+ * @suspend_time: Whether we're suspending or resuming. -+ **/ -+int toi_go_atomic(pm_message_t state, int suspend_time) -+{ -+ if (suspend_time && platform_begin(1)) { -+ set_abort_result(TOI_PLATFORM_PREP_FAILED); -+ return 1; -+ } -+ -+ suspend_console(); -+ -+ if (dpm_suspend_start(state)) { -+ set_abort_result(TOI_DEVICE_REFUSED); -+ toi_end_atomic(ATOMIC_STEP_DEVICE_RESUME, suspend_time, 3); -+ return 1; -+ } -+ -+ if (suspend_time && arch_prepare_suspend()) { -+ set_abort_result(TOI_ARCH_PREPARE_FAILED); -+ toi_end_atomic(ATOMIC_STEP_DEVICE_RESUME, suspend_time, 1); -+ return 1; -+ } -+ -+ /* At this point, dpm_suspend_start() has been called, but *not* -+ * dpm_suspend_noirq(). We *must* dpm_suspend_noirq() now. -+ * Otherwise, drivers for some devices (e.g. interrupt controllers) -+ * become desynchronized with the actual state of the hardware -+ * at resume time, and evil weirdness ensues. -+ */ -+ -+ if (dpm_suspend_noirq(state)) { -+ set_abort_result(TOI_DEVICE_REFUSED); -+ toi_end_atomic(ATOMIC_STEP_DEVICE_RESUME, suspend_time, 1); -+ return 1; -+ } -+ -+ if (suspend_time && platform_pre_snapshot(1)) { -+ set_abort_result(TOI_PRE_SNAPSHOT_FAILED); -+ toi_end_atomic(ATOMIC_STEP_PLATFORM_FINISH, suspend_time, 1); -+ return 1; -+ } -+ -+ if (!suspend_time && platform_pre_restore(1)) { -+ set_abort_result(TOI_PRE_RESTORE_FAILED); -+ toi_end_atomic(ATOMIC_STEP_PLATFORM_FINISH, suspend_time, 1); -+ return 1; -+ } -+ -+ if (test_action_state(TOI_LATE_CPU_HOTPLUG)) { -+ if (disable_nonboot_cpus()) { -+ set_abort_result(TOI_CPU_HOTPLUG_FAILED); -+ toi_end_atomic(ATOMIC_STEP_CPU_HOTPLUG, -+ suspend_time, 1); -+ return 1; -+ } -+ } -+ -+ local_irq_disable(); -+ -+ if (sysdev_suspend(state)) { -+ set_abort_result(TOI_SYSDEV_REFUSED); -+ toi_end_atomic(ATOMIC_STEP_IRQS, suspend_time, 1); -+ return 1; -+ } -+ -+ return 0; -+} -+ -+/** -+ * toi_end_atomic - post atomic copy/restore routines -+ * @stage: What step to start at. -+ * @suspend_time: Whether we're suspending or resuming. -+ * @error: Whether we're recovering from an error. -+ **/ -+void toi_end_atomic(int stage, int suspend_time, int error) -+{ -+ switch (stage) { -+ case ATOMIC_ALL_STEPS: -+ if (!suspend_time) -+ platform_leave(1); -+ sysdev_resume(); -+ case ATOMIC_STEP_IRQS: -+ local_irq_enable(); -+ case ATOMIC_STEP_CPU_HOTPLUG: -+ if (test_action_state(TOI_LATE_CPU_HOTPLUG)) -+ enable_nonboot_cpus(); -+ platform_restore_cleanup(1); -+ case ATOMIC_STEP_PLATFORM_FINISH: -+ platform_finish(1); -+ dpm_resume_noirq(suspend_time ? -+ (error ? PMSG_RECOVER : PMSG_THAW) : PMSG_RESTORE); -+ case ATOMIC_STEP_DEVICE_RESUME: -+ if (suspend_time && (error & 2)) -+ platform_recover(1); -+ dpm_resume_end(suspend_time ? -+ ((error & 1) ? PMSG_RECOVER : PMSG_THAW) : -+ PMSG_RESTORE); -+ resume_console(); -+ platform_end(1); -+ -+ toi_prepare_status(DONT_CLEAR_BAR, "Post atomic."); -+ } -+} -diff --git a/kernel/power/tuxonice_atomic_copy.h b/kernel/power/tuxonice_atomic_copy.h -new file mode 100644 -index 0000000..e61b27b ---- /dev/null -+++ b/kernel/power/tuxonice_atomic_copy.h -@@ -0,0 +1,20 @@ -+/* -+ * kernel/power/tuxonice_atomic_copy.h -+ * -+ * Copyright 2008-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * Distributed under GPLv2. -+ * -+ * Routines for doing the atomic save/restore. -+ */ -+ -+enum { -+ ATOMIC_ALL_STEPS, -+ ATOMIC_STEP_IRQS, -+ ATOMIC_STEP_CPU_HOTPLUG, -+ ATOMIC_STEP_PLATFORM_FINISH, -+ ATOMIC_STEP_DEVICE_RESUME, -+}; -+ -+int toi_go_atomic(pm_message_t state, int toi_time); -+void toi_end_atomic(int stage, int toi_time, int error); -diff --git a/kernel/power/tuxonice_bio.h b/kernel/power/tuxonice_bio.h -new file mode 100644 -index 0000000..9627ccc ---- /dev/null -+++ b/kernel/power/tuxonice_bio.h -@@ -0,0 +1,77 @@ -+/* -+ * kernel/power/tuxonice_bio.h -+ * -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * Distributed under GPLv2. -+ * -+ * This file contains declarations for functions exported from -+ * tuxonice_bio.c, which contains low level io functions. -+ */ -+ -+#include -+#include "tuxonice_extent.h" -+ -+void toi_put_extent_chain(struct hibernate_extent_chain *chain); -+int toi_add_to_extent_chain(struct hibernate_extent_chain *chain, -+ unsigned long start, unsigned long end); -+ -+struct hibernate_extent_saved_state { -+ int extent_num; -+ struct hibernate_extent *extent_ptr; -+ unsigned long offset; -+}; -+ -+struct toi_bdev_info { -+ struct toi_bdev_info *next; -+ struct hibernate_extent_chain blocks; -+ struct block_device *bdev; -+ struct toi_module_ops *allocator; -+ int allocator_index; -+ struct hibernate_extent_chain allocations; -+ char name[266]; /* "swap on " or "file " + up to 256 chars */ -+ -+ /* Saved in header */ -+ char uuid[17]; -+ dev_t dev_t; -+ int prio; -+ int bmap_shift; -+ int blocks_per_page; -+ unsigned long pages_used; -+ struct hibernate_extent_saved_state saved_state[4]; -+}; -+ -+struct toi_extent_iterate_state { -+ struct toi_bdev_info *current_chain; -+ int num_chains; -+ int saved_chain_number[4]; -+ struct toi_bdev_info *saved_chain_ptr[4]; -+}; -+ -+/* -+ * Our exported interface so the swapwriter and filewriter don't -+ * need these functions duplicated. -+ */ -+struct toi_bio_ops { -+ int (*bdev_page_io) (int rw, struct block_device *bdev, long pos, -+ struct page *page); -+ int (*register_storage)(struct toi_bdev_info *new); -+ void (*free_storage)(void); -+}; -+ -+struct toi_allocator_ops { -+ unsigned long (*toi_swap_storage_available) (void); -+}; -+ -+extern struct toi_bio_ops toi_bio_ops; -+ -+extern char *toi_writer_buffer; -+extern int toi_writer_buffer_posn; -+ -+struct toi_bio_allocator_ops { -+ int (*register_storage) (void); -+ unsigned long (*storage_available)(void); -+ int (*allocate_storage) (struct toi_bdev_info *, unsigned long); -+ int (*bmap) (struct toi_bdev_info *); -+ void (*free_storage) (struct toi_bdev_info *); -+}; -diff --git a/kernel/power/tuxonice_bio_chains.c b/kernel/power/tuxonice_bio_chains.c -new file mode 100644 -index 0000000..2ac2042 ---- /dev/null -+++ b/kernel/power/tuxonice_bio_chains.c -@@ -0,0 +1,1044 @@ -+/* -+ * kernel/power/tuxonice_bio_devinfo.c -+ * -+ * Copyright (C) 2009-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * Distributed under GPLv2. -+ * -+ */ -+ -+#include -+#include "tuxonice_bio.h" -+#include "tuxonice_bio_internal.h" -+#include "tuxonice_alloc.h" -+#include "tuxonice_ui.h" -+#include "tuxonice.h" -+#include "tuxonice_io.h" -+ -+static struct toi_bdev_info *prio_chain_head; -+static int num_chains; -+ -+/* Pointer to current entry being loaded/saved. */ -+struct toi_extent_iterate_state toi_writer_posn; -+ -+#define metadata_size (sizeof(struct toi_bdev_info) - \ -+ offsetof(struct toi_bdev_info, uuid)) -+ -+/* -+ * After section 0 (header) comes 2 => next_section[0] = 2 -+ */ -+static int next_section[3] = { 2, 3, 1 }; -+ -+/** -+ * dump_block_chains - print the contents of the bdev info array. -+ **/ -+void dump_block_chains(void) -+{ -+ int i = 0; -+ int j; -+ struct toi_bdev_info *cur_chain = prio_chain_head; -+ -+ while (cur_chain) { -+ struct hibernate_extent *this = cur_chain->blocks.first; -+ -+ printk(KERN_DEBUG "Chain %d (prio %d):", i, cur_chain->prio); -+ -+ while (this) { -+ printk(KERN_CONT " [%lu-%lu]%s", this->start, -+ this->end, this->next ? "," : ""); -+ this = this->next; -+ } -+ -+ printk("\n"); -+ cur_chain = cur_chain->next; -+ i++; -+ } -+ -+ printk(KERN_DEBUG "Saved states:\n"); -+ for (i = 0; i < 4; i++) { -+ printk(KERN_DEBUG "Slot %d: Chain %d.\n", -+ i, toi_writer_posn.saved_chain_number[i]); -+ -+ cur_chain = prio_chain_head; -+ j = 0; -+ while (cur_chain) { -+ printk(KERN_DEBUG " Chain %d: Extent %d. Offset %lu.\n", -+ j, cur_chain->saved_state[i].extent_num, -+ cur_chain->saved_state[i].offset); -+ cur_chain = cur_chain->next; -+ j++; -+ } -+ printk(KERN_CONT "\n"); -+ } -+} -+ -+/** -+ * -+ **/ -+static void toi_extent_chain_next(void) -+{ -+ struct toi_bdev_info *this = toi_writer_posn.current_chain; -+ -+ if (!this->blocks.current_extent) -+ return; -+ -+ if (this->blocks.current_offset == this->blocks.current_extent->end) { -+ if (this->blocks.current_extent->next) { -+ this->blocks.current_extent = -+ this->blocks.current_extent->next; -+ this->blocks.current_offset = -+ this->blocks.current_extent->start; -+ } else { -+ this->blocks.current_extent = NULL; -+ this->blocks.current_offset = 0; -+ } -+ } else -+ this->blocks.current_offset++; -+} -+ -+/** -+ * -+ */ -+ -+static struct toi_bdev_info *__find_next_chain_same_prio(void) -+{ -+ struct toi_bdev_info *start_chain = toi_writer_posn.current_chain; -+ struct toi_bdev_info *this = start_chain; -+ int orig_prio = this->prio; -+ -+ do { -+ this = this->next; -+ -+ if (!this) -+ this = prio_chain_head; -+ -+ /* Back on original chain? Use it again. */ -+ if (this == start_chain) -+ return start_chain; -+ -+ } while (!this->blocks.current_extent || this->prio != orig_prio); -+ -+ return this; -+} -+ -+static void find_next_chain(void) -+{ -+ struct toi_bdev_info *this; -+ -+ this = __find_next_chain_same_prio(); -+ -+ /* -+ * If we didn't get another chain of the same priority that we -+ * can use, look for the next priority. -+ */ -+ while (this && !this->blocks.current_extent) -+ this = this->next; -+ -+ toi_writer_posn.current_chain = this; -+} -+ -+/** -+ * toi_extent_state_next - go to the next extent -+ * @blocks: The number of values to progress. -+ * @stripe_mode: Whether to spread usage across all chains. -+ * -+ * Given a state, progress to the next valid entry. We may begin in an -+ * invalid state, as we do when invoked after extent_state_goto_start below. -+ * -+ * When using compression and expected_compression > 0, we let the image size -+ * be larger than storage, so we can validly run out of data to return. -+ **/ -+static unsigned long toi_extent_state_next(int blocks, int current_stream) -+{ -+ int i; -+ -+ if (!toi_writer_posn.current_chain) -+ return -ENOSPC; -+ -+ /* Assume chains always have lengths that are multiples of @blocks */ -+ for (i = 0; i < blocks; i++) -+ toi_extent_chain_next(); -+ -+ /* The header stream is not striped */ -+ if (current_stream || -+ !toi_writer_posn.current_chain->blocks.current_extent) -+ find_next_chain(); -+ -+ return toi_writer_posn.current_chain ? 0 : -ENOSPC; -+} -+ -+static void toi_insert_chain_in_prio_list(struct toi_bdev_info *this) -+{ -+ struct toi_bdev_info **prev_ptr; -+ struct toi_bdev_info *cur; -+ -+ /* Loop through the existing chain, finding where to insert it */ -+ prev_ptr = &prio_chain_head; -+ cur = prio_chain_head; -+ -+ while (cur && cur->prio >= this->prio) { -+ prev_ptr = &cur->next; -+ cur = cur->next; -+ } -+ -+ this->next = *prev_ptr; -+ *prev_ptr = this; -+ -+ this = prio_chain_head; -+ while (this) -+ this = this->next; -+ num_chains++; -+} -+ -+/** -+ * toi_extent_state_goto_start - reinitialize an extent chain iterator -+ * @state: Iterator to reinitialize -+ **/ -+void toi_extent_state_goto_start(void) -+{ -+ struct toi_bdev_info *this = prio_chain_head; -+ -+ while (this) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "Setting current extent to %p.", this->blocks.first); -+ this->blocks.current_extent = this->blocks.first; -+ if (this->blocks.current_extent) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "Setting current offset to %lu.", -+ this->blocks.current_extent->start); -+ this->blocks.current_offset = -+ this->blocks.current_extent->start; -+ } -+ -+ this = this->next; -+ } -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Setting current chain to %p.", -+ prio_chain_head); -+ toi_writer_posn.current_chain = prio_chain_head; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Leaving extent state goto start."); -+} -+ -+/** -+ * toi_extent_state_save - save state of the iterator -+ * @state: Current state of the chain -+ * @saved_state: Iterator to populate -+ * -+ * Given a state and a struct hibernate_extent_state_store, save the current -+ * position in a format that can be used with relocated chains (at -+ * resume time). -+ **/ -+void toi_extent_state_save(int slot) -+{ -+ struct toi_bdev_info *cur_chain = prio_chain_head; -+ struct hibernate_extent *extent; -+ struct hibernate_extent_saved_state *chain_state; -+ int i = 0; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_extent_state_save, slot %d.", -+ slot); -+ -+ if (!toi_writer_posn.current_chain) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "No current chain => " -+ "chain_num = -1."); -+ toi_writer_posn.saved_chain_number[slot] = -1; -+ return; -+ } -+ -+ while (cur_chain) { -+ i++; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Saving chain %d (%p) " -+ "state, slot %d.", i, cur_chain, slot); -+ -+ chain_state = &cur_chain->saved_state[slot]; -+ -+ chain_state->offset = cur_chain->blocks.current_offset; -+ -+ if (toi_writer_posn.current_chain == cur_chain) { -+ toi_writer_posn.saved_chain_number[slot] = i; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "This is the chain " -+ "we were on => chain_num is %d.", i); -+ } -+ -+ if (!cur_chain->blocks.current_extent) { -+ chain_state->extent_num = 0; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "No current extent " -+ "for this chain => extent_num %d is 0.", -+ i); -+ cur_chain = cur_chain->next; -+ continue; -+ } -+ -+ extent = cur_chain->blocks.first; -+ chain_state->extent_num = 1; -+ -+ while (extent != cur_chain->blocks.current_extent) { -+ chain_state->extent_num++; -+ extent = extent->next; -+ } -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "extent num %d is %d.", i, -+ chain_state->extent_num); -+ -+ cur_chain = cur_chain->next; -+ } -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "Completed saving extent state slot %d.", slot); -+} -+ -+/** -+ * toi_extent_state_restore - restore the position saved by extent_state_save -+ * @state: State to populate -+ * @saved_state: Iterator saved to restore -+ **/ -+void toi_extent_state_restore(int slot) -+{ -+ int i = 0; -+ struct toi_bdev_info *cur_chain = prio_chain_head; -+ struct hibernate_extent_saved_state *chain_state; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "toi_extent_state_restore - slot %d.", slot); -+ -+ if (toi_writer_posn.saved_chain_number[slot] == -1) { -+ toi_writer_posn.current_chain = NULL; -+ return; -+ } -+ -+ while (cur_chain) { -+ int posn; -+ int j; -+ i++; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Restoring chain %d (%p) " -+ "state, slot %d.", i, cur_chain, slot); -+ -+ chain_state = &cur_chain->saved_state[slot]; -+ -+ posn = chain_state->extent_num; -+ -+ cur_chain->blocks.current_extent = cur_chain->blocks.first; -+ cur_chain->blocks.current_offset = chain_state->offset; -+ -+ if (i == toi_writer_posn.saved_chain_number[slot]) { -+ toi_writer_posn.current_chain = cur_chain; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "Found current chain."); -+ } -+ -+ for (j = 0; j < 4; j++) -+ if (i == toi_writer_posn.saved_chain_number[j]) { -+ toi_writer_posn.saved_chain_ptr[j] = cur_chain; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "Found saved chain ptr %d (%p) (offset" -+ " %d).", j, cur_chain, -+ cur_chain->saved_state[j].offset); -+ } -+ -+ if (posn) { -+ while (--posn) -+ cur_chain->blocks.current_extent = -+ cur_chain->blocks.current_extent->next; -+ } else -+ cur_chain->blocks.current_extent = NULL; -+ -+ cur_chain = cur_chain->next; -+ } -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Done."); -+ if (test_action_state(TOI_LOGALL)) -+ dump_block_chains(); -+} -+ -+/* -+ * Storage needed -+ * -+ * Returns amount of space in the image header required -+ * for the chain data. This ignores the links between -+ * pages, which we factor in when allocating the space. -+ */ -+int toi_bio_devinfo_storage_needed(void) -+{ -+ int result = sizeof(num_chains); -+ struct toi_bdev_info *chain = prio_chain_head; -+ -+ while (chain) { -+ result += metadata_size; -+ -+ /* Chain size */ -+ result += sizeof(int); -+ -+ /* Extents */ -+ result += (2 * sizeof(unsigned long) * -+ chain->blocks.num_extents); -+ -+ chain = chain->next; -+ } -+ -+ result += 4 * sizeof(int); -+ return result; -+} -+ -+static unsigned long chain_pages_used(struct toi_bdev_info *chain) -+{ -+ struct hibernate_extent *this = chain->blocks.first; -+ struct hibernate_extent_saved_state *state = &chain->saved_state[3]; -+ unsigned long size = 0; -+ int extent_idx = 1; -+ -+ if (!state->extent_num) { -+ if (!this) -+ return 0; -+ else -+ return chain->blocks.size; -+ } -+ -+ while (extent_idx < state->extent_num) { -+ size += (this->end - this->start + 1); -+ this = this->next; -+ extent_idx++; -+ } -+ -+ /* We didn't use the one we're sitting on, so don't count it */ -+ return size + state->offset - this->start; -+} -+ -+/** -+ * toi_serialise_extent_chain - write a chain in the image -+ * @chain: Chain to write. -+ **/ -+static int toi_serialise_extent_chain(struct toi_bdev_info *chain) -+{ -+ struct hibernate_extent *this; -+ int ret; -+ int i = 1; -+ -+ chain->pages_used = chain_pages_used(chain); -+ -+ if (test_action_state(TOI_LOGALL)) -+ dump_block_chains(); -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Serialising chain (dev_t %lx).", -+ chain->dev_t); -+ /* Device info - dev_t, prio, bmap_shift, blocks per page, positions */ -+ ret = toiActiveAllocator->rw_header_chunk(WRITE, &toi_blockwriter_ops, -+ (char *) &chain->uuid, metadata_size); -+ if (ret) -+ return ret; -+ -+ /* Num extents */ -+ ret = toiActiveAllocator->rw_header_chunk(WRITE, &toi_blockwriter_ops, -+ (char *) &chain->blocks.num_extents, sizeof(int)); -+ if (ret) -+ return ret; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "%d extents.", -+ chain->blocks.num_extents); -+ -+ this = chain->blocks.first; -+ while (this) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Extent %d.", i); -+ ret = toiActiveAllocator->rw_header_chunk(WRITE, -+ &toi_blockwriter_ops, -+ (char *) this, 2 * sizeof(this->start)); -+ if (ret) -+ return ret; -+ this = this->next; -+ i++; -+ } -+ -+ return ret; -+} -+ -+int toi_serialise_extent_chains(void) -+{ -+ struct toi_bdev_info *this = prio_chain_head; -+ int result; -+ -+ /* Write the number of chains */ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Write number of chains (%d)", -+ num_chains); -+ result = toiActiveAllocator->rw_header_chunk(WRITE, -+ &toi_blockwriter_ops, (char *) &num_chains, -+ sizeof(int)); -+ if (result) -+ return result; -+ -+ /* Then the chains themselves */ -+ while (this) { -+ result = toi_serialise_extent_chain(this); -+ if (result) -+ return result; -+ this = this->next; -+ } -+ -+ /* -+ * Finally, the chain we should be on at the start of each -+ * section. -+ */ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Saved chain numbers."); -+ result = toiActiveAllocator->rw_header_chunk(WRITE, -+ &toi_blockwriter_ops, -+ (char *) &toi_writer_posn.saved_chain_number[0], -+ 4 * sizeof(int)); -+ -+ return result; -+} -+ -+int toi_register_storage_chain(struct toi_bdev_info *new) -+{ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Inserting chain %p into list.", -+ new); -+ toi_insert_chain_in_prio_list(new); -+ return 0; -+} -+ -+static void free_bdev_info(struct toi_bdev_info *chain) -+{ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Free chain %p.", chain); -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, " - Block extents."); -+ toi_put_extent_chain(&chain->blocks); -+ -+ /* -+ * The allocator may need to do more than just free the chains -+ * (swap_free, for example). Don't call from boot kernel. -+ */ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, " - Allocator extents."); -+ if (chain->allocator) -+ chain->allocator->bio_allocator_ops->free_storage(chain); -+ -+ /* -+ * Dropping out of reading atomic copy? Need to undo -+ * toi_open_by_devnum. -+ */ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, " - Bdev."); -+ if (chain->bdev && !IS_ERR(chain->bdev) && -+ chain->bdev != resume_block_device && -+ chain->bdev != header_block_device && -+ test_toi_state(TOI_TRYING_TO_RESUME)) -+ toi_close_bdev(chain->bdev); -+ -+ /* Poison */ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, " - Struct."); -+ toi_kfree(39, chain, sizeof(*chain)); -+ -+ if (prio_chain_head == chain) -+ prio_chain_head = NULL; -+ -+ num_chains--; -+} -+ -+void free_all_bdev_info(void) -+{ -+ struct toi_bdev_info *this = prio_chain_head; -+ -+ while (this) { -+ struct toi_bdev_info *next = this->next; -+ free_bdev_info(this); -+ this = next; -+ } -+ -+ memset((char *) &toi_writer_posn, 0, sizeof(toi_writer_posn)); -+ prio_chain_head = NULL; -+} -+ -+static void set_up_start_position(void) -+{ -+ toi_writer_posn.current_chain = prio_chain_head; -+ go_next_page(0, 0); -+} -+ -+/** -+ * toi_load_extent_chain - read back a chain saved in the image -+ * @chain: Chain to load -+ * -+ * The linked list of extents is reconstructed from the disk. chain will point -+ * to the first entry. -+ **/ -+int toi_load_extent_chain(int index, int *num_loaded) -+{ -+ struct toi_bdev_info *chain = toi_kzalloc(39, -+ sizeof(struct toi_bdev_info), GFP_ATOMIC); -+ struct hibernate_extent *this, *last = NULL; -+ int i, ret; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Loading extent chain %d.", index); -+ /* Get dev_t, prio, bmap_shift, blocks per page, positions */ -+ ret = toiActiveAllocator->rw_header_chunk_noreadahead(READ, NULL, -+ (char *) &chain->uuid, metadata_size); -+ -+ if (ret) { -+ printk(KERN_ERR "Failed to read the size of extent chain.\n"); -+ toi_kfree(39, chain, sizeof(*chain)); -+ return 1; -+ } -+ -+ toi_bkd.pages_used[index] = chain->pages_used; -+ -+ ret = toiActiveAllocator->rw_header_chunk_noreadahead(READ, NULL, -+ (char *) &chain->blocks.num_extents, sizeof(int)); -+ if (ret) { -+ printk(KERN_ERR "Failed to read the size of extent chain.\n"); -+ toi_kfree(39, chain, sizeof(*chain)); -+ return 1; -+ } -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "%d extents.", -+ chain->blocks.num_extents); -+ -+ for (i = 0; i < chain->blocks.num_extents; i++) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Extent %d.", i + 1); -+ -+ this = toi_kzalloc(2, sizeof(struct hibernate_extent), -+ TOI_ATOMIC_GFP); -+ if (!this) { -+ printk(KERN_INFO "Failed to allocate a new extent.\n"); -+ free_bdev_info(chain); -+ return -ENOMEM; -+ } -+ this->next = NULL; -+ /* Get the next page */ -+ ret = toiActiveAllocator->rw_header_chunk_noreadahead(READ, -+ NULL, (char *) this, 2 * sizeof(this->start)); -+ if (ret) { -+ printk(KERN_INFO "Failed to read an extent.\n"); -+ toi_kfree(2, this, sizeof(struct hibernate_extent)); -+ free_bdev_info(chain); -+ return 1; -+ } -+ -+ if (last) -+ last->next = this; -+ else { -+ char b1[32], b2[32], b3[32]; -+ /* -+ * Open the bdev -+ */ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "Chain dev_t is %s. Resume dev t is %s. Header" -+ " bdev_t is %s.\n", -+ format_dev_t(b1, chain->dev_t), -+ format_dev_t(b2, resume_dev_t), -+ format_dev_t(b3, toi_sig_data->header_dev_t)); -+ -+ if (chain->dev_t == resume_dev_t) -+ chain->bdev = resume_block_device; -+ else if (chain->dev_t == toi_sig_data->header_dev_t) -+ chain->bdev = header_block_device; -+ else { -+ chain->bdev = toi_open_bdev(chain->uuid, -+ chain->dev_t, 1); -+ if (IS_ERR(chain->bdev)) { -+ free_bdev_info(chain); -+ return -ENODEV; -+ } -+ } -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Chain bmap shift " -+ "is %d and blocks per page is %d.", -+ chain->bmap_shift, -+ chain->blocks_per_page); -+ -+ chain->blocks.first = this; -+ -+ /* -+ * Couldn't do this earlier, but can't do -+ * goto_start now - we may have already used blocks -+ * in the first chain. -+ */ -+ chain->blocks.current_extent = this; -+ chain->blocks.current_offset = this->start; -+ -+ /* -+ * Can't wait until we've read the whole chain -+ * before we insert it in the list. We might need -+ * this chain to read the next page in the header -+ */ -+ toi_insert_chain_in_prio_list(chain); -+ } -+ -+ /* -+ * We have to wait until 2 extents are loaded before setting up -+ * properly because if the first extent has only one page, we -+ * will need to put the position on the second extent. Sounds -+ * obvious, but it wasn't! -+ */ -+ (*num_loaded)++; -+ if ((*num_loaded) == 2) -+ set_up_start_position(); -+ last = this; -+ } -+ -+ /* -+ * Shouldn't get empty chains, but it's not impossible. Link them in so -+ * they get freed properly later. -+ */ -+ if (!chain->blocks.num_extents) -+ toi_insert_chain_in_prio_list(chain); -+ -+ if (!chain->blocks.current_extent) { -+ chain->blocks.current_extent = chain->blocks.first; -+ if (chain->blocks.current_extent) -+ chain->blocks.current_offset = -+ chain->blocks.current_extent->start; -+ } -+ return 0; -+} -+ -+int toi_load_extent_chains(void) -+{ -+ int result; -+ int to_load; -+ int i; -+ int extents_loaded = 0; -+ -+ result = toiActiveAllocator->rw_header_chunk_noreadahead(READ, NULL, -+ (char *) &to_load, -+ sizeof(int)); -+ if (result) -+ return result; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "%d chains to read.", to_load); -+ -+ for (i = 0; i < to_load; i++) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, " >> Loading chain %d/%d.", -+ i, to_load); -+ result = toi_load_extent_chain(i, &extents_loaded); -+ if (result) -+ return result; -+ } -+ -+ /* If we never got to a second extent, we still need to do this. */ -+ if (extents_loaded == 1) -+ set_up_start_position(); -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Save chain numbers."); -+ result = toiActiveAllocator->rw_header_chunk_noreadahead(READ, -+ &toi_blockwriter_ops, -+ (char *) &toi_writer_posn.saved_chain_number[0], -+ 4 * sizeof(int)); -+ -+ return result; -+} -+ -+static int toi_end_of_stream(int writing, int section_barrier) -+{ -+ struct toi_bdev_info *cur_chain = toi_writer_posn.current_chain; -+ int compare_to = next_section[current_stream]; -+ struct toi_bdev_info *compare_chain = -+ toi_writer_posn.saved_chain_ptr[compare_to]; -+ int compare_offset = compare_chain ? -+ compare_chain->saved_state[compare_to].offset : 0; -+ -+ if (!section_barrier) -+ return 0; -+ -+ if (!cur_chain) -+ return 1; -+ -+ if (cur_chain == compare_chain && -+ cur_chain->blocks.current_offset == compare_offset) { -+ if (writing) { -+ if (!current_stream) { -+ debug_broken_header(); -+ return 1; -+ } -+ } else { -+ more_readahead = 0; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "Reached the end of stream %d " -+ "(not an error).", current_stream); -+ return 1; -+ } -+ } -+ -+ return 0; -+} -+ -+/** -+ * go_next_page - skip blocks to the start of the next page -+ * @writing: Whether we're reading or writing the image. -+ * -+ * Go forward one page. -+ **/ -+int go_next_page(int writing, int section_barrier) -+{ -+ struct toi_bdev_info *cur_chain = toi_writer_posn.current_chain; -+ int max = cur_chain ? cur_chain->blocks_per_page : 1; -+ -+ /* Nope. Go foward a page - or maybe two. Don't stripe the header, -+ * so that bad fragmentation doesn't put the extent data containing -+ * the location of the second page out of the first header page. -+ */ -+ if (toi_extent_state_next(max, current_stream)) { -+ /* Don't complain if readahead falls off the end */ -+ if (writing && section_barrier) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Extent state eof. " -+ "Expected compression ratio too optimistic?"); -+ if (test_action_state(TOI_LOGALL)) -+ dump_block_chains(); -+ } -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Ran out of extents to " -+ "read/write. (Not necessarily a fatal error."); -+ return -ENOSPC; -+ } -+ -+ return 0; -+} -+ -+int devices_of_same_priority(struct toi_bdev_info *this) -+{ -+ struct toi_bdev_info *check = prio_chain_head; -+ int i = 0; -+ -+ while (check) { -+ if (check->prio == this->prio) -+ i++; -+ check = check->next; -+ } -+ -+ return i; -+} -+ -+/** -+ * toi_bio_rw_page - do i/o on the next disk page in the image -+ * @writing: Whether reading or writing. -+ * @page: Page to do i/o on. -+ * @is_readahead: Whether we're doing readahead -+ * @free_group: The group used in allocating the page -+ * -+ * Submit a page for reading or writing, possibly readahead. -+ * Pass the group used in allocating the page as well, as it should -+ * be freed on completion of the bio if we're writing the page. -+ **/ -+int toi_bio_rw_page(int writing, struct page *page, -+ int is_readahead, int free_group) -+{ -+ int result = toi_end_of_stream(writing, 1); -+ struct toi_bdev_info *dev_info = toi_writer_posn.current_chain; -+ -+ if (result) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Seeking to read/write " -+ "another page when stream has ended."); -+ return -ENOSPC; -+ } -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "%sing device %lx, sector %d << %d.", -+ writing ? "Writ" : "Read", -+ dev_info->bdev, dev_info->blocks.current_offset, -+ dev_info->bmap_shift); -+ -+ result = toi_do_io(writing, dev_info->bdev, -+ dev_info->blocks.current_offset << dev_info->bmap_shift, -+ page, is_readahead, 0, free_group); -+ -+ /* Ignore the result here - will check end of stream if come in again */ -+ go_next_page(writing, 1); -+ -+ if (result) -+ printk(KERN_ERR "toi_do_io returned %d.\n", result); -+ return result; -+} -+ -+dev_t get_header_dev_t(void) -+{ -+ return prio_chain_head->dev_t; -+} -+ -+struct block_device *get_header_bdev(void) -+{ -+ return prio_chain_head->bdev; -+} -+ -+unsigned long get_headerblock(void) -+{ -+ return prio_chain_head->blocks.first->start << -+ prio_chain_head->bmap_shift; -+} -+ -+int get_main_pool_phys_params(void) -+{ -+ struct toi_bdev_info *this = prio_chain_head; -+ int result; -+ -+ while (this) { -+ result = this->allocator->bio_allocator_ops->bmap(this); -+ if (result) -+ return result; -+ this = this->next; -+ } -+ -+ return 0; -+} -+ -+static int apply_header_reservation(void) -+{ -+ int i; -+ -+ if (!header_pages_reserved) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "No header pages reserved at the moment."); -+ return 0; -+ } -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Applying header reservation."); -+ -+ /* Apply header space reservation */ -+ toi_extent_state_goto_start(); -+ -+ for (i = 0; i < header_pages_reserved; i++) -+ if (go_next_page(1, 0)) -+ return -ENOSPC; -+ -+ /* The end of header pages will be the start of pageset 2 */ -+ toi_extent_state_save(2); -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "Finished applying header reservation."); -+ return 0; -+} -+ -+static int toi_bio_register_storage(void) -+{ -+ int result = 0; -+ struct toi_module_ops *this_module; -+ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (!this_module->enabled || -+ this_module->type != BIO_ALLOCATOR_MODULE) -+ continue; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "Registering storage from %s.", -+ this_module->name); -+ result = this_module->bio_allocator_ops->register_storage(); -+ if (result) -+ break; -+ } -+ -+ return result; -+} -+ -+int toi_bio_allocate_storage(unsigned long request) -+{ -+ struct toi_bdev_info *chain = prio_chain_head; -+ unsigned long to_get = request; -+ unsigned long extra_pages, needed; -+ int no_free = 0; -+ -+ if (!chain) { -+ int result = toi_bio_register_storage(); -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_allocate_storage: " -+ "Registering storage."); -+ if (result) -+ return 0; -+ chain = prio_chain_head; -+ if (!chain) { -+ printk("TuxOnIce: No storage was registered.\n"); -+ return 0; -+ } -+ } -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_allocate_storage: " -+ "Request is %lu pages.", request); -+ extra_pages = DIV_ROUND_UP(request * (sizeof(unsigned long) -+ + sizeof(int)), PAGE_SIZE); -+ needed = request + extra_pages + header_pages_reserved; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Adding %lu extra pages and %lu " -+ "for header => %lu.", -+ extra_pages, header_pages_reserved, needed); -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Already allocated %lu pages.", -+ raw_pages_allocd); -+ -+ to_get = needed > raw_pages_allocd ? needed - raw_pages_allocd : 0; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Need to get %lu pages.", to_get); -+ -+ if (!to_get) -+ return apply_header_reservation(); -+ -+ while (to_get && chain) { -+ int num_group = devices_of_same_priority(chain); -+ int divisor = num_group - no_free; -+ int i; -+ unsigned long portion = DIV_ROUND_UP(to_get, divisor); -+ unsigned long got = 0; -+ unsigned long got_this_round = 0; -+ struct toi_bdev_info *top = chain; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ " Start of loop. To get is %lu. Divisor is %d.", -+ to_get, divisor); -+ no_free = 0; -+ -+ /* -+ * We're aiming to spread the allocated storage as evenly -+ * as possible, but we also want to get all the storage we -+ * can off this priority. -+ */ -+ for (i = 0; i < num_group; i++) { -+ struct toi_bio_allocator_ops *ops = -+ chain->allocator->bio_allocator_ops; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ " Asking for %lu pages from chain %p.", -+ portion, chain); -+ got = ops->allocate_storage(chain, portion); -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ " Got %lu pages from allocator %p.", -+ got, chain); -+ if (!got) -+ no_free++; -+ got_this_round += got; -+ chain = chain->next; -+ } -+ toi_message(TOI_IO, TOI_VERBOSE, 0, " Loop finished. Got a " -+ "total of %lu pages from %d allocators.", -+ got_this_round, divisor - no_free); -+ -+ raw_pages_allocd += got_this_round; -+ to_get = needed > raw_pages_allocd ? needed - raw_pages_allocd : -+ 0; -+ -+ /* -+ * If we got anything from chains of this priority and we -+ * still have storage to allocate, go over this priority -+ * again. -+ */ -+ if (got_this_round && to_get) -+ chain = top; -+ else -+ no_free = 0; -+ } -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Finished allocating. Calling " -+ "get_main_pool_phys_params"); -+ /* Now let swap allocator bmap the pages */ -+ get_main_pool_phys_params(); -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Done. Reserving header."); -+ return apply_header_reservation(); -+} -+ -+void toi_bio_chains_post_atomic(struct toi_boot_kernel_data *bkd) -+{ -+ int i = 0; -+ struct toi_bdev_info *cur_chain = prio_chain_head; -+ -+ while (cur_chain) { -+ cur_chain->pages_used = bkd->pages_used[i]; -+ cur_chain = cur_chain->next; -+ i++; -+ } -+} -+ -+int toi_bio_chains_debug_info(char *buffer, int size) -+{ -+ /* Show what we actually used */ -+ struct toi_bdev_info *cur_chain = prio_chain_head; -+ int len = 0; -+ -+ while (cur_chain) { -+ len += scnprintf(buffer + len, size - len, " Used %lu pages " -+ "from %s.\n", cur_chain->pages_used, -+ cur_chain->name); -+ cur_chain = cur_chain->next; -+ } -+ -+ return len; -+} -diff --git a/kernel/power/tuxonice_bio_core.c b/kernel/power/tuxonice_bio_core.c -new file mode 100644 -index 0000000..b8ae996 ---- /dev/null -+++ b/kernel/power/tuxonice_bio_core.c -@@ -0,0 +1,1810 @@ -+/* -+ * kernel/power/tuxonice_bio.c -+ * -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * Distributed under GPLv2. -+ * -+ * This file contains block io functions for TuxOnIce. These are -+ * used by the swapwriter and it is planned that they will also -+ * be used by the NFSwriter. -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "tuxonice.h" -+#include "tuxonice_sysfs.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_prepare_image.h" -+#include "tuxonice_bio.h" -+#include "tuxonice_ui.h" -+#include "tuxonice_alloc.h" -+#include "tuxonice_io.h" -+#include "tuxonice_builtin.h" -+#include "tuxonice_bio_internal.h" -+ -+#define MEMORY_ONLY 1 -+#define THROTTLE_WAIT 2 -+ -+/* #define MEASURE_MUTEX_CONTENTION */ -+#ifndef MEASURE_MUTEX_CONTENTION -+#define my_mutex_lock(index, the_lock) mutex_lock(the_lock) -+#define my_mutex_unlock(index, the_lock) mutex_unlock(the_lock) -+#else -+unsigned long mutex_times[2][2][NR_CPUS]; -+#define my_mutex_lock(index, the_lock) do { \ -+ int have_mutex; \ -+ have_mutex = mutex_trylock(the_lock); \ -+ if (!have_mutex) { \ -+ mutex_lock(the_lock); \ -+ mutex_times[index][0][smp_processor_id()]++; \ -+ } else { \ -+ mutex_times[index][1][smp_processor_id()]++; \ -+ } -+ -+#define my_mutex_unlock(index, the_lock) \ -+ mutex_unlock(the_lock); \ -+} while (0) -+#endif -+ -+static int page_idx, reset_idx; -+ -+static int target_outstanding_io = 1024; -+static int max_outstanding_writes, max_outstanding_reads; -+ -+static struct page *bio_queue_head, *bio_queue_tail; -+static atomic_t toi_bio_queue_size; -+static DEFINE_SPINLOCK(bio_queue_lock); -+ -+static int free_mem_throttle, throughput_throttle; -+int more_readahead = 1; -+static struct page *readahead_list_head, *readahead_list_tail; -+ -+static struct page *waiting_on; -+ -+static atomic_t toi_io_in_progress, toi_io_done; -+static DECLARE_WAIT_QUEUE_HEAD(num_in_progress_wait); -+ -+int current_stream; -+/* Not static, so that the allocators can setup and complete -+ * writing the header */ -+char *toi_writer_buffer; -+int toi_writer_buffer_posn; -+ -+static DEFINE_MUTEX(toi_bio_mutex); -+static DEFINE_MUTEX(toi_bio_readahead_mutex); -+ -+static struct task_struct *toi_queue_flusher; -+static int toi_bio_queue_flush_pages(int dedicated_thread); -+ -+struct toi_module_ops toi_blockwriter_ops; -+ -+#define TOTAL_OUTSTANDING_IO (atomic_read(&toi_io_in_progress) + \ -+ atomic_read(&toi_bio_queue_size)) -+ -+unsigned long raw_pages_allocd, header_pages_reserved; -+ -+/** -+ * set_free_mem_throttle - set the point where we pause to avoid oom. -+ * -+ * Initially, this value is zero, but when we first fail to allocate memory, -+ * we set it (plus a buffer) and thereafter throttle i/o once that limit is -+ * reached. -+ **/ -+static void set_free_mem_throttle(void) -+{ -+ int new_throttle = nr_unallocated_buffer_pages() + 256; -+ -+ if (new_throttle > free_mem_throttle) -+ free_mem_throttle = new_throttle; -+} -+ -+#define NUM_REASONS 7 -+static atomic_t reasons[NUM_REASONS]; -+static char *reason_name[NUM_REASONS] = { -+ "readahead not ready", -+ "bio allocation", -+ "synchronous I/O", -+ "toi_bio_get_new_page", -+ "memory low", -+ "readahead buffer allocation", -+ "throughput_throttle", -+}; -+ -+/* User Specified Parameters. */ -+unsigned long resume_firstblock; -+dev_t resume_dev_t; -+struct block_device *resume_block_device; -+static atomic_t resume_bdev_open_count; -+ -+struct block_device *header_block_device; -+ -+/** -+ * toi_open_bdev: Open a bdev at resume time. -+ * -+ * index: The swap index. May be MAX_SWAPFILES for the resume_dev_t -+ * (the user can have resume= pointing at a swap partition/file that isn't -+ * swapon'd when they hibernate. MAX_SWAPFILES+1 for the first page of the -+ * header. It will be from a swap partition that was enabled when we hibernated, -+ * but we don't know it's real index until we read that first page. -+ * dev_t: The device major/minor. -+ * display_errs: Whether to try to do this quietly. -+ * -+ * We stored a dev_t in the image header. Open the matching device without -+ * requiring /dev/ in most cases and record the details needed -+ * to close it later and avoid duplicating work. -+ */ -+struct block_device *toi_open_bdev(char *uuid, dev_t default_device, -+ int display_errs) -+{ -+ struct block_device *bdev; -+ dev_t device = default_device; -+ char buf[32]; -+ -+ if (uuid) { -+ device = blk_lookup_uuid(uuid); -+ if (!device) { -+ device = default_device; -+ printk(KERN_DEBUG "Unable to resolve uuid. Falling back" -+ " to dev_t.\n"); -+ } else -+ printk(KERN_DEBUG "Resolved uuid to device %s.\n", -+ format_dev_t(buf, device)); -+ } -+ -+ if (!device) { -+ printk(KERN_ERR "TuxOnIce attempting to open a " -+ "blank dev_t!\n"); -+ dump_stack(); -+ return NULL; -+ } -+ bdev = toi_open_by_devnum(device); -+ -+ if (IS_ERR(bdev) || !bdev) { -+ if (display_errs) -+ toi_early_boot_message(1, TOI_CONTINUE_REQ, -+ "Failed to get access to block device " -+ "\"%x\" (error %d).\n Maybe you need " -+ "to run mknod and/or lvmsetup in an " -+ "initrd/ramfs?", device, bdev); -+ return ERR_PTR(-EINVAL); -+ } -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "TuxOnIce got bdev %p for dev_t %x.", -+ bdev, device); -+ -+ return bdev; -+} -+ -+static void toi_bio_reserve_header_space(unsigned long request) -+{ -+ header_pages_reserved = request; -+} -+ -+/** -+ * do_bio_wait - wait for some TuxOnIce I/O to complete -+ * @reason: The array index of the reason we're waiting. -+ * -+ * Wait for a particular page of I/O if we're after a particular page. -+ * If we're not after a particular page, wait instead for all in flight -+ * I/O to be completed or for us to have enough free memory to be able -+ * to submit more I/O. -+ * -+ * If we wait, we also update our statistics regarding why we waited. -+ **/ -+static void do_bio_wait(int reason) -+{ -+ struct page *was_waiting_on = waiting_on; -+ -+ /* On SMP, waiting_on can be reset, so we make a copy */ -+ if (was_waiting_on) { -+ wait_on_page_locked(was_waiting_on); -+ atomic_inc(&reasons[reason]); -+ } else { -+ atomic_inc(&reasons[reason]); -+ -+ wait_event(num_in_progress_wait, -+ !atomic_read(&toi_io_in_progress) || -+ nr_unallocated_buffer_pages() > free_mem_throttle); -+ } -+} -+ -+/** -+ * throttle_if_needed - wait for I/O completion if throttle points are reached -+ * @flags: What to check and how to act. -+ * -+ * Check whether we need to wait for some I/O to complete. We always check -+ * whether we have enough memory available, but may also (depending upon -+ * @reason) check if the throughput throttle limit has been reached. -+ **/ -+static int throttle_if_needed(int flags) -+{ -+ int free_pages = nr_unallocated_buffer_pages(); -+ -+ /* Getting low on memory and I/O is in progress? */ -+ while (unlikely(free_pages < free_mem_throttle) && -+ atomic_read(&toi_io_in_progress) && -+ !test_result_state(TOI_ABORTED)) { -+ if (!(flags & THROTTLE_WAIT)) -+ return -ENOMEM; -+ do_bio_wait(4); -+ free_pages = nr_unallocated_buffer_pages(); -+ } -+ -+ while (!(flags & MEMORY_ONLY) && throughput_throttle && -+ TOTAL_OUTSTANDING_IO >= throughput_throttle && -+ !test_result_state(TOI_ABORTED)) { -+ int result = toi_bio_queue_flush_pages(0); -+ if (result) -+ return result; -+ atomic_inc(&reasons[6]); -+ wait_event(num_in_progress_wait, -+ !atomic_read(&toi_io_in_progress) || -+ TOTAL_OUTSTANDING_IO < throughput_throttle); -+ } -+ -+ return 0; -+} -+ -+/** -+ * update_throughput_throttle - update the raw throughput throttle -+ * @jif_index: The number of times this function has been called. -+ * -+ * This function is called four times per second by the core, and used to limit -+ * the amount of I/O we submit at once, spreading out our waiting through the -+ * whole job and letting userui get an opportunity to do its work. -+ * -+ * We don't start limiting I/O until 1/4s has gone so that we get a -+ * decent sample for our initial limit, and keep updating it because -+ * throughput may vary (on rotating media, eg) with our block number. -+ * -+ * We throttle to 1/10s worth of I/O. -+ **/ -+static void update_throughput_throttle(int jif_index) -+{ -+ int done = atomic_read(&toi_io_done); -+ throughput_throttle = done * 2 / 5 / jif_index; -+} -+ -+/** -+ * toi_finish_all_io - wait for all outstanding i/o to complete -+ * -+ * Flush any queued but unsubmitted I/O and wait for it all to complete. -+ **/ -+static int toi_finish_all_io(void) -+{ -+ int result = toi_bio_queue_flush_pages(0); -+ wait_event(num_in_progress_wait, !TOTAL_OUTSTANDING_IO); -+ return result; -+} -+ -+/** -+ * toi_end_bio - bio completion function. -+ * @bio: bio that has completed. -+ * @err: Error value. Yes, like end_swap_bio_read, we ignore it. -+ * -+ * Function called by the block driver from interrupt context when I/O is -+ * completed. If we were writing the page, we want to free it and will have -+ * set bio->bi_private to the parameter we should use in telling the page -+ * allocation accounting code what the page was allocated for. If we're -+ * reading the page, it will be in the singly linked list made from -+ * page->private pointers. -+ **/ -+static void toi_end_bio(struct bio *bio, int err) -+{ -+ struct page *page = bio->bi_io_vec[0].bv_page; -+ -+ BUG_ON(!test_bit(BIO_UPTODATE, &bio->bi_flags)); -+ -+ unlock_page(page); -+ bio_put(bio); -+ -+ if (waiting_on == page) -+ waiting_on = NULL; -+ -+ put_page(page); -+ -+ if (bio->bi_private) -+ toi__free_page((int) ((unsigned long) bio->bi_private) , page); -+ -+ bio_put(bio); -+ -+ atomic_dec(&toi_io_in_progress); -+ atomic_inc(&toi_io_done); -+ -+ wake_up(&num_in_progress_wait); -+} -+ -+/** -+ * submit - submit BIO request -+ * @writing: READ or WRITE. -+ * @dev: The block device we're using. -+ * @first_block: The first sector we're using. -+ * @page: The page being used for I/O. -+ * @free_group: If writing, the group that was used in allocating the page -+ * and which will be used in freeing the page from the completion -+ * routine. -+ * -+ * Based on Patrick Mochell's pmdisk code from long ago: "Straight from the -+ * textbook - allocate and initialize the bio. If we're writing, make sure -+ * the page is marked as dirty. Then submit it and carry on." -+ * -+ * If we're just testing the speed of our own code, we fake having done all -+ * the hard work and all toi_end_bio immediately. -+ **/ -+static int submit(int writing, struct block_device *dev, sector_t first_block, -+ struct page *page, int free_group) -+{ -+ struct bio *bio = NULL; -+ int cur_outstanding_io, result; -+ -+ /* -+ * Shouldn't throttle if reading - can deadlock in the single -+ * threaded case as pages are only freed when we use the -+ * readahead. -+ */ -+ if (writing) { -+ result = throttle_if_needed(MEMORY_ONLY | THROTTLE_WAIT); -+ if (result) -+ return result; -+ } -+ -+ while (!bio) { -+ bio = bio_alloc(TOI_ATOMIC_GFP, 1); -+ if (!bio) { -+ set_free_mem_throttle(); -+ do_bio_wait(1); -+ } -+ } -+ -+ bio->bi_bdev = dev; -+ bio->bi_sector = first_block; -+ bio->bi_private = (void *) ((unsigned long) free_group); -+ bio->bi_end_io = toi_end_bio; -+ -+ if (bio_add_page(bio, page, PAGE_SIZE, 0) < PAGE_SIZE) { -+ printk(KERN_DEBUG "ERROR: adding page to bio at %lld\n", -+ (unsigned long long) first_block); -+ bio_put(bio); -+ return -EFAULT; -+ } -+ -+ bio_get(bio); -+ -+ cur_outstanding_io = atomic_add_return(1, &toi_io_in_progress); -+ if (writing) { -+ if (cur_outstanding_io > max_outstanding_writes) -+ max_outstanding_writes = cur_outstanding_io; -+ } else { -+ if (cur_outstanding_io > max_outstanding_reads) -+ max_outstanding_reads = cur_outstanding_io; -+ } -+ -+ -+ if (unlikely(test_action_state(TOI_TEST_BIO))) { -+ /* Fake having done the hard work */ -+ set_bit(BIO_UPTODATE, &bio->bi_flags); -+ toi_end_bio(bio, 0); -+ } else -+ submit_bio(writing | (1 << BIO_RW_SYNCIO) | -+ (1 << BIO_RW_TUXONICE) | -+ (1 << BIO_RW_UNPLUG), bio); -+ -+ return 0; -+} -+ -+/** -+ * toi_do_io: Prepare to do some i/o on a page and submit or batch it. -+ * -+ * @writing: Whether reading or writing. -+ * @bdev: The block device which we're using. -+ * @block0: The first sector we're reading or writing. -+ * @page: The page on which I/O is being done. -+ * @readahead_index: If doing readahead, the index (reset this flag when done). -+ * @syncio: Whether the i/o is being done synchronously. -+ * -+ * Prepare and start a read or write operation. -+ * -+ * Note that we always work with our own page. If writing, we might be given a -+ * compression buffer that will immediately be used to start compressing the -+ * next page. For reading, we do readahead and therefore don't know the final -+ * address where the data needs to go. -+ **/ -+int toi_do_io(int writing, struct block_device *bdev, long block0, -+ struct page *page, int is_readahead, int syncio, int free_group) -+{ -+ page->private = 0; -+ -+ /* Do here so we don't race against toi_bio_get_next_page_read */ -+ lock_page(page); -+ -+ if (is_readahead) { -+ if (readahead_list_head) -+ readahead_list_tail->private = (unsigned long) page; -+ else -+ readahead_list_head = page; -+ -+ readahead_list_tail = page; -+ } -+ -+ /* Done before submitting to avoid races. */ -+ if (syncio) -+ waiting_on = page; -+ -+ /* Submit the page */ -+ get_page(page); -+ -+ if (submit(writing, bdev, block0, page, free_group)) -+ return -EFAULT; -+ -+ if (syncio) -+ do_bio_wait(2); -+ -+ return 0; -+} -+ -+/** -+ * toi_bdev_page_io - simpler interface to do directly i/o on a single page -+ * @writing: Whether reading or writing. -+ * @bdev: Block device on which we're operating. -+ * @pos: Sector at which page to read or write starts. -+ * @page: Page to be read/written. -+ * -+ * A simple interface to submit a page of I/O and wait for its completion. -+ * The caller must free the page used. -+ **/ -+static int toi_bdev_page_io(int writing, struct block_device *bdev, -+ long pos, struct page *page) -+{ -+ return toi_do_io(writing, bdev, pos, page, 0, 1, 0); -+} -+ -+/** -+ * toi_bio_memory_needed - report the amount of memory needed for block i/o -+ * -+ * We want to have at least enough memory so as to have target_outstanding_io -+ * or more transactions on the fly at once. If we can do more, fine. -+ **/ -+static int toi_bio_memory_needed(void) -+{ -+ return target_outstanding_io * (PAGE_SIZE + sizeof(struct request) + -+ sizeof(struct bio)); -+} -+ -+/** -+ * toi_bio_print_debug_stats - put out debugging info in the buffer provided -+ * @buffer: A buffer of size @size into which text should be placed. -+ * @size: The size of @buffer. -+ * -+ * Fill a buffer with debugging info. This is used for both our debug_info sysfs -+ * entry and for recording the same info in dmesg. -+ **/ -+static int toi_bio_print_debug_stats(char *buffer, int size) -+{ -+ int len = 0; -+ -+ if (toiActiveAllocator != &toi_blockwriter_ops) { -+ len = scnprintf(buffer, size, -+ "- Block I/O inactive.\n"); -+ return len; -+ } -+ -+ len = scnprintf(buffer, size, "- Block I/O active.\n"); -+ -+ len += toi_bio_chains_debug_info(buffer + len, size - len); -+ -+ len += scnprintf(buffer + len, size - len, -+ "- Max outstanding reads %d. Max writes %d.\n", -+ max_outstanding_reads, max_outstanding_writes); -+ -+ len += scnprintf(buffer + len, size - len, -+ " Memory_needed: %d x (%lu + %u + %u) = %d bytes.\n", -+ target_outstanding_io, -+ PAGE_SIZE, (unsigned int) sizeof(struct request), -+ (unsigned int) sizeof(struct bio), toi_bio_memory_needed()); -+ -+#ifdef MEASURE_MUTEX_CONTENTION -+ { -+ int i; -+ -+ len += scnprintf(buffer + len, size - len, -+ " Mutex contention while reading:\n Contended Free\n"); -+ -+ for_each_online_cpu(i) -+ len += scnprintf(buffer + len, size - len, -+ " %9lu %9lu\n", -+ mutex_times[0][0][i], mutex_times[0][1][i]); -+ -+ len += scnprintf(buffer + len, size - len, -+ " Mutex contention while writing:\n Contended Free\n"); -+ -+ for_each_online_cpu(i) -+ len += scnprintf(buffer + len, size - len, -+ " %9lu %9lu\n", -+ mutex_times[1][0][i], mutex_times[1][1][i]); -+ -+ } -+#endif -+ -+ return len + scnprintf(buffer + len, size - len, -+ " Free mem throttle point reached %d.\n", free_mem_throttle); -+} -+ -+static int total_header_bytes; -+static int unowned; -+ -+void debug_broken_header(void) -+{ -+ printk(KERN_DEBUG "Image header too big for size allocated!\n"); -+ print_toi_header_storage_for_modules(); -+ printk(KERN_DEBUG "Page flags : %d.\n", toi_pageflags_space_needed()); -+ printk(KERN_DEBUG "toi_header : %zu.\n", sizeof(struct toi_header)); -+ printk(KERN_DEBUG "Total unowned : %d.\n", unowned); -+ printk(KERN_DEBUG "Total used : %d (%ld pages).\n", total_header_bytes, -+ DIV_ROUND_UP(total_header_bytes, PAGE_SIZE)); -+ printk(KERN_DEBUG "Space needed now : %ld.\n", -+ get_header_storage_needed()); -+ dump_block_chains(); -+ abort_hibernate(TOI_HEADER_TOO_BIG, "Header reservation too small."); -+} -+ -+/** -+ * toi_rw_init - prepare to read or write a stream in the image -+ * @writing: Whether reading or writing. -+ * @stream number: Section of the image being processed. -+ * -+ * Prepare to read or write a section ('stream') in the image. -+ **/ -+static int toi_rw_init(int writing, int stream_number) -+{ -+ if (stream_number) -+ toi_extent_state_restore(stream_number); -+ else -+ toi_extent_state_goto_start(); -+ -+ if (writing) { -+ reset_idx = 0; -+ if (!current_stream) -+ page_idx = 0; -+ } else { -+ reset_idx = 1; -+ } -+ -+ atomic_set(&toi_io_done, 0); -+ if (!toi_writer_buffer) -+ toi_writer_buffer = (char *) toi_get_zeroed_page(11, -+ TOI_ATOMIC_GFP); -+ toi_writer_buffer_posn = writing ? 0 : PAGE_SIZE; -+ -+ current_stream = stream_number; -+ -+ more_readahead = 1; -+ -+ return toi_writer_buffer ? 0 : -ENOMEM; -+} -+ -+/** -+ * toi_bio_queue_write - queue a page for writing -+ * @full_buffer: Pointer to a page to be queued -+ * -+ * Add a page to the queue to be submitted. If we're the queue flusher, -+ * we'll do this once we've dropped toi_bio_mutex, so other threads can -+ * continue to submit I/O while we're on the slow path doing the actual -+ * submission. -+ **/ -+static void toi_bio_queue_write(char **full_buffer) -+{ -+ struct page *page = virt_to_page(*full_buffer); -+ unsigned long flags; -+ -+ *full_buffer = NULL; -+ page->private = 0; -+ -+ spin_lock_irqsave(&bio_queue_lock, flags); -+ if (!bio_queue_head) -+ bio_queue_head = page; -+ else -+ bio_queue_tail->private = (unsigned long) page; -+ -+ bio_queue_tail = page; -+ atomic_inc(&toi_bio_queue_size); -+ -+ spin_unlock_irqrestore(&bio_queue_lock, flags); -+ wake_up(&toi_io_queue_flusher); -+} -+ -+/** -+ * toi_rw_cleanup - Cleanup after i/o. -+ * @writing: Whether we were reading or writing. -+ * -+ * Flush all I/O and clean everything up after reading or writing a -+ * section of the image. -+ **/ -+static int toi_rw_cleanup(int writing) -+{ -+ int i, result = 0; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_rw_cleanup."); -+ if (writing) { -+ if (toi_writer_buffer_posn && !test_result_state(TOI_ABORTED)) -+ toi_bio_queue_write(&toi_writer_buffer); -+ -+ while (bio_queue_head && !result) -+ result = toi_bio_queue_flush_pages(0); -+ -+ if (result) -+ return result; -+ -+ if (current_stream == 2) -+ toi_extent_state_save(1); -+ else if (current_stream == 1) -+ toi_extent_state_save(3); -+ } -+ -+ result = toi_finish_all_io(); -+ -+ while (readahead_list_head) { -+ void *next = (void *) readahead_list_head->private; -+ toi__free_page(12, readahead_list_head); -+ readahead_list_head = next; -+ } -+ -+ readahead_list_tail = NULL; -+ -+ if (!current_stream) -+ return result; -+ -+ for (i = 0; i < NUM_REASONS; i++) { -+ if (!atomic_read(&reasons[i])) -+ continue; -+ printk(KERN_DEBUG "Waited for i/o due to %s %d times.\n", -+ reason_name[i], atomic_read(&reasons[i])); -+ atomic_set(&reasons[i], 0); -+ } -+ -+ current_stream = 0; -+ return result; -+} -+ -+/** -+ * toi_start_one_readahead - start one page of readahead -+ * @dedicated_thread: Is this a thread dedicated to doing readahead? -+ * -+ * Start one new page of readahead. If this is being called by a thread -+ * whose only just is to submit readahead, don't quit because we failed -+ * to allocate a page. -+ **/ -+static int toi_start_one_readahead(int dedicated_thread) -+{ -+ char *buffer = NULL; -+ int oom = 0, result; -+ -+ result = throttle_if_needed(dedicated_thread ? THROTTLE_WAIT : 0); -+ if (result) -+ return result; -+ -+ mutex_lock(&toi_bio_readahead_mutex); -+ -+ while (!buffer) { -+ buffer = (char *) toi_get_zeroed_page(12, -+ TOI_ATOMIC_GFP); -+ if (!buffer) { -+ if (oom && !dedicated_thread) { -+ mutex_unlock(&toi_bio_readahead_mutex); -+ return -ENOMEM; -+ } -+ -+ oom = 1; -+ set_free_mem_throttle(); -+ do_bio_wait(5); -+ } -+ } -+ -+ result = toi_bio_rw_page(READ, virt_to_page(buffer), 1, 0); -+ if (result == -ENOSPC) -+ toi__free_page(12, virt_to_page(buffer)); -+ mutex_unlock(&toi_bio_readahead_mutex); -+ if (result) { -+ if (result == -ENOSPC) -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "Last readahead page submitted."); -+ else -+ printk(KERN_DEBUG "toi_bio_rw_page returned %d.\n", -+ result); -+ } -+ return result; -+} -+ -+/** -+ * toi_start_new_readahead - start new readahead -+ * @dedicated_thread: Are we dedicated to this task? -+ * -+ * Start readahead of image pages. -+ * -+ * We can be called as a thread dedicated to this task (may be helpful on -+ * systems with lots of CPUs), in which case we don't exit until there's no -+ * more readahead. -+ * -+ * If this is not called by a dedicated thread, we top up our queue until -+ * there's no more readahead to submit, we've submitted the number given -+ * in target_outstanding_io or the number in progress exceeds the target -+ * outstanding I/O value. -+ * -+ * No mutex needed because this is only ever called by the first cpu. -+ **/ -+static int toi_start_new_readahead(int dedicated_thread) -+{ -+ int last_result, num_submitted = 0; -+ -+ /* Start a new readahead? */ -+ if (!more_readahead) -+ return 0; -+ -+ do { -+ last_result = toi_start_one_readahead(dedicated_thread); -+ -+ if (last_result) { -+ if (last_result == -ENOMEM || last_result == -ENOSPC) -+ return 0; -+ -+ printk(KERN_DEBUG -+ "Begin read chunk returned %d.\n", -+ last_result); -+ } else -+ num_submitted++; -+ -+ } while (more_readahead && !last_result && -+ (dedicated_thread || -+ (num_submitted < target_outstanding_io && -+ atomic_read(&toi_io_in_progress) < target_outstanding_io))); -+ -+ return last_result; -+} -+ -+/** -+ * bio_io_flusher - start the dedicated I/O flushing routine -+ * @writing: Whether we're writing the image. -+ **/ -+static int bio_io_flusher(int writing) -+{ -+ -+ if (writing) -+ return toi_bio_queue_flush_pages(1); -+ else -+ return toi_start_new_readahead(1); -+} -+ -+/** -+ * toi_bio_get_next_page_read - read a disk page, perhaps with readahead -+ * @no_readahead: Whether we can use readahead -+ * -+ * Read a page from disk, submitting readahead and cleaning up finished i/o -+ * while we wait for the page we're after. -+ **/ -+static int toi_bio_get_next_page_read(int no_readahead) -+{ -+ unsigned long *virt; -+ struct page *next; -+ -+ /* -+ * When reading the second page of the header, we have to -+ * delay submitting the read until after we've gotten the -+ * extents out of the first page. -+ */ -+ if (unlikely(no_readahead && toi_start_one_readahead(0))) { -+ printk(KERN_EMERG "No readahead and toi_start_one_readahead " -+ "returned non-zero.\n"); -+ return -EIO; -+ } -+ -+ if (unlikely(!readahead_list_head)) { -+ /* -+ * If the last page finishes exactly on the page -+ * boundary, we will be called one extra time and -+ * have no data to return. In this case, we should -+ * not BUG(), like we used to! -+ */ -+ if (!more_readahead) { -+ printk(KERN_EMERG "No more readahead.\n"); -+ return -ENOSPC; -+ } -+ if (unlikely(toi_start_one_readahead(0))) { -+ printk(KERN_EMERG "No readahead and " -+ "toi_start_one_readahead returned non-zero.\n"); -+ return -EIO; -+ } -+ } -+ -+ if (PageLocked(readahead_list_head)) { -+ waiting_on = readahead_list_head; -+ do_bio_wait(0); -+ } -+ -+ virt = page_address(readahead_list_head); -+ memcpy(toi_writer_buffer, virt, PAGE_SIZE); -+ -+ next = (struct page *) readahead_list_head->private; -+ toi__free_page(12, readahead_list_head); -+ readahead_list_head = next; -+ return 0; -+} -+ -+/** -+ * toi_bio_queue_flush_pages - flush the queue of pages queued for writing -+ * @dedicated_thread: Whether we're a dedicated thread -+ * -+ * Flush the queue of pages ready to be written to disk. -+ * -+ * If we're a dedicated thread, stay in here until told to leave, -+ * sleeping in wait_event. -+ * -+ * The first thread is normally the only one to come in here. Another -+ * thread can enter this routine too, though, via throttle_if_needed. -+ * Since that's the case, we must be careful to only have one thread -+ * doing this work at a time. Otherwise we have a race and could save -+ * pages out of order. -+ * -+ * If an error occurs, free all remaining pages without submitting them -+ * for I/O. -+ **/ -+ -+int toi_bio_queue_flush_pages(int dedicated_thread) -+{ -+ unsigned long flags; -+ int result = 0; -+ static DEFINE_MUTEX(busy); -+ -+ if (!mutex_trylock(&busy)) -+ return 0; -+ -+top: -+ spin_lock_irqsave(&bio_queue_lock, flags); -+ while (bio_queue_head) { -+ struct page *page = bio_queue_head; -+ bio_queue_head = (struct page *) page->private; -+ if (bio_queue_tail == page) -+ bio_queue_tail = NULL; -+ atomic_dec(&toi_bio_queue_size); -+ spin_unlock_irqrestore(&bio_queue_lock, flags); -+ -+ /* Don't generate more error messages if already had one */ -+ if (!result) -+ result = toi_bio_rw_page(WRITE, page, 0, 11); -+ /* -+ * If writing the page failed, don't drop out. -+ * Flush the rest of the queue too. -+ */ -+ if (result) -+ toi__free_page(11 , page); -+ spin_lock_irqsave(&bio_queue_lock, flags); -+ } -+ spin_unlock_irqrestore(&bio_queue_lock, flags); -+ -+ if (dedicated_thread) { -+ wait_event(toi_io_queue_flusher, bio_queue_head || -+ toi_bio_queue_flusher_should_finish); -+ if (likely(!toi_bio_queue_flusher_should_finish)) -+ goto top; -+ toi_bio_queue_flusher_should_finish = 0; -+ } -+ -+ mutex_unlock(&busy); -+ return result; -+} -+ -+/** -+ * toi_bio_get_new_page - get a new page for I/O -+ * @full_buffer: Pointer to a page to allocate. -+ **/ -+static int toi_bio_get_new_page(char **full_buffer) -+{ -+ int result = throttle_if_needed(THROTTLE_WAIT); -+ if (result) -+ return result; -+ -+ while (!*full_buffer) { -+ *full_buffer = (char *) toi_get_zeroed_page(11, TOI_ATOMIC_GFP); -+ if (!*full_buffer) { -+ set_free_mem_throttle(); -+ do_bio_wait(3); -+ } -+ } -+ -+ return 0; -+} -+ -+/** -+ * toi_rw_buffer - combine smaller buffers into PAGE_SIZE I/O -+ * @writing: Bool - whether writing (or reading). -+ * @buffer: The start of the buffer to write or fill. -+ * @buffer_size: The size of the buffer to write or fill. -+ * @no_readahead: Don't try to start readhead (when getting extents). -+ **/ -+static int toi_rw_buffer(int writing, char *buffer, int buffer_size, -+ int no_readahead) -+{ -+ int bytes_left = buffer_size, result = 0; -+ -+ while (bytes_left) { -+ char *source_start = buffer + buffer_size - bytes_left; -+ char *dest_start = toi_writer_buffer + toi_writer_buffer_posn; -+ int capacity = PAGE_SIZE - toi_writer_buffer_posn; -+ char *to = writing ? dest_start : source_start; -+ char *from = writing ? source_start : dest_start; -+ -+ if (bytes_left <= capacity) { -+ memcpy(to, from, bytes_left); -+ toi_writer_buffer_posn += bytes_left; -+ return 0; -+ } -+ -+ /* Complete this page and start a new one */ -+ memcpy(to, from, capacity); -+ bytes_left -= capacity; -+ -+ if (!writing) { -+ /* -+ * Perform actual I/O: -+ * read readahead_list_head into toi_writer_buffer -+ */ -+ int result = toi_bio_get_next_page_read(no_readahead); -+ if (result) { -+ printk("toi_bio_get_next_page_read " -+ "returned %d.\n", result); -+ return result; -+ } -+ } else { -+ toi_bio_queue_write(&toi_writer_buffer); -+ result = toi_bio_get_new_page(&toi_writer_buffer); -+ if (result) { -+ printk(KERN_ERR "toi_bio_get_new_page returned " -+ "%d.\n", result); -+ return result; -+ } -+ } -+ -+ toi_writer_buffer_posn = 0; -+ toi_cond_pause(0, NULL); -+ } -+ -+ return 0; -+} -+ -+/** -+ * toi_bio_read_page - read a page of the image -+ * @pfn: The pfn where the data belongs. -+ * @buffer_page: The page containing the (possibly compressed) data. -+ * @buf_size: The number of bytes on @buffer_page used (PAGE_SIZE). -+ * -+ * Read a (possibly compressed) page from the image, into buffer_page, -+ * returning its pfn and the buffer size. -+ **/ -+static int toi_bio_read_page(unsigned long *pfn, struct page *buffer_page, -+ unsigned int *buf_size) -+{ -+ int result = 0; -+ int this_idx; -+ char *buffer_virt = kmap(buffer_page); -+ -+ /* -+ * Only call start_new_readahead if we don't have a dedicated thread -+ * and we're the queue flusher. -+ */ -+ if (current == toi_queue_flusher && more_readahead) { -+ int result2 = toi_start_new_readahead(0); -+ if (result2) { -+ printk(KERN_DEBUG "Queue flusher and " -+ "toi_start_one_readahead returned non-zero.\n"); -+ result = -EIO; -+ goto out; -+ } -+ } -+ -+ my_mutex_lock(0, &toi_bio_mutex); -+ -+ /* -+ * Structure in the image: -+ * [destination pfn|page size|page data] -+ * buf_size is PAGE_SIZE -+ */ -+ if (toi_rw_buffer(READ, (char *) &this_idx, sizeof(int), 0) || -+ toi_rw_buffer(READ, (char *) pfn, sizeof(unsigned long), 0) || -+ toi_rw_buffer(READ, (char *) buf_size, sizeof(int), 0) || -+ toi_rw_buffer(READ, buffer_virt, *buf_size, 0)) { -+ abort_hibernate(TOI_FAILED_IO, "Read of data failed."); -+ result = 1; -+ } -+ -+ if (reset_idx) { -+ page_idx = this_idx; -+ reset_idx = 0; -+ } else { -+ page_idx++; -+ if (page_idx != this_idx) -+ printk(KERN_ERR "Got page index %d, expected %d.\n", -+ this_idx, page_idx); -+ } -+ -+ my_mutex_unlock(0, &toi_bio_mutex); -+out: -+ kunmap(buffer_page); -+ return result; -+} -+ -+/** -+ * toi_bio_write_page - write a page of the image -+ * @pfn: The pfn where the data belongs. -+ * @buffer_page: The page containing the (possibly compressed) data. -+ * @buf_size: The number of bytes on @buffer_page used. -+ * -+ * Write a (possibly compressed) page to the image from the buffer, together -+ * with it's index and buffer size. -+ **/ -+static int toi_bio_write_page(unsigned long pfn, struct page *buffer_page, -+ unsigned int buf_size) -+{ -+ char *buffer_virt; -+ int result = 0, result2 = 0; -+ -+ if (unlikely(test_action_state(TOI_TEST_FILTER_SPEED))) -+ return 0; -+ -+ my_mutex_lock(1, &toi_bio_mutex); -+ -+ if (test_result_state(TOI_ABORTED)) { -+ my_mutex_unlock(1, &toi_bio_mutex); -+ return -EIO; -+ } -+ -+ buffer_virt = kmap(buffer_page); -+ page_idx++; -+ -+ /* -+ * Structure in the image: -+ * [destination pfn|page size|page data] -+ * buf_size is PAGE_SIZE -+ */ -+ if (toi_rw_buffer(WRITE, (char *) &page_idx, sizeof(int), 0) || -+ toi_rw_buffer(WRITE, (char *) &pfn, sizeof(unsigned long), 0) || -+ toi_rw_buffer(WRITE, (char *) &buf_size, sizeof(int), 0) || -+ toi_rw_buffer(WRITE, buffer_virt, buf_size, 0)) { -+ printk(KERN_DEBUG "toi_rw_buffer returned non-zero to " -+ "toi_bio_write_page.\n"); -+ result = -EIO; -+ } -+ -+ kunmap(buffer_page); -+ my_mutex_unlock(1, &toi_bio_mutex); -+ -+ if (current == toi_queue_flusher) -+ result2 = toi_bio_queue_flush_pages(0); -+ -+ return result ? result : result2; -+} -+ -+/** -+ * _toi_rw_header_chunk - read or write a portion of the image header -+ * @writing: Whether reading or writing. -+ * @owner: The module for which we're writing. -+ * Used for confirming that modules -+ * don't use more header space than they asked for. -+ * @buffer: Address of the data to write. -+ * @buffer_size: Size of the data buffer. -+ * @no_readahead: Don't try to start readhead (when getting extents). -+ * -+ * Perform PAGE_SIZE I/O. Start readahead if needed. -+ **/ -+static int _toi_rw_header_chunk(int writing, struct toi_module_ops *owner, -+ char *buffer, int buffer_size, int no_readahead) -+{ -+ int result = 0; -+ -+ if (owner) { -+ owner->header_used += buffer_size; -+ toi_message(TOI_HEADER, TOI_LOW, 1, -+ "Header: %s : %d bytes (%d/%d) from offset %d.", -+ owner->name, -+ buffer_size, owner->header_used, -+ owner->header_requested, -+ toi_writer_buffer_posn); -+ if (owner->header_used > owner->header_requested && writing) { -+ printk(KERN_EMERG "TuxOnIce module %s is using more " -+ "header space (%u) than it requested (%u).\n", -+ owner->name, -+ owner->header_used, -+ owner->header_requested); -+ return buffer_size; -+ } -+ } else { -+ unowned += buffer_size; -+ toi_message(TOI_HEADER, TOI_LOW, 1, -+ "Header: (No owner): %d bytes (%d total so far) from " -+ "offset %d.", buffer_size, unowned, -+ toi_writer_buffer_posn); -+ } -+ -+ if (!writing && !no_readahead && more_readahead) { -+ result = toi_start_new_readahead(0); -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Start new readahead " -+ "returned %d.", result); -+ } -+ -+ if (!result) { -+ result = toi_rw_buffer(writing, buffer, buffer_size, -+ no_readahead); -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "rw_buffer returned " -+ "%d.", result); -+ } -+ -+ total_header_bytes += buffer_size; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "_toi_rw_header_chunk returning " -+ "%d.", result); -+ return result; -+} -+ -+static int toi_rw_header_chunk(int writing, struct toi_module_ops *owner, -+ char *buffer, int size) -+{ -+ return _toi_rw_header_chunk(writing, owner, buffer, size, 1); -+} -+ -+static int toi_rw_header_chunk_noreadahead(int writing, -+ struct toi_module_ops *owner, char *buffer, int size) -+{ -+ return _toi_rw_header_chunk(writing, owner, buffer, size, 1); -+} -+ -+/** -+ * toi_bio_storage_needed - get the amount of storage needed for my fns -+ **/ -+static int toi_bio_storage_needed(void) -+{ -+ return sizeof(int) + PAGE_SIZE + toi_bio_devinfo_storage_needed(); -+} -+ -+/** -+ * toi_bio_save_config_info - save block I/O config to image header -+ * @buf: PAGE_SIZE'd buffer into which data should be saved. -+ **/ -+static int toi_bio_save_config_info(char *buf) -+{ -+ int *ints = (int *) buf; -+ ints[0] = target_outstanding_io; -+ return sizeof(int); -+} -+ -+/** -+ * toi_bio_load_config_info - restore block I/O config -+ * @buf: Data to be reloaded. -+ * @size: Size of the buffer saved. -+ **/ -+static void toi_bio_load_config_info(char *buf, int size) -+{ -+ int *ints = (int *) buf; -+ target_outstanding_io = ints[0]; -+} -+ -+void close_resume_dev_t(int force) -+{ -+ if (!resume_block_device) -+ return; -+ -+ if (force) -+ atomic_set(&resume_bdev_open_count, 0); -+ else -+ atomic_dec(&resume_bdev_open_count); -+ -+ if (!atomic_read(&resume_bdev_open_count)) { -+ toi_close_bdev(resume_block_device); -+ resume_block_device = NULL; -+ } -+} -+ -+int open_resume_dev_t(int force, int quiet) -+{ -+ if (force) { -+ close_resume_dev_t(1); -+ atomic_set(&resume_bdev_open_count, 1); -+ } else -+ atomic_inc(&resume_bdev_open_count); -+ -+ if (resume_block_device) -+ return 0; -+ -+ resume_block_device = toi_open_bdev(NULL, resume_dev_t, 0); -+ if (IS_ERR(resume_block_device)) { -+ if (!quiet) -+ toi_early_boot_message(1, TOI_CONTINUE_REQ, -+ "Failed to open device %x, where" -+ " the header should be found.", -+ resume_dev_t); -+ resume_block_device = NULL; -+ atomic_set(&resume_bdev_open_count, 0); -+ return 1; -+ } -+ -+ return 0; -+} -+ -+/** -+ * toi_bio_initialise - initialise bio code at start of some action -+ * @starting_cycle: Whether starting a hibernation cycle, or just reading or -+ * writing a sysfs value. -+ **/ -+static int toi_bio_initialise(int starting_cycle) -+{ -+ int result; -+ -+ if (!starting_cycle || !resume_dev_t) -+ return 0; -+ -+ max_outstanding_writes = 0; -+ max_outstanding_reads = 0; -+ current_stream = 0; -+ toi_queue_flusher = current; -+#ifdef MEASURE_MUTEX_CONTENTION -+ { -+ int i, j, k; -+ -+ for (i = 0; i < 2; i++) -+ for (j = 0; j < 2; j++) -+ for_each_online_cpu(k) -+ mutex_times[i][j][k] = 0; -+ } -+#endif -+ result = open_resume_dev_t(0, 1); -+ -+ if (result) -+ return result; -+ -+ return get_signature_page(); -+} -+ -+static unsigned long raw_to_real(unsigned long raw) -+{ -+ unsigned long result; -+ -+ result = raw - (raw * (sizeof(unsigned long) + sizeof(int)) + -+ (PAGE_SIZE + sizeof(unsigned long) + sizeof(int) + 1)) / -+ (PAGE_SIZE + sizeof(unsigned long) + sizeof(int)); -+ -+ return result < 0 ? 0 : result; -+} -+ -+static unsigned long toi_bio_storage_available(void) -+{ -+ unsigned long sum = 0; -+ struct toi_module_ops *this_module; -+ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (!this_module->enabled || -+ this_module->type != BIO_ALLOCATOR_MODULE) -+ continue; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Seeking storage " -+ "available from %s.", this_module->name); -+ sum += this_module->bio_allocator_ops->storage_available(); -+ } -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Total storage available is %lu " -+ "pages.", sum); -+ return raw_to_real(sum - header_pages_reserved); -+ -+} -+ -+static unsigned long toi_bio_storage_allocated(void) -+{ -+ return raw_pages_allocd > header_pages_reserved ? -+ raw_to_real(raw_pages_allocd - header_pages_reserved) : 0; -+} -+ -+/* -+ * If we have read part of the image, we might have filled memory with -+ * data that should be zeroed out. -+ */ -+static void toi_bio_noresume_reset(void) -+{ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_noresume_reset."); -+ toi_rw_cleanup(READ); -+ free_all_bdev_info(); -+} -+ -+/** -+ * toi_bio_cleanup - cleanup after some action -+ * @finishing_cycle: Whether completing a cycle. -+ **/ -+static void toi_bio_cleanup(int finishing_cycle) -+{ -+ if (!finishing_cycle) -+ return; -+ -+ if (toi_writer_buffer) { -+ toi_free_page(11, (unsigned long) toi_writer_buffer); -+ toi_writer_buffer = NULL; -+ } -+ -+ forget_signature_page(); -+ -+ if (header_block_device && toi_sig_data && -+ toi_sig_data->header_dev_t != resume_dev_t) -+ toi_close_bdev(header_block_device); -+ -+ header_block_device = NULL; -+ -+ close_resume_dev_t(0); -+} -+ -+static int toi_bio_write_header_init(void) -+{ -+ int result; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_write_header_init"); -+ toi_rw_init(WRITE, 0); -+ toi_writer_buffer_posn = 0; -+ -+ /* Info needed to bootstrap goes at the start of the header. -+ * First we save the positions and devinfo, including the number -+ * of header pages. Then we save the structs containing data needed -+ * for reading the header pages back. -+ * Note that even if header pages take more than one page, when we -+ * read back the info, we will have restored the location of the -+ * next header page by the time we go to use it. -+ */ -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "serialise extent chains."); -+ result = toi_serialise_extent_chains(); -+ -+ if (result) -+ return result; -+ -+ /* -+ * Signature page hasn't been modified at this point. Write it in -+ * the header so we can restore it later. -+ */ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "serialise signature page."); -+ return toi_rw_header_chunk_noreadahead(WRITE, &toi_blockwriter_ops, -+ (char *) toi_cur_sig_page, -+ PAGE_SIZE); -+} -+ -+static int toi_bio_write_header_cleanup(void) -+{ -+ int result = 0; -+ -+ if (toi_writer_buffer_posn) -+ toi_bio_queue_write(&toi_writer_buffer); -+ -+ result = toi_finish_all_io(); -+ -+ unowned = 0; -+ total_header_bytes = 0; -+ -+ /* Set signature to save we have an image */ -+ if (!result) -+ result = toi_bio_mark_have_image(); -+ -+ return result; -+} -+ -+/* -+ * toi_bio_read_header_init() -+ * -+ * Description: -+ * 1. Attempt to read the device specified with resume=. -+ * 2. Check the contents of the swap header for our signature. -+ * 3. Warn, ignore, reset and/or continue as appropriate. -+ * 4. If continuing, read the toi_swap configuration section -+ * of the header and set up block device info so we can read -+ * the rest of the header & image. -+ * -+ * Returns: -+ * May not return if user choose to reboot at a warning. -+ * -EINVAL if cannot resume at this time. Booting should continue -+ * normally. -+ */ -+ -+static int toi_bio_read_header_init(void) -+{ -+ int result = 0; -+ char buf[32]; -+ -+ toi_writer_buffer_posn = 0; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_read_header_init"); -+ -+ if (!toi_sig_data) { -+ printk(KERN_INFO "toi_bio_read_header_init called when we " -+ "haven't verified there is an image!\n"); -+ return -EINVAL; -+ } -+ -+ /* -+ * If the header is not on the resume_swap_dev_t, get the resume device -+ * first. -+ */ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Header dev_t is %lx.", -+ toi_sig_data->header_dev_t); -+ if (toi_sig_data->have_uuid) { -+ dev_t device; -+ device = blk_lookup_uuid(toi_sig_data->header_uuid); -+ if (device) { -+ printk("Using dev_t %s, returned by blk_lookup_uuid.\n", -+ format_dev_t(buf, device)); -+ toi_sig_data->header_dev_t = device; -+ } -+ } -+ if (toi_sig_data->header_dev_t != resume_dev_t) { -+ header_block_device = toi_open_bdev(NULL, -+ toi_sig_data->header_dev_t, 1); -+ -+ if (IS_ERR(header_block_device)) -+ return PTR_ERR(header_block_device); -+ } else -+ header_block_device = resume_block_device; -+ -+ if (!toi_writer_buffer) -+ toi_writer_buffer = (char *) toi_get_zeroed_page(11, -+ TOI_ATOMIC_GFP); -+ more_readahead = 1; -+ -+ /* -+ * Read toi_swap configuration. -+ * Headerblock size taken into account already. -+ */ -+ result = toi_bio_ops.bdev_page_io(READ, header_block_device, -+ toi_sig_data->first_header_block, -+ virt_to_page((unsigned long) toi_writer_buffer)); -+ if (result) -+ return result; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "load extent chains."); -+ result = toi_load_extent_chains(); -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "load original signature page."); -+ toi_orig_sig_page = (char *) toi_get_zeroed_page(38, TOI_ATOMIC_GFP); -+ if (!toi_orig_sig_page) { -+ printk(KERN_ERR "Failed to allocate memory for the current" -+ " image signature.\n"); -+ return -ENOMEM; -+ } -+ -+ return toi_rw_header_chunk_noreadahead(READ, &toi_blockwriter_ops, -+ (char *) toi_orig_sig_page, -+ PAGE_SIZE); -+} -+ -+static int toi_bio_read_header_cleanup(void) -+{ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_read_header_cleanup."); -+ return toi_rw_cleanup(READ); -+} -+ -+/* Works only for digits and letters, but small and fast */ -+#define TOLOWER(x) ((x) | 0x20) -+ -+/* -+ * UUID must be 32 chars long. It may have dashes, but nothing -+ * else. -+ */ -+char *uuid_from_commandline(char *commandline) -+{ -+ int low = 0; -+ char *result = NULL, *output, *ptr; -+ -+ if (strncmp(commandline, "UUID=", 5)) -+ return NULL; -+ -+ result = kzalloc(17, GFP_KERNEL); -+ if (!result) { -+ printk("Failed to kzalloc UUID text memory.\n"); -+ return NULL; -+ } -+ -+ ptr = commandline + 5; -+ output = result; -+ -+ while (*ptr && (output - result) < 16) { -+ if (isxdigit(*ptr)) { -+ int value = isdigit(*ptr) ? *ptr - '0' : -+ TOLOWER(*ptr) - 'a' + 10; -+ if (low) { -+ *output += value; -+ output++; -+ } else { -+ *output = value << 4; -+ } -+ low = !low; -+ } else if (*ptr != '-') -+ break; -+ ptr++; -+ } -+ -+ if ((output - result) < 16 || *ptr) { -+ printk(KERN_DEBUG "Found resume=UUID=, but the value looks " -+ "invalid.\n"); -+ kfree(result); -+ result = NULL; -+ } -+ -+ return result; -+} -+ -+#define retry_if_fails(command) \ -+do { \ -+ command; \ -+ if (!resume_dev_t && !waited_for_device_probe) { \ -+ wait_for_device_probe(); \ -+ scsi_complete_async_scans(); \ -+ command; \ -+ waited_for_device_probe = 1; \ -+ } \ -+} while(0) -+ -+/** -+ * try_to_open_resume_device: Try to parse and open resume= -+ * -+ * Any "swap:" has been stripped away and we just have the path to deal with. -+ * We attempt to do name_to_dev_t, open and stat the file. Having opened the -+ * file, get the struct block_device * to match. -+ */ -+static int try_to_open_resume_device(char *commandline, int quiet) -+{ -+ struct kstat stat; -+ int error = 0; -+ char *uuid = uuid_from_commandline(commandline); -+ int waited_for_device_probe = 0; -+ -+ resume_dev_t = MKDEV(0, 0); -+ -+ if (!strlen(commandline)) -+ retry_if_fails(toi_bio_scan_for_image(quiet)); -+ -+ if (uuid) { -+ retry_if_fails(resume_dev_t = blk_lookup_uuid(uuid)); -+ kfree(uuid); -+ } -+ -+ if (!resume_dev_t) -+ retry_if_fails(resume_dev_t = name_to_dev_t(commandline)); -+ -+ if (!resume_dev_t) { -+ struct file *file = filp_open(commandline, -+ O_RDONLY|O_LARGEFILE, 0); -+ -+ if (!IS_ERR(file) && file) { -+ vfs_getattr(file->f_vfsmnt, file->f_dentry, &stat); -+ filp_close(file, NULL); -+ } else -+ error = vfs_stat(commandline, &stat); -+ if (!error) -+ resume_dev_t = stat.rdev; -+ } -+ -+ if (!resume_dev_t) { -+ if (quiet) -+ return 1; -+ -+ if (test_toi_state(TOI_TRYING_TO_RESUME)) -+ toi_early_boot_message(1, toi_translate_err_default, -+ "Failed to translate \"%s\" into a device id.\n", -+ commandline); -+ else -+ printk("TuxOnIce: Can't translate \"%s\" into a device " -+ "id yet.\n", commandline); -+ return 1; -+ } -+ -+ return open_resume_dev_t(1, quiet); -+} -+ -+/* -+ * Parse Image Location -+ * -+ * Attempt to parse a resume= parameter. -+ * Swap Writer accepts: -+ * resume=[swap:|file:]DEVNAME[:FIRSTBLOCK][@BLOCKSIZE] -+ * -+ * Where: -+ * DEVNAME is convertable to a dev_t by name_to_dev_t -+ * FIRSTBLOCK is the location of the first block in the swap file -+ * (specifying for a swap partition is nonsensical but not prohibited). -+ * Data is validated by attempting to read a swap header from the -+ * location given. Failure will result in toi_swap refusing to -+ * save an image, and a reboot with correct parameters will be -+ * necessary. -+ */ -+static int toi_bio_parse_sig_location(char *commandline, -+ int only_allocator, int quiet) -+{ -+ char *thischar, *devstart, *colon = NULL; -+ int signature_found, result = -EINVAL, temp_result = 0; -+ -+ if (strncmp(commandline, "swap:", 5) && -+ strncmp(commandline, "file:", 5)) { -+ /* -+ * Failing swap:, we'll take a simple resume=/dev/hda2, or a -+ * blank value (scan) but fall through to other allocators -+ * if /dev/ or UUID= isn't matched. -+ */ -+ if (strncmp(commandline, "/dev/", 5) && -+ strncmp(commandline, "UUID=", 5) && -+ strlen(commandline)) -+ return 1; -+ } else -+ commandline += 5; -+ -+ devstart = commandline; -+ thischar = commandline; -+ while ((*thischar != ':') && (*thischar != '@') && -+ ((thischar - commandline) < 250) && (*thischar)) -+ thischar++; -+ -+ if (*thischar == ':') { -+ colon = thischar; -+ *colon = 0; -+ thischar++; -+ } -+ -+ while ((thischar - commandline) < 250 && *thischar) -+ thischar++; -+ -+ if (colon) { -+ unsigned long block; -+ temp_result = strict_strtoul(colon + 1, 0, &block); -+ if (!temp_result) -+ resume_firstblock = (int) block; -+ } else -+ resume_firstblock = 0; -+ -+ clear_toi_state(TOI_CAN_HIBERNATE); -+ clear_toi_state(TOI_CAN_RESUME); -+ -+ if (!temp_result) -+ temp_result = try_to_open_resume_device(devstart, quiet); -+ -+ if (colon) -+ *colon = ':'; -+ -+ /* No error if we only scanned */ -+ if (temp_result) -+ return strlen(commandline) ? -EINVAL : 1; -+ -+ signature_found = toi_bio_image_exists(quiet); -+ -+ if (signature_found != -1) { -+ result = 0; -+ /* -+ * TODO: If only file storage, CAN_HIBERNATE should only be -+ * set if file allocator's target is valid. -+ */ -+ set_toi_state(TOI_CAN_HIBERNATE); -+ set_toi_state(TOI_CAN_RESUME); -+ } else -+ if (!quiet) -+ printk(KERN_ERR "TuxOnIce: Block I/O: No " -+ "signature found at %s.\n", devstart); -+ -+ close_resume_dev_t(0); -+ return result; -+} -+ -+static void toi_bio_release_storage(void) -+{ -+ header_pages_reserved = 0; -+ raw_pages_allocd = 0; -+ -+ free_all_bdev_info(); -+} -+ -+/* toi_swap_remove_image -+ * -+ */ -+static int toi_bio_remove_image(void) -+{ -+ int result; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_remove_image."); -+ -+ result = toi_bio_restore_original_signature(); -+ -+ /* -+ * We don't do a sanity check here: we want to restore the swap -+ * whatever version of kernel made the hibernate image. -+ * -+ * We need to write swap, but swap may not be enabled so -+ * we write the device directly -+ * -+ * If we don't have an current_signature_page, we didn't -+ * read an image header, so don't change anything. -+ */ -+ -+ toi_bio_release_storage(); -+ -+ return result; -+} -+ -+struct toi_bio_ops toi_bio_ops = { -+ .bdev_page_io = toi_bdev_page_io, -+ .register_storage = toi_register_storage_chain, -+ .free_storage = toi_bio_release_storage, -+}; -+EXPORT_SYMBOL_GPL(toi_bio_ops); -+ -+static struct toi_sysfs_data sysfs_params[] = { -+ SYSFS_INT("target_outstanding_io", SYSFS_RW, &target_outstanding_io, -+ 0, 16384, 0, NULL), -+}; -+ -+struct toi_module_ops toi_blockwriter_ops = { -+ .type = WRITER_MODULE, -+ .name = "block i/o", -+ .directory = "block_io", -+ .module = THIS_MODULE, -+ .memory_needed = toi_bio_memory_needed, -+ .print_debug_info = toi_bio_print_debug_stats, -+ .storage_needed = toi_bio_storage_needed, -+ .save_config_info = toi_bio_save_config_info, -+ .load_config_info = toi_bio_load_config_info, -+ .initialise = toi_bio_initialise, -+ .cleanup = toi_bio_cleanup, -+ .post_atomic_restore = toi_bio_chains_post_atomic, -+ -+ .rw_init = toi_rw_init, -+ .rw_cleanup = toi_rw_cleanup, -+ .read_page = toi_bio_read_page, -+ .write_page = toi_bio_write_page, -+ .rw_header_chunk = toi_rw_header_chunk, -+ .rw_header_chunk_noreadahead = toi_rw_header_chunk_noreadahead, -+ .io_flusher = bio_io_flusher, -+ .update_throughput_throttle = update_throughput_throttle, -+ .finish_all_io = toi_finish_all_io, -+ -+ .noresume_reset = toi_bio_noresume_reset, -+ .storage_available = toi_bio_storage_available, -+ .storage_allocated = toi_bio_storage_allocated, -+ .reserve_header_space = toi_bio_reserve_header_space, -+ .allocate_storage = toi_bio_allocate_storage, -+ .image_exists = toi_bio_image_exists, -+ .mark_resume_attempted = toi_bio_mark_resume_attempted, -+ .write_header_init = toi_bio_write_header_init, -+ .write_header_cleanup = toi_bio_write_header_cleanup, -+ .read_header_init = toi_bio_read_header_init, -+ .read_header_cleanup = toi_bio_read_header_cleanup, -+ .get_header_version = toi_bio_get_header_version, -+ .remove_image = toi_bio_remove_image, -+ .parse_sig_location = toi_bio_parse_sig_location, -+ -+ .sysfs_data = sysfs_params, -+ .num_sysfs_entries = sizeof(sysfs_params) / -+ sizeof(struct toi_sysfs_data), -+}; -+ -+/** -+ * toi_block_io_load - load time routine for block I/O module -+ * -+ * Register block i/o ops and sysfs entries. -+ **/ -+static __init int toi_block_io_load(void) -+{ -+ return toi_register_module(&toi_blockwriter_ops); -+} -+ -+#ifdef MODULE -+static __exit void toi_block_io_unload(void) -+{ -+ toi_unregister_module(&toi_blockwriter_ops); -+} -+ -+module_init(toi_block_io_load); -+module_exit(toi_block_io_unload); -+MODULE_LICENSE("GPL"); -+MODULE_AUTHOR("Nigel Cunningham"); -+MODULE_DESCRIPTION("TuxOnIce block io functions"); -+#else -+late_initcall(toi_block_io_load); -+#endif -diff --git a/kernel/power/tuxonice_bio_internal.h b/kernel/power/tuxonice_bio_internal.h -new file mode 100644 -index 0000000..58c2481 ---- /dev/null -+++ b/kernel/power/tuxonice_bio_internal.h -@@ -0,0 +1,86 @@ -+/* -+ * kernel/power/tuxonice_bio_internal.h -+ * -+ * Copyright (C) 2009-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * Distributed under GPLv2. -+ * -+ * This file contains declarations for functions exported from -+ * tuxonice_bio.c, which contains low level io functions. -+ */ -+ -+/* Extent chains */ -+void toi_extent_state_goto_start(void); -+void toi_extent_state_save(int slot); -+int go_next_page(int writing, int section_barrier); -+void toi_extent_state_restore(int slot); -+void free_all_bdev_info(void); -+int devices_of_same_priority(struct toi_bdev_info *this); -+int toi_register_storage_chain(struct toi_bdev_info *new); -+int toi_serialise_extent_chains(void); -+int toi_load_extent_chains(void); -+int toi_bio_rw_page(int writing, struct page *page, int is_readahead, -+ int free_group); -+int toi_bio_restore_original_signature(void); -+int toi_bio_devinfo_storage_needed(void); -+unsigned long get_headerblock(void); -+dev_t get_header_dev_t(void); -+struct block_device *get_header_bdev(void); -+int toi_bio_allocate_storage(unsigned long request); -+ -+/* Signature functions */ -+#define HaveImage "HaveImage" -+#define NoImage "TuxOnIce" -+#define sig_size (sizeof(HaveImage)) -+ -+struct sig_data { -+ char sig[sig_size]; -+ int have_image; -+ int resumed_before; -+ -+ char have_uuid; -+ char header_uuid[17]; -+ dev_t header_dev_t; -+ unsigned long first_header_block; -+ -+ /* Repeat the signature to be sure we have a header version */ -+ char sig2[sig_size]; -+ int header_version; -+}; -+ -+void forget_signature_page(void); -+int toi_check_for_signature(void); -+int toi_bio_image_exists(int quiet); -+int get_signature_page(void); -+int toi_bio_mark_resume_attempted(int); -+extern char *toi_cur_sig_page; -+extern char *toi_orig_sig_page; -+int toi_bio_mark_have_image(void); -+extern struct sig_data *toi_sig_data; -+extern dev_t resume_dev_t; -+extern struct block_device *resume_block_device; -+extern struct block_device *header_block_device; -+extern unsigned long resume_firstblock; -+ -+struct block_device *open_bdev(dev_t device, int display_errs); -+extern int current_stream; -+extern int more_readahead; -+int toi_do_io(int writing, struct block_device *bdev, long block0, -+ struct page *page, int is_readahead, int syncio, int free_group); -+int get_main_pool_phys_params(void); -+ -+void toi_close_bdev(struct block_device *bdev); -+struct block_device *toi_open_bdev(char *uuid, dev_t default_device, -+ int display_errs); -+ -+extern struct toi_module_ops toi_blockwriter_ops; -+void dump_block_chains(void); -+void debug_broken_header(void); -+extern unsigned long raw_pages_allocd, header_pages_reserved; -+int toi_bio_chains_debug_info(char *buffer, int size); -+void toi_bio_chains_post_atomic(struct toi_boot_kernel_data *bkd); -+int toi_bio_scan_for_image(int quiet); -+int toi_bio_get_header_version(void); -+ -+void close_resume_dev_t(int force); -+int open_resume_dev_t(int force, int quiet); -diff --git a/kernel/power/tuxonice_bio_signature.c b/kernel/power/tuxonice_bio_signature.c -new file mode 100644 -index 0000000..e6f6cc8 ---- /dev/null -+++ b/kernel/power/tuxonice_bio_signature.c -@@ -0,0 +1,410 @@ -+/* -+ * kernel/power/tuxonice_bio_signature.c -+ * -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * Distributed under GPLv2. -+ * -+ */ -+ -+#include -+ -+#include "tuxonice.h" -+#include "tuxonice_sysfs.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_prepare_image.h" -+#include "tuxonice_bio.h" -+#include "tuxonice_ui.h" -+#include "tuxonice_alloc.h" -+#include "tuxonice_io.h" -+#include "tuxonice_builtin.h" -+#include "tuxonice_bio_internal.h" -+ -+struct sig_data *toi_sig_data; -+ -+/* Struct of swap header pages */ -+ -+struct old_sig_data { -+ dev_t device; -+ unsigned long sector; -+ int resume_attempted; -+ int orig_sig_type; -+}; -+ -+union diskpage { -+ union swap_header swh; /* swh.magic is the only member used */ -+ struct sig_data sig_data; -+ struct old_sig_data old_sig_data; -+}; -+ -+union p_diskpage { -+ union diskpage *pointer; -+ char *ptr; -+ unsigned long address; -+}; -+ -+char *toi_cur_sig_page; -+char *toi_orig_sig_page; -+int have_image; -+int have_old_image; -+ -+int get_signature_page(void) -+{ -+ if (!toi_cur_sig_page) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "Allocating current signature page."); -+ toi_cur_sig_page = (char *) toi_get_zeroed_page(38, -+ TOI_ATOMIC_GFP); -+ if (!toi_cur_sig_page) { -+ printk(KERN_ERR "Failed to allocate memory for the " -+ "current image signature.\n"); -+ return -ENOMEM; -+ } -+ -+ toi_sig_data = (struct sig_data *) toi_cur_sig_page; -+ } -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Reading signature from dev %lx," -+ " sector %d.", -+ resume_block_device->bd_dev, resume_firstblock); -+ -+ return toi_bio_ops.bdev_page_io(READ, resume_block_device, -+ resume_firstblock, virt_to_page(toi_cur_sig_page)); -+} -+ -+void forget_signature_page(void) -+{ -+ if (toi_cur_sig_page) { -+ toi_sig_data = NULL; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Freeing toi_cur_sig_page" -+ " (%p).", toi_cur_sig_page); -+ toi_free_page(38, (unsigned long) toi_cur_sig_page); -+ toi_cur_sig_page = NULL; -+ } -+ -+ if (toi_orig_sig_page) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Freeing toi_orig_sig_page" -+ " (%p).", toi_orig_sig_page); -+ toi_free_page(38, (unsigned long) toi_orig_sig_page); -+ toi_orig_sig_page = NULL; -+ } -+} -+ -+/* -+ * We need to ensure we use the signature page that's currently on disk, -+ * so as to not remove the image header. Post-atomic-restore, the orig sig -+ * page will be empty, so we can use that as our method of knowing that we -+ * need to load the on-disk signature and not use the non-image sig in -+ * memory. (We're going to powerdown after writing the change, so it's safe. -+ */ -+int toi_bio_mark_resume_attempted(int flag) -+{ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Make resume attempted = %d.", -+ flag); -+ if (!toi_orig_sig_page) { -+ forget_signature_page(); -+ get_signature_page(); -+ } -+ toi_sig_data->resumed_before = flag; -+ return toi_bio_ops.bdev_page_io(WRITE, resume_block_device, -+ resume_firstblock, virt_to_page(toi_cur_sig_page)); -+} -+ -+int toi_bio_mark_have_image(void) -+{ -+ int result = 0; -+ char buf[32]; -+ struct fs_info *fs_info; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Recording that an image exists."); -+ memcpy(toi_sig_data->sig, tuxonice_signature, -+ sizeof(tuxonice_signature)); -+ toi_sig_data->have_image = 1; -+ toi_sig_data->resumed_before = 0; -+ toi_sig_data->header_dev_t = get_header_dev_t(); -+ toi_sig_data->have_uuid = 0; -+ -+ fs_info = fs_info_from_block_dev(get_header_bdev()); -+ if (fs_info && !IS_ERR(fs_info)) { -+ memcpy(toi_sig_data->header_uuid, &fs_info->uuid, 16); -+ free_fs_info(fs_info); -+ } else -+ result = (int) PTR_ERR(fs_info); -+ -+ if (!result) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Got uuid for dev_t %s.", -+ format_dev_t(buf, get_header_dev_t())); -+ toi_sig_data->have_uuid = 1; -+ } else -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Could not get uuid for " -+ "dev_t %s.", -+ format_dev_t(buf, get_header_dev_t())); -+ -+ toi_sig_data->first_header_block = get_headerblock(); -+ have_image = 1; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "header dev_t is %x. First block " -+ "is %d.", toi_sig_data->header_dev_t, -+ toi_sig_data->first_header_block); -+ -+ memcpy(toi_sig_data->sig2, tuxonice_signature, -+ sizeof(tuxonice_signature)); -+ toi_sig_data->header_version = TOI_HEADER_VERSION; -+ -+ return toi_bio_ops.bdev_page_io(WRITE, resume_block_device, -+ resume_firstblock, virt_to_page(toi_cur_sig_page)); -+} -+ -+int remove_old_signature(void) -+{ -+ union p_diskpage swap_header_page = (union p_diskpage) toi_cur_sig_page; -+ char *orig_sig, *no_image_signature_contents; -+ char *header_start = (char *) toi_get_zeroed_page(38, TOI_ATOMIC_GFP); -+ int result; -+ struct block_device *header_bdev; -+ struct old_sig_data *old_sig_data = -+ &swap_header_page.pointer->old_sig_data; -+ -+ header_bdev = toi_open_bdev(NULL, old_sig_data->device, 1); -+ result = toi_bio_ops.bdev_page_io(READ, header_bdev, -+ old_sig_data->sector, virt_to_page(header_start)); -+ -+ if (result) -+ goto out; -+ -+ /* -+ * TODO: Get the original contents of the first bytes of the swap -+ * header page. -+ */ -+ if (!old_sig_data->orig_sig_type) -+ orig_sig = "SWAP-SPACE"; -+ else -+ orig_sig = "SWAPSPACE2"; -+ -+ memcpy(swap_header_page.pointer->swh.magic.magic, orig_sig, 10); -+ memcpy(swap_header_page.ptr, header_start, -+ sizeof(no_image_signature_contents)); -+ -+ result = toi_bio_ops.bdev_page_io(WRITE, resume_block_device, -+ resume_firstblock, virt_to_page(swap_header_page.ptr)); -+ -+out: -+ toi_close_bdev(header_bdev); -+ have_old_image = 0; -+ toi_free_page(38, (unsigned long) header_start); -+ return result; -+} -+ -+/* -+ * toi_bio_restore_original_signature - restore the original signature -+ * -+ * At boot time (aborting pre atomic-restore), toi_orig_sig_page gets used. -+ * It will have the original signature page contents, stored in the image -+ * header. Post atomic-restore, we use :toi_cur_sig_page, which will contain -+ * the contents that were loaded when we started the cycle. -+ */ -+int toi_bio_restore_original_signature(void) -+{ -+ char *use = toi_orig_sig_page ? toi_orig_sig_page : toi_cur_sig_page; -+ -+ if (have_old_image) -+ return remove_old_signature(); -+ -+ if (!use) { -+ printk("toi_bio_restore_original_signature: No signature " -+ "page loaded.\n"); -+ return 0; -+ } -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Recording that no image exists."); -+ have_image = 0; -+ toi_sig_data->have_image = 0; -+ return toi_bio_ops.bdev_page_io(WRITE, resume_block_device, -+ resume_firstblock, virt_to_page(use)); -+} -+ -+/* -+ * check_for_signature - See whether we have an image. -+ * -+ * Returns 0 if no image, 1 if there is one, -1 if indeterminate. -+ */ -+int toi_check_for_signature(void) -+{ -+ union p_diskpage swap_header_page; -+ int type; -+ const char *normal_sigs[] = {"SWAP-SPACE", "SWAPSPACE2" }; -+ const char *swsusp_sigs[] = {"S1SUSP", "S2SUSP", "S1SUSPEND" }; -+ char *swap_header; -+ -+ if (!toi_cur_sig_page) { -+ int result = get_signature_page(); -+ -+ if (result) -+ return result; -+ } -+ -+ /* -+ * Start by looking for the binary header. -+ */ -+ if (!memcmp(tuxonice_signature, toi_cur_sig_page, -+ sizeof(tuxonice_signature))) { -+ have_image = toi_sig_data->have_image; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Have binary signature. " -+ "Have image is %d.", have_image); -+ if (have_image) -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "header dev_t is " -+ "%x. First block is %d.", -+ toi_sig_data->header_dev_t, -+ toi_sig_data->first_header_block); -+ return toi_sig_data->have_image; -+ } -+ -+ /* -+ * Failing that, try old file allocator headers. -+ */ -+ -+ if (!memcmp(HaveImage, toi_cur_sig_page, strlen(HaveImage))) { -+ have_image = 1; -+ return 1; -+ } -+ -+ have_image = 0; -+ -+ if (!memcmp(NoImage, toi_cur_sig_page, strlen(NoImage))) -+ return 0; -+ -+ /* -+ * Nope? How about swap? -+ */ -+ swap_header_page = (union p_diskpage) toi_cur_sig_page; -+ swap_header = swap_header_page.pointer->swh.magic.magic; -+ -+ /* Normal swapspace? */ -+ for (type = 0; type < 2; type++) -+ if (!memcmp(normal_sigs[type], swap_header, -+ strlen(normal_sigs[type]))) -+ return 0; -+ -+ /* Swsusp or uswsusp? */ -+ for (type = 0; type < 3; type++) -+ if (!memcmp(swsusp_sigs[type], swap_header, -+ strlen(swsusp_sigs[type]))) -+ return 2; -+ -+ /* Old TuxOnIce version? */ -+ if (!memcmp(tuxonice_signature, swap_header, -+ sizeof(tuxonice_signature) - 1)) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Found old TuxOnIce " -+ "signature."); -+ have_old_image = 1; -+ return 3; -+ } -+ -+ return -1; -+} -+ -+/* -+ * Image_exists -+ * -+ * Returns -1 if don't know, otherwise 0 (no) or 1 (yes). -+ */ -+int toi_bio_image_exists(int quiet) -+{ -+ int result; -+ char *orig_sig_page = toi_cur_sig_page; -+ char *msg = NULL; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_bio_image_exists."); -+ -+ if (!resume_dev_t) { -+ if (!quiet) -+ printk(KERN_INFO "Not even trying to read header " -+ "because resume_dev_t is not set.\n"); -+ return -1; -+ } -+ -+ if (open_resume_dev_t(0, quiet)) -+ return -1; -+ -+ result = toi_check_for_signature(); -+ -+ clear_toi_state(TOI_RESUMED_BEFORE); -+ if (toi_sig_data->resumed_before) -+ set_toi_state(TOI_RESUMED_BEFORE); -+ -+ if (quiet || result == -ENOMEM) -+ goto out; -+ -+ if (result == -1) -+ msg = "TuxOnIce: Unable to find a signature." -+ " Could you have moved a swap file?\n"; -+ else if (!result) -+ msg = "TuxOnIce: No image found.\n"; -+ else if (result == 1) -+ msg = "TuxOnIce: Image found.\n"; -+ else if (result == 2) -+ msg = "TuxOnIce: uswsusp or swsusp image found.\n"; -+ else if (result == 3) -+ msg = "TuxOnIce: Old implementation's signature found.\n"; -+ -+ printk(KERN_INFO "%s", msg); -+ -+out: -+ if (!orig_sig_page) -+ forget_signature_page(); -+ -+ close_resume_dev_t(0); -+ return result; -+} -+ -+int toi_bio_scan_for_image(int quiet) -+{ -+ struct block_device *bdev; -+ char default_name[255] = ""; -+ -+ if (!quiet) -+ printk(KERN_DEBUG "Scanning swap devices for TuxOnIce " -+ "signature...\n"); -+ for (bdev = next_bdev_of_type(NULL, "swap"); bdev; -+ bdev = next_bdev_of_type(bdev, "swap")) { -+ int result; -+ char name[255] = ""; -+ sprintf(name, "%u:%u", MAJOR(bdev->bd_dev), -+ MINOR(bdev->bd_dev)); -+ if (!quiet) -+ printk(KERN_DEBUG "- Trying %s.\n", name); -+ resume_block_device = bdev; -+ resume_dev_t = bdev->bd_dev; -+ -+ result = toi_check_for_signature(); -+ -+ resume_block_device = NULL; -+ resume_dev_t = MKDEV(0, 0); -+ -+ if (!default_name[0]) -+ strcpy(default_name, name); -+ -+ if (result == 1) { -+ /* Got one! */ -+ strcpy(resume_file, name); -+ next_bdev_of_type(bdev, NULL); -+ if (!quiet) -+ printk(KERN_DEBUG " ==> Image found on %s.\n", -+ resume_file); -+ return 1; -+ } -+ forget_signature_page(); -+ } -+ -+ if (!quiet) -+ printk(KERN_DEBUG "TuxOnIce scan: No image found.\n"); -+ strcpy(resume_file, default_name); -+ return 0; -+} -+ -+int toi_bio_get_header_version(void) -+{ -+ return (memcmp(toi_sig_data->sig2, tuxonice_signature, -+ sizeof(tuxonice_signature))) ? -+ 0 : toi_sig_data->header_version; -+ -+} -diff --git a/kernel/power/tuxonice_builtin.c b/kernel/power/tuxonice_builtin.c -new file mode 100644 -index 0000000..d9704f2 ---- /dev/null -+++ b/kernel/power/tuxonice_builtin.c -@@ -0,0 +1,360 @@ -+/* -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "tuxonice_io.h" -+#include "tuxonice.h" -+#include "tuxonice_extent.h" -+#include "tuxonice_netlink.h" -+#include "tuxonice_prepare_image.h" -+#include "tuxonice_ui.h" -+#include "tuxonice_sysfs.h" -+#include "tuxonice_pagedir.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_builtin.h" -+#include "tuxonice_power_off.h" -+ -+/* -+ * Highmem related functions (x86 only). -+ */ -+ -+#ifdef CONFIG_HIGHMEM -+ -+/** -+ * copyback_high: Restore highmem pages. -+ * -+ * Highmem data and pbe lists are/can be stored in highmem. -+ * The format is slightly different to the lowmem pbe lists -+ * used for the assembly code: the last pbe in each page is -+ * a struct page * instead of struct pbe *, pointing to the -+ * next page where pbes are stored (or NULL if happens to be -+ * the end of the list). Since we don't want to generate -+ * unnecessary deltas against swsusp code, we use a cast -+ * instead of a union. -+ **/ -+ -+static void copyback_high(void) -+{ -+ struct page *pbe_page = (struct page *) restore_highmem_pblist; -+ struct pbe *this_pbe, *first_pbe; -+ unsigned long *origpage, *copypage; -+ int pbe_index = 1; -+ -+ if (!pbe_page) -+ return; -+ -+ this_pbe = (struct pbe *) kmap_atomic(pbe_page, KM_BOUNCE_READ); -+ first_pbe = this_pbe; -+ -+ while (this_pbe) { -+ int loop = (PAGE_SIZE / sizeof(unsigned long)) - 1; -+ -+ origpage = kmap_atomic((struct page *) this_pbe->orig_address, -+ KM_BIO_DST_IRQ); -+ copypage = kmap_atomic((struct page *) this_pbe->address, -+ KM_BIO_SRC_IRQ); -+ -+ while (loop >= 0) { -+ *(origpage + loop) = *(copypage + loop); -+ loop--; -+ } -+ -+ kunmap_atomic(origpage, KM_BIO_DST_IRQ); -+ kunmap_atomic(copypage, KM_BIO_SRC_IRQ); -+ -+ if (!this_pbe->next) -+ break; -+ -+ if (pbe_index < PBES_PER_PAGE) { -+ this_pbe++; -+ pbe_index++; -+ } else { -+ pbe_page = (struct page *) this_pbe->next; -+ kunmap_atomic(first_pbe, KM_BOUNCE_READ); -+ if (!pbe_page) -+ return; -+ this_pbe = (struct pbe *) kmap_atomic(pbe_page, -+ KM_BOUNCE_READ); -+ first_pbe = this_pbe; -+ pbe_index = 1; -+ } -+ } -+ kunmap_atomic(first_pbe, KM_BOUNCE_READ); -+} -+ -+#else /* CONFIG_HIGHMEM */ -+static void copyback_high(void) { } -+#endif -+ -+char toi_wait_for_keypress_dev_console(int timeout) -+{ -+ int fd, this_timeout = 255; -+ char key = '\0'; -+ struct termios t, t_backup; -+ -+ /* We should be guaranteed /dev/console exists after populate_rootfs() -+ * in init/main.c. -+ */ -+ fd = sys_open("/dev/console", O_RDONLY, 0); -+ if (fd < 0) { -+ printk(KERN_INFO "Couldn't open /dev/console.\n"); -+ return key; -+ } -+ -+ if (sys_ioctl(fd, TCGETS, (long)&t) < 0) -+ goto out_close; -+ -+ memcpy(&t_backup, &t, sizeof(t)); -+ -+ t.c_lflag &= ~(ISIG|ICANON|ECHO); -+ t.c_cc[VMIN] = 0; -+ -+new_timeout: -+ if (timeout > 0) { -+ this_timeout = timeout < 26 ? timeout : 25; -+ timeout -= this_timeout; -+ this_timeout *= 10; -+ } -+ -+ t.c_cc[VTIME] = this_timeout; -+ -+ if (sys_ioctl(fd, TCSETS, (long)&t) < 0) -+ goto out_restore; -+ -+ while (1) { -+ if (sys_read(fd, &key, 1) <= 0) { -+ if (timeout) -+ goto new_timeout; -+ key = '\0'; -+ break; -+ } -+ key = tolower(key); -+ if (test_toi_state(TOI_SANITY_CHECK_PROMPT)) { -+ if (key == 'c') { -+ set_toi_state(TOI_CONTINUE_REQ); -+ break; -+ } else if (key == ' ') -+ break; -+ } else -+ break; -+ } -+ -+out_restore: -+ sys_ioctl(fd, TCSETS, (long)&t_backup); -+out_close: -+ sys_close(fd); -+ -+ return key; -+} -+EXPORT_SYMBOL_GPL(toi_wait_for_keypress_dev_console); -+ -+struct toi_boot_kernel_data toi_bkd __nosavedata -+ __attribute__((aligned(PAGE_SIZE))) = { -+ MY_BOOT_KERNEL_DATA_VERSION, -+ 0, -+#ifdef CONFIG_TOI_REPLACE_SWSUSP -+ (1 << TOI_REPLACE_SWSUSP) | -+#endif -+ (1 << TOI_NO_FLUSHER_THREAD) | -+ (1 << TOI_PAGESET2_FULL) | (1 << TOI_LATE_CPU_HOTPLUG), -+}; -+EXPORT_SYMBOL_GPL(toi_bkd); -+ -+struct block_device *toi_open_by_devnum(dev_t dev) -+{ -+ struct block_device *bdev = bdget(dev); -+ int err = -ENOMEM; -+ if (bdev) -+ err = blkdev_get(bdev, FMODE_READ | FMODE_NDELAY); -+ return err ? ERR_PTR(err) : bdev; -+} -+EXPORT_SYMBOL_GPL(toi_open_by_devnum); -+ -+/** -+ * toi_close_bdev: Close a swap bdev. -+ * -+ * int: The swap entry number to close. -+ */ -+void toi_close_bdev(struct block_device *bdev) -+{ -+ blkdev_put(bdev, FMODE_READ | FMODE_NDELAY); -+} -+EXPORT_SYMBOL_GPL(toi_close_bdev); -+ -+int toi_wait = CONFIG_TOI_DEFAULT_WAIT; -+EXPORT_SYMBOL_GPL(toi_wait); -+ -+struct toi_core_fns *toi_core_fns; -+EXPORT_SYMBOL_GPL(toi_core_fns); -+ -+unsigned long toi_result; -+EXPORT_SYMBOL_GPL(toi_result); -+ -+struct pagedir pagedir1 = {1}; -+EXPORT_SYMBOL_GPL(pagedir1); -+ -+unsigned long toi_get_nonconflicting_page(void) -+{ -+ return toi_core_fns->get_nonconflicting_page(); -+} -+ -+int toi_post_context_save(void) -+{ -+ return toi_core_fns->post_context_save(); -+} -+ -+int try_tuxonice_hibernate(void) -+{ -+ if (!toi_core_fns) -+ return -ENODEV; -+ -+ return toi_core_fns->try_hibernate(); -+} -+ -+static int num_resume_calls; -+#ifdef CONFIG_TOI_IGNORE_LATE_INITCALL -+static int ignore_late_initcall = 1; -+#else -+static int ignore_late_initcall; -+#endif -+ -+int toi_translate_err_default = TOI_CONTINUE_REQ; -+EXPORT_SYMBOL_GPL(toi_translate_err_default); -+ -+void try_tuxonice_resume(void) -+{ -+ /* Don't let it wrap around eventually */ -+ if (num_resume_calls < 2) -+ num_resume_calls++; -+ -+ if (num_resume_calls == 1 && ignore_late_initcall) { -+ printk(KERN_INFO "TuxOnIce: Ignoring late initcall, as requested.\n"); -+ return; -+ } -+ -+ if (toi_core_fns) -+ toi_core_fns->try_resume(); -+ else -+ printk(KERN_INFO "TuxOnIce core not loaded yet.\n"); -+} -+ -+int toi_lowlevel_builtin(void) -+{ -+ int error = 0; -+ -+ save_processor_state(); -+ error = swsusp_arch_suspend(); -+ if (error) -+ printk(KERN_ERR "Error %d hibernating\n", error); -+ -+ /* Restore control flow appears here */ -+ if (!toi_in_hibernate) { -+ copyback_high(); -+ set_toi_state(TOI_NOW_RESUMING); -+ } -+ -+ restore_processor_state(); -+ -+ return error; -+} -+EXPORT_SYMBOL_GPL(toi_lowlevel_builtin); -+ -+unsigned long toi_compress_bytes_in; -+EXPORT_SYMBOL_GPL(toi_compress_bytes_in); -+ -+unsigned long toi_compress_bytes_out; -+EXPORT_SYMBOL_GPL(toi_compress_bytes_out); -+ -+unsigned long toi_state = ((1 << TOI_BOOT_TIME) | -+ (1 << TOI_IGNORE_LOGLEVEL) | -+ (1 << TOI_IO_STOPPED)); -+EXPORT_SYMBOL_GPL(toi_state); -+ -+/* The number of hibernates we have started (some may have been cancelled) */ -+unsigned int nr_hibernates; -+EXPORT_SYMBOL_GPL(nr_hibernates); -+ -+int toi_running; -+EXPORT_SYMBOL_GPL(toi_running); -+ -+__nosavedata int toi_in_hibernate; -+EXPORT_SYMBOL_GPL(toi_in_hibernate); -+ -+__nosavedata struct pbe *restore_highmem_pblist; -+EXPORT_SYMBOL_GPL(restore_highmem_pblist); -+ -+static int __init toi_wait_setup(char *str) -+{ -+ int value; -+ -+ if (sscanf(str, "=%d", &value)) { -+ if (value < -1 || value > 255) -+ printk(KERN_INFO "TuxOnIce_wait outside range -1 to " -+ "255.\n"); -+ else -+ toi_wait = value; -+ } -+ -+ return 1; -+} -+ -+__setup("toi_wait", toi_wait_setup); -+ -+static int __init toi_translate_retry_setup(char *str) -+{ -+ toi_translate_err_default = 0; -+ return 1; -+} -+ -+__setup("toi_translate_retry", toi_translate_retry_setup); -+ -+static int __init toi_debug_setup(char *str) -+{ -+ toi_bkd.toi_action |= (1 << TOI_LOGALL) | (1 << TOI_PAUSE); -+ toi_bkd.toi_debug_state = 255; -+ toi_bkd.toi_default_console_level = 7; -+ return 1; -+} -+ -+__setup("toi_debug_setup", toi_debug_setup); -+ -+static int __init toi_ignore_late_initcall_setup(char *str) -+{ -+ int value; -+ -+ if (sscanf(str, "=%d", &value)) -+ ignore_late_initcall = value; -+ -+ return 1; -+} -+ -+__setup("toi_initramfs_resume_only", toi_ignore_late_initcall_setup); -+ -+int toi_force_no_multithreaded; -+EXPORT_SYMBOL_GPL(toi_force_no_multithreaded); -+ -+static int __init toi_force_no_multithreaded_setup(char *str) -+{ -+ int value; -+ -+ if (sscanf(str, "=%d", &value)) -+ toi_force_no_multithreaded = value; -+ -+ return 1; -+} -+ -+__setup("toi_no_multithreaded", toi_force_no_multithreaded_setup); -diff --git a/kernel/power/tuxonice_builtin.h b/kernel/power/tuxonice_builtin.h -new file mode 100644 -index 0000000..56ede35 ---- /dev/null -+++ b/kernel/power/tuxonice_builtin.h -@@ -0,0 +1,30 @@ -+/* -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ */ -+#include -+ -+extern struct toi_core_fns *toi_core_fns; -+extern unsigned long toi_compress_bytes_in, toi_compress_bytes_out; -+extern unsigned int nr_hibernates; -+extern int toi_in_hibernate; -+ -+extern __nosavedata struct pbe *restore_highmem_pblist; -+ -+int toi_lowlevel_builtin(void); -+ -+#ifdef CONFIG_HIGHMEM -+extern __nosavedata struct zone_data *toi_nosave_zone_list; -+extern __nosavedata unsigned long toi_nosave_max_pfn; -+#endif -+ -+extern unsigned long toi_get_nonconflicting_page(void); -+extern int toi_post_context_save(void); -+ -+extern char toi_wait_for_keypress_dev_console(int timeout); -+extern struct block_device *toi_open_by_devnum(dev_t dev); -+extern void toi_close_bdev(struct block_device *bdev); -+extern int toi_wait; -+extern int toi_translate_err_default; -+extern int toi_force_no_multithreaded; -diff --git a/kernel/power/tuxonice_checksum.c b/kernel/power/tuxonice_checksum.c -new file mode 100644 -index 0000000..3ec2c76 ---- /dev/null -+++ b/kernel/power/tuxonice_checksum.c -@@ -0,0 +1,377 @@ -+/* -+ * kernel/power/tuxonice_checksum.c -+ * -+ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * This file contains data checksum routines for TuxOnIce, -+ * using cryptoapi. They are used to locate any modifications -+ * made to pageset 2 while we're saving it. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include "tuxonice.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_sysfs.h" -+#include "tuxonice_io.h" -+#include "tuxonice_pageflags.h" -+#include "tuxonice_checksum.h" -+#include "tuxonice_pagedir.h" -+#include "tuxonice_alloc.h" -+ -+static struct toi_module_ops toi_checksum_ops; -+ -+/* Constant at the mo, but I might allow tuning later */ -+static char toi_checksum_name[32] = "md4"; -+/* Bytes per checksum */ -+#define CHECKSUM_SIZE (16) -+ -+#define CHECKSUMS_PER_PAGE ((PAGE_SIZE - sizeof(void *)) / CHECKSUM_SIZE) -+ -+struct cpu_context { -+ struct crypto_hash *transform; -+ struct hash_desc desc; -+ struct scatterlist sg[2]; -+ char *buf; -+}; -+ -+static DEFINE_PER_CPU(struct cpu_context, contexts); -+static int pages_allocated; -+static unsigned long page_list; -+ -+static int toi_num_resaved; -+ -+static unsigned long this_checksum, next_page; -+static int checksum_index; -+ -+static inline int checksum_pages_needed(void) -+{ -+ return DIV_ROUND_UP(pagedir2.size, CHECKSUMS_PER_PAGE); -+} -+ -+/* ---- Local buffer management ---- */ -+ -+/* -+ * toi_checksum_cleanup -+ * -+ * Frees memory allocated for our labours. -+ */ -+static void toi_checksum_cleanup(int ending_cycle) -+{ -+ int cpu; -+ -+ if (ending_cycle) { -+ for_each_online_cpu(cpu) { -+ struct cpu_context *this = &per_cpu(contexts, cpu); -+ if (this->transform) { -+ crypto_free_hash(this->transform); -+ this->transform = NULL; -+ this->desc.tfm = NULL; -+ } -+ -+ if (this->buf) { -+ toi_free_page(27, (unsigned long) this->buf); -+ this->buf = NULL; -+ } -+ } -+ } -+} -+ -+/* -+ * toi_crypto_initialise -+ * -+ * Prepare to do some work by allocating buffers and transforms. -+ * Returns: Int: Zero. Even if we can't set up checksum, we still -+ * seek to hibernate. -+ */ -+static int toi_checksum_initialise(int starting_cycle) -+{ -+ int cpu; -+ -+ if (!(starting_cycle & SYSFS_HIBERNATE) || !toi_checksum_ops.enabled) -+ return 0; -+ -+ if (!*toi_checksum_name) { -+ printk(KERN_INFO "TuxOnIce: No checksum algorithm name set.\n"); -+ return 1; -+ } -+ -+ for_each_online_cpu(cpu) { -+ struct cpu_context *this = &per_cpu(contexts, cpu); -+ struct page *page; -+ -+ this->transform = crypto_alloc_hash(toi_checksum_name, 0, 0); -+ if (IS_ERR(this->transform)) { -+ printk(KERN_INFO "TuxOnIce: Failed to initialise the " -+ "%s checksum algorithm: %ld.\n", -+ toi_checksum_name, (long) this->transform); -+ this->transform = NULL; -+ return 1; -+ } -+ -+ this->desc.tfm = this->transform; -+ this->desc.flags = 0; -+ -+ page = toi_alloc_page(27, GFP_KERNEL); -+ if (!page) -+ return 1; -+ this->buf = page_address(page); -+ sg_init_one(&this->sg[0], this->buf, PAGE_SIZE); -+ } -+ return 0; -+} -+ -+/* -+ * toi_checksum_print_debug_stats -+ * @buffer: Pointer to a buffer into which the debug info will be printed. -+ * @size: Size of the buffer. -+ * -+ * Print information to be recorded for debugging purposes into a buffer. -+ * Returns: Number of characters written to the buffer. -+ */ -+ -+static int toi_checksum_print_debug_stats(char *buffer, int size) -+{ -+ int len; -+ -+ if (!toi_checksum_ops.enabled) -+ return scnprintf(buffer, size, -+ "- Checksumming disabled.\n"); -+ -+ len = scnprintf(buffer, size, "- Checksum method is '%s'.\n", -+ toi_checksum_name); -+ len += scnprintf(buffer + len, size - len, -+ " %d pages resaved in atomic copy.\n", toi_num_resaved); -+ return len; -+} -+ -+static int toi_checksum_memory_needed(void) -+{ -+ return toi_checksum_ops.enabled ? -+ checksum_pages_needed() << PAGE_SHIFT : 0; -+} -+ -+static int toi_checksum_storage_needed(void) -+{ -+ if (toi_checksum_ops.enabled) -+ return strlen(toi_checksum_name) + sizeof(int) + 1; -+ else -+ return 0; -+} -+ -+/* -+ * toi_checksum_save_config_info -+ * @buffer: Pointer to a buffer of size PAGE_SIZE. -+ * -+ * Save informaton needed when reloading the image at resume time. -+ * Returns: Number of bytes used for saving our data. -+ */ -+static int toi_checksum_save_config_info(char *buffer) -+{ -+ int namelen = strlen(toi_checksum_name) + 1; -+ int total_len; -+ -+ *((unsigned int *) buffer) = namelen; -+ strncpy(buffer + sizeof(unsigned int), toi_checksum_name, namelen); -+ total_len = sizeof(unsigned int) + namelen; -+ return total_len; -+} -+ -+/* toi_checksum_load_config_info -+ * @buffer: Pointer to the start of the data. -+ * @size: Number of bytes that were saved. -+ * -+ * Description: Reload information needed for dechecksuming the image at -+ * resume time. -+ */ -+static void toi_checksum_load_config_info(char *buffer, int size) -+{ -+ int namelen; -+ -+ namelen = *((unsigned int *) (buffer)); -+ strncpy(toi_checksum_name, buffer + sizeof(unsigned int), -+ namelen); -+ return; -+} -+ -+/* -+ * Free Checksum Memory -+ */ -+ -+void free_checksum_pages(void) -+{ -+ while (pages_allocated) { -+ unsigned long next = *((unsigned long *) page_list); -+ ClearPageNosave(virt_to_page(page_list)); -+ toi_free_page(15, (unsigned long) page_list); -+ page_list = next; -+ pages_allocated--; -+ } -+} -+ -+/* -+ * Allocate Checksum Memory -+ */ -+ -+int allocate_checksum_pages(void) -+{ -+ int pages_needed = checksum_pages_needed(); -+ -+ if (!toi_checksum_ops.enabled) -+ return 0; -+ -+ while (pages_allocated < pages_needed) { -+ unsigned long *new_page = -+ (unsigned long *) toi_get_zeroed_page(15, TOI_ATOMIC_GFP); -+ if (!new_page) { -+ printk(KERN_ERR "Unable to allocate checksum pages.\n"); -+ return -ENOMEM; -+ } -+ SetPageNosave(virt_to_page(new_page)); -+ (*new_page) = page_list; -+ page_list = (unsigned long) new_page; -+ pages_allocated++; -+ } -+ -+ next_page = (unsigned long) page_list; -+ checksum_index = 0; -+ -+ return 0; -+} -+ -+char *tuxonice_get_next_checksum(void) -+{ -+ if (!toi_checksum_ops.enabled) -+ return NULL; -+ -+ if (checksum_index % CHECKSUMS_PER_PAGE) -+ this_checksum += CHECKSUM_SIZE; -+ else { -+ this_checksum = next_page + sizeof(void *); -+ next_page = *((unsigned long *) next_page); -+ } -+ -+ checksum_index++; -+ return (char *) this_checksum; -+} -+ -+int tuxonice_calc_checksum(struct page *page, char *checksum_locn) -+{ -+ char *pa; -+ int result, cpu = smp_processor_id(); -+ struct cpu_context *ctx = &per_cpu(contexts, cpu); -+ -+ if (!toi_checksum_ops.enabled) -+ return 0; -+ -+ pa = kmap(page); -+ memcpy(ctx->buf, pa, PAGE_SIZE); -+ kunmap(page); -+ result = crypto_hash_digest(&ctx->desc, ctx->sg, PAGE_SIZE, -+ checksum_locn); -+ if (result) -+ printk(KERN_ERR "TuxOnIce checksumming: crypto_hash_digest " -+ "returned %d.\n", result); -+ return result; -+} -+/* -+ * Calculate checksums -+ */ -+ -+void check_checksums(void) -+{ -+ int pfn, index = 0, cpu = smp_processor_id(); -+ char current_checksum[CHECKSUM_SIZE]; -+ struct cpu_context *ctx = &per_cpu(contexts, cpu); -+ -+ if (!toi_checksum_ops.enabled) -+ return; -+ -+ next_page = (unsigned long) page_list; -+ -+ toi_num_resaved = 0; -+ this_checksum = 0; -+ -+ memory_bm_position_reset(pageset2_map); -+ for (pfn = memory_bm_next_pfn(pageset2_map); pfn != BM_END_OF_MAP; -+ pfn = memory_bm_next_pfn(pageset2_map)) { -+ int ret; -+ char *pa; -+ struct page *page = pfn_to_page(pfn); -+ -+ if (index % CHECKSUMS_PER_PAGE) { -+ this_checksum += CHECKSUM_SIZE; -+ } else { -+ this_checksum = next_page + sizeof(void *); -+ next_page = *((unsigned long *) next_page); -+ } -+ -+ /* Done when IRQs disabled so must be atomic */ -+ pa = kmap_atomic(page, KM_USER1); -+ memcpy(ctx->buf, pa, PAGE_SIZE); -+ kunmap_atomic(pa, KM_USER1); -+ ret = crypto_hash_digest(&ctx->desc, ctx->sg, PAGE_SIZE, -+ current_checksum); -+ -+ if (ret) { -+ printk(KERN_INFO "Digest failed. Returned %d.\n", ret); -+ return; -+ } -+ -+ if (memcmp(current_checksum, (char *) this_checksum, -+ CHECKSUM_SIZE)) { -+ SetPageResave(pfn_to_page(pfn)); -+ toi_num_resaved++; -+ if (test_action_state(TOI_ABORT_ON_RESAVE_NEEDED)) -+ set_abort_result(TOI_RESAVE_NEEDED); -+ } -+ -+ index++; -+ } -+} -+ -+static struct toi_sysfs_data sysfs_params[] = { -+ SYSFS_INT("enabled", SYSFS_RW, &toi_checksum_ops.enabled, 0, 1, 0, -+ NULL), -+ SYSFS_BIT("abort_if_resave_needed", SYSFS_RW, &toi_bkd.toi_action, -+ TOI_ABORT_ON_RESAVE_NEEDED, 0) -+}; -+ -+/* -+ * Ops structure. -+ */ -+static struct toi_module_ops toi_checksum_ops = { -+ .type = MISC_MODULE, -+ .name = "checksumming", -+ .directory = "checksum", -+ .module = THIS_MODULE, -+ .initialise = toi_checksum_initialise, -+ .cleanup = toi_checksum_cleanup, -+ .print_debug_info = toi_checksum_print_debug_stats, -+ .save_config_info = toi_checksum_save_config_info, -+ .load_config_info = toi_checksum_load_config_info, -+ .memory_needed = toi_checksum_memory_needed, -+ .storage_needed = toi_checksum_storage_needed, -+ -+ .sysfs_data = sysfs_params, -+ .num_sysfs_entries = sizeof(sysfs_params) / -+ sizeof(struct toi_sysfs_data), -+}; -+ -+/* ---- Registration ---- */ -+int toi_checksum_init(void) -+{ -+ int result = toi_register_module(&toi_checksum_ops); -+ return result; -+} -+ -+void toi_checksum_exit(void) -+{ -+ toi_unregister_module(&toi_checksum_ops); -+} -diff --git a/kernel/power/tuxonice_checksum.h b/kernel/power/tuxonice_checksum.h -new file mode 100644 -index 0000000..0f2812e ---- /dev/null -+++ b/kernel/power/tuxonice_checksum.h -@@ -0,0 +1,31 @@ -+/* -+ * kernel/power/tuxonice_checksum.h -+ * -+ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * This file contains data checksum routines for TuxOnIce, -+ * using cryptoapi. They are used to locate any modifications -+ * made to pageset 2 while we're saving it. -+ */ -+ -+#if defined(CONFIG_TOI_CHECKSUM) -+extern int toi_checksum_init(void); -+extern void toi_checksum_exit(void); -+void check_checksums(void); -+int allocate_checksum_pages(void); -+void free_checksum_pages(void); -+char *tuxonice_get_next_checksum(void); -+int tuxonice_calc_checksum(struct page *page, char *checksum_locn); -+#else -+static inline int toi_checksum_init(void) { return 0; } -+static inline void toi_checksum_exit(void) { } -+static inline void check_checksums(void) { }; -+static inline int allocate_checksum_pages(void) { return 0; }; -+static inline void free_checksum_pages(void) { }; -+static inline char *tuxonice_get_next_checksum(void) { return NULL; }; -+static inline int tuxonice_calc_checksum(struct page *page, char *checksum_locn) -+ { return 0; } -+#endif -+ -diff --git a/kernel/power/tuxonice_cluster.c b/kernel/power/tuxonice_cluster.c -new file mode 100644 -index 0000000..0e5a262 ---- /dev/null -+++ b/kernel/power/tuxonice_cluster.c -@@ -0,0 +1,1069 @@ -+/* -+ * kernel/power/tuxonice_cluster.c -+ * -+ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * This file contains routines for cluster hibernation support. -+ * -+ * Based on ip autoconfiguration code in net/ipv4/ipconfig.c. -+ * -+ * How does it work? -+ * -+ * There is no 'master' node that tells everyone else what to do. All nodes -+ * send messages to the broadcast address/port, maintain a list of peers -+ * and figure out when to progress to the next step in hibernating or resuming. -+ * This makes us more fault tolerant when it comes to nodes coming and going -+ * (which may be more of an issue if we're hibernating when power supplies -+ * are being unreliable). -+ * -+ * At boot time, we start a ktuxonice thread that handles communication with -+ * other nodes. This node maintains a state machine that controls our progress -+ * through hibernating and resuming, keeping us in step with other nodes. Nodes -+ * are identified by their hw address. -+ * -+ * On startup, the node sends CLUSTER_PING on the configured interface's -+ * broadcast address, port $toi_cluster_port (see below) and begins to listen -+ * for other broadcast messages. CLUSTER_PING messages are repeated at -+ * intervals of 5 minutes, with a random offset to spread traffic out. -+ * -+ * A hibernation cycle is initiated from any node via -+ * -+ * echo > /sys/power/tuxonice/do_hibernate -+ * -+ * and (possibily) the hibernate script. At each step of the process, the node -+ * completes its work, and waits for all other nodes to signal completion of -+ * their work (or timeout) before progressing to the next step. -+ * -+ * Request/state Action before reply Possible reply Next state -+ * HIBERNATE capable, pre-script HIBERNATE|ACK NODE_PREP -+ * HIBERNATE|NACK INIT_0 -+ * -+ * PREP prepare_image PREP|ACK IMAGE_WRITE -+ * PREP|NACK INIT_0 -+ * ABORT RUNNING -+ * -+ * IO write image IO|ACK power off -+ * ABORT POST_RESUME -+ * -+ * (Boot time) check for image IMAGE|ACK RESUME_PREP -+ * (Note 1) -+ * IMAGE|NACK (Note 2) -+ * -+ * PREP prepare read image PREP|ACK IMAGE_READ -+ * PREP|NACK (As NACK_IMAGE) -+ * -+ * IO read image IO|ACK POST_RESUME -+ * -+ * POST_RESUME thaw, post-script RUNNING -+ * -+ * INIT_0 init 0 -+ * -+ * Other messages: -+ * -+ * - PING: Request for all other live nodes to send a PONG. Used at startup to -+ * announce presence, when a node is suspected dead and periodically, in case -+ * segments of the network are [un]plugged. -+ * -+ * - PONG: Response to a PING. -+ * -+ * - ABORT: Request to cancel writing an image. -+ * -+ * - BYE: Notification that this node is shutting down. -+ * -+ * Note 1: Repeated at 3s intervals until we continue to boot/resume, so that -+ * nodes which are slower to start up can get state synchronised. If a node -+ * starting up sees other nodes sending RESUME_PREP or IMAGE_READ, it may send -+ * ACK_IMAGE and they will wait for it to catch up. If it sees ACK_READ, it -+ * must invalidate its image (if any) and boot normally. -+ * -+ * Note 2: May occur when one node lost power or powered off while others -+ * hibernated. This node waits for others to complete resuming (ACK_READ) -+ * before completing its boot, so that it appears as a fail node restarting. -+ * -+ * If any node has an image, then it also has a list of nodes that hibernated -+ * in synchronisation with it. The node will wait for other nodes to appear -+ * or timeout before beginning its restoration. -+ * -+ * If a node has no image, it needs to wait, in case other nodes which do have -+ * an image are going to resume, but are taking longer to announce their -+ * presence. For this reason, the user can specify a timeout value and a number -+ * of nodes detected before we just continue. (We might want to assume in a -+ * cluster of, say, 15 nodes, if 8 others have booted without finding an image, -+ * the remaining nodes will too. This might help in situations where some nodes -+ * are much slower to boot, or more subject to hardware failures or such like). -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "tuxonice.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_sysfs.h" -+#include "tuxonice_alloc.h" -+#include "tuxonice_io.h" -+ -+#if 1 -+#define PRINTK(a, b...) do { printk(a, ##b); } while (0) -+#else -+#define PRINTK(a, b...) do { } while (0) -+#endif -+ -+static int loopback_mode; -+static int num_local_nodes = 1; -+#define MAX_LOCAL_NODES 8 -+#define SADDR (loopback_mode ? b->sid : h->saddr) -+ -+#define MYNAME "TuxOnIce Clustering" -+ -+enum cluster_message { -+ MSG_ACK = 1, -+ MSG_NACK = 2, -+ MSG_PING = 4, -+ MSG_ABORT = 8, -+ MSG_BYE = 16, -+ MSG_HIBERNATE = 32, -+ MSG_IMAGE = 64, -+ MSG_IO = 128, -+ MSG_RUNNING = 256 -+}; -+ -+static char *str_message(int message) -+{ -+ switch (message) { -+ case 4: -+ return "Ping"; -+ case 8: -+ return "Abort"; -+ case 9: -+ return "Abort acked"; -+ case 10: -+ return "Abort nacked"; -+ case 16: -+ return "Bye"; -+ case 17: -+ return "Bye acked"; -+ case 18: -+ return "Bye nacked"; -+ case 32: -+ return "Hibernate request"; -+ case 33: -+ return "Hibernate ack"; -+ case 34: -+ return "Hibernate nack"; -+ case 64: -+ return "Image exists?"; -+ case 65: -+ return "Image does exist"; -+ case 66: -+ return "No image here"; -+ case 128: -+ return "I/O"; -+ case 129: -+ return "I/O okay"; -+ case 130: -+ return "I/O failed"; -+ case 256: -+ return "Running"; -+ default: -+ printk(KERN_ERR "Unrecognised message %d.\n", message); -+ return "Unrecognised message (see dmesg)"; -+ } -+} -+ -+#define MSG_ACK_MASK (MSG_ACK | MSG_NACK) -+#define MSG_STATE_MASK (~MSG_ACK_MASK) -+ -+struct node_info { -+ struct list_head member_list; -+ wait_queue_head_t member_events; -+ spinlock_t member_list_lock; -+ spinlock_t receive_lock; -+ int peer_count, ignored_peer_count; -+ struct toi_sysfs_data sysfs_data; -+ enum cluster_message current_message; -+}; -+ -+struct node_info node_array[MAX_LOCAL_NODES]; -+ -+struct cluster_member { -+ __be32 addr; -+ enum cluster_message message; -+ struct list_head list; -+ int ignore; -+}; -+ -+#define toi_cluster_port_send 3501 -+#define toi_cluster_port_recv 3502 -+ -+static struct net_device *net_dev; -+static struct toi_module_ops toi_cluster_ops; -+ -+static int toi_recv(struct sk_buff *skb, struct net_device *dev, -+ struct packet_type *pt, struct net_device *orig_dev); -+ -+static struct packet_type toi_cluster_packet_type = { -+ .type = __constant_htons(ETH_P_IP), -+ .func = toi_recv, -+}; -+ -+struct toi_pkt { /* BOOTP packet format */ -+ struct iphdr iph; /* IP header */ -+ struct udphdr udph; /* UDP header */ -+ u8 htype; /* HW address type */ -+ u8 hlen; /* HW address length */ -+ __be32 xid; /* Transaction ID */ -+ __be16 secs; /* Seconds since we started */ -+ __be16 flags; /* Just what it says */ -+ u8 hw_addr[16]; /* Sender's HW address */ -+ u16 message; /* Message */ -+ unsigned long sid; /* Source ID for loopback testing */ -+}; -+ -+static char toi_cluster_iface[IFNAMSIZ] = CONFIG_TOI_DEFAULT_CLUSTER_INTERFACE; -+ -+static int added_pack; -+ -+static int others_have_image; -+ -+/* Key used to allow multiple clusters on the same lan */ -+static char toi_cluster_key[32] = CONFIG_TOI_DEFAULT_CLUSTER_KEY; -+static char pre_hibernate_script[255] = -+ CONFIG_TOI_DEFAULT_CLUSTER_PRE_HIBERNATE; -+static char post_hibernate_script[255] = -+ CONFIG_TOI_DEFAULT_CLUSTER_POST_HIBERNATE; -+ -+/* List of cluster members */ -+static unsigned long continue_delay = 5 * HZ; -+static unsigned long cluster_message_timeout = 3 * HZ; -+ -+/* === Membership list === */ -+ -+static void print_member_info(int index) -+{ -+ struct cluster_member *this; -+ -+ printk(KERN_INFO "==> Dumping node %d.\n", index); -+ -+ list_for_each_entry(this, &node_array[index].member_list, list) -+ printk(KERN_INFO "%d.%d.%d.%d last message %s. %s\n", -+ NIPQUAD(this->addr), -+ str_message(this->message), -+ this->ignore ? "(Ignored)" : ""); -+ printk(KERN_INFO "== Done ==\n"); -+} -+ -+static struct cluster_member *__find_member(int index, __be32 addr) -+{ -+ struct cluster_member *this; -+ -+ list_for_each_entry(this, &node_array[index].member_list, list) { -+ if (this->addr != addr) -+ continue; -+ -+ return this; -+ } -+ -+ return NULL; -+} -+ -+static void set_ignore(int index, __be32 addr, struct cluster_member *this) -+{ -+ if (this->ignore) { -+ PRINTK("Node %d already ignoring %d.%d.%d.%d.\n", -+ index, NIPQUAD(addr)); -+ return; -+ } -+ -+ PRINTK("Node %d sees node %d.%d.%d.%d now being ignored.\n", -+ index, NIPQUAD(addr)); -+ this->ignore = 1; -+ node_array[index].ignored_peer_count++; -+} -+ -+static int __add_update_member(int index, __be32 addr, int message) -+{ -+ struct cluster_member *this; -+ -+ this = __find_member(index, addr); -+ if (this) { -+ if (this->message != message) { -+ this->message = message; -+ if ((message & MSG_NACK) && -+ (message & (MSG_HIBERNATE | MSG_IMAGE | MSG_IO))) -+ set_ignore(index, addr, this); -+ PRINTK("Node %d sees node %d.%d.%d.%d now sending " -+ "%s.\n", index, NIPQUAD(addr), -+ str_message(message)); -+ wake_up(&node_array[index].member_events); -+ } -+ return 0; -+ } -+ -+ this = (struct cluster_member *) toi_kzalloc(36, -+ sizeof(struct cluster_member), GFP_KERNEL); -+ -+ if (!this) -+ return -1; -+ -+ this->addr = addr; -+ this->message = message; -+ this->ignore = 0; -+ INIT_LIST_HEAD(&this->list); -+ -+ node_array[index].peer_count++; -+ -+ PRINTK("Node %d sees node %d.%d.%d.%d sending %s.\n", index, -+ NIPQUAD(addr), str_message(message)); -+ -+ if ((message & MSG_NACK) && -+ (message & (MSG_HIBERNATE | MSG_IMAGE | MSG_IO))) -+ set_ignore(index, addr, this); -+ list_add_tail(&this->list, &node_array[index].member_list); -+ return 1; -+} -+ -+static int add_update_member(int index, __be32 addr, int message) -+{ -+ int result; -+ unsigned long flags; -+ spin_lock_irqsave(&node_array[index].member_list_lock, flags); -+ result = __add_update_member(index, addr, message); -+ spin_unlock_irqrestore(&node_array[index].member_list_lock, flags); -+ -+ print_member_info(index); -+ -+ wake_up(&node_array[index].member_events); -+ -+ return result; -+} -+ -+static void del_member(int index, __be32 addr) -+{ -+ struct cluster_member *this; -+ unsigned long flags; -+ -+ spin_lock_irqsave(&node_array[index].member_list_lock, flags); -+ this = __find_member(index, addr); -+ -+ if (this) { -+ list_del_init(&this->list); -+ toi_kfree(36, this, sizeof(*this)); -+ node_array[index].peer_count--; -+ } -+ -+ spin_unlock_irqrestore(&node_array[index].member_list_lock, flags); -+} -+ -+/* === Message transmission === */ -+ -+static void toi_send_if(int message, unsigned long my_id); -+ -+/* -+ * Process received TOI packet. -+ */ -+static int toi_recv(struct sk_buff *skb, struct net_device *dev, -+ struct packet_type *pt, struct net_device *orig_dev) -+{ -+ struct toi_pkt *b; -+ struct iphdr *h; -+ int len, result, index; -+ unsigned long addr, message, ack; -+ -+ /* Perform verifications before taking the lock. */ -+ if (skb->pkt_type == PACKET_OTHERHOST) -+ goto drop; -+ -+ if (dev != net_dev) -+ goto drop; -+ -+ skb = skb_share_check(skb, GFP_ATOMIC); -+ if (!skb) -+ return NET_RX_DROP; -+ -+ if (!pskb_may_pull(skb, -+ sizeof(struct iphdr) + -+ sizeof(struct udphdr))) -+ goto drop; -+ -+ b = (struct toi_pkt *)skb_network_header(skb); -+ h = &b->iph; -+ -+ if (h->ihl != 5 || h->version != 4 || h->protocol != IPPROTO_UDP) -+ goto drop; -+ -+ /* Fragments are not supported */ -+ if (h->frag_off & htons(IP_OFFSET | IP_MF)) { -+ if (net_ratelimit()) -+ printk(KERN_ERR "TuxOnIce: Ignoring fragmented " -+ "cluster message.\n"); -+ goto drop; -+ } -+ -+ if (skb->len < ntohs(h->tot_len)) -+ goto drop; -+ -+ if (ip_fast_csum((char *) h, h->ihl)) -+ goto drop; -+ -+ if (b->udph.source != htons(toi_cluster_port_send) || -+ b->udph.dest != htons(toi_cluster_port_recv)) -+ goto drop; -+ -+ if (ntohs(h->tot_len) < ntohs(b->udph.len) + sizeof(struct iphdr)) -+ goto drop; -+ -+ len = ntohs(b->udph.len) - sizeof(struct udphdr); -+ -+ /* Ok the front looks good, make sure we can get at the rest. */ -+ if (!pskb_may_pull(skb, skb->len)) -+ goto drop; -+ -+ b = (struct toi_pkt *)skb_network_header(skb); -+ h = &b->iph; -+ -+ addr = SADDR; -+ PRINTK(">>> Message %s received from " NIPQUAD_FMT ".\n", -+ str_message(b->message), NIPQUAD(addr)); -+ -+ message = b->message & MSG_STATE_MASK; -+ ack = b->message & MSG_ACK_MASK; -+ -+ for (index = 0; index < num_local_nodes; index++) { -+ int new_message = node_array[index].current_message, -+ old_message = new_message; -+ -+ if (index == SADDR || !old_message) { -+ PRINTK("Ignoring node %d (offline or self).\n", index); -+ continue; -+ } -+ -+ /* One message at a time, please. */ -+ spin_lock(&node_array[index].receive_lock); -+ -+ result = add_update_member(index, SADDR, b->message); -+ if (result == -1) { -+ printk(KERN_INFO "Failed to add new cluster member " -+ NIPQUAD_FMT ".\n", -+ NIPQUAD(addr)); -+ goto drop_unlock; -+ } -+ -+ switch (b->message & MSG_STATE_MASK) { -+ case MSG_PING: -+ break; -+ case MSG_ABORT: -+ break; -+ case MSG_BYE: -+ break; -+ case MSG_HIBERNATE: -+ /* Can I hibernate? */ -+ new_message = MSG_HIBERNATE | -+ ((index & 1) ? MSG_NACK : MSG_ACK); -+ break; -+ case MSG_IMAGE: -+ /* Can I resume? */ -+ new_message = MSG_IMAGE | -+ ((index & 1) ? MSG_NACK : MSG_ACK); -+ if (new_message != old_message) -+ printk(KERN_ERR "Setting whether I can resume " -+ "to %d.\n", new_message); -+ break; -+ case MSG_IO: -+ new_message = MSG_IO | MSG_ACK; -+ break; -+ case MSG_RUNNING: -+ break; -+ default: -+ if (net_ratelimit()) -+ printk(KERN_ERR "Unrecognised TuxOnIce cluster" -+ " message %d from " NIPQUAD_FMT ".\n", -+ b->message, NIPQUAD(addr)); -+ }; -+ -+ if (old_message != new_message) { -+ node_array[index].current_message = new_message; -+ printk(KERN_INFO ">>> Sending new message for node " -+ "%d.\n", index); -+ toi_send_if(new_message, index); -+ } else if (!ack) { -+ printk(KERN_INFO ">>> Resending message for node %d.\n", -+ index); -+ toi_send_if(new_message, index); -+ } -+drop_unlock: -+ spin_unlock(&node_array[index].receive_lock); -+ }; -+ -+drop: -+ /* Throw the packet out. */ -+ kfree_skb(skb); -+ -+ return 0; -+} -+ -+/* -+ * Send cluster message to single interface. -+ */ -+static void toi_send_if(int message, unsigned long my_id) -+{ -+ struct sk_buff *skb; -+ struct toi_pkt *b; -+ int hh_len = LL_RESERVED_SPACE(net_dev); -+ struct iphdr *h; -+ -+ /* Allocate packet */ -+ skb = alloc_skb(sizeof(struct toi_pkt) + hh_len + 15, GFP_KERNEL); -+ if (!skb) -+ return; -+ skb_reserve(skb, hh_len); -+ b = (struct toi_pkt *) skb_put(skb, sizeof(struct toi_pkt)); -+ memset(b, 0, sizeof(struct toi_pkt)); -+ -+ /* Construct IP header */ -+ skb_reset_network_header(skb); -+ h = ip_hdr(skb); -+ h->version = 4; -+ h->ihl = 5; -+ h->tot_len = htons(sizeof(struct toi_pkt)); -+ h->frag_off = htons(IP_DF); -+ h->ttl = 64; -+ h->protocol = IPPROTO_UDP; -+ h->daddr = htonl(INADDR_BROADCAST); -+ h->check = ip_fast_csum((unsigned char *) h, h->ihl); -+ -+ /* Construct UDP header */ -+ b->udph.source = htons(toi_cluster_port_send); -+ b->udph.dest = htons(toi_cluster_port_recv); -+ b->udph.len = htons(sizeof(struct toi_pkt) - sizeof(struct iphdr)); -+ /* UDP checksum not calculated -- explicitly allowed in BOOTP RFC */ -+ -+ /* Construct message */ -+ b->message = message; -+ b->sid = my_id; -+ b->htype = net_dev->type; /* can cause undefined behavior */ -+ b->hlen = net_dev->addr_len; -+ memcpy(b->hw_addr, net_dev->dev_addr, net_dev->addr_len); -+ b->secs = htons(3); /* 3 seconds */ -+ -+ /* Chain packet down the line... */ -+ skb->dev = net_dev; -+ skb->protocol = htons(ETH_P_IP); -+ if ((dev_hard_header(skb, net_dev, ntohs(skb->protocol), -+ net_dev->broadcast, net_dev->dev_addr, skb->len) < 0) || -+ dev_queue_xmit(skb) < 0) -+ printk(KERN_INFO "E"); -+} -+ -+/* ========================================= */ -+ -+/* kTOICluster */ -+ -+static atomic_t num_cluster_threads; -+static DECLARE_WAIT_QUEUE_HEAD(clusterd_events); -+ -+static int kTOICluster(void *data) -+{ -+ unsigned long my_id; -+ -+ my_id = atomic_add_return(1, &num_cluster_threads) - 1; -+ node_array[my_id].current_message = (unsigned long) data; -+ -+ PRINTK("kTOICluster daemon %lu starting.\n", my_id); -+ -+ current->flags |= PF_NOFREEZE; -+ -+ while (node_array[my_id].current_message) { -+ toi_send_if(node_array[my_id].current_message, my_id); -+ sleep_on_timeout(&clusterd_events, -+ cluster_message_timeout); -+ PRINTK("Link state %lu is %d.\n", my_id, -+ node_array[my_id].current_message); -+ } -+ -+ toi_send_if(MSG_BYE, my_id); -+ atomic_dec(&num_cluster_threads); -+ wake_up(&clusterd_events); -+ -+ PRINTK("kTOICluster daemon %lu exiting.\n", my_id); -+ __set_current_state(TASK_RUNNING); -+ return 0; -+} -+ -+static void kill_clusterd(void) -+{ -+ int i; -+ -+ for (i = 0; i < num_local_nodes; i++) { -+ if (node_array[i].current_message) { -+ PRINTK("Seeking to kill clusterd %d.\n", i); -+ node_array[i].current_message = 0; -+ } -+ } -+ wait_event(clusterd_events, -+ !atomic_read(&num_cluster_threads)); -+ PRINTK("All cluster daemons have exited.\n"); -+} -+ -+static int peers_not_in_message(int index, int message, int precise) -+{ -+ struct cluster_member *this; -+ unsigned long flags; -+ int result = 0; -+ -+ spin_lock_irqsave(&node_array[index].member_list_lock, flags); -+ list_for_each_entry(this, &node_array[index].member_list, list) { -+ if (this->ignore) -+ continue; -+ -+ PRINTK("Peer %d.%d.%d.%d sending %s. " -+ "Seeking %s.\n", -+ NIPQUAD(this->addr), -+ str_message(this->message), str_message(message)); -+ if ((precise ? this->message : -+ this->message & MSG_STATE_MASK) != -+ message) -+ result++; -+ } -+ spin_unlock_irqrestore(&node_array[index].member_list_lock, flags); -+ PRINTK("%d peers in sought message.\n", result); -+ return result; -+} -+ -+static void reset_ignored(int index) -+{ -+ struct cluster_member *this; -+ unsigned long flags; -+ -+ spin_lock_irqsave(&node_array[index].member_list_lock, flags); -+ list_for_each_entry(this, &node_array[index].member_list, list) -+ this->ignore = 0; -+ node_array[index].ignored_peer_count = 0; -+ spin_unlock_irqrestore(&node_array[index].member_list_lock, flags); -+} -+ -+static int peers_in_message(int index, int message, int precise) -+{ -+ return node_array[index].peer_count - -+ node_array[index].ignored_peer_count - -+ peers_not_in_message(index, message, precise); -+} -+ -+static int time_to_continue(int index, unsigned long start, int message) -+{ -+ int first = peers_not_in_message(index, message, 0); -+ int second = peers_in_message(index, message, 1); -+ -+ PRINTK("First part returns %d, second returns %d.\n", first, second); -+ -+ if (!first && !second) { -+ PRINTK("All peers answered message %d.\n", -+ message); -+ return 1; -+ } -+ -+ if (time_after(jiffies, start + continue_delay)) { -+ PRINTK("Timeout reached.\n"); -+ return 1; -+ } -+ -+ PRINTK("Not time to continue yet (%lu < %lu).\n", jiffies, -+ start + continue_delay); -+ return 0; -+} -+ -+void toi_initiate_cluster_hibernate(void) -+{ -+ int result; -+ unsigned long start; -+ -+ result = do_toi_step(STEP_HIBERNATE_PREPARE_IMAGE); -+ if (result) -+ return; -+ -+ toi_send_if(MSG_HIBERNATE, 0); -+ -+ start = jiffies; -+ wait_event(node_array[0].member_events, -+ time_to_continue(0, start, MSG_HIBERNATE)); -+ -+ if (test_action_state(TOI_FREEZER_TEST)) { -+ toi_send_if(MSG_ABORT, 0); -+ -+ start = jiffies; -+ wait_event(node_array[0].member_events, -+ time_to_continue(0, start, MSG_RUNNING)); -+ -+ do_toi_step(STEP_QUIET_CLEANUP); -+ return; -+ } -+ -+ toi_send_if(MSG_IO, 0); -+ -+ result = do_toi_step(STEP_HIBERNATE_SAVE_IMAGE); -+ if (result) -+ return; -+ -+ /* This code runs at resume time too! */ -+ if (toi_in_hibernate) -+ result = do_toi_step(STEP_HIBERNATE_POWERDOWN); -+} -+EXPORT_SYMBOL_GPL(toi_initiate_cluster_hibernate); -+ -+/* toi_cluster_print_debug_stats -+ * -+ * Description: Print information to be recorded for debugging purposes into a -+ * buffer. -+ * Arguments: buffer: Pointer to a buffer into which the debug info will be -+ * printed. -+ * size: Size of the buffer. -+ * Returns: Number of characters written to the buffer. -+ */ -+static int toi_cluster_print_debug_stats(char *buffer, int size) -+{ -+ int len; -+ -+ if (strlen(toi_cluster_iface)) -+ len = scnprintf(buffer, size, -+ "- Cluster interface is '%s'.\n", -+ toi_cluster_iface); -+ else -+ len = scnprintf(buffer, size, -+ "- Cluster support is disabled.\n"); -+ return len; -+} -+ -+/* cluster_memory_needed -+ * -+ * Description: Tell the caller how much memory we need to operate during -+ * hibernate/resume. -+ * Returns: Unsigned long. Maximum number of bytes of memory required for -+ * operation. -+ */ -+static int toi_cluster_memory_needed(void) -+{ -+ return 0; -+} -+ -+static int toi_cluster_storage_needed(void) -+{ -+ return 1 + strlen(toi_cluster_iface); -+} -+ -+/* toi_cluster_save_config_info -+ * -+ * Description: Save informaton needed when reloading the image at resume time. -+ * Arguments: Buffer: Pointer to a buffer of size PAGE_SIZE. -+ * Returns: Number of bytes used for saving our data. -+ */ -+static int toi_cluster_save_config_info(char *buffer) -+{ -+ strcpy(buffer, toi_cluster_iface); -+ return strlen(toi_cluster_iface + 1); -+} -+ -+/* toi_cluster_load_config_info -+ * -+ * Description: Reload information needed for declustering the image at -+ * resume time. -+ * Arguments: Buffer: Pointer to the start of the data. -+ * Size: Number of bytes that were saved. -+ */ -+static void toi_cluster_load_config_info(char *buffer, int size) -+{ -+ strncpy(toi_cluster_iface, buffer, size); -+ return; -+} -+ -+static void cluster_startup(void) -+{ -+ int have_image = do_check_can_resume(), i; -+ unsigned long start = jiffies, initial_message; -+ struct task_struct *p; -+ -+ initial_message = MSG_IMAGE; -+ -+ have_image = 1; -+ -+ for (i = 0; i < num_local_nodes; i++) { -+ PRINTK("Starting ktoiclusterd %d.\n", i); -+ p = kthread_create(kTOICluster, (void *) initial_message, -+ "ktoiclusterd/%d", i); -+ if (IS_ERR(p)) { -+ printk(KERN_ERR "Failed to start ktoiclusterd.\n"); -+ return; -+ } -+ -+ wake_up_process(p); -+ } -+ -+ /* Wait for delay or someone else sending first message */ -+ wait_event(node_array[0].member_events, time_to_continue(0, start, -+ MSG_IMAGE)); -+ -+ others_have_image = peers_in_message(0, MSG_IMAGE | MSG_ACK, 1); -+ -+ printk(KERN_INFO "Continuing. I %shave an image. Peers with image:" -+ " %d.\n", have_image ? "" : "don't ", others_have_image); -+ -+ if (have_image) { -+ int result; -+ -+ /* Start to resume */ -+ printk(KERN_INFO " === Starting to resume === \n"); -+ node_array[0].current_message = MSG_IO; -+ toi_send_if(MSG_IO, 0); -+ -+ /* result = do_toi_step(STEP_RESUME_LOAD_PS1); */ -+ result = 0; -+ -+ if (!result) { -+ /* -+ * Atomic restore - we'll come back in the hibernation -+ * path. -+ */ -+ -+ /* result = do_toi_step(STEP_RESUME_DO_RESTORE); */ -+ result = 0; -+ -+ /* do_toi_step(STEP_QUIET_CLEANUP); */ -+ } -+ -+ node_array[0].current_message |= MSG_NACK; -+ -+ /* For debugging - disable for real life? */ -+ wait_event(node_array[0].member_events, -+ time_to_continue(0, start, MSG_IO)); -+ } -+ -+ if (others_have_image) { -+ /* Wait for them to resume */ -+ printk(KERN_INFO "Waiting for other nodes to resume.\n"); -+ start = jiffies; -+ wait_event(node_array[0].member_events, -+ time_to_continue(0, start, MSG_RUNNING)); -+ if (peers_not_in_message(0, MSG_RUNNING, 0)) -+ printk(KERN_INFO "Timed out while waiting for other " -+ "nodes to resume.\n"); -+ } -+ -+ /* Find out whether an image exists here. Send ACK_IMAGE or NACK_IMAGE -+ * as appropriate. -+ * -+ * If we don't have an image: -+ * - Wait until someone else says they have one, or conditions are met -+ * for continuing to boot (n machines or t seconds). -+ * - If anyone has an image, wait for them to resume before continuing -+ * to boot. -+ * -+ * If we have an image: -+ * - Wait until conditions are met before continuing to resume (n -+ * machines or t seconds). Send RESUME_PREP and freeze processes. -+ * NACK_PREP if freezing fails (shouldn't) and follow logic for -+ * us having no image above. On success, wait for [N]ACK_PREP from -+ * other machines. Read image (including atomic restore) until done. -+ * Wait for ACK_READ from others (should never fail). Thaw processes -+ * and do post-resume. (The section after the atomic restore is done -+ * via the code for hibernating). -+ */ -+ -+ node_array[0].current_message = MSG_RUNNING; -+} -+ -+/* toi_cluster_open_iface -+ * -+ * Description: Prepare to use an interface. -+ */ -+ -+static int toi_cluster_open_iface(void) -+{ -+ struct net_device *dev; -+ -+ rtnl_lock(); -+ -+ for_each_netdev(&init_net, dev) { -+ if (/* dev == &init_net.loopback_dev || */ -+ strcmp(dev->name, toi_cluster_iface)) -+ continue; -+ -+ net_dev = dev; -+ break; -+ } -+ -+ rtnl_unlock(); -+ -+ if (!net_dev) { -+ printk(KERN_ERR MYNAME ": Device %s not found.\n", -+ toi_cluster_iface); -+ return -ENODEV; -+ } -+ -+ dev_add_pack(&toi_cluster_packet_type); -+ added_pack = 1; -+ -+ loopback_mode = (net_dev == init_net.loopback_dev); -+ num_local_nodes = loopback_mode ? 8 : 1; -+ -+ PRINTK("Loopback mode is %s. Number of local nodes is %d.\n", -+ loopback_mode ? "on" : "off", num_local_nodes); -+ -+ cluster_startup(); -+ return 0; -+} -+ -+/* toi_cluster_close_iface -+ * -+ * Description: Stop using an interface. -+ */ -+ -+static int toi_cluster_close_iface(void) -+{ -+ kill_clusterd(); -+ if (added_pack) { -+ dev_remove_pack(&toi_cluster_packet_type); -+ added_pack = 0; -+ } -+ return 0; -+} -+ -+static void write_side_effect(void) -+{ -+ if (toi_cluster_ops.enabled) { -+ toi_cluster_open_iface(); -+ set_toi_state(TOI_CLUSTER_MODE); -+ } else { -+ toi_cluster_close_iface(); -+ clear_toi_state(TOI_CLUSTER_MODE); -+ } -+} -+ -+static void node_write_side_effect(void) -+{ -+} -+ -+/* -+ * data for our sysfs entries. -+ */ -+static struct toi_sysfs_data sysfs_params[] = { -+ SYSFS_STRING("interface", SYSFS_RW, toi_cluster_iface, IFNAMSIZ, 0, -+ NULL), -+ SYSFS_INT("enabled", SYSFS_RW, &toi_cluster_ops.enabled, 0, 1, 0, -+ write_side_effect), -+ SYSFS_STRING("cluster_name", SYSFS_RW, toi_cluster_key, 32, 0, NULL), -+ SYSFS_STRING("pre-hibernate-script", SYSFS_RW, pre_hibernate_script, -+ 256, 0, NULL), -+ SYSFS_STRING("post-hibernate-script", SYSFS_RW, post_hibernate_script, -+ 256, 0, STRING), -+ SYSFS_UL("continue_delay", SYSFS_RW, &continue_delay, HZ / 2, 60 * HZ, -+ 0) -+}; -+ -+/* -+ * Ops structure. -+ */ -+ -+static struct toi_module_ops toi_cluster_ops = { -+ .type = FILTER_MODULE, -+ .name = "Cluster", -+ .directory = "cluster", -+ .module = THIS_MODULE, -+ .memory_needed = toi_cluster_memory_needed, -+ .print_debug_info = toi_cluster_print_debug_stats, -+ .save_config_info = toi_cluster_save_config_info, -+ .load_config_info = toi_cluster_load_config_info, -+ .storage_needed = toi_cluster_storage_needed, -+ -+ .sysfs_data = sysfs_params, -+ .num_sysfs_entries = sizeof(sysfs_params) / -+ sizeof(struct toi_sysfs_data), -+}; -+ -+/* ---- Registration ---- */ -+ -+#ifdef MODULE -+#define INIT static __init -+#define EXIT static __exit -+#else -+#define INIT -+#define EXIT -+#endif -+ -+INIT int toi_cluster_init(void) -+{ -+ int temp = toi_register_module(&toi_cluster_ops), i; -+ struct kobject *kobj = toi_cluster_ops.dir_kobj; -+ -+ for (i = 0; i < MAX_LOCAL_NODES; i++) { -+ node_array[i].current_message = 0; -+ INIT_LIST_HEAD(&node_array[i].member_list); -+ init_waitqueue_head(&node_array[i].member_events); -+ spin_lock_init(&node_array[i].member_list_lock); -+ spin_lock_init(&node_array[i].receive_lock); -+ -+ /* Set up sysfs entry */ -+ node_array[i].sysfs_data.attr.name = toi_kzalloc(8, -+ sizeof(node_array[i].sysfs_data.attr.name), -+ GFP_KERNEL); -+ sprintf((char *) node_array[i].sysfs_data.attr.name, "node_%d", -+ i); -+ node_array[i].sysfs_data.attr.mode = SYSFS_RW; -+ node_array[i].sysfs_data.type = TOI_SYSFS_DATA_INTEGER; -+ node_array[i].sysfs_data.flags = 0; -+ node_array[i].sysfs_data.data.integer.variable = -+ (int *) &node_array[i].current_message; -+ node_array[i].sysfs_data.data.integer.minimum = 0; -+ node_array[i].sysfs_data.data.integer.maximum = INT_MAX; -+ node_array[i].sysfs_data.write_side_effect = -+ node_write_side_effect; -+ toi_register_sysfs_file(kobj, &node_array[i].sysfs_data); -+ } -+ -+ toi_cluster_ops.enabled = (strlen(toi_cluster_iface) > 0); -+ -+ if (toi_cluster_ops.enabled) -+ toi_cluster_open_iface(); -+ -+ return temp; -+} -+ -+EXIT void toi_cluster_exit(void) -+{ -+ int i; -+ toi_cluster_close_iface(); -+ -+ for (i = 0; i < MAX_LOCAL_NODES; i++) -+ toi_unregister_sysfs_file(toi_cluster_ops.dir_kobj, -+ &node_array[i].sysfs_data); -+ toi_unregister_module(&toi_cluster_ops); -+} -+ -+static int __init toi_cluster_iface_setup(char *iface) -+{ -+ toi_cluster_ops.enabled = (*iface && -+ strcmp(iface, "off")); -+ -+ if (toi_cluster_ops.enabled) -+ strncpy(toi_cluster_iface, iface, strlen(iface)); -+} -+ -+__setup("toi_cluster=", toi_cluster_iface_setup); -+ -+#ifdef MODULE -+MODULE_LICENSE("GPL"); -+module_init(toi_cluster_init); -+module_exit(toi_cluster_exit); -+MODULE_AUTHOR("Nigel Cunningham"); -+MODULE_DESCRIPTION("Cluster Support for TuxOnIce"); -+#endif -diff --git a/kernel/power/tuxonice_cluster.h b/kernel/power/tuxonice_cluster.h -new file mode 100644 -index 0000000..051feb3 ---- /dev/null -+++ b/kernel/power/tuxonice_cluster.h -@@ -0,0 +1,18 @@ -+/* -+ * kernel/power/tuxonice_cluster.h -+ * -+ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ */ -+ -+#ifdef CONFIG_TOI_CLUSTER -+extern int toi_cluster_init(void); -+extern void toi_cluster_exit(void); -+extern void toi_initiate_cluster_hibernate(void); -+#else -+static inline int toi_cluster_init(void) { return 0; } -+static inline void toi_cluster_exit(void) { } -+static inline void toi_initiate_cluster_hibernate(void) { } -+#endif -+ -diff --git a/kernel/power/tuxonice_compress.c b/kernel/power/tuxonice_compress.c -new file mode 100644 -index 0000000..6bbc446 ---- /dev/null -+++ b/kernel/power/tuxonice_compress.c -@@ -0,0 +1,497 @@ -+/* -+ * kernel/power/compression.c -+ * -+ * Copyright (C) 2003-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * This file contains data compression routines for TuxOnIce, -+ * using cryptoapi. -+ */ -+ -+#include -+#include -+#include -+#include -+ -+#include "tuxonice_builtin.h" -+#include "tuxonice.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_sysfs.h" -+#include "tuxonice_io.h" -+#include "tuxonice_ui.h" -+#include "tuxonice_alloc.h" -+ -+static int toi_expected_compression; -+ -+static struct toi_module_ops toi_compression_ops; -+static struct toi_module_ops *next_driver; -+ -+static char toi_compressor_name[32] = "lzo"; -+ -+static DEFINE_MUTEX(stats_lock); -+ -+struct cpu_context { -+ u8 *page_buffer; -+ struct crypto_comp *transform; -+ unsigned int len; -+ char *buffer_start; -+ char *output_buffer; -+ char *check_buffer; -+}; -+ -+static DEFINE_PER_CPU(struct cpu_context, contexts); -+static int toi_check_compression; -+ -+/* -+ * toi_crypto_prepare -+ * -+ * Prepare to do some work by allocating buffers and transforms. -+ */ -+static int toi_compress_crypto_prepare(void) -+{ -+ int cpu; -+ -+ if (!*toi_compressor_name) { -+ printk(KERN_INFO "TuxOnIce: Compression enabled but no " -+ "compressor name set.\n"); -+ return 1; -+ } -+ -+ for_each_online_cpu(cpu) { -+ struct cpu_context *this = &per_cpu(contexts, cpu); -+ this->transform = crypto_alloc_comp(toi_compressor_name, 0, 0); -+ if (IS_ERR(this->transform)) { -+ printk(KERN_INFO "TuxOnIce: Failed to initialise the " -+ "%s compression transform.\n", -+ toi_compressor_name); -+ this->transform = NULL; -+ return 1; -+ } -+ -+ this->page_buffer = -+ (char *) toi_get_zeroed_page(16, TOI_ATOMIC_GFP); -+ -+ if (!this->page_buffer) { -+ printk(KERN_ERR -+ "Failed to allocate a page buffer for TuxOnIce " -+ "compression driver.\n"); -+ return -ENOMEM; -+ } -+ -+ this->output_buffer = -+ (char *) vmalloc_32(2 * PAGE_SIZE); -+ -+ if (!this->output_buffer) { -+ printk(KERN_ERR -+ "Failed to allocate a output buffer for TuxOnIce " -+ "compression driver.\n"); -+ return -ENOMEM; -+ } -+ -+ this->check_buffer = -+ (char *) toi_get_zeroed_page(16, TOI_ATOMIC_GFP); -+ -+ if (!this->check_buffer) { -+ printk(KERN_ERR -+ "Failed to allocate a check buffer for TuxOnIce " -+ "compression driver.\n"); -+ return -ENOMEM; -+ } -+ -+ } -+ -+ return 0; -+} -+ -+static int toi_compress_rw_cleanup(int writing) -+{ -+ int cpu; -+ -+ for_each_online_cpu(cpu) { -+ struct cpu_context *this = &per_cpu(contexts, cpu); -+ if (this->transform) { -+ crypto_free_comp(this->transform); -+ this->transform = NULL; -+ } -+ -+ if (this->page_buffer) -+ toi_free_page(16, (unsigned long) this->page_buffer); -+ -+ this->page_buffer = NULL; -+ -+ if (this->output_buffer) -+ vfree(this->output_buffer); -+ -+ this->output_buffer = NULL; -+ -+ if (this->check_buffer) -+ toi_free_page(16, (unsigned long) this->check_buffer); -+ -+ this->check_buffer = NULL; -+ } -+ -+ return 0; -+} -+ -+/* -+ * toi_compress_init -+ */ -+ -+static int toi_compress_init(int toi_or_resume) -+{ -+ if (!toi_or_resume) -+ return 0; -+ -+ toi_compress_bytes_in = 0; -+ toi_compress_bytes_out = 0; -+ -+ next_driver = toi_get_next_filter(&toi_compression_ops); -+ -+ return next_driver ? 0 : -ECHILD; -+} -+ -+/* -+ * toi_compress_rw_init() -+ */ -+ -+static int toi_compress_rw_init(int rw, int stream_number) -+{ -+ if (toi_compress_crypto_prepare()) { -+ printk(KERN_ERR "Failed to initialise compression " -+ "algorithm.\n"); -+ if (rw == READ) { -+ printk(KERN_INFO "Unable to read the image.\n"); -+ return -ENODEV; -+ } else { -+ printk(KERN_INFO "Continuing without " -+ "compressing the image.\n"); -+ toi_compression_ops.enabled = 0; -+ } -+ } -+ -+ return 0; -+} -+ -+static int check_compression(struct cpu_context *ctx, struct page *buffer_page, -+ int buf_size) -+{ -+ char *original = kmap(buffer_page); -+ int output_size = PAGE_SIZE, okay, ret; -+ -+ ret = crypto_comp_decompress(ctx->transform, ctx->output_buffer, -+ ctx->len, ctx->check_buffer, &output_size); -+ okay = (!ret && output_size == PAGE_SIZE && -+ !memcmp(ctx->check_buffer, original, PAGE_SIZE)); -+ -+ if (!okay) { -+ printk("Compression test failed.\n"); -+ print_hex_dump(KERN_ERR, "Original page: ", DUMP_PREFIX_NONE, -+ 16, 1, original, PAGE_SIZE, 0); -+ printk(KERN_ERR "\nOutput %d bytes. Result %d.", ctx->len, ret); -+ print_hex_dump(KERN_ERR, "Compressed to: ", DUMP_PREFIX_NONE, -+ 16, 1, ctx->output_buffer, ctx->len, 0); -+ printk(KERN_ERR "\nRestored to %d bytes.\n", output_size); -+ print_hex_dump(KERN_ERR, "Decompressed : ", DUMP_PREFIX_NONE, -+ 16, 1, ctx->check_buffer, output_size, 0); -+ } -+ kunmap(buffer_page); -+ -+ return okay; -+} -+ -+/* -+ * toi_compress_write_page() -+ * -+ * Compress a page of data, buffering output and passing on filled -+ * pages to the next module in the pipeline. -+ * -+ * Buffer_page: Pointer to a buffer of size PAGE_SIZE, containing -+ * data to be compressed. -+ * -+ * Returns: 0 on success. Otherwise the error is that returned by later -+ * modules, -ECHILD if we have a broken pipeline or -EIO if -+ * zlib errs. -+ */ -+static int toi_compress_write_page(unsigned long index, -+ struct page *buffer_page, unsigned int buf_size) -+{ -+ int ret, cpu = smp_processor_id(); -+ struct cpu_context *ctx = &per_cpu(contexts, cpu); -+ -+ if (!ctx->transform) -+ return next_driver->write_page(index, buffer_page, buf_size); -+ -+ ctx->buffer_start = kmap(buffer_page); -+ -+ ctx->len = PAGE_SIZE; -+ -+ ret = crypto_comp_compress(ctx->transform, -+ ctx->buffer_start, buf_size, -+ ctx->output_buffer, &ctx->len); -+ -+ kunmap(buffer_page); -+ -+ mutex_lock(&stats_lock); -+ toi_compress_bytes_in += buf_size; -+ toi_compress_bytes_out += ctx->len; -+ mutex_unlock(&stats_lock); -+ -+ if (!ret && ctx->len < buf_size) { /* some compression */ -+ if (unlikely(toi_check_compression)) { -+ ret = check_compression(ctx, buffer_page, buf_size); -+ if (!ret) -+ return next_driver->write_page(index, -+ buffer_page, buf_size); -+ } -+ -+ memcpy(ctx->page_buffer, ctx->output_buffer, ctx->len); -+ return next_driver->write_page(index, -+ virt_to_page(ctx->page_buffer), -+ ctx->len); -+ } else -+ return next_driver->write_page(index, buffer_page, buf_size); -+} -+ -+/* -+ * toi_compress_read_page() -+ * @buffer_page: struct page *. Pointer to a buffer of size PAGE_SIZE. -+ * -+ * Retrieve data from later modules and decompress it until the input buffer -+ * is filled. -+ * Zero if successful. Error condition from me or from downstream on failure. -+ */ -+static int toi_compress_read_page(unsigned long *index, -+ struct page *buffer_page, unsigned int *buf_size) -+{ -+ int ret, cpu = smp_processor_id(); -+ unsigned int len; -+ unsigned int outlen = PAGE_SIZE; -+ char *buffer_start; -+ struct cpu_context *ctx = &per_cpu(contexts, cpu); -+ -+ if (!ctx->transform) -+ return next_driver->read_page(index, buffer_page, buf_size); -+ -+ /* -+ * All our reads must be synchronous - we can't decompress -+ * data that hasn't been read yet. -+ */ -+ -+ ret = next_driver->read_page(index, buffer_page, &len); -+ -+ /* Error or uncompressed data */ -+ if (ret || len == PAGE_SIZE) -+ return ret; -+ -+ buffer_start = kmap(buffer_page); -+ memcpy(ctx->page_buffer, buffer_start, len); -+ ret = crypto_comp_decompress( -+ ctx->transform, -+ ctx->page_buffer, -+ len, buffer_start, &outlen); -+ if (ret) -+ abort_hibernate(TOI_FAILED_IO, -+ "Compress_read returned %d.\n", ret); -+ else if (outlen != PAGE_SIZE) { -+ abort_hibernate(TOI_FAILED_IO, -+ "Decompression yielded %d bytes instead of %ld.\n", -+ outlen, PAGE_SIZE); -+ printk(KERN_ERR "Decompression yielded %d bytes instead of " -+ "%ld.\n", outlen, PAGE_SIZE); -+ ret = -EIO; -+ *buf_size = outlen; -+ } -+ kunmap(buffer_page); -+ return ret; -+} -+ -+/* -+ * toi_compress_print_debug_stats -+ * @buffer: Pointer to a buffer into which the debug info will be printed. -+ * @size: Size of the buffer. -+ * -+ * Print information to be recorded for debugging purposes into a buffer. -+ * Returns: Number of characters written to the buffer. -+ */ -+ -+static int toi_compress_print_debug_stats(char *buffer, int size) -+{ -+ unsigned long pages_in = toi_compress_bytes_in >> PAGE_SHIFT, -+ pages_out = toi_compress_bytes_out >> PAGE_SHIFT; -+ int len; -+ -+ /* Output the compression ratio achieved. */ -+ if (*toi_compressor_name) -+ len = scnprintf(buffer, size, "- Compressor is '%s'.\n", -+ toi_compressor_name); -+ else -+ len = scnprintf(buffer, size, "- Compressor is not set.\n"); -+ -+ if (pages_in) -+ len += scnprintf(buffer+len, size - len, " Compressed " -+ "%lu bytes into %lu (%ld percent compression).\n", -+ toi_compress_bytes_in, -+ toi_compress_bytes_out, -+ (pages_in - pages_out) * 100 / pages_in); -+ return len; -+} -+ -+/* -+ * toi_compress_compression_memory_needed -+ * -+ * Tell the caller how much memory we need to operate during hibernate/resume. -+ * Returns: Unsigned long. Maximum number of bytes of memory required for -+ * operation. -+ */ -+static int toi_compress_memory_needed(void) -+{ -+ return 2 * PAGE_SIZE; -+} -+ -+static int toi_compress_storage_needed(void) -+{ -+ return 4 * sizeof(unsigned long) + strlen(toi_compressor_name) + 1; -+} -+ -+/* -+ * toi_compress_save_config_info -+ * @buffer: Pointer to a buffer of size PAGE_SIZE. -+ * -+ * Save informaton needed when reloading the image at resume time. -+ * Returns: Number of bytes used for saving our data. -+ */ -+static int toi_compress_save_config_info(char *buffer) -+{ -+ int namelen = strlen(toi_compressor_name) + 1; -+ int total_len; -+ -+ *((unsigned long *) buffer) = toi_compress_bytes_in; -+ *((unsigned long *) (buffer + 1 * sizeof(unsigned long))) = -+ toi_compress_bytes_out; -+ *((unsigned long *) (buffer + 2 * sizeof(unsigned long))) = -+ toi_expected_compression; -+ *((unsigned long *) (buffer + 3 * sizeof(unsigned long))) = namelen; -+ strncpy(buffer + 4 * sizeof(unsigned long), toi_compressor_name, -+ namelen); -+ total_len = 4 * sizeof(unsigned long) + namelen; -+ return total_len; -+} -+ -+/* toi_compress_load_config_info -+ * @buffer: Pointer to the start of the data. -+ * @size: Number of bytes that were saved. -+ * -+ * Description: Reload information needed for decompressing the image at -+ * resume time. -+ */ -+static void toi_compress_load_config_info(char *buffer, int size) -+{ -+ int namelen; -+ -+ toi_compress_bytes_in = *((unsigned long *) buffer); -+ toi_compress_bytes_out = *((unsigned long *) (buffer + 1 * -+ sizeof(unsigned long))); -+ toi_expected_compression = *((unsigned long *) (buffer + 2 * -+ sizeof(unsigned long))); -+ namelen = *((unsigned long *) (buffer + 3 * sizeof(unsigned long))); -+ if (strncmp(toi_compressor_name, buffer + 4 * sizeof(unsigned long), -+ namelen)) -+ strncpy(toi_compressor_name, buffer + 4 * sizeof(unsigned long), -+ namelen); -+ return; -+} -+ -+static void toi_compress_pre_atomic_restore(struct toi_boot_kernel_data *bkd) -+{ -+ bkd->compress_bytes_in = toi_compress_bytes_in; -+ bkd->compress_bytes_out = toi_compress_bytes_out; -+} -+ -+static void toi_compress_post_atomic_restore(struct toi_boot_kernel_data *bkd) -+{ -+ toi_compress_bytes_in = bkd->compress_bytes_in; -+ toi_compress_bytes_out = bkd->compress_bytes_out; -+} -+ -+/* -+ * toi_expected_compression_ratio -+ * -+ * Description: Returns the expected ratio between data passed into this module -+ * and the amount of data output when writing. -+ * Returns: 100 if the module is disabled. Otherwise the value set by the -+ * user via our sysfs entry. -+ */ -+ -+static int toi_compress_expected_ratio(void) -+{ -+ if (!toi_compression_ops.enabled) -+ return 100; -+ else -+ return 100 - toi_expected_compression; -+} -+ -+/* -+ * data for our sysfs entries. -+ */ -+static struct toi_sysfs_data sysfs_params[] = { -+ SYSFS_INT("expected_compression", SYSFS_RW, &toi_expected_compression, -+ 0, 99, 0, NULL), -+ SYSFS_INT("enabled", SYSFS_RW, &toi_compression_ops.enabled, 0, 1, 0, -+ NULL), -+ SYSFS_INT("check", SYSFS_RW, &toi_check_compression, 0, 1, 0, -+ NULL), -+ SYSFS_STRING("algorithm", SYSFS_RW, toi_compressor_name, 31, 0, NULL), -+}; -+ -+/* -+ * Ops structure. -+ */ -+static struct toi_module_ops toi_compression_ops = { -+ .type = FILTER_MODULE, -+ .name = "compression", -+ .directory = "compression", -+ .module = THIS_MODULE, -+ .initialise = toi_compress_init, -+ .memory_needed = toi_compress_memory_needed, -+ .print_debug_info = toi_compress_print_debug_stats, -+ .save_config_info = toi_compress_save_config_info, -+ .load_config_info = toi_compress_load_config_info, -+ .storage_needed = toi_compress_storage_needed, -+ .expected_compression = toi_compress_expected_ratio, -+ -+ .pre_atomic_restore = toi_compress_pre_atomic_restore, -+ .post_atomic_restore = toi_compress_post_atomic_restore, -+ -+ .rw_init = toi_compress_rw_init, -+ .rw_cleanup = toi_compress_rw_cleanup, -+ -+ .write_page = toi_compress_write_page, -+ .read_page = toi_compress_read_page, -+ -+ .sysfs_data = sysfs_params, -+ .num_sysfs_entries = sizeof(sysfs_params) / -+ sizeof(struct toi_sysfs_data), -+}; -+ -+/* ---- Registration ---- */ -+ -+static __init int toi_compress_load(void) -+{ -+ return toi_register_module(&toi_compression_ops); -+} -+ -+#ifdef MODULE -+static __exit void toi_compress_unload(void) -+{ -+ toi_unregister_module(&toi_compression_ops); -+} -+ -+module_init(toi_compress_load); -+module_exit(toi_compress_unload); -+MODULE_LICENSE("GPL"); -+MODULE_AUTHOR("Nigel Cunningham"); -+MODULE_DESCRIPTION("Compression Support for TuxOnIce"); -+#else -+late_initcall(toi_compress_load); -+#endif -diff --git a/kernel/power/tuxonice_extent.c b/kernel/power/tuxonice_extent.c -new file mode 100644 -index 0000000..e84572c ---- /dev/null -+++ b/kernel/power/tuxonice_extent.c -@@ -0,0 +1,123 @@ -+/* -+ * kernel/power/tuxonice_extent.c -+ * -+ * Copyright (C) 2003-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * Distributed under GPLv2. -+ * -+ * These functions encapsulate the manipulation of storage metadata. -+ */ -+ -+#include -+#include "tuxonice_modules.h" -+#include "tuxonice_extent.h" -+#include "tuxonice_alloc.h" -+#include "tuxonice_ui.h" -+#include "tuxonice.h" -+ -+/** -+ * toi_get_extent - return a free extent -+ * -+ * May fail, returning NULL instead. -+ **/ -+static struct hibernate_extent *toi_get_extent(void) -+{ -+ return (struct hibernate_extent *) toi_kzalloc(2, -+ sizeof(struct hibernate_extent), TOI_ATOMIC_GFP); -+} -+ -+/** -+ * toi_put_extent_chain - free a whole chain of extents -+ * @chain: Chain to free. -+ **/ -+void toi_put_extent_chain(struct hibernate_extent_chain *chain) -+{ -+ struct hibernate_extent *this; -+ -+ this = chain->first; -+ -+ while (this) { -+ struct hibernate_extent *next = this->next; -+ toi_kfree(2, this, sizeof(*this)); -+ chain->num_extents--; -+ this = next; -+ } -+ -+ chain->first = NULL; -+ chain->last_touched = NULL; -+ chain->current_extent = NULL; -+ chain->size = 0; -+} -+EXPORT_SYMBOL_GPL(toi_put_extent_chain); -+ -+/** -+ * toi_add_to_extent_chain - add an extent to an existing chain -+ * @chain: Chain to which the extend should be added -+ * @start: Start of the extent (first physical block) -+ * @end: End of the extent (last physical block) -+ * -+ * The chain information is updated if the insertion is successful. -+ **/ -+int toi_add_to_extent_chain(struct hibernate_extent_chain *chain, -+ unsigned long start, unsigned long end) -+{ -+ struct hibernate_extent *new_ext = NULL, *cur_ext = NULL; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "Adding extent %lu-%lu to chain %p.\n", start, end, chain); -+ -+ /* Find the right place in the chain */ -+ if (chain->last_touched && chain->last_touched->start < start) -+ cur_ext = chain->last_touched; -+ else if (chain->first && chain->first->start < start) -+ cur_ext = chain->first; -+ -+ if (cur_ext) { -+ while (cur_ext->next && cur_ext->next->start < start) -+ cur_ext = cur_ext->next; -+ -+ if (cur_ext->end == (start - 1)) { -+ struct hibernate_extent *next_ext = cur_ext->next; -+ cur_ext->end = end; -+ -+ /* Merge with the following one? */ -+ if (next_ext && cur_ext->end + 1 == next_ext->start) { -+ cur_ext->end = next_ext->end; -+ cur_ext->next = next_ext->next; -+ toi_kfree(2, next_ext, sizeof(*next_ext)); -+ chain->num_extents--; -+ } -+ -+ chain->last_touched = cur_ext; -+ chain->size += (end - start + 1); -+ -+ return 0; -+ } -+ } -+ -+ new_ext = toi_get_extent(); -+ if (!new_ext) { -+ printk(KERN_INFO "Error unable to append a new extent to the " -+ "chain.\n"); -+ return -ENOMEM; -+ } -+ -+ chain->num_extents++; -+ chain->size += (end - start + 1); -+ new_ext->start = start; -+ new_ext->end = end; -+ -+ chain->last_touched = new_ext; -+ -+ if (cur_ext) { -+ new_ext->next = cur_ext->next; -+ cur_ext->next = new_ext; -+ } else { -+ if (chain->first) -+ new_ext->next = chain->first; -+ chain->first = new_ext; -+ } -+ -+ return 0; -+} -+EXPORT_SYMBOL_GPL(toi_add_to_extent_chain); -diff --git a/kernel/power/tuxonice_extent.h b/kernel/power/tuxonice_extent.h -new file mode 100644 -index 0000000..157446c ---- /dev/null -+++ b/kernel/power/tuxonice_extent.h -@@ -0,0 +1,44 @@ -+/* -+ * kernel/power/tuxonice_extent.h -+ * -+ * Copyright (C) 2003-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * It contains declarations related to extents. Extents are -+ * TuxOnIce's method of storing some of the metadata for the image. -+ * See tuxonice_extent.c for more info. -+ * -+ */ -+ -+#include "tuxonice_modules.h" -+ -+#ifndef EXTENT_H -+#define EXTENT_H -+ -+struct hibernate_extent { -+ unsigned long start, end; -+ struct hibernate_extent *next; -+}; -+ -+struct hibernate_extent_chain { -+ unsigned long size; /* size of the chain ie sum (max-min+1) */ -+ int num_extents; -+ struct hibernate_extent *first, *last_touched; -+ struct hibernate_extent *current_extent; -+ unsigned long current_offset; -+}; -+ -+/* Simplify iterating through all the values in an extent chain */ -+#define toi_extent_for_each(extent_chain, extentpointer, value) \ -+if ((extent_chain)->first) \ -+ for ((extentpointer) = (extent_chain)->first, (value) = \ -+ (extentpointer)->start; \ -+ ((extentpointer) && ((extentpointer)->next || (value) <= \ -+ (extentpointer)->end)); \ -+ (((value) == (extentpointer)->end) ? \ -+ ((extentpointer) = (extentpointer)->next, (value) = \ -+ ((extentpointer) ? (extentpointer)->start : 0)) : \ -+ (value)++)) -+ -+#endif -diff --git a/kernel/power/tuxonice_file.c b/kernel/power/tuxonice_file.c -new file mode 100644 -index 0000000..39f2aea ---- /dev/null -+++ b/kernel/power/tuxonice_file.c -@@ -0,0 +1,496 @@ -+/* -+ * kernel/power/tuxonice_file.c -+ * -+ * Copyright (C) 2005-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * Distributed under GPLv2. -+ * -+ * This file encapsulates functions for usage of a simple file as a -+ * backing store. It is based upon the swapallocator, and shares the -+ * same basic working. Here, though, we have nothing to do with -+ * swapspace, and only one device to worry about. -+ * -+ * The user can just -+ * -+ * echo TuxOnIce > /path/to/my_file -+ * -+ * dd if=/dev/zero bs=1M count= >> /path/to/my_file -+ * -+ * and -+ * -+ * echo /path/to/my_file > /sys/power/tuxonice/file/target -+ * -+ * then put what they find in /sys/power/tuxonice/resume -+ * as their resume= parameter in lilo.conf (and rerun lilo if using it). -+ * -+ * Having done this, they're ready to hibernate and resume. -+ * -+ * TODO: -+ * - File resizing. -+ */ -+ -+#include -+#include -+#include -+#include -+ -+#include "tuxonice.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_bio.h" -+#include "tuxonice_alloc.h" -+#include "tuxonice_builtin.h" -+#include "tuxonice_sysfs.h" -+#include "tuxonice_ui.h" -+#include "tuxonice_io.h" -+ -+#define target_is_normal_file() (S_ISREG(target_inode->i_mode)) -+ -+static struct toi_module_ops toi_fileops; -+ -+static struct file *target_file; -+static struct block_device *toi_file_target_bdev; -+static unsigned long pages_available, pages_allocated; -+static char toi_file_target[256]; -+static struct inode *target_inode; -+static int file_target_priority; -+static int used_devt; -+static int target_claim; -+static dev_t toi_file_dev_t; -+static int sig_page_index; -+ -+/* For test_toi_file_target */ -+static struct toi_bdev_info *file_chain; -+ -+static int has_contiguous_blocks(struct toi_bdev_info *dev_info, int page_num) -+{ -+ int j; -+ sector_t last = 0; -+ -+ for (j = 0; j < dev_info->blocks_per_page; j++) { -+ sector_t this = bmap(target_inode, -+ page_num * dev_info->blocks_per_page + j); -+ -+ if (!this || (last && (last + 1) != this)) -+ break; -+ -+ last = this; -+ } -+ -+ return j == dev_info->blocks_per_page; -+} -+ -+static unsigned long get_usable_pages(struct toi_bdev_info *dev_info) -+{ -+ unsigned long result = 0; -+ struct block_device *bdev = dev_info->bdev; -+ int i; -+ -+ switch (target_inode->i_mode & S_IFMT) { -+ case S_IFSOCK: -+ case S_IFCHR: -+ case S_IFIFO: /* Socket, Char, Fifo */ -+ return -1; -+ case S_IFREG: /* Regular file: current size - holes + free -+ space on part */ -+ for (i = 0; i < (target_inode->i_size >> PAGE_SHIFT) ; i++) { -+ if (has_contiguous_blocks(dev_info, i)) -+ result++; -+ } -+ break; -+ case S_IFBLK: /* Block device */ -+ if (!bdev->bd_disk) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, -+ "bdev->bd_disk null."); -+ return 0; -+ } -+ -+ result = (bdev->bd_part ? -+ bdev->bd_part->nr_sects : -+ get_capacity(bdev->bd_disk)) >> (PAGE_SHIFT - 9); -+ } -+ -+ -+ return result; -+} -+ -+static int toi_file_register_storage(void) -+{ -+ struct toi_bdev_info *devinfo; -+ int result = 0; -+ struct fs_info *fs_info; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_file_register_storage."); -+ if (!strlen(toi_file_target)) { -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Register file storage: " -+ "No target filename set."); -+ return 0; -+ } -+ -+ target_file = filp_open(toi_file_target, O_RDONLY|O_LARGEFILE, 0); -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "filp_open %s returned %p.", -+ toi_file_target, target_file); -+ -+ if (IS_ERR(target_file) || !target_file) { -+ target_file = NULL; -+ toi_file_dev_t = name_to_dev_t(toi_file_target); -+ if (!toi_file_dev_t) { -+ struct kstat stat; -+ int error = vfs_stat(toi_file_target, &stat); -+ printk(KERN_INFO "Open file %s returned %p and " -+ "name_to_devt failed.\n", -+ toi_file_target, target_file); -+ if (error) { -+ printk(KERN_INFO "Stating the file also failed." -+ " Nothing more we can do.\n"); -+ return 0; -+ } else -+ toi_file_dev_t = stat.rdev; -+ } -+ -+ toi_file_target_bdev = toi_open_by_devnum(toi_file_dev_t); -+ if (IS_ERR(toi_file_target_bdev)) { -+ printk(KERN_INFO "Got a dev_num (%lx) but failed to " -+ "open it.\n", -+ (unsigned long) toi_file_dev_t); -+ toi_file_target_bdev = NULL; -+ return 0; -+ } -+ used_devt = 1; -+ target_inode = toi_file_target_bdev->bd_inode; -+ } else -+ target_inode = target_file->f_mapping->host; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Succeeded in opening the target."); -+ if (S_ISLNK(target_inode->i_mode) || S_ISDIR(target_inode->i_mode) || -+ S_ISSOCK(target_inode->i_mode) || S_ISFIFO(target_inode->i_mode)) { -+ printk(KERN_INFO "File support works with regular files," -+ " character files and block devices.\n"); -+ /* Cleanup routine will undo the above */ -+ return 0; -+ } -+ -+ if (!used_devt) { -+ if (S_ISBLK(target_inode->i_mode)) { -+ toi_file_target_bdev = I_BDEV(target_inode); -+ if (!bd_claim(toi_file_target_bdev, &toi_fileops)) -+ target_claim = 1; -+ } else -+ toi_file_target_bdev = target_inode->i_sb->s_bdev; -+ if (!toi_file_target_bdev) { -+ printk(KERN_INFO "%s is not a valid file allocator " -+ "target.\n", toi_file_target); -+ return 0; -+ } -+ toi_file_dev_t = toi_file_target_bdev->bd_dev; -+ } -+ -+ devinfo = toi_kzalloc(39, sizeof(struct toi_bdev_info), GFP_ATOMIC); -+ if (!devinfo) { -+ printk("Failed to allocate a toi_bdev_info struct for the file allocator.\n"); -+ return -ENOMEM; -+ } -+ -+ devinfo->bdev = toi_file_target_bdev; -+ devinfo->allocator = &toi_fileops; -+ devinfo->allocator_index = 0; -+ -+ fs_info = fs_info_from_block_dev(toi_file_target_bdev); -+ if (fs_info && !IS_ERR(fs_info)) { -+ memcpy(devinfo->uuid, &fs_info->uuid, 16); -+ free_fs_info(fs_info); -+ } else -+ result = (int) PTR_ERR(fs_info); -+ -+ /* Unlike swap code, only complain if fs_info_from_block_dev returned -+ * -ENOMEM. The 'file' might be a full partition, so might validly not -+ * have an identifiable type, UUID etc. -+ */ -+ if (result) -+ printk(KERN_DEBUG "Failed to get fs_info for file device (%d).\n", -+ result); -+ devinfo->dev_t = toi_file_dev_t; -+ devinfo->prio = file_target_priority; -+ devinfo->bmap_shift = target_inode->i_blkbits - 9; -+ devinfo->blocks_per_page = -+ (1 << (PAGE_SHIFT - target_inode->i_blkbits)); -+ sprintf(devinfo->name, "file %s", toi_file_target); -+ file_chain = devinfo; -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Dev_t is %lx. Prio is %d. Bmap " -+ "shift is %d. Blocks per page %d.", -+ devinfo->dev_t, devinfo->prio, devinfo->bmap_shift, -+ devinfo->blocks_per_page); -+ -+ /* Keep one aside for the signature */ -+ pages_available = get_usable_pages(devinfo) - 1; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Registering file storage, %lu " -+ "pages.", pages_available); -+ -+ toi_bio_ops.register_storage(devinfo); -+ return 0; -+} -+ -+static unsigned long toi_file_storage_available(void) -+{ -+ return pages_available; -+} -+ -+static int toi_file_allocate_storage(struct toi_bdev_info *chain, -+ unsigned long request) -+{ -+ unsigned long available = pages_available - pages_allocated; -+ unsigned long to_add = min(available, request); -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Pages available is %lu. Allocated " -+ "is %lu. Allocating %lu pages from file.", -+ pages_available, pages_allocated, to_add); -+ pages_allocated += to_add; -+ -+ return to_add; -+} -+ -+/** -+ * __populate_block_list - add an extent to the chain -+ * @min: Start of the extent (first physical block = sector) -+ * @max: End of the extent (last physical block = sector) -+ * -+ * If TOI_TEST_BIO is set, print a debug message, outputting the min and max -+ * fs block numbers. -+ **/ -+static int __populate_block_list(struct toi_bdev_info *chain, int min, int max) -+{ -+ if (test_action_state(TOI_TEST_BIO)) -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Adding extent %d-%d.", -+ min << chain->bmap_shift, -+ ((max + 1) << chain->bmap_shift) - 1); -+ -+ return toi_add_to_extent_chain(&chain->blocks, min, max); -+} -+ -+static int get_main_pool_phys_params(struct toi_bdev_info *chain) -+{ -+ int i, extent_min = -1, extent_max = -1, result = 0, have_sig_page = 0; -+ unsigned long pages_mapped = 0; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Getting file allocator blocks."); -+ -+ if (chain->blocks.first) -+ toi_put_extent_chain(&chain->blocks); -+ -+ if (!target_is_normal_file()) { -+ result = (pages_available > 0) ? -+ __populate_block_list(chain, chain->blocks_per_page, -+ (pages_allocated + 1) * -+ chain->blocks_per_page - 1) : 0; -+ return result; -+ } -+ -+ /* -+ * FIXME: We are assuming the first page is contiguous. Is that -+ * assumption always right? -+ */ -+ -+ for (i = 0; i < (target_inode->i_size >> PAGE_SHIFT); i++) { -+ sector_t new_sector; -+ -+ if (!has_contiguous_blocks(chain, i)) -+ continue; -+ -+ if (!have_sig_page) { -+ have_sig_page = 1; -+ sig_page_index = i; -+ continue; -+ } -+ -+ pages_mapped++; -+ -+ /* Ignore first page - it has the header */ -+ if (pages_mapped == 1) -+ continue; -+ -+ new_sector = bmap(target_inode, (i * chain->blocks_per_page)); -+ -+ /* -+ * I'd love to be able to fill in holes and resize -+ * files, but not yet... -+ */ -+ -+ if (new_sector == extent_max + 1) -+ extent_max += chain->blocks_per_page; -+ else { -+ if (extent_min > -1) { -+ result = __populate_block_list(chain, -+ extent_min, extent_max); -+ if (result) -+ return result; -+ } -+ -+ extent_min = new_sector; -+ extent_max = extent_min + -+ chain->blocks_per_page - 1; -+ } -+ -+ if (pages_mapped == pages_allocated) -+ break; -+ } -+ -+ if (extent_min > -1) { -+ result = __populate_block_list(chain, extent_min, extent_max); -+ if (result) -+ return result; -+ } -+ -+ return 0; -+} -+ -+static void toi_file_free_storage(struct toi_bdev_info *chain) -+{ -+ pages_allocated = 0; -+ file_chain = NULL; -+} -+ -+/** -+ * toi_file_print_debug_stats - print debug info -+ * @buffer: Buffer to data to populate -+ * @size: Size of the buffer -+ **/ -+static int toi_file_print_debug_stats(char *buffer, int size) -+{ -+ int len = scnprintf(buffer, size, "- File Allocator active.\n"); -+ -+ len += scnprintf(buffer+len, size-len, " Storage available for " -+ "image: %lu pages.\n", pages_available); -+ -+ return len; -+} -+ -+static void toi_file_cleanup(int finishing_cycle) -+{ -+ if (toi_file_target_bdev) { -+ if (target_claim) { -+ bd_release(toi_file_target_bdev); -+ target_claim = 0; -+ } -+ -+ if (used_devt) { -+ blkdev_put(toi_file_target_bdev, -+ FMODE_READ | FMODE_NDELAY); -+ used_devt = 0; -+ } -+ toi_file_target_bdev = NULL; -+ target_inode = NULL; -+ } -+ -+ if (target_file) { -+ filp_close(target_file, NULL); -+ target_file = NULL; -+ } -+ -+ pages_available = 0; -+} -+ -+/** -+ * test_toi_file_target - sysfs callback for /sys/power/tuxonince/file/target -+ * -+ * Test wheter the target file is valid for hibernating. -+ **/ -+static void test_toi_file_target(void) -+{ -+ int result = toi_file_register_storage(); -+ sector_t sector; -+ char buf[33]; -+ struct fs_info *fs_info; -+ -+ if (result || !file_chain) -+ return; -+ -+ /* This doesn't mean we're in business. Is any storage available? */ -+ if (!pages_available) -+ goto out; -+ -+ toi_file_allocate_storage(file_chain, 1); -+ result = get_main_pool_phys_params(file_chain); -+ if (result) -+ goto out; -+ -+ -+ sector = bmap(target_inode, sig_page_index * -+ file_chain->blocks_per_page) << file_chain->bmap_shift; -+ -+ /* Use the uuid, or the dev_t if that fails */ -+ fs_info = fs_info_from_block_dev(toi_file_target_bdev); -+ if (!fs_info || IS_ERR(fs_info)) { -+ bdevname(toi_file_target_bdev, buf); -+ sprintf(resume_file, "/dev/%s:%llu", buf, -+ (unsigned long long) sector); -+ } else { -+ int i; -+ hex_dump_to_buffer(fs_info->uuid, 16, 32, 1, buf, 50, 0); -+ -+ /* Remove the spaces */ -+ for (i = 1; i < 16; i++) { -+ buf[2 * i] = buf[3 * i]; -+ buf[2 * i + 1] = buf[3 * i + 1]; -+ } -+ buf[32] = 0; -+ sprintf(resume_file, "UUID=%s:0x%llx", buf, -+ (unsigned long long) sector); -+ free_fs_info(fs_info); -+ } -+ -+ toi_attempt_to_parse_resume_device(0); -+out: -+ toi_file_free_storage(file_chain); -+ toi_bio_ops.free_storage(); -+} -+ -+static struct toi_sysfs_data sysfs_params[] = { -+ SYSFS_STRING("target", SYSFS_RW, toi_file_target, 256, -+ SYSFS_NEEDS_SM_FOR_WRITE, test_toi_file_target), -+ SYSFS_INT("enabled", SYSFS_RW, &toi_fileops.enabled, 0, 1, 0, NULL), -+ SYSFS_INT("priority", SYSFS_RW, &file_target_priority, -4095, -+ 4096, 0, NULL), -+}; -+ -+static struct toi_bio_allocator_ops toi_bio_fileops = { -+ .register_storage = toi_file_register_storage, -+ .storage_available = toi_file_storage_available, -+ .allocate_storage = toi_file_allocate_storage, -+ .bmap = get_main_pool_phys_params, -+ .free_storage = toi_file_free_storage, -+}; -+ -+static struct toi_module_ops toi_fileops = { -+ .type = BIO_ALLOCATOR_MODULE, -+ .name = "file storage", -+ .directory = "file", -+ .module = THIS_MODULE, -+ .print_debug_info = toi_file_print_debug_stats, -+ .cleanup = toi_file_cleanup, -+ .bio_allocator_ops = &toi_bio_fileops, -+ -+ .sysfs_data = sysfs_params, -+ .num_sysfs_entries = sizeof(sysfs_params) / -+ sizeof(struct toi_sysfs_data), -+}; -+ -+/* ---- Registration ---- */ -+static __init int toi_file_load(void) -+{ -+ return toi_register_module(&toi_fileops); -+} -+ -+#ifdef MODULE -+static __exit void toi_file_unload(void) -+{ -+ toi_unregister_module(&toi_fileops); -+} -+ -+module_init(toi_file_load); -+module_exit(toi_file_unload); -+MODULE_LICENSE("GPL"); -+MODULE_AUTHOR("Nigel Cunningham"); -+MODULE_DESCRIPTION("TuxOnIce FileAllocator"); -+#else -+late_initcall(toi_file_load); -+#endif -diff --git a/kernel/power/tuxonice_highlevel.c b/kernel/power/tuxonice_highlevel.c -new file mode 100644 -index 0000000..c4bbb49 ---- /dev/null -+++ b/kernel/power/tuxonice_highlevel.c -@@ -0,0 +1,1313 @@ -+/* -+ * kernel/power/tuxonice_highlevel.c -+ */ -+/** \mainpage TuxOnIce. -+ * -+ * TuxOnIce provides support for saving and restoring an image of -+ * system memory to an arbitrary storage device, either on the local computer, -+ * or across some network. The support is entirely OS based, so TuxOnIce -+ * works without requiring BIOS, APM or ACPI support. The vast majority of the -+ * code is also architecture independant, so it should be very easy to port -+ * the code to new architectures. TuxOnIce includes support for SMP, 4G HighMem -+ * and preemption. Initramfses and initrds are also supported. -+ * -+ * TuxOnIce uses a modular design, in which the method of storing the image is -+ * completely abstracted from the core code, as are transformations on the data -+ * such as compression and/or encryption (multiple 'modules' can be used to -+ * provide arbitrary combinations of functionality). The user interface is also -+ * modular, so that arbitrarily simple or complex interfaces can be used to -+ * provide anything from debugging information through to eye candy. -+ * -+ * \section Copyright -+ * -+ * TuxOnIce is released under the GPLv2. -+ * -+ * Copyright (C) 1998-2001 Gabor Kuti
-+ * Copyright (C) 1998,2001,2002 Pavel Machek
-+ * Copyright (C) 2002-2003 Florent Chabaud
-+ * Copyright (C) 2002-2010 Nigel Cunningham (nigel at tuxonice net)
-+ * -+ * \section Credits -+ * -+ * Nigel would like to thank the following people for their work: -+ * -+ * Bernard Blackham
-+ * Web page & Wiki administration, some coding. A person without whom -+ * TuxOnIce would not be where it is. -+ * -+ * Michael Frank
-+ * Extensive testing and help with improving stability. I was constantly -+ * amazed by the quality and quantity of Michael's help. -+ * -+ * Pavel Machek
-+ * Modifications, defectiveness pointing, being with Gabor at the very -+ * beginning, suspend to swap space, stop all tasks. Port to 2.4.18-ac and -+ * 2.5.17. Even though Pavel and I disagree on the direction suspend to -+ * disk should take, I appreciate the valuable work he did in helping Gabor -+ * get the concept working. -+ * -+ * ..and of course the myriads of TuxOnIce users who have helped diagnose -+ * and fix bugs, made suggestions on how to improve the code, proofread -+ * documentation, and donated time and money. -+ * -+ * Thanks also to corporate sponsors: -+ * -+ * Redhat.Sometime employer from May 2006 (my fault, not Redhat's!). -+ * -+ * Cyclades.com. Nigel's employers from Dec 2004 until May 2006, who -+ * allowed him to work on TuxOnIce and PM related issues on company time. -+ * -+ * LinuxFund.org. Sponsored Nigel's work on TuxOnIce for four months Oct -+ * 2003 to Jan 2004. -+ * -+ * LAC Linux. Donated P4 hardware that enabled development and ongoing -+ * maintenance of SMP and Highmem support. -+ * -+ * OSDL. Provided access to various hardware configurations, make -+ * occasional small donations to the project. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include /* for get/set_fs & KERNEL_DS on i386 */ -+#include -+ -+#include "tuxonice.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_sysfs.h" -+#include "tuxonice_prepare_image.h" -+#include "tuxonice_io.h" -+#include "tuxonice_ui.h" -+#include "tuxonice_power_off.h" -+#include "tuxonice_storage.h" -+#include "tuxonice_checksum.h" -+#include "tuxonice_builtin.h" -+#include "tuxonice_atomic_copy.h" -+#include "tuxonice_alloc.h" -+#include "tuxonice_cluster.h" -+ -+/*! Pageset metadata. */ -+struct pagedir pagedir2 = {2}; -+EXPORT_SYMBOL_GPL(pagedir2); -+ -+static mm_segment_t oldfs; -+static DEFINE_MUTEX(tuxonice_in_use); -+static int block_dump_save; -+ -+/* Binary signature if an image is present */ -+char tuxonice_signature[9] = "\xed\xc3\x02\xe9\x98\x56\xe5\x0c"; -+EXPORT_SYMBOL_GPL(tuxonice_signature); -+ -+unsigned long boot_kernel_data_buffer; -+ -+static char *result_strings[] = { -+ "Hibernation was aborted", -+ "The user requested that we cancel the hibernation", -+ "No storage was available", -+ "Insufficient storage was available", -+ "Freezing filesystems and/or tasks failed", -+ "A pre-existing image was used", -+ "We would free memory, but image size limit doesn't allow this", -+ "Unable to free enough memory to hibernate", -+ "Unable to obtain the Power Management Semaphore", -+ "A device suspend/resume returned an error", -+ "A system device suspend/resume returned an error", -+ "The extra pages allowance is too small", -+ "We were unable to successfully prepare an image", -+ "TuxOnIce module initialisation failed", -+ "TuxOnIce module cleanup failed", -+ "I/O errors were encountered", -+ "Ran out of memory", -+ "An error was encountered while reading the image", -+ "Platform preparation failed", -+ "CPU Hotplugging failed", -+ "Architecture specific preparation failed", -+ "Pages needed resaving, but we were told to abort if this happens", -+ "We can't hibernate at the moment (invalid resume= or filewriter " -+ "target?)", -+ "A hibernation preparation notifier chain member cancelled the " -+ "hibernation", -+ "Pre-snapshot preparation failed", -+ "Pre-restore preparation failed", -+ "Failed to disable usermode helpers", -+ "Can't resume from alternate image", -+ "Header reservation too small", -+}; -+ -+/** -+ * toi_finish_anything - cleanup after doing anything -+ * @hibernate_or_resume: Whether finishing a cycle or attempt at -+ * resuming. -+ * -+ * This is our basic clean-up routine, matching start_anything below. We -+ * call cleanup routines, drop module references and restore process fs and -+ * cpus allowed masks, together with the global block_dump variable's value. -+ **/ -+void toi_finish_anything(int hibernate_or_resume) -+{ -+ toi_cleanup_modules(hibernate_or_resume); -+ toi_put_modules(); -+ if (hibernate_or_resume) { -+ block_dump = block_dump_save; -+ set_cpus_allowed_ptr(current, cpu_all_mask); -+ toi_alloc_print_debug_stats(); -+ atomic_inc(&snapshot_device_available); -+ mutex_unlock(&pm_mutex); -+ } -+ -+ set_fs(oldfs); -+ mutex_unlock(&tuxonice_in_use); -+} -+ -+/** -+ * toi_start_anything - basic initialisation for TuxOnIce -+ * @toi_or_resume: Whether starting a cycle or attempt at resuming. -+ * -+ * Our basic initialisation routine. Take references on modules, use the -+ * kernel segment, recheck resume= if no active allocator is set, initialise -+ * modules, save and reset block_dump and ensure we're running on CPU0. -+ **/ -+int toi_start_anything(int hibernate_or_resume) -+{ -+ mutex_lock(&tuxonice_in_use); -+ -+ oldfs = get_fs(); -+ set_fs(KERNEL_DS); -+ -+ if (hibernate_or_resume) { -+ mutex_lock(&pm_mutex); -+ -+ if (!atomic_add_unless(&snapshot_device_available, -1, 0)) -+ goto snapshotdevice_unavailable; -+ } -+ -+ if (hibernate_or_resume == SYSFS_HIBERNATE) -+ toi_print_modules(); -+ -+ if (toi_get_modules()) { -+ printk(KERN_INFO "TuxOnIce: Get modules failed!\n"); -+ goto prehibernate_err; -+ } -+ -+ if (hibernate_or_resume) { -+ block_dump_save = block_dump; -+ block_dump = 0; -+ set_cpus_allowed_ptr(current, -+ &cpumask_of_cpu(first_cpu(cpu_online_map))); -+ } -+ -+ if (toi_initialise_modules_early(hibernate_or_resume)) -+ goto early_init_err; -+ -+ if (!toiActiveAllocator) -+ toi_attempt_to_parse_resume_device(!hibernate_or_resume); -+ -+ if (!toi_initialise_modules_late(hibernate_or_resume)) -+ return 0; -+ -+ toi_cleanup_modules(hibernate_or_resume); -+early_init_err: -+ if (hibernate_or_resume) { -+ block_dump_save = block_dump; -+ set_cpus_allowed_ptr(current, cpu_all_mask); -+ } -+ toi_put_modules(); -+prehibernate_err: -+ if (hibernate_or_resume) -+ atomic_inc(&snapshot_device_available); -+snapshotdevice_unavailable: -+ if (hibernate_or_resume) -+ mutex_unlock(&pm_mutex); -+ set_fs(oldfs); -+ mutex_unlock(&tuxonice_in_use); -+ return -EBUSY; -+} -+ -+/* -+ * Nosave page tracking. -+ * -+ * Here rather than in prepare_image because we want to do it once only at the -+ * start of a cycle. -+ */ -+ -+/** -+ * mark_nosave_pages - set up our Nosave bitmap -+ * -+ * Build a bitmap of Nosave pages from the list. The bitmap allows faster -+ * use when preparing the image. -+ **/ -+static void mark_nosave_pages(void) -+{ -+ struct nosave_region *region; -+ -+ list_for_each_entry(region, &nosave_regions, list) { -+ unsigned long pfn; -+ -+ for (pfn = region->start_pfn; pfn < region->end_pfn; pfn++) -+ if (pfn_valid(pfn)) -+ SetPageNosave(pfn_to_page(pfn)); -+ } -+} -+ -+static int alloc_a_bitmap(struct memory_bitmap **bm) -+{ -+ int result = 0; -+ -+ *bm = kzalloc(sizeof(struct memory_bitmap), GFP_KERNEL); -+ if (!*bm) { -+ printk(KERN_ERR "Failed to kzalloc memory for a bitmap.\n"); -+ return -ENOMEM; -+ } -+ -+ result = memory_bm_create(*bm, GFP_KERNEL, 0); -+ -+ if (result) { -+ printk(KERN_ERR "Failed to create a bitmap.\n"); -+ kfree(*bm); -+ } -+ -+ return result; -+} -+ -+/** -+ * allocate_bitmaps - allocate bitmaps used to record page states -+ * -+ * Allocate the bitmaps we use to record the various TuxOnIce related -+ * page states. -+ **/ -+static int allocate_bitmaps(void) -+{ -+ if (alloc_a_bitmap(&pageset1_map) || -+ alloc_a_bitmap(&pageset1_copy_map) || -+ alloc_a_bitmap(&pageset2_map) || -+ alloc_a_bitmap(&io_map) || -+ alloc_a_bitmap(&nosave_map) || -+ alloc_a_bitmap(&free_map) || -+ alloc_a_bitmap(&page_resave_map)) -+ return 1; -+ -+ return 0; -+} -+ -+static void free_a_bitmap(struct memory_bitmap **bm) -+{ -+ if (!*bm) -+ return; -+ -+ memory_bm_free(*bm, 0); -+ kfree(*bm); -+ *bm = NULL; -+} -+ -+/** -+ * free_bitmaps - free the bitmaps used to record page states -+ * -+ * Free the bitmaps allocated above. It is not an error to call -+ * memory_bm_free on a bitmap that isn't currently allocated. -+ **/ -+static void free_bitmaps(void) -+{ -+ free_a_bitmap(&pageset1_map); -+ free_a_bitmap(&pageset1_copy_map); -+ free_a_bitmap(&pageset2_map); -+ free_a_bitmap(&io_map); -+ free_a_bitmap(&nosave_map); -+ free_a_bitmap(&free_map); -+ free_a_bitmap(&page_resave_map); -+} -+ -+/** -+ * io_MB_per_second - return the number of MB/s read or written -+ * @write: Whether to return the speed at which we wrote. -+ * -+ * Calculate the number of megabytes per second that were read or written. -+ **/ -+static int io_MB_per_second(int write) -+{ -+ return (toi_bkd.toi_io_time[write][1]) ? -+ MB((unsigned long) toi_bkd.toi_io_time[write][0]) * HZ / -+ toi_bkd.toi_io_time[write][1] : 0; -+} -+ -+#define SNPRINTF(a...) do { len += scnprintf(((char *) buffer) + len, \ -+ count - len - 1, ## a); } while (0) -+ -+/** -+ * get_debug_info - fill a buffer with debugging information -+ * @buffer: The buffer to be filled. -+ * @count: The size of the buffer, in bytes. -+ * -+ * Fill a (usually PAGE_SIZEd) buffer with the debugging info that we will -+ * either printk or return via sysfs. -+ **/ -+static int get_toi_debug_info(const char *buffer, int count) -+{ -+ int len = 0, i, first_result = 1; -+ -+ SNPRINTF("TuxOnIce debugging info:\n"); -+ SNPRINTF("- TuxOnIce core : " TOI_CORE_VERSION "\n"); -+ SNPRINTF("- Kernel Version : " UTS_RELEASE "\n"); -+ SNPRINTF("- Compiler vers. : %d.%d\n", __GNUC__, __GNUC_MINOR__); -+ SNPRINTF("- Attempt number : %d\n", nr_hibernates); -+ SNPRINTF("- Parameters : %ld %ld %ld %d %ld %ld\n", -+ toi_result, -+ toi_bkd.toi_action, -+ toi_bkd.toi_debug_state, -+ toi_bkd.toi_default_console_level, -+ image_size_limit, -+ toi_poweroff_method); -+ SNPRINTF("- Overall expected compression percentage: %d.\n", -+ 100 - toi_expected_compression_ratio()); -+ len += toi_print_module_debug_info(((char *) buffer) + len, -+ count - len - 1); -+ if (toi_bkd.toi_io_time[0][1]) { -+ if ((io_MB_per_second(0) < 5) || (io_MB_per_second(1) < 5)) { -+ SNPRINTF("- I/O speed: Write %ld KB/s", -+ (KB((unsigned long) toi_bkd.toi_io_time[0][0]) * HZ / -+ toi_bkd.toi_io_time[0][1])); -+ if (toi_bkd.toi_io_time[1][1]) -+ SNPRINTF(", Read %ld KB/s", -+ (KB((unsigned long) -+ toi_bkd.toi_io_time[1][0]) * HZ / -+ toi_bkd.toi_io_time[1][1])); -+ } else { -+ SNPRINTF("- I/O speed: Write %ld MB/s", -+ (MB((unsigned long) toi_bkd.toi_io_time[0][0]) * HZ / -+ toi_bkd.toi_io_time[0][1])); -+ if (toi_bkd.toi_io_time[1][1]) -+ SNPRINTF(", Read %ld MB/s", -+ (MB((unsigned long) -+ toi_bkd.toi_io_time[1][0]) * HZ / -+ toi_bkd.toi_io_time[1][1])); -+ } -+ SNPRINTF(".\n"); -+ } else -+ SNPRINTF("- No I/O speed stats available.\n"); -+ SNPRINTF("- Extra pages : %lu used/%lu.\n", -+ extra_pd1_pages_used, extra_pd1_pages_allowance); -+ -+ for (i = 0; i < TOI_NUM_RESULT_STATES; i++) -+ if (test_result_state(i)) { -+ SNPRINTF("%s: %s.\n", first_result ? -+ "- Result " : -+ " ", -+ result_strings[i]); -+ first_result = 0; -+ } -+ if (first_result) -+ SNPRINTF("- Result : %s.\n", nr_hibernates ? -+ "Succeeded" : -+ "No hibernation attempts so far"); -+ return len; -+} -+ -+/** -+ * do_cleanup - cleanup after attempting to hibernate or resume -+ * @get_debug_info: Whether to allocate and return debugging info. -+ * -+ * Cleanup after attempting to hibernate or resume, possibly getting -+ * debugging info as we do so. -+ **/ -+static void do_cleanup(int get_debug_info, int restarting) -+{ -+ int i = 0; -+ char *buffer = NULL; -+ -+ trap_non_toi_io = 0; -+ -+ if (get_debug_info) -+ toi_prepare_status(DONT_CLEAR_BAR, "Cleaning up..."); -+ -+ free_checksum_pages(); -+ -+ if (get_debug_info) -+ buffer = (char *) toi_get_zeroed_page(20, TOI_ATOMIC_GFP); -+ -+ if (buffer) -+ i = get_toi_debug_info(buffer, PAGE_SIZE); -+ -+ toi_free_extra_pagedir_memory(); -+ -+ pagedir1.size = 0; -+ pagedir2.size = 0; -+ set_highmem_size(pagedir1, 0); -+ set_highmem_size(pagedir2, 0); -+ -+ if (boot_kernel_data_buffer) { -+ if (!test_toi_state(TOI_BOOT_KERNEL)) -+ toi_free_page(37, boot_kernel_data_buffer); -+ boot_kernel_data_buffer = 0; -+ } -+ -+ clear_toi_state(TOI_BOOT_KERNEL); -+ thaw_processes(); -+ -+ if (test_action_state(TOI_KEEP_IMAGE) && -+ !test_result_state(TOI_ABORTED)) { -+ toi_message(TOI_ANY_SECTION, TOI_LOW, 1, -+ "TuxOnIce: Not invalidating the image due " -+ "to Keep Image being enabled."); -+ set_result_state(TOI_KEPT_IMAGE); -+ } else -+ if (toiActiveAllocator) -+ toiActiveAllocator->remove_image(); -+ -+ free_bitmaps(); -+ usermodehelper_enable(); -+ -+ if (test_toi_state(TOI_NOTIFIERS_PREPARE)) { -+ pm_notifier_call_chain(PM_POST_HIBERNATION); -+ clear_toi_state(TOI_NOTIFIERS_PREPARE); -+ } -+ -+ if (buffer && i) { -+ /* Printk can only handle 1023 bytes, including -+ * its level mangling. */ -+ for (i = 0; i < 3; i++) -+ printk(KERN_ERR "%s", buffer + (1023 * i)); -+ toi_free_page(20, (unsigned long) buffer); -+ } -+ -+ if (!test_action_state(TOI_LATE_CPU_HOTPLUG)) -+ enable_nonboot_cpus(); -+ -+ if (!restarting) -+ toi_cleanup_console(); -+ -+ free_attention_list(); -+ -+ if (!restarting) -+ toi_deactivate_storage(0); -+ -+ clear_toi_state(TOI_IGNORE_LOGLEVEL); -+ clear_toi_state(TOI_TRYING_TO_RESUME); -+ clear_toi_state(TOI_NOW_RESUMING); -+} -+ -+/** -+ * check_still_keeping_image - we kept an image; check whether to reuse it. -+ * -+ * We enter this routine when we have kept an image. If the user has said they -+ * want to still keep it, all we need to do is powerdown. If powering down -+ * means hibernating to ram and the power doesn't run out, we'll return 1. -+ * If we do power off properly or the battery runs out, we'll resume via the -+ * normal paths. -+ * -+ * If the user has said they want to remove the previously kept image, we -+ * remove it, and return 0. We'll then store a new image. -+ **/ -+static int check_still_keeping_image(void) -+{ -+ if (test_action_state(TOI_KEEP_IMAGE)) { -+ printk(KERN_INFO "Image already stored: powering down " -+ "immediately."); -+ do_toi_step(STEP_HIBERNATE_POWERDOWN); -+ return 1; /* Just in case we're using S3 */ -+ } -+ -+ printk(KERN_INFO "Invalidating previous image.\n"); -+ toiActiveAllocator->remove_image(); -+ -+ return 0; -+} -+ -+/** -+ * toi_init - prepare to hibernate to disk -+ * -+ * Initialise variables & data structures, in preparation for -+ * hibernating to disk. -+ **/ -+static int toi_init(int restarting) -+{ -+ int result, i, j; -+ -+ toi_result = 0; -+ -+ printk(KERN_INFO "Initiating a hibernation cycle.\n"); -+ -+ nr_hibernates++; -+ -+ for (i = 0; i < 2; i++) -+ for (j = 0; j < 2; j++) -+ toi_bkd.toi_io_time[i][j] = 0; -+ -+ if (!test_toi_state(TOI_CAN_HIBERNATE) || -+ allocate_bitmaps()) -+ return 1; -+ -+ mark_nosave_pages(); -+ -+ if (!restarting) -+ toi_prepare_console(); -+ -+ result = pm_notifier_call_chain(PM_HIBERNATION_PREPARE); -+ if (result) { -+ set_result_state(TOI_NOTIFIERS_PREPARE_FAILED); -+ return 1; -+ } -+ set_toi_state(TOI_NOTIFIERS_PREPARE); -+ -+ result = usermodehelper_disable(); -+ if (result) { -+ printk(KERN_ERR "TuxOnIce: Failed to disable usermode " -+ "helpers\n"); -+ set_result_state(TOI_USERMODE_HELPERS_ERR); -+ return 1; -+ } -+ -+ boot_kernel_data_buffer = toi_get_zeroed_page(37, TOI_ATOMIC_GFP); -+ if (!boot_kernel_data_buffer) { -+ printk(KERN_ERR "TuxOnIce: Failed to allocate " -+ "boot_kernel_data_buffer.\n"); -+ set_result_state(TOI_OUT_OF_MEMORY); -+ return 1; -+ } -+ -+ if (test_action_state(TOI_LATE_CPU_HOTPLUG) || -+ !disable_nonboot_cpus()) -+ return 1; -+ -+ set_abort_result(TOI_CPU_HOTPLUG_FAILED); -+ return 0; -+} -+ -+/** -+ * can_hibernate - perform basic 'Can we hibernate?' tests -+ * -+ * Perform basic tests that must pass if we're going to be able to hibernate: -+ * Can we get the pm_mutex? Is resume= valid (we need to know where to write -+ * the image header). -+ **/ -+static int can_hibernate(void) -+{ -+ if (!test_toi_state(TOI_CAN_HIBERNATE)) -+ toi_attempt_to_parse_resume_device(0); -+ -+ if (!test_toi_state(TOI_CAN_HIBERNATE)) { -+ printk(KERN_INFO "TuxOnIce: Hibernation is disabled.\n" -+ "This may be because you haven't put something along " -+ "the lines of\n\nresume=swap:/dev/hda1\n\n" -+ "in lilo.conf or equivalent. (Where /dev/hda1 is your " -+ "swap partition).\n"); -+ set_abort_result(TOI_CANT_SUSPEND); -+ return 0; -+ } -+ -+ if (strlen(alt_resume_param)) { -+ attempt_to_parse_alt_resume_param(); -+ -+ if (!strlen(alt_resume_param)) { -+ printk(KERN_INFO "Alternate resume parameter now " -+ "invalid. Aborting.\n"); -+ set_abort_result(TOI_CANT_USE_ALT_RESUME); -+ return 0; -+ } -+ } -+ -+ return 1; -+} -+ -+/** -+ * do_post_image_write - having written an image, figure out what to do next -+ * -+ * After writing an image, we might load an alternate image or power down. -+ * Powering down might involve hibernating to ram, in which case we also -+ * need to handle reloading pageset2. -+ **/ -+static int do_post_image_write(void) -+{ -+ /* If switching images fails, do normal powerdown */ -+ if (alt_resume_param[0]) -+ do_toi_step(STEP_RESUME_ALT_IMAGE); -+ -+ toi_power_down(); -+ -+ barrier(); -+ mb(); -+ return 0; -+} -+ -+/** -+ * __save_image - do the hard work of saving the image -+ * -+ * High level routine for getting the image saved. The key assumptions made -+ * are that processes have been frozen and sufficient memory is available. -+ * -+ * We also exit through here at resume time, coming back from toi_hibernate -+ * after the atomic restore. This is the reason for the toi_in_hibernate -+ * test. -+ **/ -+static int __save_image(void) -+{ -+ int temp_result, did_copy = 0; -+ -+ toi_prepare_status(DONT_CLEAR_BAR, "Starting to save the image.."); -+ -+ toi_message(TOI_ANY_SECTION, TOI_LOW, 1, -+ " - Final values: %d and %d.", -+ pagedir1.size, pagedir2.size); -+ -+ toi_cond_pause(1, "About to write pagedir2."); -+ -+ temp_result = write_pageset(&pagedir2); -+ -+ if (temp_result == -1 || test_result_state(TOI_ABORTED)) -+ return 1; -+ -+ toi_cond_pause(1, "About to copy pageset 1."); -+ -+ if (test_result_state(TOI_ABORTED)) -+ return 1; -+ -+ toi_deactivate_storage(1); -+ -+ toi_prepare_status(DONT_CLEAR_BAR, "Doing atomic copy/restore."); -+ -+ toi_in_hibernate = 1; -+ -+ if (toi_go_atomic(PMSG_FREEZE, 1)) -+ goto Failed; -+ -+ temp_result = toi_hibernate(); -+ if (!temp_result) -+ did_copy = 1; -+ -+ /* We return here at resume time too! */ -+ toi_end_atomic(ATOMIC_ALL_STEPS, toi_in_hibernate, temp_result); -+ -+Failed: -+ if (toi_activate_storage(1)) -+ panic("Failed to reactivate our storage."); -+ -+ /* Resume time? */ -+ if (!toi_in_hibernate) { -+ copyback_post(); -+ return 0; -+ } -+ -+ /* Nope. Hibernating. So, see if we can save the image... */ -+ -+ if (temp_result || test_result_state(TOI_ABORTED)) { -+ if (did_copy) -+ goto abort_reloading_pagedir_two; -+ else -+ return 1; -+ } -+ -+ toi_update_status(pagedir2.size, pagedir1.size + pagedir2.size, -+ NULL); -+ -+ if (test_result_state(TOI_ABORTED)) -+ goto abort_reloading_pagedir_two; -+ -+ toi_cond_pause(1, "About to write pageset1."); -+ -+ toi_message(TOI_ANY_SECTION, TOI_LOW, 1, "-- Writing pageset1"); -+ -+ temp_result = write_pageset(&pagedir1); -+ -+ /* We didn't overwrite any memory, so no reread needs to be done. */ -+ if (test_action_state(TOI_TEST_FILTER_SPEED)) -+ return 1; -+ -+ if (temp_result == 1 || test_result_state(TOI_ABORTED)) -+ goto abort_reloading_pagedir_two; -+ -+ toi_cond_pause(1, "About to write header."); -+ -+ if (test_result_state(TOI_ABORTED)) -+ goto abort_reloading_pagedir_two; -+ -+ temp_result = write_image_header(); -+ -+ if (test_action_state(TOI_TEST_BIO)) -+ return 1; -+ -+ if (!temp_result && !test_result_state(TOI_ABORTED)) -+ return 0; -+ -+abort_reloading_pagedir_two: -+ temp_result = read_pageset2(1); -+ -+ /* If that failed, we're sunk. Panic! */ -+ if (temp_result) -+ panic("Attempt to reload pagedir 2 while aborting " -+ "a hibernate failed."); -+ -+ return 1; -+} -+ -+static void map_ps2_pages(int enable) -+{ -+ unsigned long pfn = 0; -+ -+ pfn = memory_bm_next_pfn(pageset2_map); -+ -+ while (pfn != BM_END_OF_MAP) { -+ struct page *page = pfn_to_page(pfn); -+ kernel_map_pages(page, 1, enable); -+ pfn = memory_bm_next_pfn(pageset2_map); -+ } -+} -+ -+/** -+ * do_save_image - save the image and handle the result -+ * -+ * Save the prepared image. If we fail or we're in the path returning -+ * from the atomic restore, cleanup. -+ **/ -+static int do_save_image(void) -+{ -+ int result; -+ map_ps2_pages(0); -+ result = __save_image(); -+ map_ps2_pages(1); -+ return result; -+} -+ -+/** -+ * do_prepare_image - try to prepare an image -+ * -+ * Seek to initialise and prepare an image to be saved. On failure, -+ * cleanup. -+ **/ -+static int do_prepare_image(void) -+{ -+ int restarting = test_result_state(TOI_EXTRA_PAGES_ALLOW_TOO_SMALL); -+ -+ if (!restarting && toi_activate_storage(0)) -+ return 1; -+ -+ /* -+ * If kept image and still keeping image and hibernating to RAM, we will -+ * return 1 after hibernating and resuming (provided the power doesn't -+ * run out. In that case, we skip directly to cleaning up and exiting. -+ */ -+ -+ if (!can_hibernate() || -+ (test_result_state(TOI_KEPT_IMAGE) && -+ check_still_keeping_image())) -+ return 1; -+ -+ if (toi_init(restarting) && !toi_prepare_image() && -+ !test_result_state(TOI_ABORTED)) -+ return 0; -+ -+ trap_non_toi_io = 1; -+ -+ return 1; -+} -+ -+/** -+ * do_check_can_resume - find out whether an image has been stored -+ * -+ * Read whether an image exists. We use the same routine as the -+ * image_exists sysfs entry, and just look to see whether the -+ * first character in the resulting buffer is a '1'. -+ **/ -+int do_check_can_resume(void) -+{ -+ int result = -1; -+ -+ if (toi_activate_storage(0)) -+ return -1; -+ -+ if (!test_toi_state(TOI_RESUME_DEVICE_OK)) -+ toi_attempt_to_parse_resume_device(1); -+ -+ if (toiActiveAllocator) -+ result = toiActiveAllocator->image_exists(1); -+ -+ toi_deactivate_storage(0); -+ return result; -+} -+EXPORT_SYMBOL_GPL(do_check_can_resume); -+ -+/** -+ * do_load_atomic_copy - load the first part of an image, if it exists -+ * -+ * Check whether we have an image. If one exists, do sanity checking -+ * (possibly invalidating the image or even rebooting if the user -+ * requests that) before loading it into memory in preparation for the -+ * atomic restore. -+ * -+ * If and only if we have an image loaded and ready to restore, we return 1. -+ **/ -+static int do_load_atomic_copy(void) -+{ -+ int read_image_result = 0; -+ -+ if (sizeof(swp_entry_t) != sizeof(long)) { -+ printk(KERN_WARNING "TuxOnIce: The size of swp_entry_t != size" -+ " of long. Please report this!\n"); -+ return 1; -+ } -+ -+ if (!resume_file[0]) -+ printk(KERN_WARNING "TuxOnIce: " -+ "You need to use a resume= command line parameter to " -+ "tell TuxOnIce where to look for an image.\n"); -+ -+ toi_activate_storage(0); -+ -+ if (!(test_toi_state(TOI_RESUME_DEVICE_OK)) && -+ !toi_attempt_to_parse_resume_device(0)) { -+ /* -+ * Without a usable storage device we can do nothing - -+ * even if noresume is given -+ */ -+ -+ if (!toiNumAllocators) -+ printk(KERN_ALERT "TuxOnIce: " -+ "No storage allocators have been registered.\n"); -+ else -+ printk(KERN_ALERT "TuxOnIce: " -+ "Missing or invalid storage location " -+ "(resume= parameter). Please correct and " -+ "rerun lilo (or equivalent) before " -+ "hibernating.\n"); -+ toi_deactivate_storage(0); -+ return 1; -+ } -+ -+ if (allocate_bitmaps()) -+ return 1; -+ -+ read_image_result = read_pageset1(); /* non fatal error ignored */ -+ -+ if (test_toi_state(TOI_NORESUME_SPECIFIED)) -+ clear_toi_state(TOI_NORESUME_SPECIFIED); -+ -+ toi_deactivate_storage(0); -+ -+ if (read_image_result) -+ return 1; -+ -+ return 0; -+} -+ -+/** -+ * prepare_restore_load_alt_image - save & restore alt image variables -+ * -+ * Save and restore the pageset1 maps, when loading an alternate image. -+ **/ -+static void prepare_restore_load_alt_image(int prepare) -+{ -+ static struct memory_bitmap *pageset1_map_save, *pageset1_copy_map_save; -+ -+ if (prepare) { -+ pageset1_map_save = pageset1_map; -+ pageset1_map = NULL; -+ pageset1_copy_map_save = pageset1_copy_map; -+ pageset1_copy_map = NULL; -+ set_toi_state(TOI_LOADING_ALT_IMAGE); -+ toi_reset_alt_image_pageset2_pfn(); -+ } else { -+ memory_bm_free(pageset1_map, 0); -+ pageset1_map = pageset1_map_save; -+ memory_bm_free(pageset1_copy_map, 0); -+ pageset1_copy_map = pageset1_copy_map_save; -+ clear_toi_state(TOI_NOW_RESUMING); -+ clear_toi_state(TOI_LOADING_ALT_IMAGE); -+ } -+} -+ -+/** -+ * do_toi_step - perform a step in hibernating or resuming -+ * -+ * Perform a step in hibernating or resuming an image. This abstraction -+ * is in preparation for implementing cluster support, and perhaps replacing -+ * uswsusp too (haven't looked whether that's possible yet). -+ **/ -+int do_toi_step(int step) -+{ -+ switch (step) { -+ case STEP_HIBERNATE_PREPARE_IMAGE: -+ return do_prepare_image(); -+ case STEP_HIBERNATE_SAVE_IMAGE: -+ return do_save_image(); -+ case STEP_HIBERNATE_POWERDOWN: -+ return do_post_image_write(); -+ case STEP_RESUME_CAN_RESUME: -+ return do_check_can_resume(); -+ case STEP_RESUME_LOAD_PS1: -+ return do_load_atomic_copy(); -+ case STEP_RESUME_DO_RESTORE: -+ /* -+ * If we succeed, this doesn't return. -+ * Instead, we return from do_save_image() in the -+ * hibernated kernel. -+ */ -+ return toi_atomic_restore(); -+ case STEP_RESUME_ALT_IMAGE: -+ printk(KERN_INFO "Trying to resume alternate image.\n"); -+ toi_in_hibernate = 0; -+ save_restore_alt_param(SAVE, NOQUIET); -+ prepare_restore_load_alt_image(1); -+ if (!do_check_can_resume()) { -+ printk(KERN_INFO "Nothing to resume from.\n"); -+ goto out; -+ } -+ if (!do_load_atomic_copy()) -+ toi_atomic_restore(); -+ -+ printk(KERN_INFO "Failed to load image.\n"); -+out: -+ prepare_restore_load_alt_image(0); -+ save_restore_alt_param(RESTORE, NOQUIET); -+ break; -+ case STEP_CLEANUP: -+ do_cleanup(1, 0); -+ break; -+ case STEP_QUIET_CLEANUP: -+ do_cleanup(0, 0); -+ break; -+ } -+ -+ return 0; -+} -+EXPORT_SYMBOL_GPL(do_toi_step); -+ -+/* -- Functions for kickstarting a hibernate or resume --- */ -+ -+/** -+ * toi_try_resume - try to do the steps in resuming -+ * -+ * Check if we have an image and if so try to resume. Clear the status -+ * flags too. -+ **/ -+void toi_try_resume(void) -+{ -+ set_toi_state(TOI_TRYING_TO_RESUME); -+ resume_attempted = 1; -+ -+ current->flags |= PF_MEMALLOC; -+ -+ if (do_toi_step(STEP_RESUME_CAN_RESUME) && -+ !do_toi_step(STEP_RESUME_LOAD_PS1)) -+ do_toi_step(STEP_RESUME_DO_RESTORE); -+ -+ do_cleanup(0, 0); -+ -+ current->flags &= ~PF_MEMALLOC; -+ -+ clear_toi_state(TOI_IGNORE_LOGLEVEL); -+ clear_toi_state(TOI_TRYING_TO_RESUME); -+ clear_toi_state(TOI_NOW_RESUMING); -+} -+ -+/** -+ * toi_sys_power_disk_try_resume - wrapper calling toi_try_resume -+ * -+ * Wrapper for when __toi_try_resume is called from swsusp resume path, -+ * rather than from echo > /sys/power/tuxonice/do_resume. -+ **/ -+static void toi_sys_power_disk_try_resume(void) -+{ -+ resume_attempted = 1; -+ -+ /* -+ * There's a comment in kernel/power/disk.c that indicates -+ * we should be able to use mutex_lock_nested below. That -+ * doesn't seem to cut it, though, so let's just turn lockdep -+ * off for now. -+ */ -+ lockdep_off(); -+ -+ if (toi_start_anything(SYSFS_RESUMING)) -+ goto out; -+ -+ toi_try_resume(); -+ -+ /* -+ * For initramfs, we have to clear the boot time -+ * flag after trying to resume -+ */ -+ clear_toi_state(TOI_BOOT_TIME); -+ -+ toi_finish_anything(SYSFS_RESUMING); -+out: -+ lockdep_on(); -+} -+ -+/** -+ * toi_try_hibernate - try to start a hibernation cycle -+ * -+ * Start a hibernation cycle, coming in from either -+ * echo > /sys/power/tuxonice/do_suspend -+ * -+ * or -+ * -+ * echo disk > /sys/power/state -+ * -+ * In the later case, we come in without pm_sem taken; in the -+ * former, it has been taken. -+ **/ -+int toi_try_hibernate(void) -+{ -+ int result = 0, sys_power_disk = 0, retries = 0; -+ -+ if (!mutex_is_locked(&tuxonice_in_use)) { -+ /* Came in via /sys/power/disk */ -+ if (toi_start_anything(SYSFS_HIBERNATING)) -+ return -EBUSY; -+ sys_power_disk = 1; -+ } -+ -+ current->flags |= PF_MEMALLOC; -+ -+ if (test_toi_state(TOI_CLUSTER_MODE)) { -+ toi_initiate_cluster_hibernate(); -+ goto out; -+ } -+ -+prepare: -+ result = do_toi_step(STEP_HIBERNATE_PREPARE_IMAGE); -+ -+ if (result || test_action_state(TOI_FREEZER_TEST)) -+ goto out; -+ -+ result = do_toi_step(STEP_HIBERNATE_SAVE_IMAGE); -+ -+ if (test_result_state(TOI_EXTRA_PAGES_ALLOW_TOO_SMALL)) { -+ if (retries < 2) { -+ do_cleanup(0, 1); -+ retries++; -+ clear_result_state(TOI_ABORTED); -+ extra_pd1_pages_allowance = extra_pd1_pages_used + 500; -+ printk(KERN_INFO "Automatically adjusting the extra" -+ " pages allowance to %ld and restarting.\n", -+ extra_pd1_pages_allowance); -+ goto prepare; -+ } -+ -+ printk(KERN_INFO "Adjusted extra pages allowance twice and " -+ "still couldn't hibernate successfully. Giving up."); -+ } -+ -+ /* This code runs at resume time too! */ -+ if (!result && toi_in_hibernate) -+ result = do_toi_step(STEP_HIBERNATE_POWERDOWN); -+out: -+ do_cleanup(1, 0); -+ current->flags &= ~PF_MEMALLOC; -+ -+ if (sys_power_disk) -+ toi_finish_anything(SYSFS_HIBERNATING); -+ -+ return result; -+} -+ -+/* -+ * channel_no: If !0, -c is added to args (userui). -+ */ -+int toi_launch_userspace_program(char *command, int channel_no, -+ enum umh_wait wait, int debug) -+{ -+ int retval; -+ static char *envp[] = { -+ "HOME=/", -+ "TERM=linux", -+ "PATH=/sbin:/usr/sbin:/bin:/usr/bin", -+ NULL }; -+ static char *argv[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -+ }; -+ char *channel = NULL; -+ int arg = 0, size; -+ char test_read[255]; -+ char *orig_posn = command; -+ -+ if (!strlen(orig_posn)) -+ return 1; -+ -+ if (channel_no) { -+ channel = toi_kzalloc(4, 6, GFP_KERNEL); -+ if (!channel) { -+ printk(KERN_INFO "Failed to allocate memory in " -+ "preparing to launch userspace program.\n"); -+ return 1; -+ } -+ } -+ -+ /* Up to 6 args supported */ -+ while (arg < 6) { -+ sscanf(orig_posn, "%s", test_read); -+ size = strlen(test_read); -+ if (!(size)) -+ break; -+ argv[arg] = toi_kzalloc(5, size + 1, TOI_ATOMIC_GFP); -+ strcpy(argv[arg], test_read); -+ orig_posn += size + 1; -+ *test_read = 0; -+ arg++; -+ } -+ -+ if (channel_no) { -+ sprintf(channel, "-c%d", channel_no); -+ argv[arg] = channel; -+ } else -+ arg--; -+ -+ if (debug) { -+ argv[++arg] = toi_kzalloc(5, 8, TOI_ATOMIC_GFP); -+ strcpy(argv[arg], "--debug"); -+ } -+ -+ retval = call_usermodehelper(argv[0], argv, envp, wait); -+ -+ /* -+ * If the program reports an error, retval = 256. Don't complain -+ * about that here. -+ */ -+ if (retval && retval != 256) -+ printk(KERN_ERR "Failed to launch userspace program '%s': " -+ "Error %d\n", command, retval); -+ -+ { -+ int i; -+ for (i = 0; i < arg; i++) -+ if (argv[i] && argv[i] != channel) -+ toi_kfree(5, argv[i], sizeof(*argv[i])); -+ } -+ -+ toi_kfree(4, channel, sizeof(*channel)); -+ -+ return retval; -+} -+ -+/* -+ * This array contains entries that are automatically registered at -+ * boot. Modules and the console code register their own entries separately. -+ */ -+static struct toi_sysfs_data sysfs_params[] = { -+ SYSFS_INT("freezer_sync", SYSFS_RW, &freezer_sync, 0, 1, 0, NULL), -+ SYSFS_LONG("extra_pages_allowance", SYSFS_RW, -+ &extra_pd1_pages_allowance, 0, LONG_MAX, 0), -+ SYSFS_CUSTOM("image_exists", SYSFS_RW, image_exists_read, -+ image_exists_write, SYSFS_NEEDS_SM_FOR_BOTH, NULL), -+ SYSFS_STRING("resume", SYSFS_RW, resume_file, 255, -+ SYSFS_NEEDS_SM_FOR_WRITE, -+ attempt_to_parse_resume_device2), -+ SYSFS_STRING("alt_resume_param", SYSFS_RW, alt_resume_param, 255, -+ SYSFS_NEEDS_SM_FOR_WRITE, -+ attempt_to_parse_alt_resume_param), -+ SYSFS_CUSTOM("debug_info", SYSFS_READONLY, get_toi_debug_info, NULL, 0, -+ NULL), -+ SYSFS_BIT("ignore_rootfs", SYSFS_RW, &toi_bkd.toi_action, -+ TOI_IGNORE_ROOTFS, 0), -+ SYSFS_LONG("image_size_limit", SYSFS_RW, &image_size_limit, -2, -+ INT_MAX, 0), -+ SYSFS_UL("last_result", SYSFS_RW, &toi_result, 0, 0, 0), -+ SYSFS_BIT("no_multithreaded_io", SYSFS_RW, &toi_bkd.toi_action, -+ TOI_NO_MULTITHREADED_IO, 0), -+ SYSFS_BIT("no_flusher_thread", SYSFS_RW, &toi_bkd.toi_action, -+ TOI_NO_FLUSHER_THREAD, 0), -+ SYSFS_BIT("full_pageset2", SYSFS_RW, &toi_bkd.toi_action, -+ TOI_PAGESET2_FULL, 0), -+ SYSFS_BIT("reboot", SYSFS_RW, &toi_bkd.toi_action, TOI_REBOOT, 0), -+ SYSFS_BIT("replace_swsusp", SYSFS_RW, &toi_bkd.toi_action, -+ TOI_REPLACE_SWSUSP, 0), -+ SYSFS_STRING("resume_commandline", SYSFS_RW, -+ toi_bkd.toi_nosave_commandline, COMMAND_LINE_SIZE, 0, -+ NULL), -+ SYSFS_STRING("version", SYSFS_READONLY, TOI_CORE_VERSION, 0, 0, NULL), -+ SYSFS_BIT("freezer_test", SYSFS_RW, &toi_bkd.toi_action, -+ TOI_FREEZER_TEST, 0), -+ SYSFS_BIT("test_bio", SYSFS_RW, &toi_bkd.toi_action, TOI_TEST_BIO, 0), -+ SYSFS_BIT("test_filter_speed", SYSFS_RW, &toi_bkd.toi_action, -+ TOI_TEST_FILTER_SPEED, 0), -+ SYSFS_BIT("no_pageset2", SYSFS_RW, &toi_bkd.toi_action, -+ TOI_NO_PAGESET2, 0), -+ SYSFS_BIT("no_pageset2_if_unneeded", SYSFS_RW, &toi_bkd.toi_action, -+ TOI_NO_PS2_IF_UNNEEDED, 0), -+ SYSFS_BIT("late_cpu_hotplug", SYSFS_RW, &toi_bkd.toi_action, -+ TOI_LATE_CPU_HOTPLUG, 0), -+ SYSFS_STRING("binary_signature", SYSFS_READONLY, -+ tuxonice_signature, 9, 0, NULL), -+ SYSFS_INT("max_workers", SYSFS_RW, &toi_max_workers, 0, NR_CPUS, 0, -+ NULL), -+#ifdef CONFIG_TOI_KEEP_IMAGE -+ SYSFS_BIT("keep_image", SYSFS_RW , &toi_bkd.toi_action, TOI_KEEP_IMAGE, -+ 0), -+#endif -+}; -+ -+static struct toi_core_fns my_fns = { -+ .get_nonconflicting_page = __toi_get_nonconflicting_page, -+ .post_context_save = __toi_post_context_save, -+ .try_hibernate = toi_try_hibernate, -+ .try_resume = toi_sys_power_disk_try_resume, -+}; -+ -+/** -+ * core_load - initialisation of TuxOnIce core -+ * -+ * Initialise the core, beginning with sysfs. Checksum and so on are part of -+ * the core, but have their own initialisation routines because they either -+ * aren't compiled in all the time or have their own subdirectories. -+ **/ -+static __init int core_load(void) -+{ -+ int i, -+ numfiles = sizeof(sysfs_params) / sizeof(struct toi_sysfs_data); -+ -+ printk(KERN_INFO "TuxOnIce " TOI_CORE_VERSION -+ " (http://tuxonice.net)\n"); -+ -+ if (toi_sysfs_init()) -+ return 1; -+ -+ for (i = 0; i < numfiles; i++) -+ toi_register_sysfs_file(tuxonice_kobj, &sysfs_params[i]); -+ -+ toi_core_fns = &my_fns; -+ -+ if (toi_alloc_init()) -+ return 1; -+ if (toi_checksum_init()) -+ return 1; -+ if (toi_usm_init()) -+ return 1; -+ if (toi_ui_init()) -+ return 1; -+ if (toi_poweroff_init()) -+ return 1; -+ if (toi_cluster_init()) -+ return 1; -+ -+ return 0; -+} -+ -+#ifdef MODULE -+/** -+ * core_unload: Prepare to unload the core code. -+ **/ -+static __exit void core_unload(void) -+{ -+ int i, -+ numfiles = sizeof(sysfs_params) / sizeof(struct toi_sysfs_data); -+ -+ toi_alloc_exit(); -+ toi_checksum_exit(); -+ toi_poweroff_exit(); -+ toi_ui_exit(); -+ toi_usm_exit(); -+ toi_cluster_exit(); -+ -+ for (i = 0; i < numfiles; i++) -+ toi_unregister_sysfs_file(tuxonice_kobj, &sysfs_params[i]); -+ -+ toi_core_fns = NULL; -+ -+ toi_sysfs_exit(); -+} -+MODULE_LICENSE("GPL"); -+module_init(core_load); -+module_exit(core_unload); -+#else -+late_initcall(core_load); -+#endif -diff --git a/kernel/power/tuxonice_io.c b/kernel/power/tuxonice_io.c -new file mode 100644 -index 0000000..02be4d9 ---- /dev/null -+++ b/kernel/power/tuxonice_io.c -@@ -0,0 +1,1822 @@ -+/* -+ * kernel/power/tuxonice_io.c -+ * -+ * Copyright (C) 1998-2001 Gabor Kuti -+ * Copyright (C) 1998,2001,2002 Pavel Machek -+ * Copyright (C) 2002-2003 Florent Chabaud -+ * Copyright (C) 2002-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * It contains high level IO routines for hibernating. -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "tuxonice.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_pageflags.h" -+#include "tuxonice_io.h" -+#include "tuxonice_ui.h" -+#include "tuxonice_storage.h" -+#include "tuxonice_prepare_image.h" -+#include "tuxonice_extent.h" -+#include "tuxonice_sysfs.h" -+#include "tuxonice_builtin.h" -+#include "tuxonice_checksum.h" -+#include "tuxonice_alloc.h" -+char alt_resume_param[256]; -+ -+/* Version read from image header at resume */ -+static int toi_image_header_version; -+ -+#define read_if_version(VERS, VAR, DESC) do { \ -+ if (likely(toi_image_header_version >= VERS)) \ -+ if (toiActiveAllocator->rw_header_chunk(READ, NULL, \ -+ (char *) &VAR, sizeof(VAR))) { \ -+ abort_hibernate(TOI_FAILED_IO, "Failed to read DESC."); \ -+ goto out_remove_image; \ -+ } \ -+} while(0) \ -+ -+/* Variables shared between threads and updated under the mutex */ -+static int io_write, io_finish_at, io_base, io_barmax, io_pageset, io_result; -+static int io_index, io_nextupdate, io_pc, io_pc_step; -+static DEFINE_MUTEX(io_mutex); -+static DEFINE_PER_CPU(struct page *, last_sought); -+static DEFINE_PER_CPU(struct page *, last_high_page); -+static DEFINE_PER_CPU(char *, checksum_locn); -+static DEFINE_PER_CPU(struct pbe *, last_low_page); -+static atomic_t io_count; -+atomic_t toi_io_workers; -+EXPORT_SYMBOL_GPL(toi_io_workers); -+ -+DECLARE_WAIT_QUEUE_HEAD(toi_io_queue_flusher); -+EXPORT_SYMBOL_GPL(toi_io_queue_flusher); -+ -+int toi_bio_queue_flusher_should_finish; -+EXPORT_SYMBOL_GPL(toi_bio_queue_flusher_should_finish); -+ -+/* Indicates that this thread should be used for checking throughput */ -+#define MONITOR ((void *) 1) -+ -+int toi_max_workers; -+ -+static char *image_version_error = "The image header version is newer than " \ -+ "this kernel supports."; -+ -+/** -+ * toi_attempt_to_parse_resume_device - determine if we can hibernate -+ * -+ * Can we hibernate, using the current resume= parameter? -+ **/ -+int toi_attempt_to_parse_resume_device(int quiet) -+{ -+ struct list_head *Allocator; -+ struct toi_module_ops *thisAllocator; -+ int result, returning = 0; -+ -+ if (toi_activate_storage(0)) -+ return 0; -+ -+ toiActiveAllocator = NULL; -+ clear_toi_state(TOI_RESUME_DEVICE_OK); -+ clear_toi_state(TOI_CAN_RESUME); -+ clear_result_state(TOI_ABORTED); -+ -+ if (!toiNumAllocators) { -+ if (!quiet) -+ printk(KERN_INFO "TuxOnIce: No storage allocators have " -+ "been registered. Hibernating will be " -+ "disabled.\n"); -+ goto cleanup; -+ } -+ -+ list_for_each(Allocator, &toiAllocators) { -+ thisAllocator = list_entry(Allocator, struct toi_module_ops, -+ type_list); -+ -+ /* -+ * Not sure why you'd want to disable an allocator, but -+ * we should honour the flag if we're providing it -+ */ -+ if (!thisAllocator->enabled) -+ continue; -+ -+ result = thisAllocator->parse_sig_location( -+ resume_file, (toiNumAllocators == 1), -+ quiet); -+ -+ switch (result) { -+ case -EINVAL: -+ /* For this allocator, but not a valid -+ * configuration. Error already printed. */ -+ goto cleanup; -+ -+ case 0: -+ /* For this allocator and valid. */ -+ toiActiveAllocator = thisAllocator; -+ -+ set_toi_state(TOI_RESUME_DEVICE_OK); -+ set_toi_state(TOI_CAN_RESUME); -+ returning = 1; -+ goto cleanup; -+ } -+ } -+ if (!quiet) -+ printk(KERN_INFO "TuxOnIce: No matching enabled allocator " -+ "found. Resuming disabled.\n"); -+cleanup: -+ toi_deactivate_storage(0); -+ return returning; -+} -+EXPORT_SYMBOL_GPL(toi_attempt_to_parse_resume_device); -+ -+void attempt_to_parse_resume_device2(void) -+{ -+ toi_prepare_usm(); -+ toi_attempt_to_parse_resume_device(0); -+ toi_cleanup_usm(); -+} -+EXPORT_SYMBOL_GPL(attempt_to_parse_resume_device2); -+ -+void save_restore_alt_param(int replace, int quiet) -+{ -+ static char resume_param_save[255]; -+ static unsigned long toi_state_save; -+ -+ if (replace) { -+ toi_state_save = toi_state; -+ strcpy(resume_param_save, resume_file); -+ strcpy(resume_file, alt_resume_param); -+ } else { -+ strcpy(resume_file, resume_param_save); -+ toi_state = toi_state_save; -+ } -+ toi_attempt_to_parse_resume_device(quiet); -+} -+ -+void attempt_to_parse_alt_resume_param(void) -+{ -+ int ok = 0; -+ -+ /* Temporarily set resume_param to the poweroff value */ -+ if (!strlen(alt_resume_param)) -+ return; -+ -+ printk(KERN_INFO "=== Trying Poweroff Resume2 ===\n"); -+ save_restore_alt_param(SAVE, NOQUIET); -+ if (test_toi_state(TOI_CAN_RESUME)) -+ ok = 1; -+ -+ printk(KERN_INFO "=== Done ===\n"); -+ save_restore_alt_param(RESTORE, QUIET); -+ -+ /* If not ok, clear the string */ -+ if (ok) -+ return; -+ -+ printk(KERN_INFO "Can't resume from that location; clearing " -+ "alt_resume_param.\n"); -+ alt_resume_param[0] = '\0'; -+} -+ -+/** -+ * noresume_reset_modules - reset data structures in case of non resuming -+ * -+ * When we read the start of an image, modules (and especially the -+ * active allocator) might need to reset data structures if we -+ * decide to remove the image rather than resuming from it. -+ **/ -+static void noresume_reset_modules(void) -+{ -+ struct toi_module_ops *this_filter; -+ -+ list_for_each_entry(this_filter, &toi_filters, type_list) -+ if (this_filter->noresume_reset) -+ this_filter->noresume_reset(); -+ -+ if (toiActiveAllocator && toiActiveAllocator->noresume_reset) -+ toiActiveAllocator->noresume_reset(); -+} -+ -+/** -+ * fill_toi_header - fill the hibernate header structure -+ * @struct toi_header: Header data structure to be filled. -+ **/ -+static int fill_toi_header(struct toi_header *sh) -+{ -+ int i, error; -+ -+ error = init_header((struct swsusp_info *) sh); -+ if (error) -+ return error; -+ -+ sh->pagedir = pagedir1; -+ sh->pageset_2_size = pagedir2.size; -+ sh->param0 = toi_result; -+ sh->param1 = toi_bkd.toi_action; -+ sh->param2 = toi_bkd.toi_debug_state; -+ sh->param3 = toi_bkd.toi_default_console_level; -+ sh->root_fs = current->fs->root.mnt->mnt_sb->s_dev; -+ for (i = 0; i < 4; i++) -+ sh->io_time[i/2][i%2] = toi_bkd.toi_io_time[i/2][i%2]; -+ sh->bkd = boot_kernel_data_buffer; -+ return 0; -+} -+ -+/** -+ * rw_init_modules - initialize modules -+ * @rw: Whether we are reading of writing an image. -+ * @which: Section of the image being processed. -+ * -+ * Iterate over modules, preparing the ones that will be used to read or write -+ * data. -+ **/ -+static int rw_init_modules(int rw, int which) -+{ -+ struct toi_module_ops *this_module; -+ /* Initialise page transformers */ -+ list_for_each_entry(this_module, &toi_filters, type_list) { -+ if (!this_module->enabled) -+ continue; -+ if (this_module->rw_init && this_module->rw_init(rw, which)) { -+ abort_hibernate(TOI_FAILED_MODULE_INIT, -+ "Failed to initialize the %s filter.", -+ this_module->name); -+ return 1; -+ } -+ } -+ -+ /* Initialise allocator */ -+ if (toiActiveAllocator->rw_init(rw, which)) { -+ abort_hibernate(TOI_FAILED_MODULE_INIT, -+ "Failed to initialise the allocator."); -+ return 1; -+ } -+ -+ /* Initialise other modules */ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (!this_module->enabled || -+ this_module->type == FILTER_MODULE || -+ this_module->type == WRITER_MODULE) -+ continue; -+ if (this_module->rw_init && this_module->rw_init(rw, which)) { -+ set_abort_result(TOI_FAILED_MODULE_INIT); -+ printk(KERN_INFO "Setting aborted flag due to module " -+ "init failure.\n"); -+ return 1; -+ } -+ } -+ -+ return 0; -+} -+ -+/** -+ * rw_cleanup_modules - cleanup modules -+ * @rw: Whether we are reading of writing an image. -+ * -+ * Cleanup components after reading or writing a set of pages. -+ * Only the allocator may fail. -+ **/ -+static int rw_cleanup_modules(int rw) -+{ -+ struct toi_module_ops *this_module; -+ int result = 0; -+ -+ /* Cleanup other modules */ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (!this_module->enabled || -+ this_module->type == FILTER_MODULE || -+ this_module->type == WRITER_MODULE) -+ continue; -+ if (this_module->rw_cleanup) -+ result |= this_module->rw_cleanup(rw); -+ } -+ -+ /* Flush data and cleanup */ -+ list_for_each_entry(this_module, &toi_filters, type_list) { -+ if (!this_module->enabled) -+ continue; -+ if (this_module->rw_cleanup) -+ result |= this_module->rw_cleanup(rw); -+ } -+ -+ result |= toiActiveAllocator->rw_cleanup(rw); -+ -+ return result; -+} -+ -+static struct page *copy_page_from_orig_page(struct page *orig_page) -+{ -+ int is_high = PageHighMem(orig_page), index, min, max; -+ struct page *high_page = NULL, -+ **my_last_high_page = &__get_cpu_var(last_high_page), -+ **my_last_sought = &__get_cpu_var(last_sought); -+ struct pbe *this, **my_last_low_page = &__get_cpu_var(last_low_page); -+ void *compare; -+ -+ if (is_high) { -+ if (*my_last_sought && *my_last_high_page && -+ *my_last_sought < orig_page) -+ high_page = *my_last_high_page; -+ else -+ high_page = (struct page *) restore_highmem_pblist; -+ this = (struct pbe *) kmap(high_page); -+ compare = orig_page; -+ } else { -+ if (*my_last_sought && *my_last_low_page && -+ *my_last_sought < orig_page) -+ this = *my_last_low_page; -+ else -+ this = restore_pblist; -+ compare = page_address(orig_page); -+ } -+ -+ *my_last_sought = orig_page; -+ -+ /* Locate page containing pbe */ -+ while (this[PBES_PER_PAGE - 1].next && -+ this[PBES_PER_PAGE - 1].orig_address < compare) { -+ if (is_high) { -+ struct page *next_high_page = (struct page *) -+ this[PBES_PER_PAGE - 1].next; -+ kunmap(high_page); -+ this = kmap(next_high_page); -+ high_page = next_high_page; -+ } else -+ this = this[PBES_PER_PAGE - 1].next; -+ } -+ -+ /* Do a binary search within the page */ -+ min = 0; -+ max = PBES_PER_PAGE; -+ index = PBES_PER_PAGE / 2; -+ while (max - min) { -+ if (!this[index].orig_address || -+ this[index].orig_address > compare) -+ max = index; -+ else if (this[index].orig_address == compare) { -+ if (is_high) { -+ struct page *page = this[index].address; -+ *my_last_high_page = high_page; -+ kunmap(high_page); -+ return page; -+ } -+ *my_last_low_page = this; -+ return virt_to_page(this[index].address); -+ } else -+ min = index; -+ index = ((max + min) / 2); -+ }; -+ -+ if (is_high) -+ kunmap(high_page); -+ -+ abort_hibernate(TOI_FAILED_IO, "Failed to get destination page for" -+ " orig page %p. This[min].orig_address=%p.\n", orig_page, -+ this[index].orig_address); -+ return NULL; -+} -+ -+/** -+ * write_next_page - write the next page in a pageset -+ * @data_pfn: The pfn where the next data to write is located. -+ * @my_io_index: The index of the page in the pageset. -+ * @write_pfn: The pfn number to write in the image (where the data belongs). -+ * @first_filter: Where to send the page (optimisation). -+ * -+ * Get the pfn of the next page to write, map the page if necessary and do the -+ * write. -+ **/ -+static int write_next_page(unsigned long *data_pfn, int *my_io_index, -+ unsigned long *write_pfn, struct toi_module_ops *first_filter) -+{ -+ struct page *page; -+ char **my_checksum_locn = &__get_cpu_var(checksum_locn); -+ int result = 0, was_present; -+ -+ *data_pfn = memory_bm_next_pfn(io_map); -+ -+ /* Another thread could have beaten us to it. */ -+ if (*data_pfn == BM_END_OF_MAP) { -+ if (atomic_read(&io_count)) { -+ printk(KERN_INFO "Ran out of pfns but io_count is " -+ "still %d.\n", atomic_read(&io_count)); -+ BUG(); -+ } -+ mutex_unlock(&io_mutex); -+ return -ENODATA; -+ } -+ -+ *my_io_index = io_finish_at - atomic_sub_return(1, &io_count); -+ -+ memory_bm_clear_bit(io_map, *data_pfn); -+ page = pfn_to_page(*data_pfn); -+ -+ was_present = kernel_page_present(page); -+ if (!was_present) -+ kernel_map_pages(page, 1, 1); -+ -+ if (io_pageset == 1) -+ *write_pfn = memory_bm_next_pfn(pageset1_map); -+ else { -+ *write_pfn = *data_pfn; -+ *my_checksum_locn = tuxonice_get_next_checksum(); -+ } -+ -+ mutex_unlock(&io_mutex); -+ -+ if (io_pageset == 2 && tuxonice_calc_checksum(page, *my_checksum_locn)) -+ return 1; -+ -+ result = first_filter->write_page(*write_pfn, page, PAGE_SIZE); -+ -+ if (!was_present) -+ kernel_map_pages(page, 1, 0); -+ -+ return result; -+} -+ -+/** -+ * read_next_page - read the next page in a pageset -+ * @my_io_index: The index of the page in the pageset. -+ * @write_pfn: The pfn in which the data belongs. -+ * -+ * Read a page of the image into our buffer. It can happen (here and in the -+ * write routine) that threads don't get run until after other CPUs have done -+ * all the work. This was the cause of the long standing issue with -+ * occasionally getting -ENODATA errors at the end of reading the image. We -+ * therefore need to check there's actually a page to read before trying to -+ * retrieve one. -+ **/ -+ -+static int read_next_page(int *my_io_index, unsigned long *write_pfn, -+ struct page *buffer, struct toi_module_ops *first_filter) -+{ -+ unsigned int buf_size = PAGE_SIZE; -+ unsigned long left = atomic_read(&io_count); -+ -+ if (left) -+ *my_io_index = io_finish_at - atomic_sub_return(1, &io_count); -+ -+ mutex_unlock(&io_mutex); -+ -+ /* -+ * Are we aborting? If so, don't submit any more I/O as -+ * resetting the resume_attempted flag (from ui.c) will -+ * clear the bdev flags, making this thread oops. -+ */ -+ if (unlikely(test_toi_state(TOI_STOP_RESUME))) { -+ atomic_dec(&toi_io_workers); -+ if (!atomic_read(&toi_io_workers)) { -+ /* -+ * So we can be sure we'll have memory for -+ * marking that we haven't resumed. -+ */ -+ rw_cleanup_modules(READ); -+ set_toi_state(TOI_IO_STOPPED); -+ } -+ while (1) -+ schedule(); -+ } -+ -+ if (!left) -+ return -ENODATA; -+ -+ /* -+ * See toi_bio_read_page in tuxonice_bio.c: -+ * read the next page in the image. -+ */ -+ return first_filter->read_page(write_pfn, buffer, &buf_size); -+} -+ -+static void use_read_page(unsigned long write_pfn, struct page *buffer) -+{ -+ struct page *final_page = pfn_to_page(write_pfn), -+ *copy_page = final_page; -+ char *virt, *buffer_virt; -+ -+ if (io_pageset == 1 && !PagePageset1Copy(final_page)) { -+ copy_page = copy_page_from_orig_page(final_page); -+ BUG_ON(!copy_page); -+ } -+ -+ if (memory_bm_test_bit(io_map, write_pfn)) { -+ int was_present; -+ -+ virt = kmap(copy_page); -+ buffer_virt = kmap(buffer); -+ was_present = kernel_page_present(copy_page); -+ if (!was_present) -+ kernel_map_pages(copy_page, 1, 1); -+ memcpy(virt, buffer_virt, PAGE_SIZE); -+ if (!was_present) -+ kernel_map_pages(copy_page, 1, 0); -+ kunmap(copy_page); -+ kunmap(buffer); -+ memory_bm_clear_bit(io_map, write_pfn); -+ } else { -+ mutex_lock(&io_mutex); -+ atomic_inc(&io_count); -+ mutex_unlock(&io_mutex); -+ } -+} -+ -+static unsigned long status_update(int writing, unsigned long done, -+ unsigned long ticks) -+{ -+ int cs_index = writing ? 0 : 1; -+ unsigned long ticks_so_far = toi_bkd.toi_io_time[cs_index][1] + ticks; -+ unsigned long msec = jiffies_to_msecs(abs(ticks_so_far)); -+ unsigned long pgs_per_s, estimate = 0, pages_left; -+ -+ if (msec) { -+ pages_left = io_barmax - done; -+ pgs_per_s = 1000 * done / msec; -+ if (pgs_per_s) -+ estimate = pages_left / pgs_per_s; -+ } -+ -+ if (estimate && ticks > HZ / 2) -+ return toi_update_status(done, io_barmax, -+ " %d/%d MB (%lu sec left)", -+ MB(done+1), MB(io_barmax), estimate); -+ -+ return toi_update_status(done, io_barmax, " %d/%d MB", -+ MB(done+1), MB(io_barmax)); -+} -+ -+/** -+ * worker_rw_loop - main loop to read/write pages -+ * -+ * The main I/O loop for reading or writing pages. The io_map bitmap is used to -+ * track the pages to read/write. -+ * If we are reading, the pages are loaded to their final (mapped) pfn. -+ **/ -+static int worker_rw_loop(void *data) -+{ -+ unsigned long data_pfn, write_pfn, next_jiffies = jiffies + HZ / 4, -+ jif_index = 1, start_time = jiffies; -+ int result = 0, my_io_index = 0, last_worker; -+ struct toi_module_ops *first_filter = toi_get_next_filter(NULL); -+ struct page *buffer = toi_alloc_page(28, TOI_ATOMIC_GFP); -+ -+ current->flags |= PF_NOFREEZE; -+ -+ mutex_lock(&io_mutex); -+ -+ do { -+ if (data && jiffies > next_jiffies) { -+ next_jiffies += HZ / 4; -+ if (toiActiveAllocator->update_throughput_throttle) -+ toiActiveAllocator->update_throughput_throttle( -+ jif_index); -+ jif_index++; -+ } -+ -+ /* -+ * What page to use? If reading, don't know yet which page's -+ * data will be read, so always use the buffer. If writing, -+ * use the copy (Pageset1) or original page (Pageset2), but -+ * always write the pfn of the original page. -+ */ -+ if (io_write) -+ result = write_next_page(&data_pfn, &my_io_index, -+ &write_pfn, first_filter); -+ else /* Reading */ -+ result = read_next_page(&my_io_index, &write_pfn, -+ buffer, first_filter); -+ -+ if (result) { -+ mutex_lock(&io_mutex); -+ /* Nothing to do? */ -+ if (result == -ENODATA) -+ break; -+ -+ io_result = result; -+ -+ if (io_write) { -+ printk(KERN_INFO "Write chunk returned %d.\n", -+ result); -+ abort_hibernate(TOI_FAILED_IO, -+ "Failed to write a chunk of the " -+ "image."); -+ break; -+ } -+ -+ if (io_pageset == 1) { -+ printk(KERN_ERR "\nBreaking out of I/O loop " -+ "because of result code %d.\n", result); -+ break; -+ } -+ panic("Read chunk returned (%d)", result); -+ } -+ -+ /* -+ * Discard reads of resaved pages while reading ps2 -+ * and unwanted pages while rereading ps2 when aborting. -+ */ -+ if (!io_write && !PageResave(pfn_to_page(write_pfn))) -+ use_read_page(write_pfn, buffer); -+ -+ if (my_io_index + io_base == io_nextupdate) -+ io_nextupdate = status_update(io_write, my_io_index + -+ io_base, jiffies - start_time); -+ -+ if (my_io_index == io_pc) { -+ printk(KERN_CONT "...%d%%", 20 * io_pc_step); -+ io_pc_step++; -+ io_pc = io_finish_at * io_pc_step / 5; -+ } -+ -+ toi_cond_pause(0, NULL); -+ -+ /* -+ * Subtle: If there's less I/O still to be done than threads -+ * running, quit. This stops us doing I/O beyond the end of -+ * the image when reading. -+ * -+ * Possible race condition. Two threads could do the test at -+ * the same time; one should exit and one should continue. -+ * Therefore we take the mutex before comparing and exiting. -+ */ -+ -+ mutex_lock(&io_mutex); -+ -+ } while (atomic_read(&io_count) >= atomic_read(&toi_io_workers) && -+ !(io_write && test_result_state(TOI_ABORTED))); -+ -+ last_worker = atomic_dec_and_test(&toi_io_workers); -+ mutex_unlock(&io_mutex); -+ -+ if (last_worker) { -+ toi_bio_queue_flusher_should_finish = 1; -+ wake_up(&toi_io_queue_flusher); -+ result = toiActiveAllocator->finish_all_io(); -+ printk(KERN_CONT "\n"); -+ } -+ -+ toi__free_page(28, buffer); -+ -+ return result; -+} -+ -+static int start_other_threads(void) -+{ -+ int cpu, num_started = 0; -+ struct task_struct *p; -+ int to_start = (toi_max_workers ? toi_max_workers : num_online_cpus()) - 1; -+ -+ atomic_set(&toi_io_workers, to_start); -+ -+ for_each_online_cpu(cpu) { -+ if (num_started == to_start) -+ break; -+ -+ if (cpu == smp_processor_id()) -+ continue; -+ -+ p = kthread_create(worker_rw_loop, num_started ? NULL : MONITOR, -+ "ktoi_io/%d", cpu); -+ if (IS_ERR(p)) { -+ printk(KERN_ERR "ktoi_io for %i failed\n", cpu); -+ atomic_dec(&toi_io_workers); -+ continue; -+ } -+ kthread_bind(p, cpu); -+ p->flags |= PF_MEMALLOC; -+ wake_up_process(p); -+ num_started++; -+ } -+ -+ return num_started; -+} -+ -+/** -+ * do_rw_loop - main highlevel function for reading or writing pages -+ * -+ * Create the io_map bitmap and call worker_rw_loop to perform I/O operations. -+ **/ -+static int do_rw_loop(int write, int finish_at, struct memory_bitmap *pageflags, -+ int base, int barmax, int pageset) -+{ -+ int index = 0, cpu, num_other_threads = 0, result = 0; -+ unsigned long pfn; -+ -+ if (!finish_at) -+ return 0; -+ -+ io_write = write; -+ io_finish_at = finish_at; -+ io_base = base; -+ io_barmax = barmax; -+ io_pageset = pageset; -+ io_index = 0; -+ io_pc = io_finish_at / 5; -+ io_pc_step = 1; -+ io_result = 0; -+ io_nextupdate = base + 1; -+ toi_bio_queue_flusher_should_finish = 0; -+ -+ for_each_online_cpu(cpu) { -+ per_cpu(last_sought, cpu) = NULL; -+ per_cpu(last_low_page, cpu) = NULL; -+ per_cpu(last_high_page, cpu) = NULL; -+ } -+ -+ /* Ensure all bits clear */ -+ memory_bm_clear(io_map); -+ -+ /* Set the bits for the pages to write */ -+ memory_bm_position_reset(pageflags); -+ -+ pfn = memory_bm_next_pfn(pageflags); -+ -+ while (pfn != BM_END_OF_MAP && index < finish_at) { -+ memory_bm_set_bit(io_map, pfn); -+ pfn = memory_bm_next_pfn(pageflags); -+ index++; -+ } -+ -+ BUG_ON(index < finish_at); -+ -+ atomic_set(&io_count, finish_at); -+ -+ memory_bm_position_reset(pageset1_map); -+ -+ clear_toi_state(TOI_IO_STOPPED); -+ memory_bm_position_reset(io_map); -+ -+ if (!test_action_state(TOI_NO_MULTITHREADED_IO) && -+ (write || !toi_force_no_multithreaded)) -+ num_other_threads = start_other_threads(); -+ -+ if (!num_other_threads || !toiActiveAllocator->io_flusher || -+ test_action_state(TOI_NO_FLUSHER_THREAD)) { -+ atomic_inc(&toi_io_workers); -+ worker_rw_loop(num_other_threads ? NULL : MONITOR); -+ } else -+ result = toiActiveAllocator->io_flusher(write); -+ -+ while (atomic_read(&toi_io_workers)) -+ schedule(); -+ -+ if (unlikely(test_toi_state(TOI_STOP_RESUME))) { -+ if (!atomic_read(&toi_io_workers)) { -+ rw_cleanup_modules(READ); -+ set_toi_state(TOI_IO_STOPPED); -+ } -+ while (1) -+ schedule(); -+ } -+ set_toi_state(TOI_IO_STOPPED); -+ -+ if (!io_result && !result && !test_result_state(TOI_ABORTED)) { -+ unsigned long next; -+ -+ toi_update_status(io_base + io_finish_at, io_barmax, -+ " %d/%d MB ", -+ MB(io_base + io_finish_at), MB(io_barmax)); -+ -+ memory_bm_position_reset(io_map); -+ next = memory_bm_next_pfn(io_map); -+ if (next != BM_END_OF_MAP) { -+ printk(KERN_INFO "Finished I/O loop but still work to " -+ "do?\nFinish at = %d. io_count = %d.\n", -+ finish_at, atomic_read(&io_count)); -+ printk(KERN_INFO "I/O bitmap still records work to do." -+ "%ld.\n", next); -+ do { -+ cpu_relax(); -+ } while (0); -+ } -+ } -+ -+ return io_result ? io_result : result; -+} -+ -+/** -+ * write_pageset - write a pageset to disk. -+ * @pagedir: Which pagedir to write. -+ * -+ * Returns: -+ * Zero on success or -1 on failure. -+ **/ -+int write_pageset(struct pagedir *pagedir) -+{ -+ int finish_at, base = 0; -+ int barmax = pagedir1.size + pagedir2.size; -+ long error = 0; -+ struct memory_bitmap *pageflags; -+ unsigned long start_time, end_time; -+ -+ /* -+ * Even if there is nothing to read or write, the allocator -+ * may need the init/cleanup for it's housekeeping. (eg: -+ * Pageset1 may start where pageset2 ends when writing). -+ */ -+ finish_at = pagedir->size; -+ -+ if (pagedir->id == 1) { -+ toi_prepare_status(DONT_CLEAR_BAR, -+ "Writing kernel & process data..."); -+ base = pagedir2.size; -+ if (test_action_state(TOI_TEST_FILTER_SPEED) || -+ test_action_state(TOI_TEST_BIO)) -+ pageflags = pageset1_map; -+ else -+ pageflags = pageset1_copy_map; -+ } else { -+ toi_prepare_status(DONT_CLEAR_BAR, "Writing caches..."); -+ pageflags = pageset2_map; -+ } -+ -+ start_time = jiffies; -+ -+ if (rw_init_modules(1, pagedir->id)) { -+ abort_hibernate(TOI_FAILED_MODULE_INIT, -+ "Failed to initialise modules for writing."); -+ error = 1; -+ } -+ -+ if (!error) -+ error = do_rw_loop(1, finish_at, pageflags, base, barmax, -+ pagedir->id); -+ -+ if (rw_cleanup_modules(WRITE) && !error) { -+ abort_hibernate(TOI_FAILED_MODULE_CLEANUP, -+ "Failed to cleanup after writing."); -+ error = 1; -+ } -+ -+ end_time = jiffies; -+ -+ if ((end_time - start_time) && (!test_result_state(TOI_ABORTED))) { -+ toi_bkd.toi_io_time[0][0] += finish_at, -+ toi_bkd.toi_io_time[0][1] += (end_time - start_time); -+ } -+ -+ return error; -+} -+ -+/** -+ * read_pageset - highlevel function to read a pageset from disk -+ * @pagedir: pageset to read -+ * @overwrittenpagesonly: Whether to read the whole pageset or -+ * only part of it. -+ * -+ * Returns: -+ * Zero on success or -1 on failure. -+ **/ -+static int read_pageset(struct pagedir *pagedir, int overwrittenpagesonly) -+{ -+ int result = 0, base = 0; -+ int finish_at = pagedir->size; -+ int barmax = pagedir1.size + pagedir2.size; -+ struct memory_bitmap *pageflags; -+ unsigned long start_time, end_time; -+ -+ if (pagedir->id == 1) { -+ toi_prepare_status(DONT_CLEAR_BAR, -+ "Reading kernel & process data..."); -+ pageflags = pageset1_map; -+ } else { -+ toi_prepare_status(DONT_CLEAR_BAR, "Reading caches..."); -+ if (overwrittenpagesonly) { -+ barmax = min(pagedir1.size, pagedir2.size); -+ finish_at = min(pagedir1.size, pagedir2.size); -+ } else -+ base = pagedir1.size; -+ pageflags = pageset2_map; -+ } -+ -+ start_time = jiffies; -+ -+ if (rw_init_modules(0, pagedir->id)) { -+ toiActiveAllocator->remove_image(); -+ result = 1; -+ } else -+ result = do_rw_loop(0, finish_at, pageflags, base, barmax, -+ pagedir->id); -+ -+ if (rw_cleanup_modules(READ) && !result) { -+ abort_hibernate(TOI_FAILED_MODULE_CLEANUP, -+ "Failed to cleanup after reading."); -+ result = 1; -+ } -+ -+ /* Statistics */ -+ end_time = jiffies; -+ -+ if ((end_time - start_time) && (!test_result_state(TOI_ABORTED))) { -+ toi_bkd.toi_io_time[1][0] += finish_at, -+ toi_bkd.toi_io_time[1][1] += (end_time - start_time); -+ } -+ -+ return result; -+} -+ -+/** -+ * write_module_configs - store the modules configuration -+ * -+ * The configuration for each module is stored in the image header. -+ * Returns: Int -+ * Zero on success, Error value otherwise. -+ **/ -+static int write_module_configs(void) -+{ -+ struct toi_module_ops *this_module; -+ char *buffer = (char *) toi_get_zeroed_page(22, TOI_ATOMIC_GFP); -+ int len, index = 1; -+ struct toi_module_header toi_module_header; -+ -+ if (!buffer) { -+ printk(KERN_INFO "Failed to allocate a buffer for saving " -+ "module configuration info.\n"); -+ return -ENOMEM; -+ } -+ -+ /* -+ * We have to know which data goes with which module, so we at -+ * least write a length of zero for a module. Note that we are -+ * also assuming every module's config data takes <= PAGE_SIZE. -+ */ -+ -+ /* For each module (in registration order) */ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (!this_module->enabled || !this_module->storage_needed || -+ (this_module->type == WRITER_MODULE && -+ toiActiveAllocator != this_module)) -+ continue; -+ -+ /* Get the data from the module */ -+ len = 0; -+ if (this_module->save_config_info) -+ len = this_module->save_config_info(buffer); -+ -+ /* Save the details of the module */ -+ toi_module_header.enabled = this_module->enabled; -+ toi_module_header.type = this_module->type; -+ toi_module_header.index = index++; -+ strncpy(toi_module_header.name, this_module->name, -+ sizeof(toi_module_header.name)); -+ toiActiveAllocator->rw_header_chunk(WRITE, -+ this_module, -+ (char *) &toi_module_header, -+ sizeof(toi_module_header)); -+ -+ /* Save the size of the data and any data returned */ -+ toiActiveAllocator->rw_header_chunk(WRITE, -+ this_module, -+ (char *) &len, sizeof(int)); -+ if (len) -+ toiActiveAllocator->rw_header_chunk( -+ WRITE, this_module, buffer, len); -+ } -+ -+ /* Write a blank header to terminate the list */ -+ toi_module_header.name[0] = '\0'; -+ toiActiveAllocator->rw_header_chunk(WRITE, NULL, -+ (char *) &toi_module_header, sizeof(toi_module_header)); -+ -+ toi_free_page(22, (unsigned long) buffer); -+ return 0; -+} -+ -+/** -+ * read_one_module_config - read and configure one module -+ * -+ * Read the configuration for one module, and configure the module -+ * to match if it is loaded. -+ * -+ * Returns: Int -+ * Zero on success, Error value otherwise. -+ **/ -+static int read_one_module_config(struct toi_module_header *header) -+{ -+ struct toi_module_ops *this_module; -+ int result, len; -+ char *buffer; -+ -+ /* Find the module */ -+ this_module = toi_find_module_given_name(header->name); -+ -+ if (!this_module) { -+ if (header->enabled) { -+ toi_early_boot_message(1, TOI_CONTINUE_REQ, -+ "It looks like we need module %s for reading " -+ "the image but it hasn't been registered.\n", -+ header->name); -+ if (!(test_toi_state(TOI_CONTINUE_REQ))) -+ return -EINVAL; -+ } else -+ printk(KERN_INFO "Module %s configuration data found, " -+ "but the module hasn't registered. Looks like " -+ "it was disabled, so we're ignoring its data.", -+ header->name); -+ } -+ -+ /* Get the length of the data (if any) */ -+ result = toiActiveAllocator->rw_header_chunk(READ, NULL, (char *) &len, -+ sizeof(int)); -+ if (result) { -+ printk(KERN_ERR "Failed to read the length of the module %s's" -+ " configuration data.\n", -+ header->name); -+ return -EINVAL; -+ } -+ -+ /* Read any data and pass to the module (if we found one) */ -+ if (!len) -+ return 0; -+ -+ buffer = (char *) toi_get_zeroed_page(23, TOI_ATOMIC_GFP); -+ -+ if (!buffer) { -+ printk(KERN_ERR "Failed to allocate a buffer for reloading " -+ "module configuration info.\n"); -+ return -ENOMEM; -+ } -+ -+ toiActiveAllocator->rw_header_chunk(READ, NULL, buffer, len); -+ -+ if (!this_module) -+ goto out; -+ -+ if (!this_module->save_config_info) -+ printk(KERN_ERR "Huh? Module %s appears to have a " -+ "save_config_info, but not a load_config_info " -+ "function!\n", this_module->name); -+ else -+ this_module->load_config_info(buffer, len); -+ -+ /* -+ * Now move this module to the tail of its lists. This will put it in -+ * order. Any new modules will end up at the top of the lists. They -+ * should have been set to disabled when loaded (people will -+ * normally not edit an initrd to load a new module and then hibernate -+ * without using it!). -+ */ -+ -+ toi_move_module_tail(this_module); -+ -+ this_module->enabled = header->enabled; -+ -+out: -+ toi_free_page(23, (unsigned long) buffer); -+ return 0; -+} -+ -+/** -+ * read_module_configs - reload module configurations from the image header. -+ * -+ * Returns: Int -+ * Zero on success or an error code. -+ **/ -+static int read_module_configs(void) -+{ -+ int result = 0; -+ struct toi_module_header toi_module_header; -+ struct toi_module_ops *this_module; -+ -+ /* All modules are initially disabled. That way, if we have a module -+ * loaded now that wasn't loaded when we hibernated, it won't be used -+ * in trying to read the data. -+ */ -+ list_for_each_entry(this_module, &toi_modules, module_list) -+ this_module->enabled = 0; -+ -+ /* Get the first module header */ -+ result = toiActiveAllocator->rw_header_chunk(READ, NULL, -+ (char *) &toi_module_header, -+ sizeof(toi_module_header)); -+ if (result) { -+ printk(KERN_ERR "Failed to read the next module header.\n"); -+ return -EINVAL; -+ } -+ -+ /* For each module (in registration order) */ -+ while (toi_module_header.name[0]) { -+ result = read_one_module_config(&toi_module_header); -+ -+ if (result) -+ return -EINVAL; -+ -+ /* Get the next module header */ -+ result = toiActiveAllocator->rw_header_chunk(READ, NULL, -+ (char *) &toi_module_header, -+ sizeof(toi_module_header)); -+ -+ if (result) { -+ printk(KERN_ERR "Failed to read the next module " -+ "header.\n"); -+ return -EINVAL; -+ } -+ } -+ -+ return 0; -+} -+ -+static inline int save_fs_info(struct fs_info *fs, struct block_device *bdev) -+{ -+ return (!fs || IS_ERR(fs) || !fs->last_mount_size) ? 0 : 1; -+} -+ -+int fs_info_space_needed(void) -+{ -+ const struct super_block *sb; -+ int result = sizeof(int); -+ -+ list_for_each_entry(sb, &super_blocks, s_list) { -+ struct fs_info *fs; -+ -+ if (!sb->s_bdev) -+ continue; -+ -+ fs = fs_info_from_block_dev(sb->s_bdev); -+ if (save_fs_info(fs, sb->s_bdev)) -+ result += 16 + sizeof(int) + fs->last_mount_size; -+ free_fs_info(fs); -+ } -+ return result; -+} -+ -+static int fs_info_num_to_save(void) -+{ -+ const struct super_block *sb; -+ int to_save = 0; -+ -+ list_for_each_entry(sb, &super_blocks, s_list) { -+ struct fs_info *fs; -+ -+ if (!sb->s_bdev) -+ continue; -+ -+ fs = fs_info_from_block_dev(sb->s_bdev); -+ if (save_fs_info(fs, sb->s_bdev)) -+ to_save++; -+ free_fs_info(fs); -+ } -+ -+ return to_save; -+} -+ -+static int fs_info_save(void) -+{ -+ const struct super_block *sb; -+ int to_save = fs_info_num_to_save(); -+ -+ if (toiActiveAllocator->rw_header_chunk(WRITE, NULL, (char *) &to_save, -+ sizeof(int))) { -+ abort_hibernate(TOI_FAILED_IO, "Failed to write num fs_info" -+ " to save."); -+ return -EIO; -+ } -+ -+ list_for_each_entry(sb, &super_blocks, s_list) { -+ struct fs_info *fs; -+ -+ if (!sb->s_bdev) -+ continue; -+ -+ fs = fs_info_from_block_dev(sb->s_bdev); -+ if (save_fs_info(fs, sb->s_bdev)) { -+ if (toiActiveAllocator->rw_header_chunk(WRITE, NULL, -+ &fs->uuid[0], 16)) { -+ abort_hibernate(TOI_FAILED_IO, "Failed to " -+ "write uuid."); -+ return -EIO; -+ } -+ if (toiActiveAllocator->rw_header_chunk(WRITE, NULL, -+ (char *) &fs->last_mount_size, sizeof(int))) { -+ abort_hibernate(TOI_FAILED_IO, "Failed to " -+ "write last mount length."); -+ return -EIO; -+ } -+ if (toiActiveAllocator->rw_header_chunk(WRITE, NULL, -+ fs->last_mount, fs->last_mount_size)) { -+ abort_hibernate(TOI_FAILED_IO, "Failed to " -+ "write uuid."); -+ return -EIO; -+ } -+ } -+ free_fs_info(fs); -+ } -+ return 0; -+} -+ -+static int fs_info_load_and_check_one(void) -+{ -+ char uuid[16], *last_mount; -+ int result = 0, ln; -+ dev_t dev_t; -+ struct block_device *dev; -+ struct fs_info *fs_info; -+ -+ if (toiActiveAllocator->rw_header_chunk(READ, NULL, uuid, 16)) { -+ abort_hibernate(TOI_FAILED_IO, "Failed to read uuid."); -+ return -EIO; -+ } -+ -+ if (toiActiveAllocator->rw_header_chunk(READ, NULL, (char *) &ln, -+ sizeof(int))) { -+ abort_hibernate(TOI_FAILED_IO, -+ "Failed to read last mount size."); -+ return -EIO; -+ } -+ -+ last_mount = kzalloc(ln, GFP_KERNEL); -+ -+ if (!last_mount) -+ return -ENOMEM; -+ -+ if (toiActiveAllocator->rw_header_chunk(READ, NULL, last_mount, ln)) { -+ abort_hibernate(TOI_FAILED_IO, -+ "Failed to read last mount timestamp."); -+ result = -EIO; -+ goto out_lmt; -+ } -+ -+ dev_t = blk_lookup_uuid(uuid); -+ if (!dev_t) -+ goto out_lmt; -+ -+ dev = toi_open_by_devnum(dev_t); -+ -+ fs_info = fs_info_from_block_dev(dev); -+ if (fs_info && !IS_ERR(fs_info)) { -+ if (ln != fs_info->last_mount_size) { -+ printk(KERN_EMERG "Found matching uuid but last mount " -+ "time lengths differ?! " -+ "(%d vs %d).\n", ln, -+ fs_info->last_mount_size); -+ result = -EINVAL; -+ } else { -+ char buf[BDEVNAME_SIZE]; -+ result = !!memcmp(fs_info->last_mount, last_mount, ln); -+ if (result) -+ printk(KERN_EMERG "Last mount time for %s has " -+ "changed!\n", bdevname(dev, buf)); -+ } -+ } -+ toi_close_bdev(dev); -+ free_fs_info(fs_info); -+out_lmt: -+ kfree(last_mount); -+ return result; -+} -+ -+static int fs_info_load_and_check(void) -+{ -+ int to_do, result; -+ -+ if (toiActiveAllocator->rw_header_chunk(READ, NULL, (char *) &to_do, -+ sizeof(int))) { -+ abort_hibernate(TOI_FAILED_IO, "Failed to read num fs_info " -+ "to load."); -+ return -EIO; -+ } -+ -+ while(to_do--) -+ result |= fs_info_load_and_check_one(); -+ -+ return result; -+} -+ -+/** -+ * write_image_header - write the image header after write the image proper -+ * -+ * Returns: Int -+ * Zero on success, error value otherwise. -+ **/ -+int write_image_header(void) -+{ -+ int ret; -+ int total = pagedir1.size + pagedir2.size+2; -+ char *header_buffer = NULL; -+ -+ /* Now prepare to write the header */ -+ ret = toiActiveAllocator->write_header_init(); -+ if (ret) { -+ abort_hibernate(TOI_FAILED_MODULE_INIT, -+ "Active allocator's write_header_init" -+ " function failed."); -+ goto write_image_header_abort; -+ } -+ -+ /* Get a buffer */ -+ header_buffer = (char *) toi_get_zeroed_page(24, TOI_ATOMIC_GFP); -+ if (!header_buffer) { -+ abort_hibernate(TOI_OUT_OF_MEMORY, -+ "Out of memory when trying to get page for header!"); -+ goto write_image_header_abort; -+ } -+ -+ /* Write hibernate header */ -+ if (fill_toi_header((struct toi_header *) header_buffer)) { -+ abort_hibernate(TOI_OUT_OF_MEMORY, -+ "Failure to fill header information!"); -+ goto write_image_header_abort; -+ } -+ -+ if (toiActiveAllocator->rw_header_chunk(WRITE, NULL, -+ header_buffer, sizeof(struct toi_header))) { -+ abort_hibernate(TOI_OUT_OF_MEMORY, -+ "Failure to write header info."); -+ goto write_image_header_abort; -+ } -+ -+ if (toiActiveAllocator->rw_header_chunk(WRITE, NULL, -+ (char *) &toi_max_workers, sizeof(toi_max_workers))) { -+ abort_hibernate(TOI_OUT_OF_MEMORY, -+ "Failure to number of workers to use."); -+ goto write_image_header_abort; -+ } -+ -+ /* Write filesystem info */ -+ if (fs_info_save()) -+ goto write_image_header_abort; -+ -+ /* Write module configurations */ -+ ret = write_module_configs(); -+ if (ret) { -+ abort_hibernate(TOI_FAILED_IO, -+ "Failed to write module configs."); -+ goto write_image_header_abort; -+ } -+ -+ if (memory_bm_write(pageset1_map, -+ toiActiveAllocator->rw_header_chunk)) { -+ abort_hibernate(TOI_FAILED_IO, -+ "Failed to write bitmaps."); -+ goto write_image_header_abort; -+ } -+ -+ /* Flush data and let allocator cleanup */ -+ if (toiActiveAllocator->write_header_cleanup()) { -+ abort_hibernate(TOI_FAILED_IO, -+ "Failed to cleanup writing header."); -+ goto write_image_header_abort_no_cleanup; -+ } -+ -+ if (test_result_state(TOI_ABORTED)) -+ goto write_image_header_abort_no_cleanup; -+ -+ toi_update_status(total, total, NULL); -+ -+out: -+ if (header_buffer) -+ toi_free_page(24, (unsigned long) header_buffer); -+ return ret; -+ -+write_image_header_abort: -+ toiActiveAllocator->write_header_cleanup(); -+write_image_header_abort_no_cleanup: -+ ret = -1; -+ goto out; -+} -+ -+/** -+ * sanity_check - check the header -+ * @sh: the header which was saved at hibernate time. -+ * -+ * Perform a few checks, seeking to ensure that the kernel being -+ * booted matches the one hibernated. They need to match so we can -+ * be _sure_ things will work. It is not absolutely impossible for -+ * resuming from a different kernel to work, just not assured. -+ **/ -+static char *sanity_check(struct toi_header *sh) -+{ -+ char *reason = check_image_kernel((struct swsusp_info *) sh); -+ -+ if (reason) -+ return reason; -+ -+ if (!test_action_state(TOI_IGNORE_ROOTFS)) { -+ const struct super_block *sb; -+ list_for_each_entry(sb, &super_blocks, s_list) { -+ if ((!(sb->s_flags & MS_RDONLY)) && -+ (sb->s_type->fs_flags & FS_REQUIRES_DEV)) -+ return "Device backed fs has been mounted " -+ "rw prior to resume or initrd/ramfs " -+ "is mounted rw."; -+ } -+ } -+ -+ return NULL; -+} -+ -+static DECLARE_WAIT_QUEUE_HEAD(freeze_wait); -+ -+#define FREEZE_IN_PROGRESS (~0) -+ -+static int freeze_result; -+ -+static void do_freeze(struct work_struct *dummy) -+{ -+ freeze_result = freeze_processes(); -+ wake_up(&freeze_wait); -+ trap_non_toi_io = 1; -+} -+ -+static DECLARE_WORK(freeze_work, do_freeze); -+ -+/** -+ * __read_pageset1 - test for the existence of an image and attempt to load it -+ * -+ * Returns: Int -+ * Zero if image found and pageset1 successfully loaded. -+ * Error if no image found or loaded. -+ **/ -+static int __read_pageset1(void) -+{ -+ int i, result = 0; -+ char *header_buffer = (char *) toi_get_zeroed_page(25, TOI_ATOMIC_GFP), -+ *sanity_error = NULL; -+ struct toi_header *toi_header; -+ -+ if (!header_buffer) { -+ printk(KERN_INFO "Unable to allocate a page for reading the " -+ "signature.\n"); -+ return -ENOMEM; -+ } -+ -+ /* Check for an image */ -+ result = toiActiveAllocator->image_exists(1); -+ if (result == 3) { -+ result = -ENODATA; -+ toi_early_boot_message(1, 0, "The signature from an older " -+ "version of TuxOnIce has been detected."); -+ goto out_remove_image; -+ } -+ -+ if (result != 1) { -+ result = -ENODATA; -+ noresume_reset_modules(); -+ printk(KERN_INFO "TuxOnIce: No image found.\n"); -+ goto out; -+ } -+ -+ /* -+ * Prepare the active allocator for reading the image header. The -+ * activate allocator might read its own configuration. -+ * -+ * NB: This call may never return because there might be a signature -+ * for a different image such that we warn the user and they choose -+ * to reboot. (If the device ids look erroneous (2.4 vs 2.6) or the -+ * location of the image might be unavailable if it was stored on a -+ * network connection). -+ */ -+ -+ result = toiActiveAllocator->read_header_init(); -+ if (result) { -+ printk(KERN_INFO "TuxOnIce: Failed to initialise, reading the " -+ "image header.\n"); -+ goto out_remove_image; -+ } -+ -+ /* Check for noresume command line option */ -+ if (test_toi_state(TOI_NORESUME_SPECIFIED)) { -+ printk(KERN_INFO "TuxOnIce: Noresume on command line. Removed " -+ "image.\n"); -+ goto out_remove_image; -+ } -+ -+ /* Check whether we've resumed before */ -+ if (test_toi_state(TOI_RESUMED_BEFORE)) { -+ toi_early_boot_message(1, 0, NULL); -+ if (!(test_toi_state(TOI_CONTINUE_REQ))) { -+ printk(KERN_INFO "TuxOnIce: Tried to resume before: " -+ "Invalidated image.\n"); -+ goto out_remove_image; -+ } -+ } -+ -+ clear_toi_state(TOI_CONTINUE_REQ); -+ -+ toi_image_header_version = toiActiveAllocator->get_header_version(); -+ -+ if (unlikely(toi_image_header_version > TOI_HEADER_VERSION)) { -+ toi_early_boot_message(1, 0, image_version_error); -+ if (!(test_toi_state(TOI_CONTINUE_REQ))) { -+ printk(KERN_INFO "TuxOnIce: Header version too new: " -+ "Invalidated image.\n"); -+ goto out_remove_image; -+ } -+ } -+ -+ /* Read hibernate header */ -+ result = toiActiveAllocator->rw_header_chunk(READ, NULL, -+ header_buffer, sizeof(struct toi_header)); -+ if (result < 0) { -+ printk(KERN_ERR "TuxOnIce: Failed to read the image " -+ "signature.\n"); -+ goto out_remove_image; -+ } -+ -+ toi_header = (struct toi_header *) header_buffer; -+ -+ /* -+ * NB: This call may also result in a reboot rather than returning. -+ */ -+ -+ sanity_error = sanity_check(toi_header); -+ if (sanity_error) { -+ toi_early_boot_message(1, TOI_CONTINUE_REQ, -+ sanity_error); -+ printk(KERN_INFO "TuxOnIce: Sanity check failed.\n"); -+ goto out_remove_image; -+ } -+ -+ /* -+ * We have an image and it looks like it will load okay. -+ * -+ * Get metadata from header. Don't override commandline parameters. -+ * -+ * We don't need to save the image size limit because it's not used -+ * during resume and will be restored with the image anyway. -+ */ -+ -+ memcpy((char *) &pagedir1, -+ (char *) &toi_header->pagedir, sizeof(pagedir1)); -+ toi_result = toi_header->param0; -+ if (!toi_bkd.toi_debug_state) { -+ toi_bkd.toi_action = toi_header->param1; -+ toi_bkd.toi_debug_state = toi_header->param2; -+ toi_bkd.toi_default_console_level = toi_header->param3; -+ } -+ clear_toi_state(TOI_IGNORE_LOGLEVEL); -+ pagedir2.size = toi_header->pageset_2_size; -+ for (i = 0; i < 4; i++) -+ toi_bkd.toi_io_time[i/2][i%2] = -+ toi_header->io_time[i/2][i%2]; -+ -+ set_toi_state(TOI_BOOT_KERNEL); -+ boot_kernel_data_buffer = toi_header->bkd; -+ -+ read_if_version(1, toi_max_workers, "TuxOnIce max workers"); -+ -+ /* Read filesystem info */ -+ if (fs_info_load_and_check()) { -+ printk(KERN_EMERG "TuxOnIce: File system mount time checks " -+ "failed. Refusing to corrupt your filesystems!\n"); -+ goto out_remove_image; -+ } -+ -+ /* Read module configurations */ -+ result = read_module_configs(); -+ if (result) { -+ pagedir1.size = 0; -+ pagedir2.size = 0; -+ printk(KERN_INFO "TuxOnIce: Failed to read TuxOnIce module " -+ "configurations.\n"); -+ clear_action_state(TOI_KEEP_IMAGE); -+ goto out_remove_image; -+ } -+ -+ toi_prepare_console(); -+ -+ set_toi_state(TOI_NOW_RESUMING); -+ -+ if (!test_action_state(TOI_LATE_CPU_HOTPLUG)) { -+ toi_prepare_status(DONT_CLEAR_BAR, "Disable nonboot cpus."); -+ if (disable_nonboot_cpus()) { -+ set_abort_result(TOI_CPU_HOTPLUG_FAILED); -+ goto out_reset_console; -+ } -+ } -+ -+ if (usermodehelper_disable()) -+ goto out_enable_nonboot_cpus; -+ -+ current->flags |= PF_NOFREEZE; -+ freeze_result = FREEZE_IN_PROGRESS; -+ -+ schedule_work_on(first_cpu(cpu_online_map), &freeze_work); -+ -+ toi_cond_pause(1, "About to read original pageset1 locations."); -+ -+ /* -+ * See _toi_rw_header_chunk in tuxonice_bio.c: -+ * Initialize pageset1_map by reading the map from the image. -+ */ -+ if (memory_bm_read(pageset1_map, toiActiveAllocator->rw_header_chunk)) -+ goto out_thaw; -+ -+ /* -+ * See toi_rw_cleanup in tuxonice_bio.c: -+ * Clean up after reading the header. -+ */ -+ result = toiActiveAllocator->read_header_cleanup(); -+ if (result) { -+ printk(KERN_ERR "TuxOnIce: Failed to cleanup after reading the " -+ "image header.\n"); -+ goto out_thaw; -+ } -+ -+ toi_cond_pause(1, "About to read pagedir."); -+ -+ /* -+ * Get the addresses of pages into which we will load the kernel to -+ * be copied back and check if they conflict with the ones we are using. -+ */ -+ if (toi_get_pageset1_load_addresses()) { -+ printk(KERN_INFO "TuxOnIce: Failed to get load addresses for " -+ "pageset1.\n"); -+ goto out_thaw; -+ } -+ -+ /* Read the original kernel back */ -+ toi_cond_pause(1, "About to read pageset 1."); -+ -+ /* Given the pagemap, read back the data from disk */ -+ if (read_pageset(&pagedir1, 0)) { -+ toi_prepare_status(DONT_CLEAR_BAR, "Failed to read pageset 1."); -+ result = -EIO; -+ goto out_thaw; -+ } -+ -+ toi_cond_pause(1, "About to restore original kernel."); -+ result = 0; -+ -+ if (!test_action_state(TOI_KEEP_IMAGE) && -+ toiActiveAllocator->mark_resume_attempted) -+ toiActiveAllocator->mark_resume_attempted(1); -+ -+ wait_event(freeze_wait, freeze_result != FREEZE_IN_PROGRESS); -+out: -+ current->flags &= ~PF_NOFREEZE; -+ toi_free_page(25, (unsigned long) header_buffer); -+ return result; -+ -+out_thaw: -+ wait_event(freeze_wait, freeze_result != FREEZE_IN_PROGRESS); -+ trap_non_toi_io = 0; -+ thaw_processes(); -+ usermodehelper_enable(); -+out_enable_nonboot_cpus: -+ enable_nonboot_cpus(); -+out_reset_console: -+ toi_cleanup_console(); -+out_remove_image: -+ result = -EINVAL; -+ if (!test_action_state(TOI_KEEP_IMAGE)) -+ toiActiveAllocator->remove_image(); -+ toiActiveAllocator->read_header_cleanup(); -+ noresume_reset_modules(); -+ goto out; -+} -+ -+/** -+ * read_pageset1 - highlevel function to read the saved pages -+ * -+ * Attempt to read the header and pageset1 of a hibernate image. -+ * Handle the outcome, complaining where appropriate. -+ **/ -+int read_pageset1(void) -+{ -+ int error; -+ -+ error = __read_pageset1(); -+ -+ if (error && error != -ENODATA && error != -EINVAL && -+ !test_result_state(TOI_ABORTED)) -+ abort_hibernate(TOI_IMAGE_ERROR, -+ "TuxOnIce: Error %d resuming\n", error); -+ -+ return error; -+} -+ -+/** -+ * get_have_image_data - check the image header -+ **/ -+static char *get_have_image_data(void) -+{ -+ char *output_buffer = (char *) toi_get_zeroed_page(26, TOI_ATOMIC_GFP); -+ struct toi_header *toi_header; -+ -+ if (!output_buffer) { -+ printk(KERN_INFO "Output buffer null.\n"); -+ return NULL; -+ } -+ -+ /* Check for an image */ -+ if (!toiActiveAllocator->image_exists(1) || -+ toiActiveAllocator->read_header_init() || -+ toiActiveAllocator->rw_header_chunk(READ, NULL, -+ output_buffer, sizeof(struct toi_header))) { -+ sprintf(output_buffer, "0\n"); -+ /* -+ * From an initrd/ramfs, catting have_image and -+ * getting a result of 0 is sufficient. -+ */ -+ clear_toi_state(TOI_BOOT_TIME); -+ goto out; -+ } -+ -+ toi_header = (struct toi_header *) output_buffer; -+ -+ sprintf(output_buffer, "1\n%s\n%s\n", -+ toi_header->uts.machine, -+ toi_header->uts.version); -+ -+ /* Check whether we've resumed before */ -+ if (test_toi_state(TOI_RESUMED_BEFORE)) -+ strcat(output_buffer, "Resumed before.\n"); -+ -+out: -+ noresume_reset_modules(); -+ return output_buffer; -+} -+ -+/** -+ * read_pageset2 - read second part of the image -+ * @overwrittenpagesonly: Read only pages which would have been -+ * verwritten by pageset1? -+ * -+ * Read in part or all of pageset2 of an image, depending upon -+ * whether we are hibernating and have only overwritten a portion -+ * with pageset1 pages, or are resuming and need to read them -+ * all. -+ * -+ * Returns: Int -+ * Zero if no error, otherwise the error value. -+ **/ -+int read_pageset2(int overwrittenpagesonly) -+{ -+ int result = 0; -+ -+ if (!pagedir2.size) -+ return 0; -+ -+ result = read_pageset(&pagedir2, overwrittenpagesonly); -+ -+ toi_cond_pause(1, "Pagedir 2 read."); -+ -+ return result; -+} -+ -+/** -+ * image_exists_read - has an image been found? -+ * @page: Output buffer -+ * -+ * Store 0 or 1 in page, depending on whether an image is found. -+ * Incoming buffer is PAGE_SIZE and result is guaranteed -+ * to be far less than that, so we don't worry about -+ * overflow. -+ **/ -+int image_exists_read(const char *page, int count) -+{ -+ int len = 0; -+ char *result; -+ -+ if (toi_activate_storage(0)) -+ return count; -+ -+ if (!test_toi_state(TOI_RESUME_DEVICE_OK)) -+ toi_attempt_to_parse_resume_device(0); -+ -+ if (!toiActiveAllocator) { -+ len = sprintf((char *) page, "-1\n"); -+ } else { -+ result = get_have_image_data(); -+ if (result) { -+ len = sprintf((char *) page, "%s", result); -+ toi_free_page(26, (unsigned long) result); -+ } -+ } -+ -+ toi_deactivate_storage(0); -+ -+ return len; -+} -+ -+/** -+ * image_exists_write - invalidate an image if one exists -+ **/ -+int image_exists_write(const char *buffer, int count) -+{ -+ if (toi_activate_storage(0)) -+ return count; -+ -+ if (toiActiveAllocator && toiActiveAllocator->image_exists(1)) -+ toiActiveAllocator->remove_image(); -+ -+ toi_deactivate_storage(0); -+ -+ clear_result_state(TOI_KEPT_IMAGE); -+ -+ return count; -+} -diff --git a/kernel/power/tuxonice_io.h b/kernel/power/tuxonice_io.h -new file mode 100644 -index 0000000..fe37713 ---- /dev/null -+++ b/kernel/power/tuxonice_io.h -@@ -0,0 +1,74 @@ -+/* -+ * kernel/power/tuxonice_io.h -+ * -+ * Copyright (C) 2005-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * It contains high level IO routines for hibernating. -+ * -+ */ -+ -+#include -+#include "tuxonice_pagedir.h" -+ -+/* Non-module data saved in our image header */ -+struct toi_header { -+ /* -+ * Mirror struct swsusp_info, but without -+ * the page aligned attribute -+ */ -+ struct new_utsname uts; -+ u32 version_code; -+ unsigned long num_physpages; -+ int cpus; -+ unsigned long image_pages; -+ unsigned long pages; -+ unsigned long size; -+ -+ /* Our own data */ -+ unsigned long orig_mem_free; -+ int page_size; -+ int pageset_2_size; -+ int param0; -+ int param1; -+ int param2; -+ int param3; -+ int progress0; -+ int progress1; -+ int progress2; -+ int progress3; -+ int io_time[2][2]; -+ struct pagedir pagedir; -+ dev_t root_fs; -+ unsigned long bkd; /* Boot kernel data locn */ -+}; -+ -+extern int write_pageset(struct pagedir *pagedir); -+extern int write_image_header(void); -+extern int read_pageset1(void); -+extern int read_pageset2(int overwrittenpagesonly); -+ -+extern int toi_attempt_to_parse_resume_device(int quiet); -+extern void attempt_to_parse_resume_device2(void); -+extern void attempt_to_parse_alt_resume_param(void); -+int image_exists_read(const char *page, int count); -+int image_exists_write(const char *buffer, int count); -+extern void save_restore_alt_param(int replace, int quiet); -+extern atomic_t toi_io_workers; -+ -+/* Args to save_restore_alt_param */ -+#define RESTORE 0 -+#define SAVE 1 -+ -+#define NOQUIET 0 -+#define QUIET 1 -+ -+extern dev_t name_to_dev_t(char *line); -+ -+extern wait_queue_head_t toi_io_queue_flusher; -+extern int toi_bio_queue_flusher_should_finish; -+ -+int fs_info_space_needed(void); -+ -+extern int toi_max_workers; -diff --git a/kernel/power/tuxonice_modules.c b/kernel/power/tuxonice_modules.c -new file mode 100644 -index 0000000..4cc24a9 ---- /dev/null -+++ b/kernel/power/tuxonice_modules.c -@@ -0,0 +1,522 @@ -+/* -+ * kernel/power/tuxonice_modules.c -+ * -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ */ -+ -+#include -+#include "tuxonice.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_sysfs.h" -+#include "tuxonice_ui.h" -+ -+LIST_HEAD(toi_filters); -+LIST_HEAD(toiAllocators); -+ -+LIST_HEAD(toi_modules); -+EXPORT_SYMBOL_GPL(toi_modules); -+ -+struct toi_module_ops *toiActiveAllocator; -+EXPORT_SYMBOL_GPL(toiActiveAllocator); -+ -+static int toi_num_filters; -+int toiNumAllocators, toi_num_modules; -+ -+/* -+ * toi_header_storage_for_modules -+ * -+ * Returns the amount of space needed to store configuration -+ * data needed by the modules prior to copying back the original -+ * kernel. We can exclude data for pageset2 because it will be -+ * available anyway once the kernel is copied back. -+ */ -+long toi_header_storage_for_modules(void) -+{ -+ struct toi_module_ops *this_module; -+ int bytes = 0; -+ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (!this_module->enabled || -+ (this_module->type == WRITER_MODULE && -+ toiActiveAllocator != this_module)) -+ continue; -+ if (this_module->storage_needed) { -+ int this = this_module->storage_needed() + -+ sizeof(struct toi_module_header) + -+ sizeof(int); -+ this_module->header_requested = this; -+ bytes += this; -+ } -+ } -+ -+ /* One more for the empty terminator */ -+ return bytes + sizeof(struct toi_module_header); -+} -+ -+void print_toi_header_storage_for_modules(void) -+{ -+ struct toi_module_ops *this_module; -+ int bytes = 0; -+ -+ printk(KERN_DEBUG "Header storage:\n"); -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (!this_module->enabled || -+ (this_module->type == WRITER_MODULE && -+ toiActiveAllocator != this_module)) -+ continue; -+ if (this_module->storage_needed) { -+ int this = this_module->storage_needed() + -+ sizeof(struct toi_module_header) + -+ sizeof(int); -+ this_module->header_requested = this; -+ bytes += this; -+ printk(KERN_DEBUG "+ %16s : %-4d/%d.\n", -+ this_module->name, -+ this_module->header_used, this); -+ } -+ } -+ -+ printk(KERN_DEBUG "+ empty terminator : %zu.\n", -+ sizeof(struct toi_module_header)); -+ printk(KERN_DEBUG " ====\n"); -+ printk(KERN_DEBUG " %zu\n", -+ bytes + sizeof(struct toi_module_header)); -+} -+EXPORT_SYMBOL_GPL(print_toi_header_storage_for_modules); -+ -+/* -+ * toi_memory_for_modules -+ * -+ * Returns the amount of memory requested by modules for -+ * doing their work during the cycle. -+ */ -+ -+long toi_memory_for_modules(int print_parts) -+{ -+ long bytes = 0, result; -+ struct toi_module_ops *this_module; -+ -+ if (print_parts) -+ printk(KERN_INFO "Memory for modules:\n===================\n"); -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ int this; -+ if (!this_module->enabled) -+ continue; -+ if (this_module->memory_needed) { -+ this = this_module->memory_needed(); -+ if (print_parts) -+ printk(KERN_INFO "%10d bytes (%5ld pages) for " -+ "module '%s'.\n", this, -+ DIV_ROUND_UP(this, PAGE_SIZE), -+ this_module->name); -+ bytes += this; -+ } -+ } -+ -+ result = DIV_ROUND_UP(bytes, PAGE_SIZE); -+ if (print_parts) -+ printk(KERN_INFO " => %ld bytes, %ld pages.\n", bytes, result); -+ -+ return result; -+} -+ -+/* -+ * toi_expected_compression_ratio -+ * -+ * Returns the compression ratio expected when saving the image. -+ */ -+ -+int toi_expected_compression_ratio(void) -+{ -+ int ratio = 100; -+ struct toi_module_ops *this_module; -+ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (!this_module->enabled) -+ continue; -+ if (this_module->expected_compression) -+ ratio = ratio * this_module->expected_compression() -+ / 100; -+ } -+ -+ return ratio; -+} -+ -+/* toi_find_module_given_dir -+ * Functionality : Return a module (if found), given a pointer -+ * to its directory name -+ */ -+ -+static struct toi_module_ops *toi_find_module_given_dir(char *name) -+{ -+ struct toi_module_ops *this_module, *found_module = NULL; -+ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (!strcmp(name, this_module->directory)) { -+ found_module = this_module; -+ break; -+ } -+ } -+ -+ return found_module; -+} -+ -+/* toi_find_module_given_name -+ * Functionality : Return a module (if found), given a pointer -+ * to its name -+ */ -+ -+struct toi_module_ops *toi_find_module_given_name(char *name) -+{ -+ struct toi_module_ops *this_module, *found_module = NULL; -+ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (!strcmp(name, this_module->name)) { -+ found_module = this_module; -+ break; -+ } -+ } -+ -+ return found_module; -+} -+ -+/* -+ * toi_print_module_debug_info -+ * Functionality : Get debugging info from modules into a buffer. -+ */ -+int toi_print_module_debug_info(char *buffer, int buffer_size) -+{ -+ struct toi_module_ops *this_module; -+ int len = 0; -+ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (!this_module->enabled) -+ continue; -+ if (this_module->print_debug_info) { -+ int result; -+ result = this_module->print_debug_info(buffer + len, -+ buffer_size - len); -+ len += result; -+ } -+ } -+ -+ /* Ensure null terminated */ -+ buffer[buffer_size] = 0; -+ -+ return len; -+} -+ -+/* -+ * toi_register_module -+ * -+ * Register a module. -+ */ -+int toi_register_module(struct toi_module_ops *module) -+{ -+ int i; -+ struct kobject *kobj; -+ -+ module->enabled = 1; -+ -+ if (toi_find_module_given_name(module->name)) { -+ printk(KERN_INFO "TuxOnIce: Trying to load module %s," -+ " which is already registered.\n", -+ module->name); -+ return -EBUSY; -+ } -+ -+ switch (module->type) { -+ case FILTER_MODULE: -+ list_add_tail(&module->type_list, &toi_filters); -+ toi_num_filters++; -+ break; -+ case WRITER_MODULE: -+ list_add_tail(&module->type_list, &toiAllocators); -+ toiNumAllocators++; -+ break; -+ case MISC_MODULE: -+ case MISC_HIDDEN_MODULE: -+ case BIO_ALLOCATOR_MODULE: -+ break; -+ default: -+ printk(KERN_ERR "Hmmm. Module '%s' has an invalid type." -+ " It has been ignored.\n", module->name); -+ return -EINVAL; -+ } -+ list_add_tail(&module->module_list, &toi_modules); -+ toi_num_modules++; -+ -+ if ((!module->directory && !module->shared_directory) || -+ !module->sysfs_data || !module->num_sysfs_entries) -+ return 0; -+ -+ /* -+ * Modules may share a directory, but those with shared_dir -+ * set must be loaded (via symbol dependencies) after parents -+ * and unloaded beforehand. -+ */ -+ if (module->shared_directory) { -+ struct toi_module_ops *shared = -+ toi_find_module_given_dir(module->shared_directory); -+ if (!shared) { -+ printk(KERN_ERR "TuxOnIce: Module %s wants to share " -+ "%s's directory but %s isn't loaded.\n", -+ module->name, module->shared_directory, -+ module->shared_directory); -+ toi_unregister_module(module); -+ return -ENODEV; -+ } -+ kobj = shared->dir_kobj; -+ } else { -+ if (!strncmp(module->directory, "[ROOT]", 6)) -+ kobj = tuxonice_kobj; -+ else -+ kobj = make_toi_sysdir(module->directory); -+ } -+ module->dir_kobj = kobj; -+ for (i = 0; i < module->num_sysfs_entries; i++) { -+ int result = toi_register_sysfs_file(kobj, -+ &module->sysfs_data[i]); -+ if (result) -+ return result; -+ } -+ return 0; -+} -+EXPORT_SYMBOL_GPL(toi_register_module); -+ -+/* -+ * toi_unregister_module -+ * -+ * Remove a module. -+ */ -+void toi_unregister_module(struct toi_module_ops *module) -+{ -+ int i; -+ -+ if (module->dir_kobj) -+ for (i = 0; i < module->num_sysfs_entries; i++) -+ toi_unregister_sysfs_file(module->dir_kobj, -+ &module->sysfs_data[i]); -+ -+ if (!module->shared_directory && module->directory && -+ strncmp(module->directory, "[ROOT]", 6)) -+ remove_toi_sysdir(module->dir_kobj); -+ -+ switch (module->type) { -+ case FILTER_MODULE: -+ list_del(&module->type_list); -+ toi_num_filters--; -+ break; -+ case WRITER_MODULE: -+ list_del(&module->type_list); -+ toiNumAllocators--; -+ if (toiActiveAllocator == module) { -+ toiActiveAllocator = NULL; -+ clear_toi_state(TOI_CAN_RESUME); -+ clear_toi_state(TOI_CAN_HIBERNATE); -+ } -+ break; -+ case MISC_MODULE: -+ case MISC_HIDDEN_MODULE: -+ case BIO_ALLOCATOR_MODULE: -+ break; -+ default: -+ printk(KERN_ERR "Module '%s' has an invalid type." -+ " It has been ignored.\n", module->name); -+ return; -+ } -+ list_del(&module->module_list); -+ toi_num_modules--; -+} -+EXPORT_SYMBOL_GPL(toi_unregister_module); -+ -+/* -+ * toi_move_module_tail -+ * -+ * Rearrange modules when reloading the config. -+ */ -+void toi_move_module_tail(struct toi_module_ops *module) -+{ -+ switch (module->type) { -+ case FILTER_MODULE: -+ if (toi_num_filters > 1) -+ list_move_tail(&module->type_list, &toi_filters); -+ break; -+ case WRITER_MODULE: -+ if (toiNumAllocators > 1) -+ list_move_tail(&module->type_list, &toiAllocators); -+ break; -+ case MISC_MODULE: -+ case MISC_HIDDEN_MODULE: -+ case BIO_ALLOCATOR_MODULE: -+ break; -+ default: -+ printk(KERN_ERR "Module '%s' has an invalid type." -+ " It has been ignored.\n", module->name); -+ return; -+ } -+ if ((toi_num_filters + toiNumAllocators) > 1) -+ list_move_tail(&module->module_list, &toi_modules); -+} -+ -+/* -+ * toi_initialise_modules -+ * -+ * Get ready to do some work! -+ */ -+int toi_initialise_modules(int starting_cycle, int early) -+{ -+ struct toi_module_ops *this_module; -+ int result; -+ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ this_module->header_requested = 0; -+ this_module->header_used = 0; -+ if (!this_module->enabled) -+ continue; -+ if (this_module->early != early) -+ continue; -+ if (this_module->initialise) { -+ result = this_module->initialise(starting_cycle); -+ if (result) { -+ toi_cleanup_modules(starting_cycle); -+ return result; -+ } -+ this_module->initialised = 1; -+ } -+ } -+ -+ return 0; -+} -+ -+/* -+ * toi_cleanup_modules -+ * -+ * Tell modules the work is done. -+ */ -+void toi_cleanup_modules(int finishing_cycle) -+{ -+ struct toi_module_ops *this_module; -+ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (!this_module->enabled || !this_module->initialised) -+ continue; -+ if (this_module->cleanup) -+ this_module->cleanup(finishing_cycle); -+ this_module->initialised = 0; -+ } -+} -+ -+/* -+ * toi_pre_atomic_restore_modules -+ * -+ * Get ready to do some work! -+ */ -+void toi_pre_atomic_restore_modules(struct toi_boot_kernel_data *bkd) -+{ -+ struct toi_module_ops *this_module; -+ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (this_module->enabled && this_module->pre_atomic_restore) -+ this_module->pre_atomic_restore(bkd); -+ } -+} -+ -+/* -+ * toi_post_atomic_restore_modules -+ * -+ * Get ready to do some work! -+ */ -+void toi_post_atomic_restore_modules(struct toi_boot_kernel_data *bkd) -+{ -+ struct toi_module_ops *this_module; -+ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (this_module->enabled && this_module->post_atomic_restore) -+ this_module->post_atomic_restore(bkd); -+ } -+} -+ -+/* -+ * toi_get_next_filter -+ * -+ * Get the next filter in the pipeline. -+ */ -+struct toi_module_ops *toi_get_next_filter(struct toi_module_ops *filter_sought) -+{ -+ struct toi_module_ops *last_filter = NULL, *this_filter = NULL; -+ -+ list_for_each_entry(this_filter, &toi_filters, type_list) { -+ if (!this_filter->enabled) -+ continue; -+ if ((last_filter == filter_sought) || (!filter_sought)) -+ return this_filter; -+ last_filter = this_filter; -+ } -+ -+ return toiActiveAllocator; -+} -+EXPORT_SYMBOL_GPL(toi_get_next_filter); -+ -+/** -+ * toi_show_modules: Printk what support is loaded. -+ */ -+void toi_print_modules(void) -+{ -+ struct toi_module_ops *this_module; -+ int prev = 0; -+ -+ printk(KERN_INFO "TuxOnIce " TOI_CORE_VERSION ", with support for"); -+ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ if (this_module->type == MISC_HIDDEN_MODULE) -+ continue; -+ printk("%s %s%s%s", prev ? "," : "", -+ this_module->enabled ? "" : "[", -+ this_module->name, -+ this_module->enabled ? "" : "]"); -+ prev = 1; -+ } -+ -+ printk(".\n"); -+} -+ -+/* toi_get_modules -+ * -+ * Take a reference to modules so they can't go away under us. -+ */ -+ -+int toi_get_modules(void) -+{ -+ struct toi_module_ops *this_module; -+ -+ list_for_each_entry(this_module, &toi_modules, module_list) { -+ struct toi_module_ops *this_module2; -+ -+ if (try_module_get(this_module->module)) -+ continue; -+ -+ /* Failed! Reverse gets and return error */ -+ list_for_each_entry(this_module2, &toi_modules, -+ module_list) { -+ if (this_module == this_module2) -+ return -EINVAL; -+ module_put(this_module2->module); -+ } -+ } -+ return 0; -+} -+ -+/* toi_put_modules -+ * -+ * Release our references to modules we used. -+ */ -+ -+void toi_put_modules(void) -+{ -+ struct toi_module_ops *this_module; -+ -+ list_for_each_entry(this_module, &toi_modules, module_list) -+ module_put(this_module->module); -+} -diff --git a/kernel/power/tuxonice_modules.h b/kernel/power/tuxonice_modules.h -new file mode 100644 -index 0000000..9e198c4 ---- /dev/null -+++ b/kernel/power/tuxonice_modules.h -@@ -0,0 +1,197 @@ -+/* -+ * kernel/power/tuxonice_modules.h -+ * -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * It contains declarations for modules. Modules are additions to -+ * TuxOnIce that provide facilities such as image compression or -+ * encryption, backends for storage of the image and user interfaces. -+ * -+ */ -+ -+#ifndef TOI_MODULES_H -+#define TOI_MODULES_H -+ -+/* This is the maximum size we store in the image header for a module name */ -+#define TOI_MAX_MODULE_NAME_LENGTH 30 -+ -+struct toi_boot_kernel_data; -+ -+/* Per-module metadata */ -+struct toi_module_header { -+ char name[TOI_MAX_MODULE_NAME_LENGTH]; -+ int enabled; -+ int type; -+ int index; -+ int data_length; -+ unsigned long signature; -+}; -+ -+enum { -+ FILTER_MODULE, -+ WRITER_MODULE, -+ BIO_ALLOCATOR_MODULE, -+ MISC_MODULE, -+ MISC_HIDDEN_MODULE, -+}; -+ -+enum { -+ TOI_ASYNC, -+ TOI_SYNC -+}; -+ -+struct toi_module_ops { -+ /* Functions common to all modules */ -+ int type; -+ char *name; -+ char *directory; -+ char *shared_directory; -+ struct kobject *dir_kobj; -+ struct module *module; -+ int enabled, early, initialised; -+ struct list_head module_list; -+ -+ /* List of filters or allocators */ -+ struct list_head list, type_list; -+ -+ /* -+ * Requirements for memory and storage in -+ * the image header.. -+ */ -+ int (*memory_needed) (void); -+ int (*storage_needed) (void); -+ -+ int header_requested, header_used; -+ -+ int (*expected_compression) (void); -+ -+ /* -+ * Debug info -+ */ -+ int (*print_debug_info) (char *buffer, int size); -+ int (*save_config_info) (char *buffer); -+ void (*load_config_info) (char *buffer, int len); -+ -+ /* -+ * Initialise & cleanup - general routines called -+ * at the start and end of a cycle. -+ */ -+ int (*initialise) (int starting_cycle); -+ void (*cleanup) (int finishing_cycle); -+ -+ void (*pre_atomic_restore) (struct toi_boot_kernel_data *bkd); -+ void (*post_atomic_restore) (struct toi_boot_kernel_data *bkd); -+ -+ /* -+ * Calls for allocating storage (allocators only). -+ * -+ * Header space is requested separately and cannot fail, but the -+ * reservation is only applied when main storage is allocated. -+ * The header space reservation is thus always set prior to -+ * requesting the allocation of storage - and prior to querying -+ * how much storage is available. -+ */ -+ -+ unsigned long (*storage_available) (void); -+ void (*reserve_header_space) (unsigned long space_requested); -+ int (*register_storage) (void); -+ int (*allocate_storage) (unsigned long space_requested); -+ unsigned long (*storage_allocated) (void); -+ -+ /* -+ * Routines used in image I/O. -+ */ -+ int (*rw_init) (int rw, int stream_number); -+ int (*rw_cleanup) (int rw); -+ int (*write_page) (unsigned long index, struct page *buffer_page, -+ unsigned int buf_size); -+ int (*read_page) (unsigned long *index, struct page *buffer_page, -+ unsigned int *buf_size); -+ int (*io_flusher) (int rw); -+ -+ /* Reset module if image exists but reading aborted */ -+ void (*noresume_reset) (void); -+ -+ /* Read and write the metadata */ -+ int (*write_header_init) (void); -+ int (*write_header_cleanup) (void); -+ -+ int (*read_header_init) (void); -+ int (*read_header_cleanup) (void); -+ -+ /* To be called after read_header_init */ -+ int (*get_header_version) (void); -+ -+ int (*rw_header_chunk) (int rw, struct toi_module_ops *owner, -+ char *buffer_start, int buffer_size); -+ -+ int (*rw_header_chunk_noreadahead) (int rw, -+ struct toi_module_ops *owner, char *buffer_start, -+ int buffer_size); -+ -+ /* Attempt to parse an image location */ -+ int (*parse_sig_location) (char *buffer, int only_writer, int quiet); -+ -+ /* Throttle I/O according to throughput */ -+ void (*update_throughput_throttle) (int jif_index); -+ -+ /* Flush outstanding I/O */ -+ int (*finish_all_io) (void); -+ -+ /* Determine whether image exists that we can restore */ -+ int (*image_exists) (int quiet); -+ -+ /* Mark the image as having tried to resume */ -+ int (*mark_resume_attempted) (int); -+ -+ /* Destroy image if one exists */ -+ int (*remove_image) (void); -+ -+ /* Sysfs Data */ -+ struct toi_sysfs_data *sysfs_data; -+ int num_sysfs_entries; -+ -+ /* Block I/O allocator */ -+ struct toi_bio_allocator_ops *bio_allocator_ops; -+}; -+ -+extern int toi_num_modules, toiNumAllocators; -+ -+extern struct toi_module_ops *toiActiveAllocator; -+extern struct list_head toi_filters, toiAllocators, toi_modules; -+ -+extern void toi_prepare_console_modules(void); -+extern void toi_cleanup_console_modules(void); -+ -+extern struct toi_module_ops *toi_find_module_given_name(char *name); -+extern struct toi_module_ops *toi_get_next_filter(struct toi_module_ops *); -+ -+extern int toi_register_module(struct toi_module_ops *module); -+extern void toi_move_module_tail(struct toi_module_ops *module); -+ -+extern long toi_header_storage_for_modules(void); -+extern long toi_memory_for_modules(int print_parts); -+extern void print_toi_header_storage_for_modules(void); -+extern int toi_expected_compression_ratio(void); -+ -+extern int toi_print_module_debug_info(char *buffer, int buffer_size); -+extern int toi_register_module(struct toi_module_ops *module); -+extern void toi_unregister_module(struct toi_module_ops *module); -+ -+extern int toi_initialise_modules(int starting_cycle, int early); -+#define toi_initialise_modules_early(starting) \ -+ toi_initialise_modules(starting, 1) -+#define toi_initialise_modules_late(starting) \ -+ toi_initialise_modules(starting, 0) -+extern void toi_cleanup_modules(int finishing_cycle); -+ -+extern void toi_post_atomic_restore_modules(struct toi_boot_kernel_data *bkd); -+extern void toi_pre_atomic_restore_modules(struct toi_boot_kernel_data *bkd); -+ -+extern void toi_print_modules(void); -+ -+int toi_get_modules(void); -+void toi_put_modules(void); -+#endif -diff --git a/kernel/power/tuxonice_netlink.c b/kernel/power/tuxonice_netlink.c -new file mode 100644 -index 0000000..4c599d5 ---- /dev/null -+++ b/kernel/power/tuxonice_netlink.c -@@ -0,0 +1,344 @@ -+/* -+ * kernel/power/tuxonice_netlink.c -+ * -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * Functions for communicating with a userspace helper via netlink. -+ */ -+ -+ -+#include -+#include -+#include "tuxonice_netlink.h" -+#include "tuxonice.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_alloc.h" -+ -+static struct user_helper_data *uhd_list; -+ -+/* -+ * Refill our pool of SKBs for use in emergencies (eg, when eating memory and -+ * none can be allocated). -+ */ -+static void toi_fill_skb_pool(struct user_helper_data *uhd) -+{ -+ while (uhd->pool_level < uhd->pool_limit) { -+ struct sk_buff *new_skb = -+ alloc_skb(NLMSG_SPACE(uhd->skb_size), TOI_ATOMIC_GFP); -+ -+ if (!new_skb) -+ break; -+ -+ new_skb->next = uhd->emerg_skbs; -+ uhd->emerg_skbs = new_skb; -+ uhd->pool_level++; -+ } -+} -+ -+/* -+ * Try to allocate a single skb. If we can't get one, try to use one from -+ * our pool. -+ */ -+static struct sk_buff *toi_get_skb(struct user_helper_data *uhd) -+{ -+ struct sk_buff *skb = -+ alloc_skb(NLMSG_SPACE(uhd->skb_size), TOI_ATOMIC_GFP); -+ -+ if (skb) -+ return skb; -+ -+ skb = uhd->emerg_skbs; -+ if (skb) { -+ uhd->pool_level--; -+ uhd->emerg_skbs = skb->next; -+ skb->next = NULL; -+ } -+ -+ return skb; -+} -+ -+static void put_skb(struct user_helper_data *uhd, struct sk_buff *skb) -+{ -+ if (uhd->pool_level < uhd->pool_limit) { -+ skb->next = uhd->emerg_skbs; -+ uhd->emerg_skbs = skb; -+ } else -+ kfree_skb(skb); -+} -+ -+void toi_send_netlink_message(struct user_helper_data *uhd, -+ int type, void *params, size_t len) -+{ -+ struct sk_buff *skb; -+ struct nlmsghdr *nlh; -+ void *dest; -+ struct task_struct *t; -+ -+ if (uhd->pid == -1) -+ return; -+ -+ if (uhd->debug) -+ printk(KERN_ERR "toi_send_netlink_message: Send " -+ "message type %d.\n", type); -+ -+ skb = toi_get_skb(uhd); -+ if (!skb) { -+ printk(KERN_INFO "toi_netlink: Can't allocate skb!\n"); -+ return; -+ } -+ -+ /* NLMSG_PUT contains a hidden goto nlmsg_failure */ -+ nlh = NLMSG_PUT(skb, 0, uhd->sock_seq, type, len); -+ uhd->sock_seq++; -+ -+ dest = NLMSG_DATA(nlh); -+ if (params && len > 0) -+ memcpy(dest, params, len); -+ -+ netlink_unicast(uhd->nl, skb, uhd->pid, 0); -+ -+ read_lock(&tasklist_lock); -+ t = find_task_by_pid_ns(uhd->pid, &init_pid_ns); -+ if (!t) { -+ read_unlock(&tasklist_lock); -+ if (uhd->pid > -1) -+ printk(KERN_INFO "Hmm. Can't find the userspace task" -+ " %d.\n", uhd->pid); -+ return; -+ } -+ wake_up_process(t); -+ read_unlock(&tasklist_lock); -+ -+ yield(); -+ -+ return; -+ -+nlmsg_failure: -+ if (skb) -+ put_skb(uhd, skb); -+ -+ if (uhd->debug) -+ printk(KERN_ERR "toi_send_netlink_message: Failed to send " -+ "message type %d.\n", type); -+} -+EXPORT_SYMBOL_GPL(toi_send_netlink_message); -+ -+static void send_whether_debugging(struct user_helper_data *uhd) -+{ -+ static u8 is_debugging = 1; -+ -+ toi_send_netlink_message(uhd, NETLINK_MSG_IS_DEBUGGING, -+ &is_debugging, sizeof(u8)); -+} -+ -+/* -+ * Set the PF_NOFREEZE flag on the given process to ensure it can run whilst we -+ * are hibernating. -+ */ -+static int nl_set_nofreeze(struct user_helper_data *uhd, __u32 pid) -+{ -+ struct task_struct *t; -+ -+ if (uhd->debug) -+ printk(KERN_ERR "nl_set_nofreeze for pid %d.\n", pid); -+ -+ read_lock(&tasklist_lock); -+ t = find_task_by_pid_ns(pid, &init_pid_ns); -+ if (!t) { -+ read_unlock(&tasklist_lock); -+ printk(KERN_INFO "Strange. Can't find the userspace task %d.\n", -+ pid); -+ return -EINVAL; -+ } -+ -+ t->flags |= PF_NOFREEZE; -+ -+ read_unlock(&tasklist_lock); -+ uhd->pid = pid; -+ -+ toi_send_netlink_message(uhd, NETLINK_MSG_NOFREEZE_ACK, NULL, 0); -+ -+ return 0; -+} -+ -+/* -+ * Called when the userspace process has informed us that it's ready to roll. -+ */ -+static int nl_ready(struct user_helper_data *uhd, u32 version) -+{ -+ if (version != uhd->interface_version) { -+ printk(KERN_INFO "%s userspace process using invalid interface" -+ " version (%d - kernel wants %d). Trying to " -+ "continue without it.\n", -+ uhd->name, version, uhd->interface_version); -+ if (uhd->not_ready) -+ uhd->not_ready(); -+ return -EINVAL; -+ } -+ -+ complete(&uhd->wait_for_process); -+ -+ return 0; -+} -+ -+void toi_netlink_close_complete(struct user_helper_data *uhd) -+{ -+ if (uhd->nl) { -+ netlink_kernel_release(uhd->nl); -+ uhd->nl = NULL; -+ } -+ -+ while (uhd->emerg_skbs) { -+ struct sk_buff *next = uhd->emerg_skbs->next; -+ kfree_skb(uhd->emerg_skbs); -+ uhd->emerg_skbs = next; -+ } -+ -+ uhd->pid = -1; -+} -+EXPORT_SYMBOL_GPL(toi_netlink_close_complete); -+ -+static int toi_nl_gen_rcv_msg(struct user_helper_data *uhd, -+ struct sk_buff *skb, struct nlmsghdr *nlh) -+{ -+ int type = nlh->nlmsg_type; -+ int *data; -+ int err; -+ -+ if (uhd->debug) -+ printk(KERN_ERR "toi_user_rcv_skb: Received message %d.\n", -+ type); -+ -+ /* Let the more specific handler go first. It returns -+ * 1 for valid messages that it doesn't know. */ -+ err = uhd->rcv_msg(skb, nlh); -+ if (err != 1) -+ return err; -+ -+ /* Only allow one task to receive NOFREEZE privileges */ -+ if (type == NETLINK_MSG_NOFREEZE_ME && uhd->pid != -1) { -+ printk(KERN_INFO "Received extra nofreeze me requests.\n"); -+ return -EBUSY; -+ } -+ -+ data = NLMSG_DATA(nlh); -+ -+ switch (type) { -+ case NETLINK_MSG_NOFREEZE_ME: -+ return nl_set_nofreeze(uhd, nlh->nlmsg_pid); -+ case NETLINK_MSG_GET_DEBUGGING: -+ send_whether_debugging(uhd); -+ return 0; -+ case NETLINK_MSG_READY: -+ if (nlh->nlmsg_len != NLMSG_LENGTH(sizeof(u32))) { -+ printk(KERN_INFO "Invalid ready mesage.\n"); -+ if (uhd->not_ready) -+ uhd->not_ready(); -+ return -EINVAL; -+ } -+ return nl_ready(uhd, (u32) *data); -+ case NETLINK_MSG_CLEANUP: -+ toi_netlink_close_complete(uhd); -+ return 0; -+ } -+ -+ return -EINVAL; -+} -+ -+static void toi_user_rcv_skb(struct sk_buff *skb) -+{ -+ int err; -+ struct nlmsghdr *nlh; -+ struct user_helper_data *uhd = uhd_list; -+ -+ while (uhd && uhd->netlink_id != skb->sk->sk_protocol) -+ uhd = uhd->next; -+ -+ if (!uhd) -+ return; -+ -+ while (skb->len >= NLMSG_SPACE(0)) { -+ u32 rlen; -+ -+ nlh = (struct nlmsghdr *) skb->data; -+ if (nlh->nlmsg_len < sizeof(*nlh) || skb->len < nlh->nlmsg_len) -+ return; -+ -+ rlen = NLMSG_ALIGN(nlh->nlmsg_len); -+ if (rlen > skb->len) -+ rlen = skb->len; -+ -+ err = toi_nl_gen_rcv_msg(uhd, skb, nlh); -+ if (err) -+ netlink_ack(skb, nlh, err); -+ else if (nlh->nlmsg_flags & NLM_F_ACK) -+ netlink_ack(skb, nlh, 0); -+ skb_pull(skb, rlen); -+ } -+} -+ -+static int netlink_prepare(struct user_helper_data *uhd) -+{ -+ uhd->next = uhd_list; -+ uhd_list = uhd; -+ -+ uhd->sock_seq = 0x42c0ffee; -+ uhd->nl = netlink_kernel_create(&init_net, uhd->netlink_id, 0, -+ toi_user_rcv_skb, NULL, THIS_MODULE); -+ if (!uhd->nl) { -+ printk(KERN_INFO "Failed to allocate netlink socket for %s.\n", -+ uhd->name); -+ return -ENOMEM; -+ } -+ -+ toi_fill_skb_pool(uhd); -+ -+ return 0; -+} -+ -+void toi_netlink_close(struct user_helper_data *uhd) -+{ -+ struct task_struct *t; -+ -+ read_lock(&tasklist_lock); -+ t = find_task_by_pid_ns(uhd->pid, &init_pid_ns); -+ if (t) -+ t->flags &= ~PF_NOFREEZE; -+ read_unlock(&tasklist_lock); -+ -+ toi_send_netlink_message(uhd, NETLINK_MSG_CLEANUP, NULL, 0); -+} -+EXPORT_SYMBOL_GPL(toi_netlink_close); -+ -+int toi_netlink_setup(struct user_helper_data *uhd) -+{ -+ /* In case userui didn't cleanup properly on us */ -+ toi_netlink_close_complete(uhd); -+ -+ if (netlink_prepare(uhd) < 0) { -+ printk(KERN_INFO "Netlink prepare failed.\n"); -+ return 1; -+ } -+ -+ if (toi_launch_userspace_program(uhd->program, uhd->netlink_id, -+ UMH_WAIT_EXEC, uhd->debug) < 0) { -+ printk(KERN_INFO "Launch userspace program failed.\n"); -+ toi_netlink_close_complete(uhd); -+ return 1; -+ } -+ -+ /* Wait 2 seconds for the userspace process to make contact */ -+ wait_for_completion_timeout(&uhd->wait_for_process, 2*HZ); -+ -+ if (uhd->pid == -1) { -+ printk(KERN_INFO "%s: Failed to contact userspace process.\n", -+ uhd->name); -+ toi_netlink_close_complete(uhd); -+ return 1; -+ } -+ -+ return 0; -+} -+EXPORT_SYMBOL_GPL(toi_netlink_setup); -diff --git a/kernel/power/tuxonice_netlink.h b/kernel/power/tuxonice_netlink.h -new file mode 100644 -index 0000000..b8ef06e ---- /dev/null -+++ b/kernel/power/tuxonice_netlink.h -@@ -0,0 +1,62 @@ -+/* -+ * kernel/power/tuxonice_netlink.h -+ * -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * Declarations for functions for communicating with a userspace helper -+ * via netlink. -+ */ -+ -+#include -+#include -+ -+#define NETLINK_MSG_BASE 0x10 -+ -+#define NETLINK_MSG_READY 0x10 -+#define NETLINK_MSG_NOFREEZE_ME 0x16 -+#define NETLINK_MSG_GET_DEBUGGING 0x19 -+#define NETLINK_MSG_CLEANUP 0x24 -+#define NETLINK_MSG_NOFREEZE_ACK 0x27 -+#define NETLINK_MSG_IS_DEBUGGING 0x28 -+ -+struct user_helper_data { -+ int (*rcv_msg) (struct sk_buff *skb, struct nlmsghdr *nlh); -+ void (*not_ready) (void); -+ struct sock *nl; -+ u32 sock_seq; -+ pid_t pid; -+ char *comm; -+ char program[256]; -+ int pool_level; -+ int pool_limit; -+ struct sk_buff *emerg_skbs; -+ int skb_size; -+ int netlink_id; -+ char *name; -+ struct user_helper_data *next; -+ struct completion wait_for_process; -+ u32 interface_version; -+ int must_init; -+ int debug; -+}; -+ -+#ifdef CONFIG_NET -+int toi_netlink_setup(struct user_helper_data *uhd); -+void toi_netlink_close(struct user_helper_data *uhd); -+void toi_send_netlink_message(struct user_helper_data *uhd, -+ int type, void *params, size_t len); -+void toi_netlink_close_complete(struct user_helper_data *uhd); -+#else -+static inline int toi_netlink_setup(struct user_helper_data *uhd) -+{ -+ return 0; -+} -+ -+static inline void toi_netlink_close(struct user_helper_data *uhd) { }; -+static inline void toi_send_netlink_message(struct user_helper_data *uhd, -+ int type, void *params, size_t len) { }; -+static inline void toi_netlink_close_complete(struct user_helper_data *uhd) -+ { }; -+#endif -diff --git a/kernel/power/tuxonice_pagedir.c b/kernel/power/tuxonice_pagedir.c -new file mode 100644 -index 0000000..091c9e3 ---- /dev/null -+++ b/kernel/power/tuxonice_pagedir.c -@@ -0,0 +1,339 @@ -+/* -+ * kernel/power/tuxonice_pagedir.c -+ * -+ * Copyright (C) 1998-2001 Gabor Kuti -+ * Copyright (C) 1998,2001,2002 Pavel Machek -+ * Copyright (C) 2002-2003 Florent Chabaud -+ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * Routines for handling pagesets. -+ * Note that pbes aren't actually stored as such. They're stored as -+ * bitmaps and extents. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "tuxonice_pageflags.h" -+#include "tuxonice_ui.h" -+#include "tuxonice_pagedir.h" -+#include "tuxonice_prepare_image.h" -+#include "tuxonice.h" -+#include "tuxonice_builtin.h" -+#include "tuxonice_alloc.h" -+ -+static int ptoi_pfn; -+static struct pbe *this_low_pbe; -+static struct pbe **last_low_pbe_ptr; -+static struct memory_bitmap dup_map1, dup_map2; -+ -+void toi_reset_alt_image_pageset2_pfn(void) -+{ -+ memory_bm_position_reset(pageset2_map); -+} -+ -+static struct page *first_conflicting_page; -+ -+/* -+ * free_conflicting_pages -+ */ -+ -+static void free_conflicting_pages(void) -+{ -+ while (first_conflicting_page) { -+ struct page *next = -+ *((struct page **) kmap(first_conflicting_page)); -+ kunmap(first_conflicting_page); -+ toi__free_page(29, first_conflicting_page); -+ first_conflicting_page = next; -+ } -+} -+ -+/* __toi_get_nonconflicting_page -+ * -+ * Description: Gets order zero pages that won't be overwritten -+ * while copying the original pages. -+ */ -+ -+struct page *___toi_get_nonconflicting_page(int can_be_highmem) -+{ -+ struct page *page; -+ gfp_t flags = TOI_ATOMIC_GFP; -+ if (can_be_highmem) -+ flags |= __GFP_HIGHMEM; -+ -+ -+ if (test_toi_state(TOI_LOADING_ALT_IMAGE) && -+ pageset2_map && -+ (ptoi_pfn != BM_END_OF_MAP)) { -+ do { -+ ptoi_pfn = memory_bm_next_pfn(pageset2_map); -+ if (ptoi_pfn != BM_END_OF_MAP) { -+ page = pfn_to_page(ptoi_pfn); -+ if (!PagePageset1(page) && -+ (can_be_highmem || !PageHighMem(page))) -+ return page; -+ } -+ } while (ptoi_pfn != BM_END_OF_MAP); -+ } -+ -+ do { -+ page = toi_alloc_page(29, flags); -+ if (!page) { -+ printk(KERN_INFO "Failed to get nonconflicting " -+ "page.\n"); -+ return NULL; -+ } -+ if (PagePageset1(page)) { -+ struct page **next = (struct page **) kmap(page); -+ *next = first_conflicting_page; -+ first_conflicting_page = page; -+ kunmap(page); -+ } -+ } while (PagePageset1(page)); -+ -+ return page; -+} -+ -+unsigned long __toi_get_nonconflicting_page(void) -+{ -+ struct page *page = ___toi_get_nonconflicting_page(0); -+ return page ? (unsigned long) page_address(page) : 0; -+} -+ -+static struct pbe *get_next_pbe(struct page **page_ptr, struct pbe *this_pbe, -+ int highmem) -+{ -+ if (((((unsigned long) this_pbe) & (PAGE_SIZE - 1)) -+ + 2 * sizeof(struct pbe)) > PAGE_SIZE) { -+ struct page *new_page = -+ ___toi_get_nonconflicting_page(highmem); -+ if (!new_page) -+ return ERR_PTR(-ENOMEM); -+ this_pbe = (struct pbe *) kmap(new_page); -+ memset(this_pbe, 0, PAGE_SIZE); -+ *page_ptr = new_page; -+ } else -+ this_pbe++; -+ -+ return this_pbe; -+} -+ -+/** -+ * get_pageset1_load_addresses - generate pbes for conflicting pages -+ * -+ * We check here that pagedir & pages it points to won't collide -+ * with pages where we're going to restore from the loaded pages -+ * later. -+ * -+ * Returns: -+ * Zero on success, one if couldn't find enough pages (shouldn't -+ * happen). -+ **/ -+int toi_get_pageset1_load_addresses(void) -+{ -+ int pfn, highallocd = 0, lowallocd = 0; -+ int low_needed = pagedir1.size - get_highmem_size(pagedir1); -+ int high_needed = get_highmem_size(pagedir1); -+ int low_pages_for_highmem = 0; -+ gfp_t flags = GFP_ATOMIC | __GFP_NOWARN | __GFP_HIGHMEM; -+ struct page *page, *high_pbe_page = NULL, *last_high_pbe_page = NULL, -+ *low_pbe_page; -+ struct pbe **last_high_pbe_ptr = &restore_highmem_pblist, -+ *this_high_pbe = NULL; -+ int orig_low_pfn, orig_high_pfn; -+ int high_pbes_done = 0, low_pbes_done = 0; -+ int low_direct = 0, high_direct = 0, result = 0, i; -+ -+ /* -+ * We need to duplicate pageset1's map because memory_bm_next_pfn's -+ * state gets stomped on by the PagePageset1() test in setup_pbes. -+ */ -+ memory_bm_create(&dup_map1, GFP_ATOMIC, 0); -+ memory_bm_dup(pageset1_map, &dup_map1); -+ -+ memory_bm_create(&dup_map2, GFP_ATOMIC, 0); -+ memory_bm_dup(pageset1_map, &dup_map2); -+ -+ memory_bm_position_reset(pageset1_map); -+ memory_bm_position_reset(&dup_map1); -+ memory_bm_position_reset(&dup_map2); -+ -+ last_low_pbe_ptr = &restore_pblist; -+ -+ /* First, allocate pages for the start of our pbe lists. */ -+ if (high_needed) { -+ high_pbe_page = ___toi_get_nonconflicting_page(1); -+ if (!high_pbe_page) { -+ result = -ENOMEM; -+ goto out; -+ } -+ this_high_pbe = (struct pbe *) kmap(high_pbe_page); -+ memset(this_high_pbe, 0, PAGE_SIZE); -+ } -+ -+ low_pbe_page = ___toi_get_nonconflicting_page(0); -+ if (!low_pbe_page) { -+ result = -ENOMEM; -+ goto out; -+ } -+ this_low_pbe = (struct pbe *) page_address(low_pbe_page); -+ -+ /* -+ * Next, allocate the number of pages we need. -+ */ -+ -+ i = low_needed + high_needed; -+ -+ do { -+ int is_high; -+ -+ if (i == low_needed) -+ flags &= ~__GFP_HIGHMEM; -+ -+ page = toi_alloc_page(30, flags); -+ BUG_ON(!page); -+ -+ SetPagePageset1Copy(page); -+ is_high = PageHighMem(page); -+ -+ if (PagePageset1(page)) { -+ if (is_high) -+ high_direct++; -+ else -+ low_direct++; -+ } else { -+ if (is_high) -+ highallocd++; -+ else -+ lowallocd++; -+ } -+ } while (--i); -+ -+ high_needed -= high_direct; -+ low_needed -= low_direct; -+ -+ /* -+ * Do we need to use some lowmem pages for the copies of highmem -+ * pages? -+ */ -+ if (high_needed > highallocd) { -+ low_pages_for_highmem = high_needed - highallocd; -+ high_needed -= low_pages_for_highmem; -+ low_needed += low_pages_for_highmem; -+ } -+ -+ /* -+ * Now generate our pbes (which will be used for the atomic restore), -+ * and free unneeded pages. -+ */ -+ memory_bm_position_reset(pageset1_copy_map); -+ for (pfn = memory_bm_next_pfn(pageset1_copy_map); pfn != BM_END_OF_MAP; -+ pfn = memory_bm_next_pfn(pageset1_copy_map)) { -+ int is_high; -+ page = pfn_to_page(pfn); -+ is_high = PageHighMem(page); -+ -+ if (PagePageset1(page)) -+ continue; -+ -+ /* Nope. We're going to use this page. Add a pbe. */ -+ if (is_high || low_pages_for_highmem) { -+ struct page *orig_page; -+ high_pbes_done++; -+ if (!is_high) -+ low_pages_for_highmem--; -+ do { -+ orig_high_pfn = memory_bm_next_pfn(&dup_map1); -+ BUG_ON(orig_high_pfn == BM_END_OF_MAP); -+ orig_page = pfn_to_page(orig_high_pfn); -+ } while (!PageHighMem(orig_page) || -+ PagePageset1Copy(orig_page)); -+ -+ this_high_pbe->orig_address = orig_page; -+ this_high_pbe->address = page; -+ this_high_pbe->next = NULL; -+ if (last_high_pbe_page != high_pbe_page) { -+ *last_high_pbe_ptr = -+ (struct pbe *) high_pbe_page; -+ if (!last_high_pbe_page) -+ last_high_pbe_page = high_pbe_page; -+ } else -+ *last_high_pbe_ptr = this_high_pbe; -+ last_high_pbe_ptr = &this_high_pbe->next; -+ if (last_high_pbe_page != high_pbe_page) { -+ kunmap(last_high_pbe_page); -+ last_high_pbe_page = high_pbe_page; -+ } -+ this_high_pbe = get_next_pbe(&high_pbe_page, -+ this_high_pbe, 1); -+ if (IS_ERR(this_high_pbe)) { -+ printk(KERN_INFO -+ "This high pbe is an error.\n"); -+ return -ENOMEM; -+ } -+ } else { -+ struct page *orig_page; -+ low_pbes_done++; -+ do { -+ orig_low_pfn = memory_bm_next_pfn(&dup_map2); -+ BUG_ON(orig_low_pfn == BM_END_OF_MAP); -+ orig_page = pfn_to_page(orig_low_pfn); -+ } while (PageHighMem(orig_page) || -+ PagePageset1Copy(orig_page)); -+ -+ this_low_pbe->orig_address = page_address(orig_page); -+ this_low_pbe->address = page_address(page); -+ this_low_pbe->next = NULL; -+ *last_low_pbe_ptr = this_low_pbe; -+ last_low_pbe_ptr = &this_low_pbe->next; -+ this_low_pbe = get_next_pbe(&low_pbe_page, -+ this_low_pbe, 0); -+ if (IS_ERR(this_low_pbe)) { -+ printk(KERN_INFO "this_low_pbe is an error.\n"); -+ return -ENOMEM; -+ } -+ } -+ } -+ -+ if (high_pbe_page) -+ kunmap(high_pbe_page); -+ -+ if (last_high_pbe_page != high_pbe_page) { -+ if (last_high_pbe_page) -+ kunmap(last_high_pbe_page); -+ toi__free_page(29, high_pbe_page); -+ } -+ -+ free_conflicting_pages(); -+ -+out: -+ memory_bm_free(&dup_map1, 0); -+ memory_bm_free(&dup_map2, 0); -+ -+ return result; -+} -+ -+int add_boot_kernel_data_pbe(void) -+{ -+ this_low_pbe->address = (char *) __toi_get_nonconflicting_page(); -+ if (!this_low_pbe->address) { -+ printk(KERN_INFO "Failed to get bkd atomic restore buffer."); -+ return -ENOMEM; -+ } -+ -+ toi_bkd.size = sizeof(toi_bkd); -+ memcpy(this_low_pbe->address, &toi_bkd, sizeof(toi_bkd)); -+ -+ *last_low_pbe_ptr = this_low_pbe; -+ this_low_pbe->orig_address = (char *) boot_kernel_data_buffer; -+ this_low_pbe->next = NULL; -+ return 0; -+} -diff --git a/kernel/power/tuxonice_pagedir.h b/kernel/power/tuxonice_pagedir.h -new file mode 100644 -index 0000000..d08e4b1 ---- /dev/null -+++ b/kernel/power/tuxonice_pagedir.h -@@ -0,0 +1,50 @@ -+/* -+ * kernel/power/tuxonice_pagedir.h -+ * -+ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * Declarations for routines for handling pagesets. -+ */ -+ -+#ifndef KERNEL_POWER_PAGEDIR_H -+#define KERNEL_POWER_PAGEDIR_H -+ -+/* Pagedir -+ * -+ * Contains the metadata for a set of pages saved in the image. -+ */ -+ -+struct pagedir { -+ int id; -+ unsigned long size; -+#ifdef CONFIG_HIGHMEM -+ unsigned long size_high; -+#endif -+}; -+ -+#ifdef CONFIG_HIGHMEM -+#define get_highmem_size(pagedir) (pagedir.size_high) -+#define set_highmem_size(pagedir, sz) do { pagedir.size_high = sz; } while (0) -+#define inc_highmem_size(pagedir) do { pagedir.size_high++; } while (0) -+#define get_lowmem_size(pagedir) (pagedir.size - pagedir.size_high) -+#else -+#define get_highmem_size(pagedir) (0) -+#define set_highmem_size(pagedir, sz) do { } while (0) -+#define inc_highmem_size(pagedir) do { } while (0) -+#define get_lowmem_size(pagedir) (pagedir.size) -+#endif -+ -+extern struct pagedir pagedir1, pagedir2; -+ -+extern void toi_copy_pageset1(void); -+ -+extern int toi_get_pageset1_load_addresses(void); -+ -+extern unsigned long __toi_get_nonconflicting_page(void); -+struct page *___toi_get_nonconflicting_page(int can_be_highmem); -+ -+extern void toi_reset_alt_image_pageset2_pfn(void); -+extern int add_boot_kernel_data_pbe(void); -+#endif -diff --git a/kernel/power/tuxonice_pageflags.c b/kernel/power/tuxonice_pageflags.c -new file mode 100644 -index 0000000..e9ec5b5 ---- /dev/null -+++ b/kernel/power/tuxonice_pageflags.c -@@ -0,0 +1,28 @@ -+/* -+ * kernel/power/tuxonice_pageflags.c -+ * -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * Routines for serialising and relocating pageflags in which we -+ * store our image metadata. -+ */ -+ -+#include -+#include "tuxonice_pageflags.h" -+#include "power.h" -+ -+int toi_pageflags_space_needed(void) -+{ -+ int total = 0; -+ struct bm_block *bb; -+ -+ total = sizeof(unsigned int); -+ -+ list_for_each_entry(bb, &pageset1_map->blocks, hook) -+ total += 2 * sizeof(unsigned long) + PAGE_SIZE; -+ -+ return total; -+} -+EXPORT_SYMBOL_GPL(toi_pageflags_space_needed); -diff --git a/kernel/power/tuxonice_pageflags.h b/kernel/power/tuxonice_pageflags.h -new file mode 100644 -index 0000000..d5aa7b1 ---- /dev/null -+++ b/kernel/power/tuxonice_pageflags.h -@@ -0,0 +1,72 @@ -+/* -+ * kernel/power/tuxonice_pageflags.h -+ * -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ */ -+ -+#ifndef KERNEL_POWER_TUXONICE_PAGEFLAGS_H -+#define KERNEL_POWER_TUXONICE_PAGEFLAGS_H -+ -+extern struct memory_bitmap *pageset1_map; -+extern struct memory_bitmap *pageset1_copy_map; -+extern struct memory_bitmap *pageset2_map; -+extern struct memory_bitmap *page_resave_map; -+extern struct memory_bitmap *io_map; -+extern struct memory_bitmap *nosave_map; -+extern struct memory_bitmap *free_map; -+ -+#define PagePageset1(page) \ -+ (memory_bm_test_bit(pageset1_map, page_to_pfn(page))) -+#define SetPagePageset1(page) \ -+ (memory_bm_set_bit(pageset1_map, page_to_pfn(page))) -+#define ClearPagePageset1(page) \ -+ (memory_bm_clear_bit(pageset1_map, page_to_pfn(page))) -+ -+#define PagePageset1Copy(page) \ -+ (memory_bm_test_bit(pageset1_copy_map, page_to_pfn(page))) -+#define SetPagePageset1Copy(page) \ -+ (memory_bm_set_bit(pageset1_copy_map, page_to_pfn(page))) -+#define ClearPagePageset1Copy(page) \ -+ (memory_bm_clear_bit(pageset1_copy_map, page_to_pfn(page))) -+ -+#define PagePageset2(page) \ -+ (memory_bm_test_bit(pageset2_map, page_to_pfn(page))) -+#define SetPagePageset2(page) \ -+ (memory_bm_set_bit(pageset2_map, page_to_pfn(page))) -+#define ClearPagePageset2(page) \ -+ (memory_bm_clear_bit(pageset2_map, page_to_pfn(page))) -+ -+#define PageWasRW(page) \ -+ (memory_bm_test_bit(pageset2_map, page_to_pfn(page))) -+#define SetPageWasRW(page) \ -+ (memory_bm_set_bit(pageset2_map, page_to_pfn(page))) -+#define ClearPageWasRW(page) \ -+ (memory_bm_clear_bit(pageset2_map, page_to_pfn(page))) -+ -+#define PageResave(page) (page_resave_map ? \ -+ memory_bm_test_bit(page_resave_map, page_to_pfn(page)) : 0) -+#define SetPageResave(page) \ -+ (memory_bm_set_bit(page_resave_map, page_to_pfn(page))) -+#define ClearPageResave(page) \ -+ (memory_bm_clear_bit(page_resave_map, page_to_pfn(page))) -+ -+#define PageNosave(page) (nosave_map ? \ -+ memory_bm_test_bit(nosave_map, page_to_pfn(page)) : 0) -+#define SetPageNosave(page) \ -+ (memory_bm_set_bit(nosave_map, page_to_pfn(page))) -+#define ClearPageNosave(page) \ -+ (memory_bm_clear_bit(nosave_map, page_to_pfn(page))) -+ -+#define PageNosaveFree(page) (free_map ? \ -+ memory_bm_test_bit(free_map, page_to_pfn(page)) : 0) -+#define SetPageNosaveFree(page) \ -+ (memory_bm_set_bit(free_map, page_to_pfn(page))) -+#define ClearPageNosaveFree(page) \ -+ (memory_bm_clear_bit(free_map, page_to_pfn(page))) -+ -+extern void save_pageflags(struct memory_bitmap *pagemap); -+extern int load_pageflags(struct memory_bitmap *pagemap); -+extern int toi_pageflags_space_needed(void); -+#endif -diff --git a/kernel/power/tuxonice_power_off.c b/kernel/power/tuxonice_power_off.c -new file mode 100644 -index 0000000..07e39c0 ---- /dev/null -+++ b/kernel/power/tuxonice_power_off.c -@@ -0,0 +1,285 @@ -+/* -+ * kernel/power/tuxonice_power_off.c -+ * -+ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * Support for powering down. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "tuxonice.h" -+#include "tuxonice_ui.h" -+#include "tuxonice_power_off.h" -+#include "tuxonice_sysfs.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_io.h" -+ -+unsigned long toi_poweroff_method; /* 0 - Kernel power off */ -+EXPORT_SYMBOL_GPL(toi_poweroff_method); -+ -+static int wake_delay; -+static char lid_state_file[256], wake_alarm_dir[256]; -+static struct file *lid_file, *alarm_file, *epoch_file; -+static int post_wake_state = -1; -+ -+static int did_suspend_to_both; -+ -+/* -+ * __toi_power_down -+ * Functionality : Powers down or reboots the computer once the image -+ * has been written to disk. -+ * Key Assumptions : Able to reboot/power down via code called or that -+ * the warning emitted if the calls fail will be visible -+ * to the user (ie printk resumes devices). -+ */ -+ -+static void __toi_power_down(int method) -+{ -+ int error; -+ -+ toi_cond_pause(1, test_action_state(TOI_REBOOT) ? "Ready to reboot." : -+ "Powering down."); -+ -+ if (test_result_state(TOI_ABORTED)) -+ goto out; -+ -+ if (test_action_state(TOI_REBOOT)) -+ kernel_restart(NULL); -+ -+ switch (method) { -+ case 0: -+ break; -+ case 3: -+ /* -+ * Re-read the overwritten part of pageset2 to make post-resume -+ * faster. -+ */ -+ if (read_pageset2(1)) -+ panic("Attempt to reload pagedir 2 failed. " -+ "Try rebooting."); -+ -+ pm_prepare_console(); -+ -+ error = pm_notifier_call_chain(PM_SUSPEND_PREPARE); -+ if (!error) { -+ error = suspend_devices_and_enter(PM_SUSPEND_MEM); -+ if (!error) -+ did_suspend_to_both = 1; -+ } -+ pm_notifier_call_chain(PM_POST_SUSPEND); -+ pm_restore_console(); -+ -+ /* Success - we're now post-resume-from-ram */ -+ if (did_suspend_to_both) -+ return; -+ -+ /* Failed to suspend to ram - do normal power off */ -+ break; -+ case 4: -+ /* -+ * If succeeds, doesn't return. If fails, do a simple -+ * powerdown. -+ */ -+ hibernation_platform_enter(); -+ break; -+ case 5: -+ /* Historic entry only now */ -+ break; -+ } -+ -+ if (method && method != 5) -+ toi_cond_pause(1, -+ "Falling back to alternate power off method."); -+ -+ if (test_result_state(TOI_ABORTED)) -+ goto out; -+ -+ kernel_power_off(); -+ kernel_halt(); -+ toi_cond_pause(1, "Powerdown failed."); -+ while (1) -+ cpu_relax(); -+ -+out: -+ if (read_pageset2(1)) -+ panic("Attempt to reload pagedir 2 failed. Try rebooting."); -+ return; -+} -+ -+#define CLOSE_FILE(file) \ -+ if (file) { \ -+ filp_close(file, NULL); file = NULL; \ -+ } -+ -+static void powerdown_cleanup(int toi_or_resume) -+{ -+ if (!toi_or_resume) -+ return; -+ -+ CLOSE_FILE(lid_file); -+ CLOSE_FILE(alarm_file); -+ CLOSE_FILE(epoch_file); -+} -+ -+static void open_file(char *format, char *arg, struct file **var, int mode, -+ char *desc) -+{ -+ char buf[256]; -+ -+ if (strlen(arg)) { -+ sprintf(buf, format, arg); -+ *var = filp_open(buf, mode, 0); -+ if (IS_ERR(*var) || !*var) { -+ printk(KERN_INFO "Failed to open %s file '%s' (%p).\n", -+ desc, buf, *var); -+ *var = NULL; -+ } -+ } -+} -+ -+static int powerdown_init(int toi_or_resume) -+{ -+ if (!toi_or_resume) -+ return 0; -+ -+ did_suspend_to_both = 0; -+ -+ open_file("/proc/acpi/button/%s/state", lid_state_file, &lid_file, -+ O_RDONLY, "lid"); -+ -+ if (strlen(wake_alarm_dir)) { -+ open_file("/sys/class/rtc/%s/wakealarm", wake_alarm_dir, -+ &alarm_file, O_WRONLY, "alarm"); -+ -+ open_file("/sys/class/rtc/%s/since_epoch", wake_alarm_dir, -+ &epoch_file, O_RDONLY, "epoch"); -+ } -+ -+ return 0; -+} -+ -+static int lid_closed(void) -+{ -+ char array[25]; -+ ssize_t size; -+ loff_t pos = 0; -+ -+ if (!lid_file) -+ return 0; -+ -+ size = vfs_read(lid_file, (char __user *) array, 25, &pos); -+ if ((int) size < 1) { -+ printk(KERN_INFO "Failed to read lid state file (%d).\n", -+ (int) size); -+ return 0; -+ } -+ -+ if (!strcmp(array, "state: closed\n")) -+ return 1; -+ -+ return 0; -+} -+ -+static void write_alarm_file(int value) -+{ -+ ssize_t size; -+ char buf[40]; -+ loff_t pos = 0; -+ -+ if (!alarm_file) -+ return; -+ -+ sprintf(buf, "%d\n", value); -+ -+ size = vfs_write(alarm_file, (char __user *)buf, strlen(buf), &pos); -+ -+ if (size < 0) -+ printk(KERN_INFO "Error %d writing alarm value %s.\n", -+ (int) size, buf); -+} -+ -+/** -+ * toi_check_resleep: See whether to powerdown again after waking. -+ * -+ * After waking, check whether we should powerdown again in a (usually -+ * different) way. We only do this if the lid switch is still closed. -+ */ -+void toi_check_resleep(void) -+{ -+ /* We only return if we suspended to ram and woke. */ -+ if (lid_closed() && post_wake_state >= 0) -+ __toi_power_down(post_wake_state); -+} -+ -+void toi_power_down(void) -+{ -+ if (alarm_file && wake_delay) { -+ char array[25]; -+ loff_t pos = 0; -+ size_t size = vfs_read(epoch_file, (char __user *) array, 25, -+ &pos); -+ -+ if (((int) size) < 1) -+ printk(KERN_INFO "Failed to read epoch file (%d).\n", -+ (int) size); -+ else { -+ unsigned long since_epoch; -+ if (!strict_strtoul(array, 0, &since_epoch)) { -+ /* Clear any wakeup time. */ -+ write_alarm_file(0); -+ -+ /* Set new wakeup time. */ -+ write_alarm_file(since_epoch + wake_delay); -+ } -+ } -+ } -+ -+ __toi_power_down(toi_poweroff_method); -+ -+ toi_check_resleep(); -+} -+EXPORT_SYMBOL_GPL(toi_power_down); -+ -+static struct toi_sysfs_data sysfs_params[] = { -+#if defined(CONFIG_ACPI) -+ SYSFS_STRING("lid_file", SYSFS_RW, lid_state_file, 256, 0, NULL), -+ SYSFS_INT("wake_delay", SYSFS_RW, &wake_delay, 0, INT_MAX, 0, NULL), -+ SYSFS_STRING("wake_alarm_dir", SYSFS_RW, wake_alarm_dir, 256, 0, NULL), -+ SYSFS_INT("post_wake_state", SYSFS_RW, &post_wake_state, -1, 5, 0, -+ NULL), -+ SYSFS_UL("powerdown_method", SYSFS_RW, &toi_poweroff_method, 0, 5, 0), -+ SYSFS_INT("did_suspend_to_both", SYSFS_READONLY, &did_suspend_to_both, -+ 0, 0, 0, NULL) -+#endif -+}; -+ -+static struct toi_module_ops powerdown_ops = { -+ .type = MISC_HIDDEN_MODULE, -+ .name = "poweroff", -+ .initialise = powerdown_init, -+ .cleanup = powerdown_cleanup, -+ .directory = "[ROOT]", -+ .module = THIS_MODULE, -+ .sysfs_data = sysfs_params, -+ .num_sysfs_entries = sizeof(sysfs_params) / -+ sizeof(struct toi_sysfs_data), -+}; -+ -+int toi_poweroff_init(void) -+{ -+ return toi_register_module(&powerdown_ops); -+} -+ -+void toi_poweroff_exit(void) -+{ -+ toi_unregister_module(&powerdown_ops); -+} -diff --git a/kernel/power/tuxonice_power_off.h b/kernel/power/tuxonice_power_off.h -new file mode 100644 -index 0000000..9aa0ea8 ---- /dev/null -+++ b/kernel/power/tuxonice_power_off.h -@@ -0,0 +1,24 @@ -+/* -+ * kernel/power/tuxonice_power_off.h -+ * -+ * Copyright (C) 2006-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * Support for the powering down. -+ */ -+ -+int toi_pm_state_finish(void); -+void toi_power_down(void); -+extern unsigned long toi_poweroff_method; -+int toi_poweroff_init(void); -+void toi_poweroff_exit(void); -+void toi_check_resleep(void); -+ -+extern int platform_begin(int platform_mode); -+extern int platform_pre_snapshot(int platform_mode); -+extern void platform_leave(int platform_mode); -+extern void platform_end(int platform_mode); -+extern void platform_finish(int platform_mode); -+extern int platform_pre_restore(int platform_mode); -+extern void platform_restore_cleanup(int platform_mode); -diff --git a/kernel/power/tuxonice_prepare_image.c b/kernel/power/tuxonice_prepare_image.c -new file mode 100644 -index 0000000..e58225e ---- /dev/null -+++ b/kernel/power/tuxonice_prepare_image.c -@@ -0,0 +1,1093 @@ -+/* -+ * kernel/power/tuxonice_prepare_image.c -+ * -+ * Copyright (C) 2003-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * We need to eat memory until we can: -+ * 1. Perform the save without changing anything (RAM_NEEDED < #pages) -+ * 2. Fit it all in available space (toiActiveAllocator->available_space() >= -+ * main_storage_needed()) -+ * 3. Reload the pagedir and pageset1 to places that don't collide with their -+ * final destinations, not knowing to what extent the resumed kernel will -+ * overlap with the one loaded at boot time. I think the resumed kernel -+ * should overlap completely, but I don't want to rely on this as it is -+ * an unproven assumption. We therefore assume there will be no overlap at -+ * all (worse case). -+ * 4. Meet the user's requested limit (if any) on the size of the image. -+ * The limit is in MB, so pages/256 (assuming 4K pages). -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include "tuxonice_pageflags.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_io.h" -+#include "tuxonice_ui.h" -+#include "tuxonice_prepare_image.h" -+#include "tuxonice.h" -+#include "tuxonice_extent.h" -+#include "tuxonice_checksum.h" -+#include "tuxonice_sysfs.h" -+#include "tuxonice_alloc.h" -+#include "tuxonice_atomic_copy.h" -+ -+static unsigned long num_nosave, main_storage_allocated, storage_limit, -+ header_storage_needed; -+unsigned long extra_pd1_pages_allowance = -+ CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE; -+long image_size_limit; -+static int no_ps2_needed; -+ -+struct attention_list { -+ struct task_struct *task; -+ struct attention_list *next; -+}; -+ -+static struct attention_list *attention_list; -+ -+#define PAGESET1 0 -+#define PAGESET2 1 -+ -+void free_attention_list(void) -+{ -+ struct attention_list *last = NULL; -+ -+ while (attention_list) { -+ last = attention_list; -+ attention_list = attention_list->next; -+ toi_kfree(6, last, sizeof(*last)); -+ } -+} -+ -+static int build_attention_list(void) -+{ -+ int i, task_count = 0; -+ struct task_struct *p; -+ struct attention_list *next; -+ -+ /* -+ * Count all userspace process (with task->mm) marked PF_NOFREEZE. -+ */ -+ read_lock(&tasklist_lock); -+ for_each_process(p) -+ if ((p->flags & PF_NOFREEZE) || p == current) -+ task_count++; -+ read_unlock(&tasklist_lock); -+ -+ /* -+ * Allocate attention list structs. -+ */ -+ for (i = 0; i < task_count; i++) { -+ struct attention_list *this = -+ toi_kzalloc(6, sizeof(struct attention_list), -+ TOI_WAIT_GFP); -+ if (!this) { -+ printk(KERN_INFO "Failed to allocate slab for " -+ "attention list.\n"); -+ free_attention_list(); -+ return 1; -+ } -+ this->next = NULL; -+ if (attention_list) -+ this->next = attention_list; -+ attention_list = this; -+ } -+ -+ next = attention_list; -+ read_lock(&tasklist_lock); -+ for_each_process(p) -+ if ((p->flags & PF_NOFREEZE) || p == current) { -+ next->task = p; -+ next = next->next; -+ } -+ read_unlock(&tasklist_lock); -+ return 0; -+} -+ -+static void pageset2_full(void) -+{ -+ struct zone *zone; -+ struct page *page; -+ unsigned long flags; -+ int i; -+ -+ for_each_populated_zone(zone) { -+ spin_lock_irqsave(&zone->lru_lock, flags); -+ for_each_lru(i) { -+ if (!zone_page_state(zone, NR_LRU_BASE + i)) -+ continue; -+ -+ list_for_each_entry(page, &zone->lru[i].list, lru) { -+ struct address_space *mapping; -+ -+ mapping = page_mapping(page); -+ if (!mapping || !mapping->host || -+ !(mapping->host->i_flags & S_ATOMIC_COPY)) -+ SetPagePageset2(page); -+ } -+ } -+ spin_unlock_irqrestore(&zone->lru_lock, flags); -+ } -+} -+ -+/* -+ * toi_mark_task_as_pageset -+ * Functionality : Marks all the saveable pages belonging to a given process -+ * as belonging to a particular pageset. -+ */ -+ -+static void toi_mark_task_as_pageset(struct task_struct *t, int pageset2) -+{ -+ struct vm_area_struct *vma; -+ struct mm_struct *mm; -+ -+ mm = t->active_mm; -+ -+ if (!mm || !mm->mmap) -+ return; -+ -+ if (!irqs_disabled()) -+ down_read(&mm->mmap_sem); -+ -+ for (vma = mm->mmap; vma; vma = vma->vm_next) { -+ unsigned long posn; -+ -+ if (!vma->vm_start || -+ vma->vm_flags & (VM_IO | VM_RESERVED | VM_PFNMAP)) -+ continue; -+ -+ for (posn = vma->vm_start; posn < vma->vm_end; -+ posn += PAGE_SIZE) { -+ struct page *page = follow_page(vma, posn, 0); -+ struct address_space *mapping; -+ -+ if (!page || !pfn_valid(page_to_pfn(page))) -+ continue; -+ -+ mapping = page_mapping(page); -+ if (mapping && mapping->host && -+ mapping->host->i_flags & S_ATOMIC_COPY) -+ continue; -+ -+ if (pageset2) -+ SetPagePageset2(page); -+ else { -+ ClearPagePageset2(page); -+ SetPagePageset1(page); -+ } -+ } -+ } -+ -+ if (!irqs_disabled()) -+ up_read(&mm->mmap_sem); -+} -+ -+static void mark_tasks(int pageset) -+{ -+ struct task_struct *p; -+ -+ read_lock(&tasklist_lock); -+ for_each_process(p) { -+ if (!p->mm) -+ continue; -+ -+ if (p->flags & PF_KTHREAD) -+ continue; -+ -+ toi_mark_task_as_pageset(p, pageset); -+ } -+ read_unlock(&tasklist_lock); -+ -+} -+ -+/* mark_pages_for_pageset2 -+ * -+ * Description: Mark unshared pages in processes not needed for hibernate as -+ * being able to be written out in a separate pagedir. -+ * HighMem pages are simply marked as pageset2. They won't be -+ * needed during hibernate. -+ */ -+ -+static void toi_mark_pages_for_pageset2(void) -+{ -+ struct attention_list *this = attention_list; -+ -+ memory_bm_clear(pageset2_map); -+ -+ if (test_action_state(TOI_NO_PAGESET2) || no_ps2_needed) -+ return; -+ -+ if (test_action_state(TOI_PAGESET2_FULL)) -+ pageset2_full(); -+ else -+ mark_tasks(PAGESET2); -+ -+ /* -+ * Because the tasks in attention_list are ones related to hibernating, -+ * we know that they won't go away under us. -+ */ -+ -+ while (this) { -+ if (!test_result_state(TOI_ABORTED)) -+ toi_mark_task_as_pageset(this->task, PAGESET1); -+ this = this->next; -+ } -+} -+ -+/* -+ * The atomic copy of pageset1 is stored in pageset2 pages. -+ * But if pageset1 is larger (normally only just after boot), -+ * we need to allocate extra pages to store the atomic copy. -+ * The following data struct and functions are used to handle -+ * the allocation and freeing of that memory. -+ */ -+ -+static unsigned long extra_pages_allocated; -+ -+struct extras { -+ struct page *page; -+ int order; -+ struct extras *next; -+}; -+ -+static struct extras *extras_list; -+ -+/* toi_free_extra_pagedir_memory -+ * -+ * Description: Free previously allocated extra pagedir memory. -+ */ -+void toi_free_extra_pagedir_memory(void) -+{ -+ /* Free allocated pages */ -+ while (extras_list) { -+ struct extras *this = extras_list; -+ int i; -+ -+ extras_list = this->next; -+ -+ for (i = 0; i < (1 << this->order); i++) -+ ClearPageNosave(this->page + i); -+ -+ toi_free_pages(9, this->page, this->order); -+ toi_kfree(7, this, sizeof(*this)); -+ } -+ -+ extra_pages_allocated = 0; -+} -+ -+/* toi_allocate_extra_pagedir_memory -+ * -+ * Description: Allocate memory for making the atomic copy of pagedir1 in the -+ * case where it is bigger than pagedir2. -+ * Arguments: int num_to_alloc: Number of extra pages needed. -+ * Result: int. Number of extra pages we now have allocated. -+ */ -+static int toi_allocate_extra_pagedir_memory(int extra_pages_needed) -+{ -+ int j, order, num_to_alloc = extra_pages_needed - extra_pages_allocated; -+ gfp_t flags = TOI_ATOMIC_GFP; -+ -+ if (num_to_alloc < 1) -+ return 0; -+ -+ order = fls(num_to_alloc); -+ if (order >= MAX_ORDER) -+ order = MAX_ORDER - 1; -+ -+ while (num_to_alloc) { -+ struct page *newpage; -+ unsigned long virt; -+ struct extras *extras_entry; -+ -+ while ((1 << order) > num_to_alloc) -+ order--; -+ -+ extras_entry = (struct extras *) toi_kzalloc(7, -+ sizeof(struct extras), TOI_ATOMIC_GFP); -+ -+ if (!extras_entry) -+ return extra_pages_allocated; -+ -+ virt = toi_get_free_pages(9, flags, order); -+ while (!virt && order) { -+ order--; -+ virt = toi_get_free_pages(9, flags, order); -+ } -+ -+ if (!virt) { -+ toi_kfree(7, extras_entry, sizeof(*extras_entry)); -+ return extra_pages_allocated; -+ } -+ -+ newpage = virt_to_page(virt); -+ -+ extras_entry->page = newpage; -+ extras_entry->order = order; -+ extras_entry->next = NULL; -+ -+ if (extras_list) -+ extras_entry->next = extras_list; -+ -+ extras_list = extras_entry; -+ -+ for (j = 0; j < (1 << order); j++) { -+ SetPageNosave(newpage + j); -+ SetPagePageset1Copy(newpage + j); -+ } -+ -+ extra_pages_allocated += (1 << order); -+ num_to_alloc -= (1 << order); -+ } -+ -+ return extra_pages_allocated; -+} -+ -+/* -+ * real_nr_free_pages: Count pcp pages for a zone type or all zones -+ * (-1 for all, otherwise zone_idx() result desired). -+ */ -+unsigned long real_nr_free_pages(unsigned long zone_idx_mask) -+{ -+ struct zone *zone; -+ int result = 0, cpu; -+ -+ /* PCP lists */ -+ for_each_populated_zone(zone) { -+ if (!(zone_idx_mask & (1 << zone_idx(zone)))) -+ continue; -+ -+ for_each_online_cpu(cpu) { -+ struct per_cpu_pageset *pset = zone_pcp(zone, cpu); -+ struct per_cpu_pages *pcp = &pset->pcp; -+ result += pcp->count; -+ } -+ -+ result += zone_page_state(zone, NR_FREE_PAGES); -+ } -+ return result; -+} -+EXPORT_SYMBOL_GPL(real_nr_free_pages); -+ -+/* -+ * Discover how much extra memory will be required by the drivers -+ * when they're asked to hibernate. We can then ensure that amount -+ * of memory is available when we really want it. -+ */ -+static void get_extra_pd1_allowance(void) -+{ -+ unsigned long orig_num_free = real_nr_free_pages(all_zones_mask), final; -+ -+ toi_prepare_status(CLEAR_BAR, "Finding allowance for drivers."); -+ -+ if (toi_go_atomic(PMSG_FREEZE, 1)) -+ return; -+ -+ final = real_nr_free_pages(all_zones_mask); -+ toi_end_atomic(ATOMIC_ALL_STEPS, 1, 0); -+ -+ extra_pd1_pages_allowance = (orig_num_free > final) ? -+ orig_num_free - final + MIN_EXTRA_PAGES_ALLOWANCE : -+ MIN_EXTRA_PAGES_ALLOWANCE; -+} -+ -+/* -+ * Amount of storage needed, possibly taking into account the -+ * expected compression ratio and possibly also ignoring our -+ * allowance for extra pages. -+ */ -+static unsigned long main_storage_needed(int use_ecr, -+ int ignore_extra_pd1_allow) -+{ -+ return (pagedir1.size + pagedir2.size + -+ (ignore_extra_pd1_allow ? 0 : extra_pd1_pages_allowance)) * -+ (use_ecr ? toi_expected_compression_ratio() : 100) / 100; -+} -+ -+/* -+ * Storage needed for the image header, in bytes until the return. -+ */ -+unsigned long get_header_storage_needed(void) -+{ -+ unsigned long bytes = sizeof(struct toi_header) + -+ toi_header_storage_for_modules() + -+ toi_pageflags_space_needed() + -+ fs_info_space_needed(); -+ -+ return DIV_ROUND_UP(bytes, PAGE_SIZE); -+} -+EXPORT_SYMBOL_GPL(get_header_storage_needed); -+ -+/* -+ * When freeing memory, pages from either pageset might be freed. -+ * -+ * When seeking to free memory to be able to hibernate, for every ps1 page -+ * freed, we need 2 less pages for the atomic copy because there is one less -+ * page to copy and one more page into which data can be copied. -+ * -+ * Freeing ps2 pages saves us nothing directly. No more memory is available -+ * for the atomic copy. Indirectly, a ps1 page might be freed (slab?), but -+ * that's too much work to figure out. -+ * -+ * => ps1_to_free functions -+ * -+ * Of course if we just want to reduce the image size, because of storage -+ * limitations or an image size limit either ps will do. -+ * -+ * => any_to_free function -+ */ -+ -+static unsigned long lowpages_usable_for_highmem_copy(void) -+{ -+ unsigned long needed = get_lowmem_size(pagedir1) + -+ extra_pd1_pages_allowance + MIN_FREE_RAM + -+ toi_memory_for_modules(0), -+ available = get_lowmem_size(pagedir2) + -+ real_nr_free_low_pages() + extra_pages_allocated; -+ -+ return available > needed ? available - needed : 0; -+} -+ -+static unsigned long highpages_ps1_to_free(void) -+{ -+ unsigned long need = get_highmem_size(pagedir1), -+ available = get_highmem_size(pagedir2) + -+ real_nr_free_high_pages() + -+ lowpages_usable_for_highmem_copy(); -+ -+ return need > available ? DIV_ROUND_UP(need - available, 2) : 0; -+} -+ -+static unsigned long lowpages_ps1_to_free(void) -+{ -+ unsigned long needed = get_lowmem_size(pagedir1) + -+ extra_pd1_pages_allowance + MIN_FREE_RAM + -+ toi_memory_for_modules(0), -+ available = get_lowmem_size(pagedir2) + -+ real_nr_free_low_pages() + extra_pages_allocated; -+ -+ return needed > available ? DIV_ROUND_UP(needed - available, 2) : 0; -+} -+ -+static unsigned long current_image_size(void) -+{ -+ return pagedir1.size + pagedir2.size + header_storage_needed; -+} -+ -+static unsigned long storage_still_required(void) -+{ -+ unsigned long needed = main_storage_needed(1, 1); -+ return needed > storage_limit ? needed - storage_limit : 0; -+} -+ -+static unsigned long ram_still_required(void) -+{ -+ unsigned long needed = MIN_FREE_RAM + toi_memory_for_modules(0) + -+ 2 * extra_pd1_pages_allowance, -+ available = real_nr_free_low_pages(); -+ return needed > available ? needed - available : 0; -+} -+ -+static unsigned long any_to_free(int use_image_size_limit) -+{ -+ int use_soft_limit = use_image_size_limit && image_size_limit > 0; -+ unsigned long current_size = current_image_size(), -+ soft_limit = use_soft_limit ? (image_size_limit << 8) : 0, -+ to_free = use_soft_limit ? (current_size > soft_limit ? -+ current_size - soft_limit : 0) : 0, -+ storage_limit = storage_still_required(), -+ ram_limit = ram_still_required(), -+ first_max = max(to_free, storage_limit); -+ -+ return max(first_max, ram_limit); -+} -+ -+static int need_pageset2(void) -+{ -+ return (real_nr_free_low_pages() + extra_pages_allocated - -+ 2 * extra_pd1_pages_allowance - MIN_FREE_RAM - -+ toi_memory_for_modules(0) - pagedir1.size) < pagedir2.size; -+} -+ -+/* amount_needed -+ * -+ * Calculates the amount by which the image size needs to be reduced to meet -+ * our constraints. -+ */ -+static unsigned long amount_needed(int use_image_size_limit) -+{ -+ return max(highpages_ps1_to_free() + lowpages_ps1_to_free(), -+ any_to_free(use_image_size_limit)); -+} -+ -+static int image_not_ready(int use_image_size_limit) -+{ -+ toi_message(TOI_EAT_MEMORY, TOI_LOW, 1, -+ "Amount still needed (%lu) > 0:%u," -+ " Storage allocd: %lu < %lu: %u.\n", -+ amount_needed(use_image_size_limit), -+ (amount_needed(use_image_size_limit) > 0), -+ main_storage_allocated, -+ main_storage_needed(1, 1), -+ main_storage_allocated < main_storage_needed(1, 1)); -+ -+ toi_cond_pause(0, NULL); -+ -+ return (amount_needed(use_image_size_limit) > 0) || -+ main_storage_allocated < main_storage_needed(1, 1); -+} -+ -+static void display_failure_reason(int tries_exceeded) -+{ -+ unsigned long storage_required = storage_still_required(), -+ ram_required = ram_still_required(), -+ high_ps1 = highpages_ps1_to_free(), -+ low_ps1 = lowpages_ps1_to_free(); -+ -+ printk(KERN_INFO "Failed to prepare the image because...\n"); -+ -+ if (!storage_limit) { -+ printk(KERN_INFO "- You need some storage available to be " -+ "able to hibernate.\n"); -+ return; -+ } -+ -+ if (tries_exceeded) -+ printk(KERN_INFO "- The maximum number of iterations was " -+ "reached without successfully preparing the " -+ "image.\n"); -+ -+ if (storage_required) { -+ printk(KERN_INFO " - We need at least %lu pages of storage " -+ "(ignoring the header), but only have %lu.\n", -+ main_storage_needed(1, 1), -+ main_storage_allocated); -+ set_abort_result(TOI_INSUFFICIENT_STORAGE); -+ } -+ -+ if (ram_required) { -+ printk(KERN_INFO " - We need %lu more free pages of low " -+ "memory.\n", ram_required); -+ printk(KERN_INFO " Minimum free : %8d\n", MIN_FREE_RAM); -+ printk(KERN_INFO " + Reqd. by modules : %8lu\n", -+ toi_memory_for_modules(0)); -+ printk(KERN_INFO " + 2 * extra allow : %8lu\n", -+ 2 * extra_pd1_pages_allowance); -+ printk(KERN_INFO " - Currently free : %8lu\n", -+ real_nr_free_low_pages()); -+ printk(KERN_INFO " : ========\n"); -+ printk(KERN_INFO " Still needed : %8lu\n", -+ ram_required); -+ -+ /* Print breakdown of memory needed for modules */ -+ toi_memory_for_modules(1); -+ set_abort_result(TOI_UNABLE_TO_FREE_ENOUGH_MEMORY); -+ } -+ -+ if (high_ps1) { -+ printk(KERN_INFO "- We need to free %lu highmem pageset 1 " -+ "pages.\n", high_ps1); -+ set_abort_result(TOI_UNABLE_TO_FREE_ENOUGH_MEMORY); -+ } -+ -+ if (low_ps1) { -+ printk(KERN_INFO " - We need to free %ld lowmem pageset 1 " -+ "pages.\n", low_ps1); -+ set_abort_result(TOI_UNABLE_TO_FREE_ENOUGH_MEMORY); -+ } -+} -+ -+static void display_stats(int always, int sub_extra_pd1_allow) -+{ -+ char buffer[255]; -+ snprintf(buffer, 254, -+ "Free:%lu(%lu). Sets:%lu(%lu),%lu(%lu). " -+ "Nosave:%lu-%lu=%lu. Storage:%lu/%lu(%lu=>%lu). " -+ "Needed:%lu,%lu,%lu(%u,%lu,%lu,%ld) (PS2:%s)\n", -+ -+ /* Free */ -+ real_nr_free_pages(all_zones_mask), -+ real_nr_free_low_pages(), -+ -+ /* Sets */ -+ pagedir1.size, pagedir1.size - get_highmem_size(pagedir1), -+ pagedir2.size, pagedir2.size - get_highmem_size(pagedir2), -+ -+ /* Nosave */ -+ num_nosave, extra_pages_allocated, -+ num_nosave - extra_pages_allocated, -+ -+ /* Storage */ -+ main_storage_allocated, -+ storage_limit, -+ main_storage_needed(1, sub_extra_pd1_allow), -+ main_storage_needed(1, 1), -+ -+ /* Needed */ -+ lowpages_ps1_to_free(), highpages_ps1_to_free(), -+ any_to_free(1), -+ MIN_FREE_RAM, toi_memory_for_modules(0), -+ extra_pd1_pages_allowance, -+ image_size_limit, -+ -+ need_pageset2() ? "yes" : "no"); -+ -+ if (always) -+ printk("%s", buffer); -+ else -+ toi_message(TOI_EAT_MEMORY, TOI_MEDIUM, 1, buffer); -+} -+ -+/* generate_free_page_map -+ * -+ * Description: This routine generates a bitmap of free pages from the -+ * lists used by the memory manager. We then use the bitmap -+ * to quickly calculate which pages to save and in which -+ * pagesets. -+ */ -+static void generate_free_page_map(void) -+{ -+ int order, cpu, t; -+ unsigned long flags, i; -+ struct zone *zone; -+ struct list_head *curr; -+ unsigned long pfn; -+ struct page *page; -+ -+ for_each_populated_zone(zone) { -+ -+ if (!zone->spanned_pages) -+ continue; -+ -+ spin_lock_irqsave(&zone->lock, flags); -+ -+ for (i = 0; i < zone->spanned_pages; i++) { -+ pfn = ZONE_START(zone) + i; -+ -+ if (!pfn_valid(pfn)) -+ continue; -+ -+ page = pfn_to_page(pfn); -+ -+ ClearPageNosaveFree(page); -+ } -+ -+ for_each_migratetype_order(order, t) { -+ list_for_each(curr, -+ &zone->free_area[order].free_list[t]) { -+ unsigned long j; -+ -+ pfn = page_to_pfn(list_entry(curr, struct page, -+ lru)); -+ for (j = 0; j < (1UL << order); j++) -+ SetPageNosaveFree(pfn_to_page(pfn + j)); -+ } -+ } -+ -+ for_each_online_cpu(cpu) { -+ struct per_cpu_pageset *pset = zone_pcp(zone, cpu); -+ struct per_cpu_pages *pcp = &pset->pcp; -+ struct page *page; -+ int t; -+ -+ for (t = 0; t < MIGRATE_PCPTYPES; t++) -+ list_for_each_entry(page, &pcp->lists[t], lru) -+ SetPageNosaveFree(page); -+ } -+ -+ spin_unlock_irqrestore(&zone->lock, flags); -+ } -+} -+ -+/* size_of_free_region -+ * -+ * Description: Return the number of pages that are free, beginning with and -+ * including this one. -+ */ -+static int size_of_free_region(struct zone *zone, unsigned long start_pfn) -+{ -+ unsigned long this_pfn = start_pfn, -+ end_pfn = ZONE_START(zone) + zone->spanned_pages - 1; -+ -+ while (this_pfn <= end_pfn && PageNosaveFree(pfn_to_page(this_pfn))) -+ this_pfn++; -+ -+ return this_pfn - start_pfn; -+} -+ -+/* flag_image_pages -+ * -+ * This routine generates our lists of pages to be stored in each -+ * pageset. Since we store the data using extents, and adding new -+ * extents might allocate a new extent page, this routine may well -+ * be called more than once. -+ */ -+static void flag_image_pages(int atomic_copy) -+{ -+ int num_free = 0; -+ unsigned long loop; -+ struct zone *zone; -+ -+ pagedir1.size = 0; -+ pagedir2.size = 0; -+ -+ set_highmem_size(pagedir1, 0); -+ set_highmem_size(pagedir2, 0); -+ -+ num_nosave = 0; -+ -+ memory_bm_clear(pageset1_map); -+ -+ generate_free_page_map(); -+ -+ /* -+ * Pages not to be saved are marked Nosave irrespective of being -+ * reserved. -+ */ -+ for_each_populated_zone(zone) { -+ int highmem = is_highmem(zone); -+ -+ for (loop = 0; loop < zone->spanned_pages; loop++) { -+ unsigned long pfn = ZONE_START(zone) + loop; -+ struct page *page; -+ int chunk_size; -+ -+ if (!pfn_valid(pfn)) -+ continue; -+ -+ chunk_size = size_of_free_region(zone, pfn); -+ if (chunk_size) { -+ num_free += chunk_size; -+ loop += chunk_size - 1; -+ continue; -+ } -+ -+ page = pfn_to_page(pfn); -+ -+ if (PageNosave(page)) { -+ num_nosave++; -+ continue; -+ } -+ -+ page = highmem ? saveable_highmem_page(zone, pfn) : -+ saveable_page(zone, pfn); -+ -+ if (!page) { -+ num_nosave++; -+ continue; -+ } -+ -+ if (PagePageset2(page)) { -+ pagedir2.size++; -+ if (PageHighMem(page)) -+ inc_highmem_size(pagedir2); -+ else -+ SetPagePageset1Copy(page); -+ if (PageResave(page)) { -+ SetPagePageset1(page); -+ ClearPagePageset1Copy(page); -+ pagedir1.size++; -+ if (PageHighMem(page)) -+ inc_highmem_size(pagedir1); -+ } -+ } else { -+ pagedir1.size++; -+ SetPagePageset1(page); -+ if (PageHighMem(page)) -+ inc_highmem_size(pagedir1); -+ } -+ } -+ } -+ -+ if (!atomic_copy) -+ toi_message(TOI_EAT_MEMORY, TOI_MEDIUM, 0, -+ "Count data pages: Set1 (%d) + Set2 (%d) + Nosave (%ld)" -+ " + NumFree (%d) = %d.\n", -+ pagedir1.size, pagedir2.size, num_nosave, num_free, -+ pagedir1.size + pagedir2.size + num_nosave + num_free); -+} -+ -+void toi_recalculate_image_contents(int atomic_copy) -+{ -+ memory_bm_clear(pageset1_map); -+ if (!atomic_copy) { -+ unsigned long pfn; -+ memory_bm_position_reset(pageset2_map); -+ for (pfn = memory_bm_next_pfn(pageset2_map); -+ pfn != BM_END_OF_MAP; -+ pfn = memory_bm_next_pfn(pageset2_map)) -+ ClearPagePageset1Copy(pfn_to_page(pfn)); -+ /* Need to call this before getting pageset1_size! */ -+ toi_mark_pages_for_pageset2(); -+ } -+ flag_image_pages(atomic_copy); -+ -+ if (!atomic_copy) { -+ storage_limit = toiActiveAllocator->storage_available(); -+ display_stats(0, 0); -+ } -+} -+ -+/* update_image -+ * -+ * Allocate [more] memory and storage for the image. -+ */ -+static void update_image(int ps2_recalc) -+{ -+ int old_header_req; -+ unsigned long seek, wanted, got; -+ -+ /* Include allowance for growth in pagedir1 while writing pagedir 2 */ -+ wanted = pagedir1.size + extra_pd1_pages_allowance - -+ get_lowmem_size(pagedir2); -+ if (wanted > extra_pages_allocated) { -+ got = toi_allocate_extra_pagedir_memory(wanted); -+ if (wanted < got) { -+ toi_message(TOI_EAT_MEMORY, TOI_LOW, 1, -+ "Want %d extra pages for pageset1, got %d.\n", -+ wanted, got); -+ return; -+ } -+ } -+ -+ if (ps2_recalc) -+ goto recalc; -+ -+ thaw_kernel_threads(); -+ -+ /* -+ * Allocate remaining storage space, if possible, up to the -+ * maximum we know we'll need. It's okay to allocate the -+ * maximum if the writer is the swapwriter, but -+ * we don't want to grab all available space on an NFS share. -+ * We therefore ignore the expected compression ratio here, -+ * thereby trying to allocate the maximum image size we could -+ * need (assuming compression doesn't expand the image), but -+ * don't complain if we can't get the full amount we're after. -+ */ -+ -+ do { -+ int result; -+ -+ old_header_req = header_storage_needed; -+ toiActiveAllocator->reserve_header_space(header_storage_needed); -+ -+ /* How much storage is free with the reservation applied? */ -+ storage_limit = toiActiveAllocator->storage_available(); -+ seek = min(storage_limit, main_storage_needed(0, 0)); -+ -+ result = toiActiveAllocator->allocate_storage(seek); -+ if (result) -+ printk("Failed to allocate storage (%d).\n", result); -+ -+ main_storage_allocated = -+ toiActiveAllocator->storage_allocated(); -+ -+ /* Need more header because more storage allocated? */ -+ header_storage_needed = get_header_storage_needed(); -+ -+ } while (header_storage_needed > old_header_req); -+ -+ if (freeze_processes()) -+ set_abort_result(TOI_FREEZING_FAILED); -+ -+recalc: -+ toi_recalculate_image_contents(0); -+} -+ -+/* attempt_to_freeze -+ * -+ * Try to freeze processes. -+ */ -+ -+static int attempt_to_freeze(void) -+{ -+ int result; -+ -+ /* Stop processes before checking again */ -+ thaw_processes(); -+ toi_prepare_status(CLEAR_BAR, "Freezing processes & syncing " -+ "filesystems."); -+ result = freeze_processes(); -+ -+ if (result) -+ set_abort_result(TOI_FREEZING_FAILED); -+ -+ return result; -+} -+ -+/* eat_memory -+ * -+ * Try to free some memory, either to meet hard or soft constraints on the image -+ * characteristics. -+ * -+ * Hard constraints: -+ * - Pageset1 must be < half of memory; -+ * - We must have enough memory free at resume time to have pageset1 -+ * be able to be loaded in pages that don't conflict with where it has to -+ * be restored. -+ * Soft constraints -+ * - User specificied image size limit. -+ */ -+static void eat_memory(void) -+{ -+ unsigned long amount_wanted = 0; -+ int did_eat_memory = 0; -+ -+ /* -+ * Note that if we have enough storage space and enough free memory, we -+ * may exit without eating anything. We give up when the last 10 -+ * iterations ate no extra pages because we're not going to get much -+ * more anyway, but the few pages we get will take a lot of time. -+ * -+ * We freeze processes before beginning, and then unfreeze them if we -+ * need to eat memory until we think we have enough. If our attempts -+ * to freeze fail, we give up and abort. -+ */ -+ -+ amount_wanted = amount_needed(1); -+ -+ switch (image_size_limit) { -+ case -1: /* Don't eat any memory */ -+ if (amount_wanted > 0) { -+ set_abort_result(TOI_WOULD_EAT_MEMORY); -+ return; -+ } -+ break; -+ case -2: /* Free caches only */ -+ drop_pagecache(); -+ toi_recalculate_image_contents(0); -+ amount_wanted = amount_needed(1); -+ break; -+ default: -+ break; -+ } -+ -+ if (amount_wanted > 0 && !test_result_state(TOI_ABORTED) && -+ image_size_limit != -1) { -+ unsigned long request = amount_wanted + 50; -+ -+ toi_prepare_status(CLEAR_BAR, -+ "Seeking to free %ldMB of memory.", -+ MB(amount_wanted)); -+ -+ thaw_kernel_threads(); -+ -+ /* -+ * Ask for too many because shrink_all_memory doesn't -+ * currently return enough most of the time. -+ */ -+ shrink_all_memory(request); -+ -+ did_eat_memory = 1; -+ -+ toi_recalculate_image_contents(0); -+ -+ amount_wanted = amount_needed(1); -+ -+ printk(KERN_DEBUG "Asked shrink_all_memory for %ld pages," -+ "got %ld.\n", request, -+ request - amount_wanted); -+ -+ toi_cond_pause(0, NULL); -+ -+ if (freeze_processes()) -+ set_abort_result(TOI_FREEZING_FAILED); -+ } -+ -+ if (did_eat_memory) -+ toi_recalculate_image_contents(0); -+} -+ -+/* toi_prepare_image -+ * -+ * Entry point to the whole image preparation section. -+ * -+ * We do four things: -+ * - Freeze processes; -+ * - Ensure image size constraints are met; -+ * - Complete all the preparation for saving the image, -+ * including allocation of storage. The only memory -+ * that should be needed when we're finished is that -+ * for actually storing the image (and we know how -+ * much is needed for that because the modules tell -+ * us). -+ * - Make sure that all dirty buffers are written out. -+ */ -+#define MAX_TRIES 2 -+int toi_prepare_image(void) -+{ -+ int result = 1, tries = 1; -+ -+ main_storage_allocated = 0; -+ no_ps2_needed = 0; -+ -+ if (attempt_to_freeze()) -+ return 1; -+ -+ if (!extra_pd1_pages_allowance) -+ get_extra_pd1_allowance(); -+ -+ storage_limit = toiActiveAllocator->storage_available(); -+ -+ if (!storage_limit) { -+ printk(KERN_INFO "No storage available. Didn't try to prepare " -+ "an image.\n"); -+ display_failure_reason(0); -+ set_abort_result(TOI_NOSTORAGE_AVAILABLE); -+ return 1; -+ } -+ -+ if (build_attention_list()) { -+ abort_hibernate(TOI_UNABLE_TO_PREPARE_IMAGE, -+ "Unable to successfully prepare the image.\n"); -+ return 1; -+ } -+ -+ toi_recalculate_image_contents(0); -+ -+ do { -+ toi_prepare_status(CLEAR_BAR, -+ "Preparing Image. Try %d.", tries); -+ -+ eat_memory(); -+ -+ if (test_result_state(TOI_ABORTED)) -+ break; -+ -+ update_image(0); -+ -+ tries++; -+ -+ } while (image_not_ready(1) && tries <= MAX_TRIES && -+ !test_result_state(TOI_ABORTED)); -+ -+ result = image_not_ready(0); -+ -+ if (!test_result_state(TOI_ABORTED)) { -+ if (result) { -+ display_stats(1, 0); -+ display_failure_reason(tries > MAX_TRIES); -+ abort_hibernate(TOI_UNABLE_TO_PREPARE_IMAGE, -+ "Unable to successfully prepare the image.\n"); -+ } else { -+ /* Pageset 2 needed? */ -+ if (!need_pageset2() && -+ test_action_state(TOI_NO_PS2_IF_UNNEEDED)) { -+ no_ps2_needed = 1; -+ toi_recalculate_image_contents(0); -+ update_image(1); -+ } -+ -+ toi_cond_pause(1, "Image preparation complete."); -+ } -+ } -+ -+ return result ? result : allocate_checksum_pages(); -+} -diff --git a/kernel/power/tuxonice_prepare_image.h b/kernel/power/tuxonice_prepare_image.h -new file mode 100644 -index 0000000..7b52e9e ---- /dev/null -+++ b/kernel/power/tuxonice_prepare_image.h -@@ -0,0 +1,36 @@ -+/* -+ * kernel/power/tuxonice_prepare_image.h -+ * -+ * Copyright (C) 2003-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ */ -+ -+#include -+ -+extern int toi_prepare_image(void); -+extern void toi_recalculate_image_contents(int storage_available); -+extern unsigned long real_nr_free_pages(unsigned long zone_idx_mask); -+extern long image_size_limit; -+extern void toi_free_extra_pagedir_memory(void); -+extern unsigned long extra_pd1_pages_allowance; -+extern void free_attention_list(void); -+ -+#define MIN_FREE_RAM 100 -+#define MIN_EXTRA_PAGES_ALLOWANCE 500 -+ -+#define all_zones_mask ((unsigned long) ((1 << MAX_NR_ZONES) - 1)) -+#ifdef CONFIG_HIGHMEM -+#define real_nr_free_high_pages() (real_nr_free_pages(1 << ZONE_HIGHMEM)) -+#define real_nr_free_low_pages() (real_nr_free_pages(all_zones_mask - \ -+ (1 << ZONE_HIGHMEM))) -+#else -+#define real_nr_free_high_pages() (0) -+#define real_nr_free_low_pages() (real_nr_free_pages(all_zones_mask)) -+ -+/* For eat_memory function */ -+#define ZONE_HIGHMEM (MAX_NR_ZONES + 1) -+#endif -+ -+unsigned long get_header_storage_needed(void); -diff --git a/kernel/power/tuxonice_storage.c b/kernel/power/tuxonice_storage.c -new file mode 100644 -index 0000000..be962ee ---- /dev/null -+++ b/kernel/power/tuxonice_storage.c -@@ -0,0 +1,282 @@ -+/* -+ * kernel/power/tuxonice_storage.c -+ * -+ * Copyright (C) 2005-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * Routines for talking to a userspace program that manages storage. -+ * -+ * The kernel side: -+ * - starts the userspace program; -+ * - sends messages telling it when to open and close the connection; -+ * - tells it when to quit; -+ * -+ * The user space side: -+ * - passes messages regarding status; -+ * -+ */ -+ -+#include -+#include -+ -+#include "tuxonice_sysfs.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_netlink.h" -+#include "tuxonice_storage.h" -+#include "tuxonice_ui.h" -+ -+static struct user_helper_data usm_helper_data; -+static struct toi_module_ops usm_ops; -+static int message_received, usm_prepare_count; -+static int storage_manager_last_action, storage_manager_action; -+ -+static int usm_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) -+{ -+ int type; -+ int *data; -+ -+ type = nlh->nlmsg_type; -+ -+ /* A control message: ignore them */ -+ if (type < NETLINK_MSG_BASE) -+ return 0; -+ -+ /* Unknown message: reply with EINVAL */ -+ if (type >= USM_MSG_MAX) -+ return -EINVAL; -+ -+ /* All operations require privileges, even GET */ -+ if (security_netlink_recv(skb, CAP_NET_ADMIN)) -+ return -EPERM; -+ -+ /* Only allow one task to receive NOFREEZE privileges */ -+ if (type == NETLINK_MSG_NOFREEZE_ME && usm_helper_data.pid != -1) -+ return -EBUSY; -+ -+ data = (int *) NLMSG_DATA(nlh); -+ -+ switch (type) { -+ case USM_MSG_SUCCESS: -+ case USM_MSG_FAILED: -+ message_received = type; -+ complete(&usm_helper_data.wait_for_process); -+ break; -+ default: -+ printk(KERN_INFO "Storage manager doesn't recognise " -+ "message %d.\n", type); -+ } -+ -+ return 1; -+} -+ -+#ifdef CONFIG_NET -+static int activations; -+ -+int toi_activate_storage(int force) -+{ -+ int tries = 1; -+ -+ if (usm_helper_data.pid == -1 || !usm_ops.enabled) -+ return 0; -+ -+ message_received = 0; -+ activations++; -+ -+ if (activations > 1 && !force) -+ return 0; -+ -+ while ((!message_received || message_received == USM_MSG_FAILED) && -+ tries < 2) { -+ toi_prepare_status(DONT_CLEAR_BAR, "Activate storage attempt " -+ "%d.\n", tries); -+ -+ init_completion(&usm_helper_data.wait_for_process); -+ -+ toi_send_netlink_message(&usm_helper_data, -+ USM_MSG_CONNECT, -+ NULL, 0); -+ -+ /* Wait 2 seconds for the userspace process to make contact */ -+ wait_for_completion_timeout(&usm_helper_data.wait_for_process, -+ 2*HZ); -+ -+ tries++; -+ } -+ -+ return 0; -+} -+ -+int toi_deactivate_storage(int force) -+{ -+ if (usm_helper_data.pid == -1 || !usm_ops.enabled) -+ return 0; -+ -+ message_received = 0; -+ activations--; -+ -+ if (activations && !force) -+ return 0; -+ -+ init_completion(&usm_helper_data.wait_for_process); -+ -+ toi_send_netlink_message(&usm_helper_data, -+ USM_MSG_DISCONNECT, -+ NULL, 0); -+ -+ wait_for_completion_timeout(&usm_helper_data.wait_for_process, 2*HZ); -+ -+ if (!message_received || message_received == USM_MSG_FAILED) { -+ printk(KERN_INFO "Returning failure disconnecting storage.\n"); -+ return 1; -+ } -+ -+ return 0; -+} -+#endif -+ -+static void storage_manager_simulate(void) -+{ -+ printk(KERN_INFO "--- Storage manager simulate ---\n"); -+ toi_prepare_usm(); -+ schedule(); -+ printk(KERN_INFO "--- Activate storage 1 ---\n"); -+ toi_activate_storage(1); -+ schedule(); -+ printk(KERN_INFO "--- Deactivate storage 1 ---\n"); -+ toi_deactivate_storage(1); -+ schedule(); -+ printk(KERN_INFO "--- Cleanup usm ---\n"); -+ toi_cleanup_usm(); -+ schedule(); -+ printk(KERN_INFO "--- Storage manager simulate ends ---\n"); -+} -+ -+static int usm_storage_needed(void) -+{ -+ return strlen(usm_helper_data.program); -+} -+ -+static int usm_save_config_info(char *buf) -+{ -+ int len = strlen(usm_helper_data.program); -+ memcpy(buf, usm_helper_data.program, len); -+ return len; -+} -+ -+static void usm_load_config_info(char *buf, int size) -+{ -+ /* Don't load the saved path if one has already been set */ -+ if (usm_helper_data.program[0]) -+ return; -+ -+ memcpy(usm_helper_data.program, buf, size); -+} -+ -+static int usm_memory_needed(void) -+{ -+ /* ball park figure of 32 pages */ -+ return 32 * PAGE_SIZE; -+} -+ -+/* toi_prepare_usm -+ */ -+int toi_prepare_usm(void) -+{ -+ usm_prepare_count++; -+ -+ if (usm_prepare_count > 1 || !usm_ops.enabled) -+ return 0; -+ -+ usm_helper_data.pid = -1; -+ -+ if (!*usm_helper_data.program) -+ return 0; -+ -+ toi_netlink_setup(&usm_helper_data); -+ -+ if (usm_helper_data.pid == -1) -+ printk(KERN_INFO "TuxOnIce Storage Manager wanted, but couldn't" -+ " start it.\n"); -+ -+ toi_activate_storage(0); -+ -+ return usm_helper_data.pid != -1; -+} -+ -+void toi_cleanup_usm(void) -+{ -+ usm_prepare_count--; -+ -+ if (usm_helper_data.pid > -1 && !usm_prepare_count) { -+ toi_deactivate_storage(0); -+ toi_netlink_close(&usm_helper_data); -+ } -+} -+ -+static void storage_manager_activate(void) -+{ -+ if (storage_manager_action == storage_manager_last_action) -+ return; -+ -+ if (storage_manager_action) -+ toi_prepare_usm(); -+ else -+ toi_cleanup_usm(); -+ -+ storage_manager_last_action = storage_manager_action; -+} -+ -+/* -+ * User interface specific /sys/power/tuxonice entries. -+ */ -+ -+static struct toi_sysfs_data sysfs_params[] = { -+ SYSFS_NONE("simulate_atomic_copy", storage_manager_simulate), -+ SYSFS_INT("enabled", SYSFS_RW, &usm_ops.enabled, 0, 1, 0, NULL), -+ SYSFS_STRING("program", SYSFS_RW, usm_helper_data.program, 254, 0, -+ NULL), -+ SYSFS_INT("activate_storage", SYSFS_RW , &storage_manager_action, 0, 1, -+ 0, storage_manager_activate) -+}; -+ -+static struct toi_module_ops usm_ops = { -+ .type = MISC_MODULE, -+ .name = "usm", -+ .directory = "storage_manager", -+ .module = THIS_MODULE, -+ .storage_needed = usm_storage_needed, -+ .save_config_info = usm_save_config_info, -+ .load_config_info = usm_load_config_info, -+ .memory_needed = usm_memory_needed, -+ -+ .sysfs_data = sysfs_params, -+ .num_sysfs_entries = sizeof(sysfs_params) / -+ sizeof(struct toi_sysfs_data), -+}; -+ -+/* toi_usm_sysfs_init -+ * Description: Boot time initialisation for user interface. -+ */ -+int toi_usm_init(void) -+{ -+ usm_helper_data.nl = NULL; -+ usm_helper_data.program[0] = '\0'; -+ usm_helper_data.pid = -1; -+ usm_helper_data.skb_size = 0; -+ usm_helper_data.pool_limit = 6; -+ usm_helper_data.netlink_id = NETLINK_TOI_USM; -+ usm_helper_data.name = "userspace storage manager"; -+ usm_helper_data.rcv_msg = usm_user_rcv_msg; -+ usm_helper_data.interface_version = 2; -+ usm_helper_data.must_init = 0; -+ init_completion(&usm_helper_data.wait_for_process); -+ -+ return toi_register_module(&usm_ops); -+} -+ -+void toi_usm_exit(void) -+{ -+ toi_netlink_close_complete(&usm_helper_data); -+ toi_unregister_module(&usm_ops); -+} -diff --git a/kernel/power/tuxonice_storage.h b/kernel/power/tuxonice_storage.h -new file mode 100644 -index 0000000..8c6b5a7 ---- /dev/null -+++ b/kernel/power/tuxonice_storage.h -@@ -0,0 +1,45 @@ -+/* -+ * kernel/power/tuxonice_storage.h -+ * -+ * Copyright (C) 2005-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ */ -+ -+#ifdef CONFIG_NET -+int toi_prepare_usm(void); -+void toi_cleanup_usm(void); -+ -+int toi_activate_storage(int force); -+int toi_deactivate_storage(int force); -+extern int toi_usm_init(void); -+extern void toi_usm_exit(void); -+#else -+static inline int toi_usm_init(void) { return 0; } -+static inline void toi_usm_exit(void) { } -+ -+static inline int toi_activate_storage(int force) -+{ -+ return 0; -+} -+ -+static inline int toi_deactivate_storage(int force) -+{ -+ return 0; -+} -+ -+static inline int toi_prepare_usm(void) { return 0; } -+static inline void toi_cleanup_usm(void) { } -+#endif -+ -+enum { -+ USM_MSG_BASE = 0x10, -+ -+ /* Kernel -> Userspace */ -+ USM_MSG_CONNECT = 0x30, -+ USM_MSG_DISCONNECT = 0x31, -+ USM_MSG_SUCCESS = 0x40, -+ USM_MSG_FAILED = 0x41, -+ -+ USM_MSG_MAX, -+}; -diff --git a/kernel/power/tuxonice_swap.c b/kernel/power/tuxonice_swap.c -new file mode 100644 -index 0000000..f55ef5e ---- /dev/null -+++ b/kernel/power/tuxonice_swap.c -@@ -0,0 +1,487 @@ -+/* -+ * kernel/power/tuxonice_swap.c -+ * -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * Distributed under GPLv2. -+ * -+ * This file encapsulates functions for usage of swap space as a -+ * backing store. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "tuxonice.h" -+#include "tuxonice_sysfs.h" -+#include "tuxonice_modules.h" -+#include "tuxonice_io.h" -+#include "tuxonice_ui.h" -+#include "tuxonice_extent.h" -+#include "tuxonice_bio.h" -+#include "tuxonice_alloc.h" -+#include "tuxonice_builtin.h" -+ -+static struct toi_module_ops toi_swapops; -+ -+/* For swapfile automatically swapon/off'd. */ -+static char swapfilename[255] = ""; -+static int toi_swapon_status; -+ -+/* Swap Pages */ -+static unsigned long swap_allocated; -+ -+static struct sysinfo swapinfo; -+ -+/** -+ * enable_swapfile: Swapon the user specified swapfile prior to hibernating. -+ * -+ * Activate the given swapfile if it wasn't already enabled. Remember whether -+ * we really did swapon it for swapoffing later. -+ */ -+static void enable_swapfile(void) -+{ -+ int activateswapresult = -EINVAL; -+ -+ if (swapfilename[0]) { -+ /* Attempt to swap on with maximum priority */ -+ activateswapresult = sys_swapon(swapfilename, 0xFFFF); -+ if (activateswapresult && activateswapresult != -EBUSY) -+ printk(KERN_ERR "TuxOnIce: The swapfile/partition " -+ "specified by /sys/power/tuxonice/swap/swapfile" -+ " (%s) could not be turned on (error %d). " -+ "Attempting to continue.\n", -+ swapfilename, activateswapresult); -+ if (!activateswapresult) -+ toi_swapon_status = 1; -+ } -+} -+ -+/** -+ * disable_swapfile: Swapoff any file swaponed at the start of the cycle. -+ * -+ * If we did successfully swapon a file at the start of the cycle, swapoff -+ * it now (finishing up). -+ */ -+static void disable_swapfile(void) -+{ -+ if (!toi_swapon_status) -+ return; -+ -+ sys_swapoff(swapfilename); -+ toi_swapon_status = 0; -+} -+ -+static int add_blocks_to_extent_chain(struct toi_bdev_info *chain, -+ unsigned long start, unsigned long end) -+{ -+ if (test_action_state(TOI_TEST_BIO)) -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Adding extent %lu-%lu to " -+ "chain %p.", start << chain->bmap_shift, -+ end << chain->bmap_shift, chain); -+ -+ return toi_add_to_extent_chain(&chain->blocks, start, end); -+} -+ -+ -+static int get_main_pool_phys_params(struct toi_bdev_info *chain) -+{ -+ struct hibernate_extent *extentpointer = NULL; -+ unsigned long address, extent_min = 0, extent_max = 0; -+ int empty = 1; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "get main pool phys params for " -+ "chain %d.", chain->allocator_index); -+ -+ if (!chain->allocations.first) -+ return 0; -+ -+ if (chain->blocks.first) -+ toi_put_extent_chain(&chain->blocks); -+ -+ toi_extent_for_each(&chain->allocations, extentpointer, address) { -+ swp_entry_t swap_address = (swp_entry_t) { address }; -+ struct block_device *bdev; -+ sector_t new_sector = map_swap_entry(swap_address, &bdev); -+ -+ if (empty) { -+ empty = 0; -+ extent_min = extent_max = new_sector; -+ continue; -+ } -+ -+ if (new_sector == extent_max + 1) { -+ extent_max++; -+ continue; -+ } -+ -+ if (add_blocks_to_extent_chain(chain, extent_min, extent_max)) { -+ printk(KERN_ERR "Out of memory while making block " -+ "chains.\n"); -+ return -ENOMEM; -+ } -+ -+ extent_min = new_sector; -+ extent_max = new_sector; -+ } -+ -+ if (!empty && -+ add_blocks_to_extent_chain(chain, extent_min, extent_max)) { -+ printk(KERN_ERR "Out of memory while making block chains.\n"); -+ return -ENOMEM; -+ } -+ -+ return 0; -+} -+ -+/* -+ * Like si_swapinfo, except that we don't include ram backed swap (compcache!) -+ * and don't need to use the spinlocks (userspace is stopped when this -+ * function is called). -+ */ -+void si_swapinfo_no_compcache(void) -+{ -+ unsigned int i; -+ -+ si_swapinfo(&swapinfo); -+ swapinfo.freeswap = 0; -+ swapinfo.totalswap = 0; -+ -+ for (i = 0; i < MAX_SWAPFILES; i++) { -+ struct swap_info_struct *si = get_swap_info_struct(i); -+ if (si && (si->flags & SWP_WRITEOK) && -+ (strncmp(si->bdev->bd_disk->disk_name, "ram", 3))) { -+ swapinfo.totalswap += si->inuse_pages; -+ swapinfo.freeswap += si->pages - si->inuse_pages; -+ } -+ } -+} -+/* -+ * We can't just remember the value from allocation time, because other -+ * processes might have allocated swap in the mean time. -+ */ -+static unsigned long toi_swap_storage_available(void) -+{ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "In toi_swap_storage_available."); -+ si_swapinfo_no_compcache(); -+ return swapinfo.freeswap + swap_allocated; -+} -+ -+static int toi_swap_initialise(int starting_cycle) -+{ -+ if (!starting_cycle) -+ return 0; -+ -+ enable_swapfile(); -+ return 0; -+} -+ -+static void toi_swap_cleanup(int ending_cycle) -+{ -+ if (ending_cycle) -+ disable_swapfile(); -+} -+ -+static void toi_swap_free_storage(struct toi_bdev_info *chain) -+{ -+ /* Free swap entries */ -+ struct hibernate_extent *extentpointer; -+ unsigned long extentvalue; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Freeing storage for chain %p.", -+ chain); -+ -+ swap_allocated -= chain->allocations.size; -+ toi_extent_for_each(&chain->allocations, extentpointer, extentvalue) -+ swap_free((swp_entry_t) { extentvalue }); -+ -+ toi_put_extent_chain(&chain->allocations); -+} -+ -+static void free_swap_range(unsigned long min, unsigned long max) -+{ -+ int j; -+ -+ for (j = min; j <= max; j++) -+ swap_free((swp_entry_t) { j }); -+ swap_allocated -= (max - min + 1); -+} -+ -+/* -+ * Allocation of a single swap type. Swap priorities are handled at the higher -+ * level. -+ */ -+static int toi_swap_allocate_storage(struct toi_bdev_info *chain, -+ unsigned long request) -+{ -+ int to_add = 0; -+ unsigned long gotten = 0; -+ unsigned long extent_min = 0, extent_max = 0; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, " Swap allocate storage: Asked to" -+ " allocate %lu pages from device %d.", request, -+ chain->allocator_index); -+ -+ while (gotten < request) { -+ swp_entry_t entry; -+ unsigned long new_value; -+ -+ entry = get_swap_page_of_type(chain->allocator_index); -+ if (!entry.val) -+ break; -+ -+ swap_allocated++; -+ new_value = entry.val; -+ gotten++; -+ -+ if (!to_add) { -+ to_add = 1; -+ extent_min = new_value; -+ extent_max = new_value; -+ continue; -+ } -+ -+ if (new_value == extent_max + 1) { -+ extent_max++; -+ continue; -+ } -+ -+ if (toi_add_to_extent_chain(&chain->allocations, extent_min, -+ extent_max)) { -+ printk(KERN_INFO "Failed to allocate extent for " -+ "%lu-%lu.\n", extent_min, extent_max); -+ free_swap_range(extent_min, extent_max); -+ swap_free(entry); -+ gotten -= (extent_max - extent_min); -+ /* Don't try to add again below */ -+ to_add = 0; -+ break; -+ } -+ -+ extent_min = new_value; -+ extent_max = new_value; -+ } -+ -+ if (to_add) { -+ int this_result = toi_add_to_extent_chain(&chain->allocations, -+ extent_min, extent_max); -+ -+ if (this_result) { -+ free_swap_range(extent_min, extent_max); -+ gotten -= (extent_max - extent_min + 1); -+ } -+ } -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, " Allocated %lu pages.", gotten); -+ return gotten; -+} -+ -+static int toi_swap_register_storage(void) -+{ -+ int i, result = 0; -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "toi_swap_register_storage."); -+ for (i = 0; i < MAX_SWAPFILES; i++) { -+ struct swap_info_struct *si = get_swap_info_struct(i); -+ struct toi_bdev_info *devinfo; -+ unsigned char *p; -+ unsigned char buf[256]; -+ struct fs_info *fs_info; -+ -+ if (!si || !(si->flags & SWP_WRITEOK) || -+ !strncmp(si->bdev->bd_disk->disk_name, "ram", 3)) -+ continue; -+ -+ devinfo = toi_kzalloc(39, sizeof(struct toi_bdev_info), -+ GFP_ATOMIC); -+ if (!devinfo) { -+ printk("Failed to allocate devinfo struct for swap " -+ "device %d.\n", i); -+ return -ENOMEM; -+ } -+ -+ devinfo->bdev = si->bdev; -+ devinfo->allocator = &toi_swapops; -+ devinfo->allocator_index = i; -+ -+ fs_info = fs_info_from_block_dev(si->bdev); -+ if (fs_info && !IS_ERR(fs_info)) { -+ memcpy(devinfo->uuid, &fs_info->uuid, 16); -+ free_fs_info(fs_info); -+ } else -+ result = (int) PTR_ERR(fs_info); -+ -+ if (!fs_info) -+ printk("fs_info from block dev returned %d.\n", result); -+ devinfo->dev_t = si->bdev->bd_dev; -+ devinfo->prio = si->prio; -+ devinfo->bmap_shift = 3; -+ devinfo->blocks_per_page = 1; -+ -+ p = d_path(&si->swap_file->f_path, buf, sizeof(buf)); -+ sprintf(devinfo->name, "swap on %s", p); -+ -+ toi_message(TOI_IO, TOI_VERBOSE, 0, "Registering swap storage:" -+ " Device %d (%lx), prio %d.", i, -+ (unsigned long) devinfo->dev_t, devinfo->prio); -+ toi_bio_ops.register_storage(devinfo); -+ } -+ -+ return 0; -+} -+ -+/* -+ * workspace_size -+ * -+ * Description: -+ * Returns the number of bytes of RAM needed for this -+ * code to do its work. (Used when calculating whether -+ * we have enough memory to be able to hibernate & resume). -+ * -+ */ -+static int toi_swap_memory_needed(void) -+{ -+ return 1; -+} -+ -+/* -+ * Print debug info -+ * -+ * Description: -+ */ -+static int toi_swap_print_debug_stats(char *buffer, int size) -+{ -+ int len = 0; -+ -+ len = scnprintf(buffer, size, "- Swap Allocator enabled.\n"); -+ if (swapfilename[0]) -+ len += scnprintf(buffer+len, size-len, -+ " Attempting to automatically swapon: %s.\n", -+ swapfilename); -+ -+ si_swapinfo_no_compcache(); -+ -+ len += scnprintf(buffer+len, size-len, -+ " Swap available for image: %lu pages.\n", -+ swapinfo.freeswap + swap_allocated); -+ -+ return len; -+} -+ -+static int header_locations_read_sysfs(const char *page, int count) -+{ -+ int i, printedpartitionsmessage = 0, len = 0, haveswap = 0; -+ struct inode *swapf = NULL; -+ int zone; -+ char *path_page = (char *) toi_get_free_page(10, GFP_KERNEL); -+ char *path, *output = (char *) page; -+ int path_len; -+ -+ if (!page) -+ return 0; -+ -+ for (i = 0; i < MAX_SWAPFILES; i++) { -+ struct swap_info_struct *si = get_swap_info_struct(i); -+ -+ if (!si || !(si->flags & SWP_WRITEOK)) -+ continue; -+ -+ if (S_ISBLK(si->swap_file->f_mapping->host->i_mode)) { -+ haveswap = 1; -+ if (!printedpartitionsmessage) { -+ len += sprintf(output + len, -+ "For swap partitions, simply use the " -+ "format: resume=swap:/dev/hda1.\n"); -+ printedpartitionsmessage = 1; -+ } -+ } else { -+ path_len = 0; -+ -+ path = d_path(&si->swap_file->f_path, path_page, -+ PAGE_SIZE); -+ path_len = snprintf(path_page, PAGE_SIZE, "%s", path); -+ -+ haveswap = 1; -+ swapf = si->swap_file->f_mapping->host; -+ zone = bmap(swapf, 0); -+ if (!zone) { -+ len += sprintf(output + len, -+ "Swapfile %s has been corrupted. Reuse" -+ " mkswap on it and try again.\n", -+ path_page); -+ } else { -+ char name_buffer[BDEVNAME_SIZE]; -+ len += sprintf(output + len, -+ "For swapfile `%s`," -+ " use resume=swap:/dev/%s:0x%x.\n", -+ path_page, -+ bdevname(si->bdev, name_buffer), -+ zone << (swapf->i_blkbits - 9)); -+ } -+ } -+ } -+ -+ if (!haveswap) -+ len = sprintf(output, "You need to turn on swap partitions " -+ "before examining this file.\n"); -+ -+ toi_free_page(10, (unsigned long) path_page); -+ return len; -+} -+ -+static struct toi_sysfs_data sysfs_params[] = { -+ SYSFS_STRING("swapfilename", SYSFS_RW, swapfilename, 255, 0, NULL), -+ SYSFS_CUSTOM("headerlocations", SYSFS_READONLY, -+ header_locations_read_sysfs, NULL, 0, NULL), -+ SYSFS_INT("enabled", SYSFS_RW, &toi_swapops.enabled, 0, 1, 0, -+ attempt_to_parse_resume_device2), -+}; -+ -+static struct toi_bio_allocator_ops toi_bio_swapops = { -+ .register_storage = toi_swap_register_storage, -+ .storage_available = toi_swap_storage_available, -+ .allocate_storage = toi_swap_allocate_storage, -+ .bmap = get_main_pool_phys_params, -+ .free_storage = toi_swap_free_storage, -+}; -+ -+static struct toi_module_ops toi_swapops = { -+ .type = BIO_ALLOCATOR_MODULE, -+ .name = "swap storage", -+ .directory = "swap", -+ .module = THIS_MODULE, -+ .memory_needed = toi_swap_memory_needed, -+ .print_debug_info = toi_swap_print_debug_stats, -+ .initialise = toi_swap_initialise, -+ .cleanup = toi_swap_cleanup, -+ .bio_allocator_ops = &toi_bio_swapops, -+ -+ .sysfs_data = sysfs_params, -+ .num_sysfs_entries = sizeof(sysfs_params) / -+ sizeof(struct toi_sysfs_data), -+}; -+ -+/* ---- Registration ---- */ -+static __init int toi_swap_load(void) -+{ -+ return toi_register_module(&toi_swapops); -+} -+ -+#ifdef MODULE -+static __exit void toi_swap_unload(void) -+{ -+ toi_unregister_module(&toi_swapops); -+} -+ -+module_init(toi_swap_load); -+module_exit(toi_swap_unload); -+MODULE_LICENSE("GPL"); -+MODULE_AUTHOR("Nigel Cunningham"); -+MODULE_DESCRIPTION("TuxOnIce SwapAllocator"); -+#else -+late_initcall(toi_swap_load); -+#endif -diff --git a/kernel/power/tuxonice_sysfs.c b/kernel/power/tuxonice_sysfs.c -new file mode 100644 -index 0000000..0088409 ---- /dev/null -+++ b/kernel/power/tuxonice_sysfs.c -@@ -0,0 +1,335 @@ -+/* -+ * kernel/power/tuxonice_sysfs.c -+ * -+ * Copyright (C) 2002-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * This file contains support for sysfs entries for tuning TuxOnIce. -+ * -+ * We have a generic handler that deals with the most common cases, and -+ * hooks for special handlers to use. -+ */ -+ -+#include -+ -+#include "tuxonice_sysfs.h" -+#include "tuxonice.h" -+#include "tuxonice_storage.h" -+#include "tuxonice_alloc.h" -+ -+static int toi_sysfs_initialised; -+ -+static void toi_initialise_sysfs(void); -+ -+static struct toi_sysfs_data sysfs_params[]; -+ -+#define to_sysfs_data(_attr) container_of(_attr, struct toi_sysfs_data, attr) -+ -+static void toi_main_wrapper(void) -+{ -+ toi_try_hibernate(); -+} -+ -+static ssize_t toi_attr_show(struct kobject *kobj, struct attribute *attr, -+ char *page) -+{ -+ struct toi_sysfs_data *sysfs_data = to_sysfs_data(attr); -+ int len = 0; -+ int full_prep = sysfs_data->flags & SYSFS_NEEDS_SM_FOR_READ; -+ -+ if (full_prep && toi_start_anything(0)) -+ return -EBUSY; -+ -+ if (sysfs_data->flags & SYSFS_NEEDS_SM_FOR_READ) -+ toi_prepare_usm(); -+ -+ switch (sysfs_data->type) { -+ case TOI_SYSFS_DATA_CUSTOM: -+ len = (sysfs_data->data.special.read_sysfs) ? -+ (sysfs_data->data.special.read_sysfs)(page, PAGE_SIZE) -+ : 0; -+ break; -+ case TOI_SYSFS_DATA_BIT: -+ len = sprintf(page, "%d\n", -+ -test_bit(sysfs_data->data.bit.bit, -+ sysfs_data->data.bit.bit_vector)); -+ break; -+ case TOI_SYSFS_DATA_INTEGER: -+ len = sprintf(page, "%d\n", -+ *(sysfs_data->data.integer.variable)); -+ break; -+ case TOI_SYSFS_DATA_LONG: -+ len = sprintf(page, "%ld\n", -+ *(sysfs_data->data.a_long.variable)); -+ break; -+ case TOI_SYSFS_DATA_UL: -+ len = sprintf(page, "%lu\n", -+ *(sysfs_data->data.ul.variable)); -+ break; -+ case TOI_SYSFS_DATA_STRING: -+ len = sprintf(page, "%s\n", -+ sysfs_data->data.string.variable); -+ break; -+ } -+ -+ if (sysfs_data->flags & SYSFS_NEEDS_SM_FOR_READ) -+ toi_cleanup_usm(); -+ -+ if (full_prep) -+ toi_finish_anything(0); -+ -+ return len; -+} -+ -+#define BOUND(_variable, _type) do { \ -+ if (*_variable < sysfs_data->data._type.minimum) \ -+ *_variable = sysfs_data->data._type.minimum; \ -+ else if (*_variable > sysfs_data->data._type.maximum) \ -+ *_variable = sysfs_data->data._type.maximum; \ -+} while (0) -+ -+static ssize_t toi_attr_store(struct kobject *kobj, struct attribute *attr, -+ const char *my_buf, size_t count) -+{ -+ int assigned_temp_buffer = 0, result = count; -+ struct toi_sysfs_data *sysfs_data = to_sysfs_data(attr); -+ -+ if (toi_start_anything((sysfs_data->flags & SYSFS_HIBERNATE_OR_RESUME))) -+ return -EBUSY; -+ -+ ((char *) my_buf)[count] = 0; -+ -+ if (sysfs_data->flags & SYSFS_NEEDS_SM_FOR_WRITE) -+ toi_prepare_usm(); -+ -+ switch (sysfs_data->type) { -+ case TOI_SYSFS_DATA_CUSTOM: -+ if (sysfs_data->data.special.write_sysfs) -+ result = (sysfs_data->data.special.write_sysfs)(my_buf, -+ count); -+ break; -+ case TOI_SYSFS_DATA_BIT: -+ { -+ unsigned long value; -+ result = strict_strtoul(my_buf, 0, &value); -+ if (result) -+ break; -+ if (value) -+ set_bit(sysfs_data->data.bit.bit, -+ (sysfs_data->data.bit.bit_vector)); -+ else -+ clear_bit(sysfs_data->data.bit.bit, -+ (sysfs_data->data.bit.bit_vector)); -+ } -+ break; -+ case TOI_SYSFS_DATA_INTEGER: -+ { -+ long temp; -+ result = strict_strtol(my_buf, 0, &temp); -+ if (result) -+ break; -+ *(sysfs_data->data.integer.variable) = (int) temp; -+ BOUND(sysfs_data->data.integer.variable, integer); -+ break; -+ } -+ case TOI_SYSFS_DATA_LONG: -+ { -+ long *variable = -+ sysfs_data->data.a_long.variable; -+ result = strict_strtol(my_buf, 0, variable); -+ if (result) -+ break; -+ BOUND(variable, a_long); -+ break; -+ } -+ case TOI_SYSFS_DATA_UL: -+ { -+ unsigned long *variable = -+ sysfs_data->data.ul.variable; -+ result = strict_strtoul(my_buf, 0, variable); -+ if (result) -+ break; -+ BOUND(variable, ul); -+ break; -+ } -+ break; -+ case TOI_SYSFS_DATA_STRING: -+ { -+ int copy_len = count; -+ char *variable = -+ sysfs_data->data.string.variable; -+ -+ if (sysfs_data->data.string.max_length && -+ (copy_len > sysfs_data->data.string.max_length)) -+ copy_len = sysfs_data->data.string.max_length; -+ -+ if (!variable) { -+ variable = (char *) toi_get_zeroed_page(31, -+ TOI_ATOMIC_GFP); -+ sysfs_data->data.string.variable = variable; -+ assigned_temp_buffer = 1; -+ } -+ strncpy(variable, my_buf, copy_len); -+ if (copy_len && my_buf[copy_len - 1] == '\n') -+ variable[count - 1] = 0; -+ variable[count] = 0; -+ } -+ break; -+ } -+ -+ if (!result) -+ result = count; -+ -+ /* Side effect routine? */ -+ if (result == count && sysfs_data->write_side_effect) -+ sysfs_data->write_side_effect(); -+ -+ /* Free temporary buffers */ -+ if (assigned_temp_buffer) { -+ toi_free_page(31, -+ (unsigned long) sysfs_data->data.string.variable); -+ sysfs_data->data.string.variable = NULL; -+ } -+ -+ if (sysfs_data->flags & SYSFS_NEEDS_SM_FOR_WRITE) -+ toi_cleanup_usm(); -+ -+ toi_finish_anything(sysfs_data->flags & SYSFS_HIBERNATE_OR_RESUME); -+ -+ return result; -+} -+ -+static struct sysfs_ops toi_sysfs_ops = { -+ .show = &toi_attr_show, -+ .store = &toi_attr_store, -+}; -+ -+static struct kobj_type toi_ktype = { -+ .sysfs_ops = &toi_sysfs_ops, -+}; -+ -+struct kobject *tuxonice_kobj; -+ -+/* Non-module sysfs entries. -+ * -+ * This array contains entries that are automatically registered at -+ * boot. Modules and the console code register their own entries separately. -+ */ -+ -+static struct toi_sysfs_data sysfs_params[] = { -+ SYSFS_CUSTOM("do_hibernate", SYSFS_WRITEONLY, NULL, NULL, -+ SYSFS_HIBERNATING, toi_main_wrapper), -+ SYSFS_CUSTOM("do_resume", SYSFS_WRITEONLY, NULL, NULL, -+ SYSFS_RESUMING, toi_try_resume) -+}; -+ -+void remove_toi_sysdir(struct kobject *kobj) -+{ -+ if (!kobj) -+ return; -+ -+ kobject_put(kobj); -+} -+ -+struct kobject *make_toi_sysdir(char *name) -+{ -+ struct kobject *kobj = kobject_create_and_add(name, tuxonice_kobj); -+ -+ if (!kobj) { -+ printk(KERN_INFO "TuxOnIce: Can't allocate kobject for sysfs " -+ "dir!\n"); -+ return NULL; -+ } -+ -+ kobj->ktype = &toi_ktype; -+ -+ return kobj; -+} -+ -+/* toi_register_sysfs_file -+ * -+ * Helper for registering a new /sysfs/tuxonice entry. -+ */ -+ -+int toi_register_sysfs_file( -+ struct kobject *kobj, -+ struct toi_sysfs_data *toi_sysfs_data) -+{ -+ int result; -+ -+ if (!toi_sysfs_initialised) -+ toi_initialise_sysfs(); -+ -+ result = sysfs_create_file(kobj, &toi_sysfs_data->attr); -+ if (result) -+ printk(KERN_INFO "TuxOnIce: sysfs_create_file for %s " -+ "returned %d.\n", -+ toi_sysfs_data->attr.name, result); -+ kobj->ktype = &toi_ktype; -+ -+ return result; -+} -+EXPORT_SYMBOL_GPL(toi_register_sysfs_file); -+ -+/* toi_unregister_sysfs_file -+ * -+ * Helper for removing unwanted /sys/power/tuxonice entries. -+ * -+ */ -+void toi_unregister_sysfs_file(struct kobject *kobj, -+ struct toi_sysfs_data *toi_sysfs_data) -+{ -+ sysfs_remove_file(kobj, &toi_sysfs_data->attr); -+} -+EXPORT_SYMBOL_GPL(toi_unregister_sysfs_file); -+ -+void toi_cleanup_sysfs(void) -+{ -+ int i, -+ numfiles = sizeof(sysfs_params) / sizeof(struct toi_sysfs_data); -+ -+ if (!toi_sysfs_initialised) -+ return; -+ -+ for (i = 0; i < numfiles; i++) -+ toi_unregister_sysfs_file(tuxonice_kobj, &sysfs_params[i]); -+ -+ kobject_put(tuxonice_kobj); -+ toi_sysfs_initialised = 0; -+} -+ -+/* toi_initialise_sysfs -+ * -+ * Initialise the /sysfs/tuxonice directory. -+ */ -+ -+static void toi_initialise_sysfs(void) -+{ -+ int i; -+ int numfiles = sizeof(sysfs_params) / sizeof(struct toi_sysfs_data); -+ -+ if (toi_sysfs_initialised) -+ return; -+ -+ /* Make our TuxOnIce directory a child of /sys/power */ -+ tuxonice_kobj = kobject_create_and_add("tuxonice", power_kobj); -+ if (!tuxonice_kobj) -+ return; -+ -+ toi_sysfs_initialised = 1; -+ -+ for (i = 0; i < numfiles; i++) -+ toi_register_sysfs_file(tuxonice_kobj, &sysfs_params[i]); -+} -+ -+int toi_sysfs_init(void) -+{ -+ toi_initialise_sysfs(); -+ return 0; -+} -+ -+void toi_sysfs_exit(void) -+{ -+ toi_cleanup_sysfs(); -+} -diff --git a/kernel/power/tuxonice_sysfs.h b/kernel/power/tuxonice_sysfs.h -new file mode 100644 -index 0000000..4185c6d ---- /dev/null -+++ b/kernel/power/tuxonice_sysfs.h -@@ -0,0 +1,137 @@ -+/* -+ * kernel/power/tuxonice_sysfs.h -+ * -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ */ -+ -+#include -+ -+struct toi_sysfs_data { -+ struct attribute attr; -+ int type; -+ int flags; -+ union { -+ struct { -+ unsigned long *bit_vector; -+ int bit; -+ } bit; -+ struct { -+ int *variable; -+ int minimum; -+ int maximum; -+ } integer; -+ struct { -+ long *variable; -+ long minimum; -+ long maximum; -+ } a_long; -+ struct { -+ unsigned long *variable; -+ unsigned long minimum; -+ unsigned long maximum; -+ } ul; -+ struct { -+ char *variable; -+ int max_length; -+ } string; -+ struct { -+ int (*read_sysfs) (const char *buffer, int count); -+ int (*write_sysfs) (const char *buffer, int count); -+ void *data; -+ } special; -+ } data; -+ -+ /* Side effects routine. Used, eg, for reparsing the -+ * resume= entry when it changes */ -+ void (*write_side_effect) (void); -+ struct list_head sysfs_data_list; -+}; -+ -+enum { -+ TOI_SYSFS_DATA_NONE = 1, -+ TOI_SYSFS_DATA_CUSTOM, -+ TOI_SYSFS_DATA_BIT, -+ TOI_SYSFS_DATA_INTEGER, -+ TOI_SYSFS_DATA_UL, -+ TOI_SYSFS_DATA_LONG, -+ TOI_SYSFS_DATA_STRING -+}; -+ -+#define SYSFS_WRITEONLY 0200 -+#define SYSFS_READONLY 0444 -+#define SYSFS_RW 0644 -+ -+#define SYSFS_BIT(_name, _mode, _ul, _bit, _flags) { \ -+ .attr = {.name = _name , .mode = _mode }, \ -+ .type = TOI_SYSFS_DATA_BIT, \ -+ .flags = _flags, \ -+ .data = { .bit = { .bit_vector = _ul, .bit = _bit } } } -+ -+#define SYSFS_INT(_name, _mode, _int, _min, _max, _flags, _wse) { \ -+ .attr = {.name = _name , .mode = _mode }, \ -+ .type = TOI_SYSFS_DATA_INTEGER, \ -+ .flags = _flags, \ -+ .data = { .integer = { .variable = _int, .minimum = _min, \ -+ .maximum = _max } }, \ -+ .write_side_effect = _wse } -+ -+#define SYSFS_UL(_name, _mode, _ul, _min, _max, _flags) { \ -+ .attr = {.name = _name , .mode = _mode }, \ -+ .type = TOI_SYSFS_DATA_UL, \ -+ .flags = _flags, \ -+ .data = { .ul = { .variable = _ul, .minimum = _min, \ -+ .maximum = _max } } } -+ -+#define SYSFS_LONG(_name, _mode, _long, _min, _max, _flags) { \ -+ .attr = {.name = _name , .mode = _mode }, \ -+ .type = TOI_SYSFS_DATA_LONG, \ -+ .flags = _flags, \ -+ .data = { .a_long = { .variable = _long, .minimum = _min, \ -+ .maximum = _max } } } -+ -+#define SYSFS_STRING(_name, _mode, _string, _max_len, _flags, _wse) { \ -+ .attr = {.name = _name , .mode = _mode }, \ -+ .type = TOI_SYSFS_DATA_STRING, \ -+ .flags = _flags, \ -+ .data = { .string = { .variable = _string, .max_length = _max_len } }, \ -+ .write_side_effect = _wse } -+ -+#define SYSFS_CUSTOM(_name, _mode, _read, _write, _flags, _wse) { \ -+ .attr = {.name = _name , .mode = _mode }, \ -+ .type = TOI_SYSFS_DATA_CUSTOM, \ -+ .flags = _flags, \ -+ .data = { .special = { .read_sysfs = _read, .write_sysfs = _write } }, \ -+ .write_side_effect = _wse } -+ -+#define SYSFS_NONE(_name, _wse) { \ -+ .attr = {.name = _name , .mode = SYSFS_WRITEONLY }, \ -+ .type = TOI_SYSFS_DATA_NONE, \ -+ .write_side_effect = _wse, \ -+} -+ -+/* Flags */ -+#define SYSFS_NEEDS_SM_FOR_READ 1 -+#define SYSFS_NEEDS_SM_FOR_WRITE 2 -+#define SYSFS_HIBERNATE 4 -+#define SYSFS_RESUME 8 -+#define SYSFS_HIBERNATE_OR_RESUME (SYSFS_HIBERNATE | SYSFS_RESUME) -+#define SYSFS_HIBERNATING (SYSFS_HIBERNATE | SYSFS_NEEDS_SM_FOR_WRITE) -+#define SYSFS_RESUMING (SYSFS_RESUME | SYSFS_NEEDS_SM_FOR_WRITE) -+#define SYSFS_NEEDS_SM_FOR_BOTH \ -+ (SYSFS_NEEDS_SM_FOR_READ | SYSFS_NEEDS_SM_FOR_WRITE) -+ -+int toi_register_sysfs_file(struct kobject *kobj, -+ struct toi_sysfs_data *toi_sysfs_data); -+void toi_unregister_sysfs_file(struct kobject *kobj, -+ struct toi_sysfs_data *toi_sysfs_data); -+ -+extern struct kobject *tuxonice_kobj; -+ -+struct kobject *make_toi_sysdir(char *name); -+void remove_toi_sysdir(struct kobject *obj); -+extern void toi_cleanup_sysfs(void); -+ -+extern int toi_sysfs_init(void); -+extern void toi_sysfs_exit(void); -diff --git a/kernel/power/tuxonice_ui.c b/kernel/power/tuxonice_ui.c -new file mode 100644 -index 0000000..b0b3b40 ---- /dev/null -+++ b/kernel/power/tuxonice_ui.c -@@ -0,0 +1,250 @@ -+/* -+ * kernel/power/tuxonice_ui.c -+ * -+ * Copyright (C) 1998-2001 Gabor Kuti -+ * Copyright (C) 1998,2001,2002 Pavel Machek -+ * Copyright (C) 2002-2003 Florent Chabaud -+ * Copyright (C) 2002-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * Routines for TuxOnIce's user interface. -+ * -+ * The user interface code talks to a userspace program via a -+ * netlink socket. -+ * -+ * The kernel side: -+ * - starts the userui program; -+ * - sends text messages and progress bar status; -+ * -+ * The user space side: -+ * - passes messages regarding user requests (abort, toggle reboot etc) -+ * -+ */ -+ -+#define __KERNEL_SYSCALLS__ -+ -+#include -+ -+#include "tuxonice_sysfs.h" -+#include "tuxonice_modules.h" -+#include "tuxonice.h" -+#include "tuxonice_ui.h" -+#include "tuxonice_netlink.h" -+#include "tuxonice_power_off.h" -+#include "tuxonice_builtin.h" -+ -+static char local_printf_buf[1024]; /* Same as printk - should be safe */ -+struct ui_ops *toi_current_ui; -+EXPORT_SYMBOL_GPL(toi_current_ui); -+ -+/** -+ * toi_wait_for_keypress - Wait for keypress via userui or /dev/console. -+ * -+ * @timeout: Maximum time to wait. -+ * -+ * Wait for a keypress, either from userui or /dev/console if userui isn't -+ * available. The non-userui path is particularly for at boot-time, prior -+ * to userui being started, when we have an important warning to give to -+ * the user. -+ */ -+static char toi_wait_for_keypress(int timeout) -+{ -+ if (toi_current_ui && toi_current_ui->wait_for_key(timeout)) -+ return ' '; -+ -+ return toi_wait_for_keypress_dev_console(timeout); -+} -+ -+/* toi_early_boot_message() -+ * Description: Handle errors early in the process of booting. -+ * The user may press C to continue booting, perhaps -+ * invalidating the image, or space to reboot. -+ * This works from either the serial console or normally -+ * attached keyboard. -+ * -+ * Note that we come in here from init, while the kernel is -+ * locked. If we want to get events from the serial console, -+ * we need to temporarily unlock the kernel. -+ * -+ * toi_early_boot_message may also be called post-boot. -+ * In this case, it simply printks the message and returns. -+ * -+ * Arguments: int Whether we are able to erase the image. -+ * int default_answer. What to do when we timeout. This -+ * will normally be continue, but the user might -+ * provide command line options (__setup) to override -+ * particular cases. -+ * Char *. Pointer to a string explaining why we're moaning. -+ */ -+ -+#define say(message, a...) printk(KERN_EMERG message, ##a) -+ -+void toi_early_boot_message(int message_detail, int default_answer, -+ char *warning_reason, ...) -+{ -+#if defined(CONFIG_VT) || defined(CONFIG_SERIAL_CONSOLE) -+ unsigned long orig_state = get_toi_state(), continue_req = 0; -+ unsigned long orig_loglevel = console_loglevel; -+ int can_ask = 1; -+#else -+ int can_ask = 0; -+#endif -+ -+ va_list args; -+ int printed_len; -+ -+ if (!toi_wait) { -+ set_toi_state(TOI_CONTINUE_REQ); -+ can_ask = 0; -+ } -+ -+ if (warning_reason) { -+ va_start(args, warning_reason); -+ printed_len = vsnprintf(local_printf_buf, -+ sizeof(local_printf_buf), -+ warning_reason, -+ args); -+ va_end(args); -+ } -+ -+ if (!test_toi_state(TOI_BOOT_TIME)) { -+ printk("TuxOnIce: %s\n", local_printf_buf); -+ return; -+ } -+ -+ if (!can_ask) { -+ continue_req = !!default_answer; -+ goto post_ask; -+ } -+ -+#if defined(CONFIG_VT) || defined(CONFIG_SERIAL_CONSOLE) -+ console_loglevel = 7; -+ -+ say("=== TuxOnIce ===\n\n"); -+ if (warning_reason) { -+ say("BIG FAT WARNING!! %s\n\n", local_printf_buf); -+ switch (message_detail) { -+ case 0: -+ say("If you continue booting, note that any image WILL" -+ "NOT BE REMOVED.\nTuxOnIce is unable to do so " -+ "because the appropriate modules aren't\n" -+ "loaded. You should manually remove the image " -+ "to avoid any\npossibility of corrupting your " -+ "filesystem(s) later.\n"); -+ break; -+ case 1: -+ say("If you want to use the current TuxOnIce image, " -+ "reboot and try\nagain with the same kernel " -+ "that you hibernated from. If you want\n" -+ "to forget that image, continue and the image " -+ "will be erased.\n"); -+ break; -+ } -+ say("Press SPACE to reboot or C to continue booting with " -+ "this kernel\n\n"); -+ if (toi_wait > 0) -+ say("Default action if you don't select one in %d " -+ "seconds is: %s.\n", -+ toi_wait, -+ default_answer == TOI_CONTINUE_REQ ? -+ "continue booting" : "reboot"); -+ } else { -+ say("BIG FAT WARNING!!\n\n" -+ "You have tried to resume from this image before.\n" -+ "If it failed once, it may well fail again.\n" -+ "Would you like to remove the image and boot " -+ "normally?\nThis will be equivalent to entering " -+ "noresume on the\nkernel command line.\n\n" -+ "Press SPACE to remove the image or C to continue " -+ "resuming.\n\n"); -+ if (toi_wait > 0) -+ say("Default action if you don't select one in %d " -+ "seconds is: %s.\n", toi_wait, -+ !!default_answer ? -+ "continue resuming" : "remove the image"); -+ } -+ console_loglevel = orig_loglevel; -+ -+ set_toi_state(TOI_SANITY_CHECK_PROMPT); -+ clear_toi_state(TOI_CONTINUE_REQ); -+ -+ if (toi_wait_for_keypress(toi_wait) == 0) /* We timed out */ -+ continue_req = !!default_answer; -+ else -+ continue_req = test_toi_state(TOI_CONTINUE_REQ); -+ -+#endif /* CONFIG_VT or CONFIG_SERIAL_CONSOLE */ -+ -+post_ask: -+ if ((warning_reason) && (!continue_req)) -+ machine_restart(NULL); -+ -+ restore_toi_state(orig_state); -+ if (continue_req) -+ set_toi_state(TOI_CONTINUE_REQ); -+} -+EXPORT_SYMBOL_GPL(toi_early_boot_message); -+#undef say -+ -+/* -+ * User interface specific /sys/power/tuxonice entries. -+ */ -+ -+static struct toi_sysfs_data sysfs_params[] = { -+#if defined(CONFIG_NET) && defined(CONFIG_SYSFS) -+ SYSFS_INT("default_console_level", SYSFS_RW, -+ &toi_bkd.toi_default_console_level, 0, 7, 0, NULL), -+ SYSFS_UL("debug_sections", SYSFS_RW, &toi_bkd.toi_debug_state, 0, -+ 1 << 30, 0), -+ SYSFS_BIT("log_everything", SYSFS_RW, &toi_bkd.toi_action, TOI_LOGALL, -+ 0) -+#endif -+}; -+ -+static struct toi_module_ops userui_ops = { -+ .type = MISC_HIDDEN_MODULE, -+ .name = "printk ui", -+ .directory = "user_interface", -+ .module = THIS_MODULE, -+ .sysfs_data = sysfs_params, -+ .num_sysfs_entries = sizeof(sysfs_params) / -+ sizeof(struct toi_sysfs_data), -+}; -+ -+int toi_register_ui_ops(struct ui_ops *this_ui) -+{ -+ if (toi_current_ui) { -+ printk(KERN_INFO "Only one TuxOnIce user interface module can " -+ "be loaded at a time."); -+ return -EBUSY; -+ } -+ -+ toi_current_ui = this_ui; -+ -+ return 0; -+} -+EXPORT_SYMBOL_GPL(toi_register_ui_ops); -+ -+void toi_remove_ui_ops(struct ui_ops *this_ui) -+{ -+ if (toi_current_ui != this_ui) -+ return; -+ -+ toi_current_ui = NULL; -+} -+EXPORT_SYMBOL_GPL(toi_remove_ui_ops); -+ -+/* toi_console_sysfs_init -+ * Description: Boot time initialisation for user interface. -+ */ -+ -+int toi_ui_init(void) -+{ -+ return toi_register_module(&userui_ops); -+} -+ -+void toi_ui_exit(void) -+{ -+ toi_unregister_module(&userui_ops); -+} -diff --git a/kernel/power/tuxonice_ui.h b/kernel/power/tuxonice_ui.h -new file mode 100644 -index 0000000..85fb7cb ---- /dev/null -+++ b/kernel/power/tuxonice_ui.h -@@ -0,0 +1,97 @@ -+/* -+ * kernel/power/tuxonice_ui.h -+ * -+ * Copyright (C) 2004-2010 Nigel Cunningham (nigel at tuxonice net) -+ */ -+ -+enum { -+ DONT_CLEAR_BAR, -+ CLEAR_BAR -+}; -+ -+enum { -+ /* Userspace -> Kernel */ -+ USERUI_MSG_ABORT = 0x11, -+ USERUI_MSG_SET_STATE = 0x12, -+ USERUI_MSG_GET_STATE = 0x13, -+ USERUI_MSG_GET_DEBUG_STATE = 0x14, -+ USERUI_MSG_SET_DEBUG_STATE = 0x15, -+ USERUI_MSG_SPACE = 0x18, -+ USERUI_MSG_GET_POWERDOWN_METHOD = 0x1A, -+ USERUI_MSG_SET_POWERDOWN_METHOD = 0x1B, -+ USERUI_MSG_GET_LOGLEVEL = 0x1C, -+ USERUI_MSG_SET_LOGLEVEL = 0x1D, -+ USERUI_MSG_PRINTK = 0x1E, -+ -+ /* Kernel -> Userspace */ -+ USERUI_MSG_MESSAGE = 0x21, -+ USERUI_MSG_PROGRESS = 0x22, -+ USERUI_MSG_POST_ATOMIC_RESTORE = 0x25, -+ -+ USERUI_MSG_MAX, -+}; -+ -+struct userui_msg_params { -+ u32 a, b, c, d; -+ char text[255]; -+}; -+ -+struct ui_ops { -+ char (*wait_for_key) (int timeout); -+ u32 (*update_status) (u32 value, u32 maximum, const char *fmt, ...); -+ void (*prepare_status) (int clearbar, const char *fmt, ...); -+ void (*cond_pause) (int pause, char *message); -+ void (*abort)(int result_code, const char *fmt, ...); -+ void (*prepare)(void); -+ void (*cleanup)(void); -+ void (*message)(u32 section, u32 level, u32 normally_logged, -+ const char *fmt, ...); -+}; -+ -+extern struct ui_ops *toi_current_ui; -+ -+#define toi_update_status(val, max, fmt, args...) \ -+ (toi_current_ui ? (toi_current_ui->update_status) (val, max, fmt, ##args) : \ -+ max) -+ -+#define toi_prepare_console(void) \ -+ do { if (toi_current_ui) \ -+ (toi_current_ui->prepare)(); \ -+ } while (0) -+ -+#define toi_cleanup_console(void) \ -+ do { if (toi_current_ui) \ -+ (toi_current_ui->cleanup)(); \ -+ } while (0) -+ -+#define abort_hibernate(result, fmt, args...) \ -+ do { if (toi_current_ui) \ -+ (toi_current_ui->abort)(result, fmt, ##args); \ -+ else { \ -+ set_abort_result(result); \ -+ } \ -+ } while (0) -+ -+#define toi_cond_pause(pause, message) \ -+ do { if (toi_current_ui) \ -+ (toi_current_ui->cond_pause)(pause, message); \ -+ } while (0) -+ -+#define toi_prepare_status(clear, fmt, args...) \ -+ do { if (toi_current_ui) \ -+ (toi_current_ui->prepare_status)(clear, fmt, ##args); \ -+ else \ -+ printk(KERN_ERR fmt "%s", ##args, "\n"); \ -+ } while (0) -+ -+#define toi_message(sn, lev, log, fmt, a...) \ -+do { \ -+ if (toi_current_ui && (!sn || test_debug_state(sn))) \ -+ toi_current_ui->message(sn, lev, log, fmt, ##a); \ -+} while (0) -+ -+__exit void toi_ui_cleanup(void); -+extern int toi_ui_init(void); -+extern void toi_ui_exit(void); -+extern int toi_register_ui_ops(struct ui_ops *this_ui); -+extern void toi_remove_ui_ops(struct ui_ops *this_ui); -diff --git a/kernel/power/tuxonice_userui.c b/kernel/power/tuxonice_userui.c -new file mode 100644 -index 0000000..625d863 ---- /dev/null -+++ b/kernel/power/tuxonice_userui.c -@@ -0,0 +1,668 @@ -+/* -+ * kernel/power/user_ui.c -+ * -+ * Copyright (C) 2005-2007 Bernard Blackham -+ * Copyright (C) 2002-2010 Nigel Cunningham (nigel at tuxonice net) -+ * -+ * This file is released under the GPLv2. -+ * -+ * Routines for TuxOnIce's user interface. -+ * -+ * The user interface code talks to a userspace program via a -+ * netlink socket. -+ * -+ * The kernel side: -+ * - starts the userui program; -+ * - sends text messages and progress bar status; -+ * -+ * The user space side: -+ * - passes messages regarding user requests (abort, toggle reboot etc) -+ * -+ */ -+ -+#define __KERNEL_SYSCALLS__ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "tuxonice_sysfs.h" -+#include "tuxonice_modules.h" -+#include "tuxonice.h" -+#include "tuxonice_ui.h" -+#include "tuxonice_netlink.h" -+#include "tuxonice_power_off.h" -+ -+static char local_printf_buf[1024]; /* Same as printk - should be safe */ -+ -+static struct user_helper_data ui_helper_data; -+static struct toi_module_ops userui_ops; -+static int orig_kmsg; -+ -+static char lastheader[512]; -+static int lastheader_message_len; -+static int ui_helper_changed; /* Used at resume-time so don't overwrite value -+ set from initrd/ramfs. */ -+ -+/* Number of distinct progress amounts that userspace can display */ -+static int progress_granularity = 30; -+ -+static DECLARE_WAIT_QUEUE_HEAD(userui_wait_for_key); -+ -+/** -+ * ui_nl_set_state - Update toi_action based on a message from userui. -+ * -+ * @n: The bit (1 << bit) to set. -+ */ -+static void ui_nl_set_state(int n) -+{ -+ /* Only let them change certain settings */ -+ static const u32 toi_action_mask = -+ (1 << TOI_REBOOT) | (1 << TOI_PAUSE) | -+ (1 << TOI_LOGALL) | -+ (1 << TOI_SINGLESTEP) | -+ (1 << TOI_PAUSE_NEAR_PAGESET_END); -+ static unsigned long new_action; -+ -+ new_action = (toi_bkd.toi_action & (~toi_action_mask)) | -+ (n & toi_action_mask); -+ -+ printk(KERN_DEBUG "n is %x. Action flags being changed from %lx " -+ "to %lx.", n, toi_bkd.toi_action, new_action); -+ toi_bkd.toi_action = new_action; -+ -+ if (!test_action_state(TOI_PAUSE) && -+ !test_action_state(TOI_SINGLESTEP)) -+ wake_up_interruptible(&userui_wait_for_key); -+} -+ -+/** -+ * userui_post_atomic_restore - Tell userui that atomic restore just happened. -+ * -+ * Tell userui that atomic restore just occured, so that it can do things like -+ * redrawing the screen, re-getting settings and so on. -+ */ -+static void userui_post_atomic_restore(struct toi_boot_kernel_data *bkd) -+{ -+ toi_send_netlink_message(&ui_helper_data, -+ USERUI_MSG_POST_ATOMIC_RESTORE, NULL, 0); -+} -+ -+/** -+ * userui_storage_needed - Report how much memory in image header is needed. -+ */ -+static int userui_storage_needed(void) -+{ -+ return sizeof(ui_helper_data.program) + 1 + sizeof(int); -+} -+ -+/** -+ * userui_save_config_info - Fill buffer with config info for image header. -+ * -+ * @buf: Buffer into which to put the config info we want to save. -+ */ -+static int userui_save_config_info(char *buf) -+{ -+ *((int *) buf) = progress_granularity; -+ memcpy(buf + sizeof(int), ui_helper_data.program, -+ sizeof(ui_helper_data.program)); -+ return sizeof(ui_helper_data.program) + sizeof(int) + 1; -+} -+ -+/** -+ * userui_load_config_info - Restore config info from buffer. -+ * -+ * @buf: Buffer containing header info loaded. -+ * @size: Size of data loaded for this module. -+ */ -+static void userui_load_config_info(char *buf, int size) -+{ -+ progress_granularity = *((int *) buf); -+ size -= sizeof(int); -+ -+ /* Don't load the saved path if one has already been set */ -+ if (ui_helper_changed) -+ return; -+ -+ if (size > sizeof(ui_helper_data.program)) -+ size = sizeof(ui_helper_data.program); -+ -+ memcpy(ui_helper_data.program, buf + sizeof(int), size); -+ ui_helper_data.program[sizeof(ui_helper_data.program)-1] = '\0'; -+} -+ -+/** -+ * set_ui_program_set: Record that userui program was changed. -+ * -+ * Side effect routine for when the userui program is set. In an initrd or -+ * ramfs, the user may set a location for the userui program. If this happens, -+ * we don't want to reload the value that was saved in the image header. This -+ * routine allows us to flag that we shouldn't restore the program name from -+ * the image header. -+ */ -+static void set_ui_program_set(void) -+{ -+ ui_helper_changed = 1; -+} -+ -+/** -+ * userui_memory_needed - Tell core how much memory to reserve for us. -+ */ -+static int userui_memory_needed(void) -+{ -+ /* ball park figure of 128 pages */ -+ return 128 * PAGE_SIZE; -+} -+ -+/** -+ * userui_update_status - Update the progress bar and (if on) in-bar message. -+ * -+ * @value: Current progress percentage numerator. -+ * @maximum: Current progress percentage denominator. -+ * @fmt: Message to be displayed in the middle of the progress bar. -+ * -+ * Note that a NULL message does not mean that any previous message is erased! -+ * For that, you need toi_prepare_status with clearbar on. -+ * -+ * Returns an unsigned long, being the next numerator (as determined by the -+ * maximum and progress granularity) where status needs to be updated. -+ * This is to reduce unnecessary calls to update_status. -+ */ -+static u32 userui_update_status(u32 value, u32 maximum, const char *fmt, ...) -+{ -+ static u32 last_step = 9999; -+ struct userui_msg_params msg; -+ u32 this_step, next_update; -+ int bitshift; -+ -+ if (ui_helper_data.pid == -1) -+ return 0; -+ -+ if ((!maximum) || (!progress_granularity)) -+ return maximum; -+ -+ if (value < 0) -+ value = 0; -+ -+ if (value > maximum) -+ value = maximum; -+ -+ /* Try to avoid math problems - we can't do 64 bit math here -+ * (and shouldn't need it - anyone got screen resolution -+ * of 65536 pixels or more?) */ -+ bitshift = fls(maximum) - 16; -+ if (bitshift > 0) { -+ u32 temp_maximum = maximum >> bitshift; -+ u32 temp_value = value >> bitshift; -+ this_step = (u32) -+ (temp_value * progress_granularity / temp_maximum); -+ next_update = (((this_step + 1) * temp_maximum / -+ progress_granularity) + 1) << bitshift; -+ } else { -+ this_step = (u32) (value * progress_granularity / maximum); -+ next_update = ((this_step + 1) * maximum / -+ progress_granularity) + 1; -+ } -+ -+ if (this_step == last_step) -+ return next_update; -+ -+ memset(&msg, 0, sizeof(msg)); -+ -+ msg.a = this_step; -+ msg.b = progress_granularity; -+ -+ if (fmt) { -+ va_list args; -+ va_start(args, fmt); -+ vsnprintf(msg.text, sizeof(msg.text), fmt, args); -+ va_end(args); -+ msg.text[sizeof(msg.text)-1] = '\0'; -+ } -+ -+ toi_send_netlink_message(&ui_helper_data, USERUI_MSG_PROGRESS, -+ &msg, sizeof(msg)); -+ last_step = this_step; -+ -+ return next_update; -+} -+ -+/** -+ * userui_message - Display a message without necessarily logging it. -+ * -+ * @section: Type of message. Messages can be filtered by type. -+ * @level: Degree of importance of the message. Lower values = higher priority. -+ * @normally_logged: Whether logged even if log_everything is off. -+ * @fmt: Message (and parameters). -+ * -+ * This function is intended to do the same job as printk, but without normally -+ * logging what is printed. The point is to be able to get debugging info on -+ * screen without filling the logs with "1/534. ^M 2/534^M. 3/534^M" -+ * -+ * It may be called from an interrupt context - can't sleep! -+ */ -+static void userui_message(u32 section, u32 level, u32 normally_logged, -+ const char *fmt, ...) -+{ -+ struct userui_msg_params msg; -+ -+ if ((level) && (level > console_loglevel)) -+ return; -+ -+ memset(&msg, 0, sizeof(msg)); -+ -+ msg.a = section; -+ msg.b = level; -+ msg.c = normally_logged; -+ -+ if (fmt) { -+ va_list args; -+ va_start(args, fmt); -+ vsnprintf(msg.text, sizeof(msg.text), fmt, args); -+ va_end(args); -+ msg.text[sizeof(msg.text)-1] = '\0'; -+ } -+ -+ if (test_action_state(TOI_LOGALL)) -+ printk(KERN_INFO "%s\n", msg.text); -+ -+ toi_send_netlink_message(&ui_helper_data, USERUI_MSG_MESSAGE, -+ &msg, sizeof(msg)); -+} -+ -+/** -+ * wait_for_key_via_userui - Wait for userui to receive a keypress. -+ */ -+static void wait_for_key_via_userui(void) -+{ -+ DECLARE_WAITQUEUE(wait, current); -+ -+ add_wait_queue(&userui_wait_for_key, &wait); -+ set_current_state(TASK_INTERRUPTIBLE); -+ -+ interruptible_sleep_on(&userui_wait_for_key); -+ -+ set_current_state(TASK_RUNNING); -+ remove_wait_queue(&userui_wait_for_key, &wait); -+} -+ -+/** -+ * userui_prepare_status - Display high level messages. -+ * -+ * @clearbar: Whether to clear the progress bar. -+ * @fmt...: New message for the title. -+ * -+ * Prepare the 'nice display', drawing the header and version, along with the -+ * current action and perhaps also resetting the progress bar. -+ */ -+static void userui_prepare_status(int clearbar, const char *fmt, ...) -+{ -+ va_list args; -+ -+ if (fmt) { -+ va_start(args, fmt); -+ lastheader_message_len = vsnprintf(lastheader, 512, fmt, args); -+ va_end(args); -+ } -+ -+ if (clearbar) -+ toi_update_status(0, 1, NULL); -+ -+ if (ui_helper_data.pid == -1) -+ printk(KERN_EMERG "%s\n", lastheader); -+ else -+ toi_message(0, TOI_STATUS, 1, lastheader, NULL); -+} -+ -+/** -+ * toi_wait_for_keypress - Wait for keypress via userui. -+ * -+ * @timeout: Maximum time to wait. -+ * -+ * Wait for a keypress from userui. -+ * -+ * FIXME: Implement timeout? -+ */ -+static char userui_wait_for_keypress(int timeout) -+{ -+ char key = '\0'; -+ -+ if (ui_helper_data.pid != -1) { -+ wait_for_key_via_userui(); -+ key = ' '; -+ } -+ -+ return key; -+} -+ -+/** -+ * userui_abort_hibernate - Abort a cycle & tell user if they didn't request it. -+ * -+ * @result_code: Reason why we're aborting (1 << bit). -+ * @fmt: Message to display if telling the user what's going on. -+ * -+ * Abort a cycle. If this wasn't at the user's request (and we're displaying -+ * output), tell the user why and wait for them to acknowledge the message. -+ */ -+static void userui_abort_hibernate(int result_code, const char *fmt, ...) -+{ -+ va_list args; -+ int printed_len = 0; -+ -+ set_result_state(result_code); -+ -+ if (test_result_state(TOI_ABORTED)) -+ return; -+ -+ set_result_state(TOI_ABORTED); -+ -+ if (test_result_state(TOI_ABORT_REQUESTED)) -+ return; -+ -+ va_start(args, fmt); -+ printed_len = vsnprintf(local_printf_buf, sizeof(local_printf_buf), -+ fmt, args); -+ va_end(args); -+ if (ui_helper_data.pid != -1) -+ printed_len = sprintf(local_printf_buf + printed_len, -+ " (Press SPACE to continue)"); -+ -+ toi_prepare_status(CLEAR_BAR, "%s", local_printf_buf); -+ -+ if (ui_helper_data.pid != -1) -+ userui_wait_for_keypress(0); -+} -+ -+/** -+ * request_abort_hibernate - Abort hibernating or resuming at user request. -+ * -+ * Handle the user requesting the cancellation of a hibernation or resume by -+ * pressing escape. -+ */ -+static void request_abort_hibernate(void) -+{ -+ if (test_result_state(TOI_ABORT_REQUESTED) || -+ !test_action_state(TOI_CAN_CANCEL)) -+ return; -+ -+ if (test_toi_state(TOI_NOW_RESUMING)) { -+ toi_prepare_status(CLEAR_BAR, "Escape pressed. " -+ "Powering down again."); -+ set_toi_state(TOI_STOP_RESUME); -+ while (!test_toi_state(TOI_IO_STOPPED)) -+ schedule(); -+ if (toiActiveAllocator->mark_resume_attempted) -+ toiActiveAllocator->mark_resume_attempted(0); -+ toi_power_down(); -+ } -+ -+ toi_prepare_status(CLEAR_BAR, "--- ESCAPE PRESSED :" -+ " ABORTING HIBERNATION ---"); -+ set_abort_result(TOI_ABORT_REQUESTED); -+ wake_up_interruptible(&userui_wait_for_key); -+} -+ -+/** -+ * userui_user_rcv_msg - Receive a netlink message from userui. -+ * -+ * @skb: skb received. -+ * @nlh: Netlink header received. -+ */ -+static int userui_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) -+{ -+ int type; -+ int *data; -+ -+ type = nlh->nlmsg_type; -+ -+ /* A control message: ignore them */ -+ if (type < NETLINK_MSG_BASE) -+ return 0; -+ -+ /* Unknown message: reply with EINVAL */ -+ if (type >= USERUI_MSG_MAX) -+ return -EINVAL; -+ -+ /* All operations require privileges, even GET */ -+ if (security_netlink_recv(skb, CAP_NET_ADMIN)) -+ return -EPERM; -+ -+ /* Only allow one task to receive NOFREEZE privileges */ -+ if (type == NETLINK_MSG_NOFREEZE_ME && ui_helper_data.pid != -1) { -+ printk(KERN_INFO "Got NOFREEZE_ME request when " -+ "ui_helper_data.pid is %d.\n", ui_helper_data.pid); -+ return -EBUSY; -+ } -+ -+ data = (int *) NLMSG_DATA(nlh); -+ -+ switch (type) { -+ case USERUI_MSG_ABORT: -+ request_abort_hibernate(); -+ return 0; -+ case USERUI_MSG_GET_STATE: -+ toi_send_netlink_message(&ui_helper_data, -+ USERUI_MSG_GET_STATE, &toi_bkd.toi_action, -+ sizeof(toi_bkd.toi_action)); -+ return 0; -+ case USERUI_MSG_GET_DEBUG_STATE: -+ toi_send_netlink_message(&ui_helper_data, -+ USERUI_MSG_GET_DEBUG_STATE, -+ &toi_bkd.toi_debug_state, -+ sizeof(toi_bkd.toi_debug_state)); -+ return 0; -+ case USERUI_MSG_SET_STATE: -+ if (nlh->nlmsg_len < NLMSG_LENGTH(sizeof(int))) -+ return -EINVAL; -+ ui_nl_set_state(*data); -+ return 0; -+ case USERUI_MSG_SET_DEBUG_STATE: -+ if (nlh->nlmsg_len < NLMSG_LENGTH(sizeof(int))) -+ return -EINVAL; -+ toi_bkd.toi_debug_state = (*data); -+ return 0; -+ case USERUI_MSG_SPACE: -+ wake_up_interruptible(&userui_wait_for_key); -+ return 0; -+ case USERUI_MSG_GET_POWERDOWN_METHOD: -+ toi_send_netlink_message(&ui_helper_data, -+ USERUI_MSG_GET_POWERDOWN_METHOD, -+ &toi_poweroff_method, -+ sizeof(toi_poweroff_method)); -+ return 0; -+ case USERUI_MSG_SET_POWERDOWN_METHOD: -+ if (nlh->nlmsg_len != NLMSG_LENGTH(sizeof(char))) -+ return -EINVAL; -+ toi_poweroff_method = (unsigned long)(*data); -+ return 0; -+ case USERUI_MSG_GET_LOGLEVEL: -+ toi_send_netlink_message(&ui_helper_data, -+ USERUI_MSG_GET_LOGLEVEL, -+ &toi_bkd.toi_default_console_level, -+ sizeof(toi_bkd.toi_default_console_level)); -+ return 0; -+ case USERUI_MSG_SET_LOGLEVEL: -+ if (nlh->nlmsg_len < NLMSG_LENGTH(sizeof(int))) -+ return -EINVAL; -+ toi_bkd.toi_default_console_level = (*data); -+ return 0; -+ case USERUI_MSG_PRINTK: -+ printk(KERN_INFO "%s", (char *) data); -+ return 0; -+ } -+ -+ /* Unhandled here */ -+ return 1; -+} -+ -+/** -+ * userui_cond_pause - Possibly pause at user request. -+ * -+ * @pause: Whether to pause or just display the message. -+ * @message: Message to display at the start of pausing. -+ * -+ * Potentially pause and wait for the user to tell us to continue. We normally -+ * only pause when @pause is set. While paused, the user can do things like -+ * changing the loglevel, toggling the display of debugging sections and such -+ * like. -+ */ -+static void userui_cond_pause(int pause, char *message) -+{ -+ int displayed_message = 0, last_key = 0; -+ -+ while (last_key != 32 && -+ ui_helper_data.pid != -1 && -+ ((test_action_state(TOI_PAUSE) && pause) || -+ (test_action_state(TOI_SINGLESTEP)))) { -+ if (!displayed_message) { -+ toi_prepare_status(DONT_CLEAR_BAR, -+ "%s Press SPACE to continue.%s", -+ message ? message : "", -+ (test_action_state(TOI_SINGLESTEP)) ? -+ " Single step on." : ""); -+ displayed_message = 1; -+ } -+ last_key = userui_wait_for_keypress(0); -+ } -+ schedule(); -+} -+ -+/** -+ * userui_prepare_console - Prepare the console for use. -+ * -+ * Prepare a console for use, saving current kmsg settings and attempting to -+ * start userui. Console loglevel changes are handled by userui. -+ */ -+static void userui_prepare_console(void) -+{ -+ orig_kmsg = vt_kmsg_redirect(fg_console + 1); -+ -+ ui_helper_data.pid = -1; -+ -+ if (!userui_ops.enabled) { -+ printk(KERN_INFO "TuxOnIce: Userui disabled.\n"); -+ return; -+ } -+ -+ if (*ui_helper_data.program) -+ toi_netlink_setup(&ui_helper_data); -+ else -+ printk(KERN_INFO "TuxOnIce: Userui program not configured.\n"); -+} -+ -+/** -+ * userui_cleanup_console - Cleanup after a cycle. -+ * -+ * Tell userui to cleanup, and restore kmsg_redirect to its original value. -+ */ -+ -+static void userui_cleanup_console(void) -+{ -+ if (ui_helper_data.pid > -1) -+ toi_netlink_close(&ui_helper_data); -+ -+ vt_kmsg_redirect(orig_kmsg); -+} -+ -+/* -+ * User interface specific /sys/power/tuxonice entries. -+ */ -+ -+static struct toi_sysfs_data sysfs_params[] = { -+#if defined(CONFIG_NET) && defined(CONFIG_SYSFS) -+ SYSFS_BIT("enable_escape", SYSFS_RW, &toi_bkd.toi_action, -+ TOI_CAN_CANCEL, 0), -+ SYSFS_BIT("pause_between_steps", SYSFS_RW, &toi_bkd.toi_action, -+ TOI_PAUSE, 0), -+ SYSFS_INT("enabled", SYSFS_RW, &userui_ops.enabled, 0, 1, 0, NULL), -+ SYSFS_INT("progress_granularity", SYSFS_RW, &progress_granularity, 1, -+ 2048, 0, NULL), -+ SYSFS_STRING("program", SYSFS_RW, ui_helper_data.program, 255, 0, -+ set_ui_program_set), -+ SYSFS_INT("debug", SYSFS_RW, &ui_helper_data.debug, 0, 1, 0, NULL) -+#endif -+}; -+ -+static struct toi_module_ops userui_ops = { -+ .type = MISC_MODULE, -+ .name = "userui", -+ .shared_directory = "user_interface", -+ .module = THIS_MODULE, -+ .storage_needed = userui_storage_needed, -+ .save_config_info = userui_save_config_info, -+ .load_config_info = userui_load_config_info, -+ .memory_needed = userui_memory_needed, -+ .post_atomic_restore = userui_post_atomic_restore, -+ .sysfs_data = sysfs_params, -+ .num_sysfs_entries = sizeof(sysfs_params) / -+ sizeof(struct toi_sysfs_data), -+}; -+ -+static struct ui_ops my_ui_ops = { -+ .update_status = userui_update_status, -+ .message = userui_message, -+ .prepare_status = userui_prepare_status, -+ .abort = userui_abort_hibernate, -+ .cond_pause = userui_cond_pause, -+ .prepare = userui_prepare_console, -+ .cleanup = userui_cleanup_console, -+ .wait_for_key = userui_wait_for_keypress, -+}; -+ -+/** -+ * toi_user_ui_init - Boot time initialisation for user interface. -+ * -+ * Invoked from the core init routine. -+ */ -+static __init int toi_user_ui_init(void) -+{ -+ int result; -+ -+ ui_helper_data.nl = NULL; -+ strncpy(ui_helper_data.program, CONFIG_TOI_USERUI_DEFAULT_PATH, 255); -+ ui_helper_data.pid = -1; -+ ui_helper_data.skb_size = sizeof(struct userui_msg_params); -+ ui_helper_data.pool_limit = 6; -+ ui_helper_data.netlink_id = NETLINK_TOI_USERUI; -+ ui_helper_data.name = "userspace ui"; -+ ui_helper_data.rcv_msg = userui_user_rcv_msg; -+ ui_helper_data.interface_version = 8; -+ ui_helper_data.must_init = 0; -+ ui_helper_data.not_ready = userui_cleanup_console; -+ init_completion(&ui_helper_data.wait_for_process); -+ result = toi_register_module(&userui_ops); -+ if (!result) -+ result = toi_register_ui_ops(&my_ui_ops); -+ if (result) -+ toi_unregister_module(&userui_ops); -+ -+ return result; -+} -+ -+#ifdef MODULE -+/** -+ * toi_user_ui_ext - Cleanup code for if the core is unloaded. -+ */ -+static __exit void toi_user_ui_exit(void) -+{ -+ toi_netlink_close_complete(&ui_helper_data); -+ toi_remove_ui_ops(&my_ui_ops); -+ toi_unregister_module(&userui_ops); -+} -+ -+module_init(toi_user_ui_init); -+module_exit(toi_user_ui_exit); -+MODULE_AUTHOR("Nigel Cunningham"); -+MODULE_DESCRIPTION("TuxOnIce Userui Support"); -+MODULE_LICENSE("GPL"); -+#else -+late_initcall(toi_user_ui_init); -+#endif -diff --git a/kernel/power/user.c b/kernel/power/user.c -index bf0014d..d1c4ac2 100644 ---- a/kernel/power/user.c -+++ b/kernel/power/user.c -@@ -64,6 +64,7 @@ static struct snapshot_data { - } snapshot_state; - - atomic_t snapshot_device_available = ATOMIC_INIT(1); -+EXPORT_SYMBOL_GPL(snapshot_device_available); - - static int snapshot_open(struct inode *inode, struct file *filp) - { -diff --git a/kernel/printk.c b/kernel/printk.c -index 1751c45..b7257e3 100644 ---- a/kernel/printk.c -+++ b/kernel/printk.c -@@ -32,6 +32,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -68,6 +69,7 @@ int console_printk[4] = { - MINIMUM_CONSOLE_LOGLEVEL, /* minimum_console_loglevel */ - DEFAULT_CONSOLE_LOGLEVEL, /* default_console_loglevel */ - }; -+EXPORT_SYMBOL_GPL(console_printk); - - static int saved_console_loglevel = -1; - -@@ -956,6 +958,7 @@ void suspend_console(void) - console_suspended = 1; - up(&console_sem); - } -+EXPORT_SYMBOL_GPL(suspend_console); - - void resume_console(void) - { -@@ -965,6 +968,7 @@ void resume_console(void) - console_suspended = 0; - release_console_sem(); - } -+EXPORT_SYMBOL_GPL(resume_console); - - /** - * acquire_console_sem - lock the console system for exclusive use. -diff --git a/mm/bootmem.c b/mm/bootmem.c -index 7d14868..e01836f 100644 ---- a/mm/bootmem.c -+++ b/mm/bootmem.c -@@ -23,6 +23,7 @@ - unsigned long max_low_pfn; - unsigned long min_low_pfn; - unsigned long max_pfn; -+EXPORT_SYMBOL_GPL(max_pfn); - - #ifdef CONFIG_CRASH_DUMP - /* -diff --git a/mm/highmem.c b/mm/highmem.c -index 9c1e627..b0facc3 100644 ---- a/mm/highmem.c -+++ b/mm/highmem.c -@@ -57,6 +57,7 @@ unsigned int nr_free_highpages (void) - - return pages; - } -+EXPORT_SYMBOL_GPL(nr_free_highpages); - - static int pkmap_count[LAST_PKMAP]; - static unsigned int last_pkmap_nr; -diff --git a/mm/memory.c b/mm/memory.c -index 09e4b1b..fe93399 100644 ---- a/mm/memory.c -+++ b/mm/memory.c -@@ -1243,6 +1243,7 @@ no_page_table: - return ERR_PTR(-EFAULT); - return page; - } -+EXPORT_SYMBOL_GPL(follow_page); - - int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, - unsigned long start, int nr_pages, unsigned int gup_flags, -diff --git a/mm/mmzone.c b/mm/mmzone.c -index f5b7d17..72a6770 100644 ---- a/mm/mmzone.c -+++ b/mm/mmzone.c -@@ -14,6 +14,7 @@ struct pglist_data *first_online_pgdat(void) - { - return NODE_DATA(first_online_node); - } -+EXPORT_SYMBOL_GPL(first_online_pgdat); - - struct pglist_data *next_online_pgdat(struct pglist_data *pgdat) - { -@@ -23,6 +24,7 @@ struct pglist_data *next_online_pgdat(struct pglist_data *pgdat) - return NULL; - return NODE_DATA(nid); - } -+EXPORT_SYMBOL_GPL(next_online_pgdat); - - /* - * next_zone - helper magic for for_each_zone() -@@ -42,6 +44,7 @@ struct zone *next_zone(struct zone *zone) - } - return zone; - } -+EXPORT_SYMBOL_GPL(next_zone); - - static inline int zref_in_nodemask(struct zoneref *zref, nodemask_t *nodes) - { -diff --git a/mm/page-writeback.c b/mm/page-writeback.c -index 0b19943..4d31aa0 100644 ---- a/mm/page-writeback.c -+++ b/mm/page-writeback.c -@@ -99,6 +99,7 @@ unsigned int dirty_expire_interval = 30 * 100; /* centiseconds */ - * Flag that makes the machine dump writes/reads and block dirtyings. - */ - int block_dump; -+EXPORT_SYMBOL_GPL(block_dump); - - /* - * Flag that puts the machine in "laptop mode". Doubles as a timeout in jiffies: -diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 8deb9d0..2ffc3f4 100644 ---- a/mm/page_alloc.c -+++ b/mm/page_alloc.c -@@ -2106,6 +2106,26 @@ static unsigned int nr_free_zone_pages(int offset) - return sum; - } - -+static unsigned int nr_unallocated_zone_pages(int offset) -+{ -+ struct zoneref *z; -+ struct zone *zone; -+ -+ /* Just pick one node, since fallback list is circular */ -+ unsigned int sum = 0; -+ -+ struct zonelist *zonelist = node_zonelist(numa_node_id(), GFP_KERNEL); -+ -+ for_each_zone_zonelist(zone, z, zonelist, offset) { -+ unsigned long high = high_wmark_pages(zone); -+ unsigned long left = zone_page_state(zone, NR_FREE_PAGES); -+ if (left > high) -+ sum += left - high; -+ } -+ -+ return sum; -+} -+ - /* - * Amount of free RAM allocatable within ZONE_DMA and ZONE_NORMAL - */ -@@ -2116,6 +2136,15 @@ unsigned int nr_free_buffer_pages(void) - EXPORT_SYMBOL_GPL(nr_free_buffer_pages); - - /* -+ * Amount of free RAM allocatable within ZONE_DMA and ZONE_NORMAL -+ */ -+unsigned int nr_unallocated_buffer_pages(void) -+{ -+ return nr_unallocated_zone_pages(gfp_zone(GFP_USER)); -+} -+EXPORT_SYMBOL_GPL(nr_unallocated_buffer_pages); -+ -+/* - * Amount of free RAM allocatable within all zones - */ - unsigned int nr_free_pagecache_pages(void) -diff --git a/mm/shmem.c b/mm/shmem.c -index eef4ebe..1adeead 100644 ---- a/mm/shmem.c -+++ b/mm/shmem.c -@@ -1568,6 +1568,8 @@ static struct inode *shmem_get_inode(struct super_block *sb, int mode, - memset(info, 0, (char *)inode - (char *)info); - spin_lock_init(&info->lock); - info->flags = flags & VM_NORESERVE; -+ if (flags & VM_ATOMIC_COPY) -+ inode->i_flags |= S_ATOMIC_COPY; - INIT_LIST_HEAD(&info->swaplist); - cache_no_acl(inode); - -diff --git a/mm/swap_state.c b/mm/swap_state.c -index 6d1daeb..eced4ef 100644 ---- a/mm/swap_state.c -+++ b/mm/swap_state.c -@@ -46,6 +46,7 @@ struct address_space swapper_space = { - .i_mmap_nonlinear = LIST_HEAD_INIT(swapper_space.i_mmap_nonlinear), - .backing_dev_info = &swap_backing_dev_info, - }; -+EXPORT_SYMBOL_GPL(swapper_space); - - #define INC_CACHE_INFO(x) do { swap_cache_info.x++; } while (0) - -diff --git a/mm/swapfile.c b/mm/swapfile.c -index 6c0585b..9c563b5 100644 ---- a/mm/swapfile.c -+++ b/mm/swapfile.c -@@ -39,7 +39,6 @@ - static bool swap_count_continued(struct swap_info_struct *, pgoff_t, - unsigned char); - static void free_swap_count_continuations(struct swap_info_struct *); --static sector_t map_swap_entry(swp_entry_t, struct block_device**); - - static DEFINE_SPINLOCK(swap_lock); - static unsigned int nr_swapfiles; -@@ -477,6 +476,7 @@ noswap: - spin_unlock(&swap_lock); - return (swp_entry_t) {0}; - } -+EXPORT_SYMBOL_GPL(get_swap_page); - - /* The only caller of this function is now susupend routine */ - swp_entry_t get_swap_page_of_type(int type) -@@ -499,6 +499,7 @@ swp_entry_t get_swap_page_of_type(int type) - spin_unlock(&swap_lock); - return (swp_entry_t) {0}; - } -+EXPORT_SYMBOL_GPL(get_swap_page_of_type); - - static struct swap_info_struct *swap_info_get(swp_entry_t entry) - { -@@ -619,6 +620,7 @@ void swapcache_free(swp_entry_t entry, struct page *page) - spin_unlock(&swap_lock); - } - } -+EXPORT_SYMBOL_GPL(swap_free); - - /* - * How many references to page are currently swapped out? -@@ -1263,7 +1265,7 @@ static void drain_mmlist(void) - * Note that the type of this function is sector_t, but it returns page offset - * into the bdev, not sector offset. - */ --static sector_t map_swap_entry(swp_entry_t entry, struct block_device **bdev) -+sector_t map_swap_entry(swp_entry_t entry, struct block_device **bdev) - { - struct swap_info_struct *sis; - struct swap_extent *start_se; -@@ -1290,6 +1292,7 @@ static sector_t map_swap_entry(swp_entry_t entry, struct block_device **bdev) - BUG_ON(se == start_se); /* It *must* be present */ - } - } -+EXPORT_SYMBOL_GPL(map_swap_entry); - - /* - * Returns the page offset into bdev for the specified page's swap entry. -@@ -1632,6 +1635,7 @@ out_dput: - out: - return err; - } -+EXPORT_SYMBOL_GPL(sys_swapoff); - - #ifdef CONFIG_PROC_FS - /* iterator */ -@@ -2055,6 +2059,7 @@ out: - } - return error; - } -+EXPORT_SYMBOL_GPL(sys_swapon); - - void si_swapinfo(struct sysinfo *val) - { -@@ -2072,6 +2077,7 @@ void si_swapinfo(struct sysinfo *val) - val->totalswap = total_swap_pages + nr_to_be_unused; - spin_unlock(&swap_lock); - } -+EXPORT_SYMBOL_GPL(si_swapinfo); - - /* - * Verify that a swap entry is valid and increment its swap map count. -@@ -2179,6 +2185,13 @@ int swapcache_prepare(swp_entry_t entry) - return __swap_duplicate(entry, SWAP_HAS_CACHE); - } - -+ -+struct swap_info_struct *get_swap_info_struct(unsigned type) -+{ -+ return swap_info[type]; -+} -+EXPORT_SYMBOL_GPL(get_swap_info_struct); -+ - /* - * swap_lock prevents swap_map being freed. Don't grab an extra - * reference on the swaphandle, it doesn't matter if it becomes unused. -diff --git a/mm/vmscan.c b/mm/vmscan.c -index c26986c..ac2a07d 100644 ---- a/mm/vmscan.c -+++ b/mm/vmscan.c -@@ -2285,6 +2285,9 @@ void wakeup_kswapd(struct zone *zone, int order) - if (!populated_zone(zone)) - return; - -+ if (freezer_is_on()) -+ return; -+ - pgdat = zone->zone_pgdat; - if (zone_watermark_ok(zone, order, low_wmark_pages(zone), 0, 0)) - return; -@@ -2372,6 +2375,7 @@ unsigned long shrink_all_memory(unsigned long nr_to_reclaim) - - return nr_reclaimed; - } -+EXPORT_SYMBOL_GPL(shrink_all_memory); - #endif /* CONFIG_HIBERNATION */ - - /* It's optimal to keep kswapds on the same CPUs as their memory, but From 68f912b6e755a47e4fb9018729397942e0681a90 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 3 May 2010 05:55:51 +0200 Subject: [PATCH 155/171] xbmc: - update to xbmc-29740 --- .../001-xbmc-fix_libcurl.so_detection.diff | 12 - .../201_xbmc-let_select_XBMCProjectM-0.1.diff | 32 +- .../patches/202_xbmc-let_select_RSXS-0.1.diff | 32 +- ...ariable_GCC_instead_hardcoded_gcc-0.1.diff | 96 +-- ...d_DESTDIR_support_to_make_install-0.1.diff | 17 +- ...bmc-add_udisks_and_upower_support-0.1.diff | 734 ------------------ packages/mediacenter/xbmc/url | 2 +- 7 files changed, 52 insertions(+), 873 deletions(-) delete mode 100644 packages/mediacenter/xbmc/patches/001-xbmc-fix_libcurl.so_detection.diff delete mode 100644 packages/mediacenter/xbmc/patches/404-xbmc-add_udisks_and_upower_support-0.1.diff diff --git a/packages/mediacenter/xbmc/patches/001-xbmc-fix_libcurl.so_detection.diff b/packages/mediacenter/xbmc/patches/001-xbmc-fix_libcurl.so_detection.diff deleted file mode 100644 index 57772d9445..0000000000 --- a/packages/mediacenter/xbmc/patches/001-xbmc-fix_libcurl.so_detection.diff +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naur xbmc-29428/configure.in xbmc-29428.patch/configure.in ---- xbmc-29428/configure.in 2010-04-22 00:56:44.000000000 +0200 -+++ xbmc-29428.patch/configure.in 2010-04-22 19:06:31.906738563 +0200 -@@ -478,7 +478,7 @@ - while read output; do objdump -p $output | \ - grep SONAME | \ - awk 'BEGIN { FS = " " } ; { print $2 }'; done) -- if [ -z "$LIBCURL_BASENAME" ]; then -+ if [[ -z "$LIBCURL_BASENAME" ]]; then - echo "Unable to determine basename of libcurl library" - fi - diff --git a/packages/mediacenter/xbmc/patches/201_xbmc-let_select_XBMCProjectM-0.1.diff b/packages/mediacenter/xbmc/patches/201_xbmc-let_select_XBMCProjectM-0.1.diff index e6d31030d5..7ea8b5abbd 100644 --- a/packages/mediacenter/xbmc/patches/201_xbmc-let_select_XBMCProjectM-0.1.diff +++ b/packages/mediacenter/xbmc/patches/201_xbmc-let_select_XBMCProjectM-0.1.diff @@ -1,6 +1,6 @@ -diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in ---- xbmc-28910/configure.in 2010-03-28 18:55:35.040753605 +0200 -+++ xbmc-28910.patch/configure.in 2010-03-28 18:58:11.605628523 +0200 +diff -Naur xbmc-29740/configure.in xbmc-29740.patch/configure.in +--- xbmc-29740/configure.in 2010-05-03 03:25:29.000000000 +0200 ++++ xbmc-29740.patch/configure.in 2010-05-03 04:05:13.412131036 +0200 @@ -23,6 +23,8 @@ xrandr_disabled="== XRandR support disabled. SDL will be used for resolution support. ==" goom_enabled="== GOOM enabled. ==" @@ -10,7 +10,7 @@ diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in pulse_not_found="== Could not find libpulse. PulseAudio support disabled. ==" pulse_disabled="== PulseAudio support manually disabled. ==" faac_not_found="== Could not find libfaac. FAAC support disabled. ==" -@@ -152,6 +154,12 @@ +@@ -168,6 +170,12 @@ [use_goom=$enableval], [use_goom=no]) @@ -23,7 +23,7 @@ diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in AC_PATH_PROG(CCACHE,ccache,none) AC_ARG_ENABLE([ccache], [AS_HELP_STRING([--enable-ccache], -@@ -531,6 +539,15 @@ +@@ -579,6 +587,15 @@ fi fi @@ -37,9 +37,9 @@ diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in +fi + ### External libraries checks - if test "$use_external_libraries" = "yes"; then - AC_MSG_NOTICE($external_libraries_enabled) -@@ -862,6 +879,12 @@ + # External FFmpeg + if test "$use_external_ffmpeg" = "yes"; then +@@ -943,6 +960,12 @@ final_message="$final_message\n GOOM:\t\tNo" fi @@ -52,15 +52,15 @@ diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in if test "$use_pcre" = "yes"; then final_message="$final_message\n PCRE Support:\tYes" else -@@ -1106,6 +1129,7 @@ +@@ -1181,6 +1204,7 @@ AC_SUBST(SDL_DEFINES) AC_SUBST(BUILD_DVDCSS) AC_SUBST(BUILD_GOOM) +AC_SUBST(BUILD_XBMCPROJECTM) - AC_SUBST(USE_EXTERNAL_LIBRARIES) AC_SUBST(USE_EXTERNAL_FFMPEG) AC_SUBST(USE_EXTERNAL_LIBA52) -@@ -1451,7 +1475,7 @@ + AC_SUBST(USE_EXTERNAL_LIBDTS) +@@ -1535,7 +1559,7 @@ -DSYSCONF_INSTALL_DIR:PATH="${sysconfdir}" -DSHARE_INSTALL_PREFIX:PATH="${datadir}" . set +x fi @@ -69,10 +69,10 @@ diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in XB_CONFIG_MODULE([xbmc/visualizations/Goom/goom2k4-0],[ if test "$host_vendor" != "apple" ; then -diff -Naur xbmc-28910/Makefile.in xbmc-28910.patch/Makefile.in ---- xbmc-28910/Makefile.in 2010-03-28 17:12:32.000000000 +0200 -+++ xbmc-28910.patch/Makefile.in 2010-03-28 18:58:11.636752616 +0200 -@@ -105,8 +105,10 @@ +diff -Naur xbmc-29740/Makefile.in xbmc-29740.patch/Makefile.in +--- xbmc-29740/Makefile.in 2010-05-03 03:25:29.000000000 +0200 ++++ xbmc-29740.patch/Makefile.in 2010-05-03 04:04:11.589130864 +0200 +@@ -106,8 +106,10 @@ VIS_DIRS=\ xbmc/visualizations/OpenGLSpectrum \ @@ -85,7 +85,7 @@ diff -Naur xbmc-28910/Makefile.in xbmc-28910.patch/Makefile.in ifeq ($(findstring osx,$(ARCH)), osx) VIS_DIRS+=xbmc/visualizations/iTunes endif -@@ -303,7 +305,9 @@ +@@ -306,7 +308,9 @@ visualizations: exports $(MAKE) -C xbmc/visualizations/OpenGLSpectrum $(MAKE) -C xbmc/visualizations/WaveForm diff --git a/packages/mediacenter/xbmc/patches/202_xbmc-let_select_RSXS-0.1.diff b/packages/mediacenter/xbmc/patches/202_xbmc-let_select_RSXS-0.1.diff index caa0a141ee..612ee758bd 100644 --- a/packages/mediacenter/xbmc/patches/202_xbmc-let_select_RSXS-0.1.diff +++ b/packages/mediacenter/xbmc/patches/202_xbmc-let_select_RSXS-0.1.diff @@ -1,6 +1,6 @@ -diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in ---- xbmc-28910/configure.in 2010-03-28 19:01:27.995753591 +0200 -+++ xbmc-28910.patch/configure.in 2010-03-28 19:02:17.307753519 +0200 +diff -Naur xbmc-29740/configure.in xbmc-29740.patch/configure.in +--- xbmc-29740/configure.in 2010-05-03 04:06:14.609255790 +0200 ++++ xbmc-29740.patch/configure.in 2010-05-03 04:07:44.163129774 +0200 @@ -25,6 +25,8 @@ goom_disabled="== GOOM disabled. ==" xbmcprojectm_enabled="== XBMCProjectM enabled. ==" @@ -10,7 +10,7 @@ diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in pulse_not_found="== Could not find libpulse. PulseAudio support disabled. ==" pulse_disabled="== PulseAudio support manually disabled. ==" faac_not_found="== Could not find libfaac. FAAC support disabled. ==" -@@ -160,6 +162,12 @@ +@@ -176,6 +178,12 @@ [use_xbmcprojectm=$enableval], [use_xbmcprojectm=yes]) @@ -23,7 +23,7 @@ diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in AC_PATH_PROG(CCACHE,ccache,none) AC_ARG_ENABLE([ccache], [AS_HELP_STRING([--enable-ccache], -@@ -548,6 +556,15 @@ +@@ -596,6 +604,15 @@ BUILD_XBMCPROJECTM=1 fi @@ -37,9 +37,9 @@ diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in +fi + ### External libraries checks - if test "$use_external_libraries" = "yes"; then - AC_MSG_NOTICE($external_libraries_enabled) -@@ -885,6 +902,12 @@ + # External FFmpeg + if test "$use_external_ffmpeg" = "yes"; then +@@ -966,6 +983,12 @@ final_message="$final_message\n XBMCProjectM:\tNo" fi @@ -52,15 +52,15 @@ diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in if test "$use_pcre" = "yes"; then final_message="$final_message\n PCRE Support:\tYes" else -@@ -1130,6 +1153,7 @@ +@@ -1205,6 +1228,7 @@ AC_SUBST(BUILD_DVDCSS) AC_SUBST(BUILD_GOOM) AC_SUBST(BUILD_XBMCPROJECTM) +AC_SUBST(BUILD_RSXS) - AC_SUBST(USE_EXTERNAL_LIBRARIES) AC_SUBST(USE_EXTERNAL_FFMPEG) AC_SUBST(USE_EXTERNAL_LIBA52) -@@ -1529,7 +1553,7 @@ + AC_SUBST(USE_EXTERNAL_LIBDTS) +@@ -1613,7 +1637,7 @@ --disable-lattice \ --disable-skyrocket fi @@ -69,10 +69,10 @@ diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libbdnav/], [ if test "$host_vendor" = "apple" ; then -diff -Naur xbmc-28910/Makefile.in xbmc-28910.patch/Makefile.in ---- xbmc-28910/Makefile.in 2010-03-28 19:01:27.997753604 +0200 -+++ xbmc-28910.patch/Makefile.in 2010-03-28 19:02:17.308751221 +0200 -@@ -100,8 +100,10 @@ +diff -Naur xbmc-29740/Makefile.in xbmc-29740.patch/Makefile.in +--- xbmc-29740/Makefile.in 2010-05-03 04:06:14.610256210 +0200 ++++ xbmc-29740.patch/Makefile.in 2010-05-03 04:07:08.523256011 +0200 +@@ -101,8 +101,10 @@ lib/xbmc-dll-symbols \ lib/jsoncpp/jsoncpp/src/lib_json @@ -85,7 +85,7 @@ diff -Naur xbmc-28910/Makefile.in xbmc-28910.patch/Makefile.in VIS_DIRS=\ xbmc/visualizations/OpenGLSpectrum \ -@@ -317,7 +319,9 @@ +@@ -320,7 +322,9 @@ endif endif screensavers: exports diff --git a/packages/mediacenter/xbmc/patches/303-xbmc-use_variable_GCC_instead_hardcoded_gcc-0.1.diff b/packages/mediacenter/xbmc/patches/303-xbmc-use_variable_GCC_instead_hardcoded_gcc-0.1.diff index 182c72f5ed..fed04421e0 100644 --- a/packages/mediacenter/xbmc/patches/303-xbmc-use_variable_GCC_instead_hardcoded_gcc-0.1.diff +++ b/packages/mediacenter/xbmc/patches/303-xbmc-use_variable_GCC_instead_hardcoded_gcc-0.1.diff @@ -1,84 +1,12 @@ -diff -Naur xbmc-29428/configure.in xbmc-29428.patch/configure.in ---- xbmc-29428/configure.in 2010-04-22 00:56:44.000000000 +0200 -+++ xbmc-29428.patch/configure.in 2010-04-22 02:22:21.771774020 +0200 -@@ -474,7 +474,7 @@ - # check for library basenames - if test "$host_vendor" != "apple"; then - # libcurl -- LIBCURL_BASENAME=$(gcc $CFLAGS -print-file-name=libcurl.so | \ -+ LIBCURL_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libcurl.so | \ - while read output; do objdump -p $output | \ - grep SONAME | \ - awk 'BEGIN { FS = " " } ; { print $2 }'; done) -@@ -483,7 +483,7 @@ - fi - - # libFLAC -- LIBFLAC_BASENAME=$(gcc $CFLAGS -print-file-name=libFLAC.so | \ -+ LIBFLAC_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libFLAC.so | \ - while read output; do objdump -p $output | \ - grep SONAME | \ - awk 'BEGIN { FS = " " } ; { print $2 }'; done) -@@ -492,7 +492,7 @@ - fi - - # libvorbisfile -- LIBVORBISFILE_BASENAME=$(gcc $CFLAGS -print-file-name=libvorbisfile.so | \ -+ LIBVORBISFILE_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libvorbisfile.so | \ - while read output; do objdump -p $output | \ - grep SONAME | \ - awk 'BEGIN { FS = " " } ; { print $2 }'; done) -@@ -501,7 +501,7 @@ - fi - - # libmodplug -- LIBMODPLUG_BASENAME=$(gcc $CFLAGS -print-file-name=libmodplug.so | \ -+ LIBMODPLUG_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libmodplug.so | \ - while read output; do objdump -p $output | \ - grep SONAME | \ - awk 'BEGIN { FS = " " } ; { print $2 }'; done) -@@ -510,7 +510,7 @@ - fi - - # libfaad -- LIBFAAD_BASENAME=$(gcc $CFLAGS -print-file-name=libfaad.so | \ -+ LIBFAAD_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libfaad.so | \ - while read output; do objdump -p $output | \ - grep SONAME | \ - awk 'BEGIN { FS = " " } ; { print $2 }'; done) -@@ -519,7 +519,7 @@ - fi - - # libmad -- LIBMAD_BASENAME=$(gcc $CFLAGS -print-file-name=libmad.so | \ -+ LIBMAD_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libmad.so | \ - while read output; do objdump -p $output | \ - grep SONAME | \ - awk 'BEGIN { FS = " " } ; { print $2 }'; done) -@@ -528,7 +528,7 @@ - fi - - # libogg -- LIBOGG_BASENAME=$(gcc $CFLAGS -print-file-name=libogg.so | \ -+ LIBOGG_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libogg.so | \ - while read output; do objdump -p $output | \ - grep SONAME | \ - awk 'BEGIN { FS = " " } ; { print $2 }'; done) -@@ -537,7 +537,7 @@ - fi - - # libvorbisenc -- LIBVORBISENC_BASENAME=$(gcc $CFLAGS -print-file-name=libvorbisenc.so | \ -+ LIBVORBISENC_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libvorbisenc.so | \ - while read output; do objdump -p $output | \ - grep SONAME | \ - awk 'BEGIN { FS = " " } ; { print $2 }'; done) -@@ -546,7 +546,7 @@ - fi - - # libvorbis -- LIBVORBIS_BASENAME=$(gcc $CFLAGS -print-file-name=libvorbis.so | \ -+ LIBVORBIS_BASENAME=$($ac_cv_prog_CC $CFLAGS -print-file-name=libvorbis.so | \ - while read output; do objdump -p $output | \ - grep SONAME | \ - awk 'BEGIN { FS = " " } ; { print $2 }'; done) +diff -Naur xbmc-29740/configure.in xbmc-29740.patch/configure.in +--- xbmc-29740/configure.in 2010-05-03 04:08:41.115131030 +0200 ++++ xbmc-29740.patch/configure.in 2010-05-03 04:12:20.116129219 +0200 +@@ -499,7 +499,7 @@ + AC_DEFUN([XB_FIND_SONAME], + [ + AC_MSG_CHECKING([for lib$2 soname]) +- $1_SONAME=$( gcc -print-file-name=lib$2.so | \ ++ $1_SONAME=$( $CC -print-file-name=lib$2.so | \ + while read output; do objdump -p $output | \ + grep "SONAME" | \ + sed -e 's/ \+SONAME \+//'; done 2> /dev/null ) diff --git a/packages/mediacenter/xbmc/patches/403-xbmc-add_DESTDIR_support_to_make_install-0.1.diff b/packages/mediacenter/xbmc/patches/403-xbmc-add_DESTDIR_support_to_make_install-0.1.diff index aecb77d0bd..509472b745 100644 --- a/packages/mediacenter/xbmc/patches/403-xbmc-add_DESTDIR_support_to_make_install-0.1.diff +++ b/packages/mediacenter/xbmc/patches/403-xbmc-add_DESTDIR_support_to_make_install-0.1.diff @@ -1,7 +1,7 @@ -diff -Naur xbmc-28910/Makefile.in xbmc-28910.patch/Makefile.in ---- xbmc-28910/Makefile.in 2010-03-28 19:09:49.356628842 +0200 -+++ xbmc-28910.patch/Makefile.in 2010-03-28 19:28:17.265753408 +0200 -@@ -495,7 +495,7 @@ +diff -Naur xbmc-29740/Makefile.in xbmc-29740.patch/Makefile.in +--- xbmc-29740/Makefile.in 2010-05-03 04:08:41.116131093 +0200 ++++ xbmc-29740.patch/Makefile.in 2010-05-03 04:16:42.386130163 +0200 +@@ -497,7 +497,7 @@ $(MAKE) -C tools/TexturePacker/ install-bin: xbmc.bin # developement convenience target @@ -10,7 +10,7 @@ diff -Naur xbmc-28910/Makefile.in xbmc-28910.patch/Makefile.in ifeq ($(findstring osx,$(ARCH)), osx) # TODO: add osx install -@@ -503,55 +503,55 @@ +@@ -505,53 +505,53 @@ install: install-binaries install-arch install-datas install-web install-binaries: install-scripts @@ -25,8 +25,8 @@ diff -Naur xbmc-28910/Makefile.in xbmc-28910.patch/Makefile.in install-arch: @# Arch dependent files -- @find system screensavers visualisations -regextype posix-extended -type f -not -iregex ".*svn.*|.*win32(dx)?\.vis|.*osx\.vis" -iregex ".*$(ARCH).*|.*\.vis|.*\.xbs" -exec install -D "{}" $(prefix)/share/xbmc/"{}" \; -printf " -- %-75.75f\r" -+ @find system screensavers visualisations -regextype posix-extended -type f -not -iregex ".*svn.*|.*win32(dx)?\.vis|.*osx\.vis" -iregex ".*$(ARCH).*|.*\.vis|.*\.xbs" -exec install -D "{}" $(DESTDIR)/$(prefix)/share/xbmc/"{}" \; -printf " -- %-75.75f\r" +- @find system addons -regextype posix-extended -type f -not -iregex ".*svn.*|.*win32(dx)?\.vis|.*osx\.vis" -iregex ".*$(ARCH).*|.*\.vis|.*\.xbs" -exec install -D "{}" $(prefix)/share/xbmc/"{}" \; -printf " -- %-75.75f\r" ++ @find system addons -regextype posix-extended -type f -not -iregex ".*svn.*|.*win32(dx)?\.vis|.*osx\.vis" -iregex ".*$(ARCH).*|.*\.vis|.*\.xbs" -exec install -D "{}" $(DESTDIR)/$(prefix)/share/xbmc/"{}" \; -printf " -- %-75.75f\r" install-scripts: - @install -D tools/Linux/xbmc.sh $(prefix)/bin/xbmc @@ -49,9 +49,6 @@ diff -Naur xbmc-28910/Makefile.in xbmc-28910.patch/Makefile.in @# Arch independent files - @find addons language media scripts sounds userdata system -regextype posix-extended -type f -not -iregex ".*svn.*|.*\.so|.*\.dll|.*\.pyd|.*python/.*\.zlib" -exec install -D -m 0644 "{}" $(prefix)/share/xbmc/"{}" \; -printf " -- %-75.75f\r" + @find addons language media scripts sounds userdata system -regextype posix-extended -type f -not -iregex ".*svn.*|.*\.so|.*\.dll|.*\.pyd|.*python/.*\.zlib" -exec install -D -m 0644 "{}" $(DESTDIR)/$(prefix)/share/xbmc/"{}" \; -printf " -- %-75.75f\r" - @# Skins -- @find skin -regextype posix-extended -type f -not -iregex '.*/\.svn/.*|^skin/[^/]*/media/.*[^x][^b][^t]' -exec install -D -m 0644 '{}' $(prefix)/share/xbmc/'{}' \; -printf " -- %-75.75f\r" -+ @find skin -regextype posix-extended -type f -not -iregex '.*/\.svn/.*|^skin/[^/]*/media/.*[^x][^b][^t]' -exec install -D -m 0644 '{}' $(DESTDIR)/$(prefix)/share/xbmc/'{}' \; -printf " -- %-75.75f\r" @# Icons and links - @mkdir -p $(prefix)/share/applications $(prefix)/share/pixmaps - @cp -a tools/Linux/xbmc.png $(prefix)/share/pixmaps/ diff --git a/packages/mediacenter/xbmc/patches/404-xbmc-add_udisks_and_upower_support-0.1.diff b/packages/mediacenter/xbmc/patches/404-xbmc-add_udisks_and_upower_support-0.1.diff deleted file mode 100644 index b13b23d56d..0000000000 --- a/packages/mediacenter/xbmc/patches/404-xbmc-add_udisks_and_upower_support-0.1.diff +++ /dev/null @@ -1,734 +0,0 @@ -diff -Naur xbmc-29490/xbmc/linux/ConsoleUPowerSyscall.cpp xbmc-29490.patch/xbmc/linux/ConsoleUPowerSyscall.cpp ---- xbmc-29490/xbmc/linux/ConsoleUPowerSyscall.cpp 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-29490.patch/xbmc/linux/ConsoleUPowerSyscall.cpp 2010-04-25 23:12:52.124485047 +0200 -@@ -0,0 +1,143 @@ -+/* -+ * Copyright (C) 2005-2009 Team XBMC -+ * http://www.xbmc.org -+ * -+ * This Program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2, or (at your option) -+ * any later version. -+ * -+ * This Program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with XBMC; see the file COPYING. If not, write to -+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -+ * http://www.gnu.org/copyleft/gpl.html -+ * -+ */ -+ -+#include "system.h" -+#include "ConsoleUPowerSyscall.h" -+#include "utils/log.h" -+ -+#ifdef HAS_DBUS -+#include "Application.h" -+#include "LocalizeStrings.h" -+#include "DBusUtil.h" -+ -+CConsoleUPowerSyscall::CConsoleUPowerSyscall() -+{ -+ m_CanPowerdown = ConsoleKitMethodCall("CanStop"); -+ -+ // If "the name org.freedesktop.UPower was not provided by any .service files", -+ // GetVariant() would return NULL, and asBoolean() would crash. -+ CVariant canSuspend = CDBusUtil::GetVariant("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "can_suspend"); -+ -+ if ( !canSuspend.isNull() ) -+ m_CanSuspend = canSuspend.asBoolean(); -+ else -+ m_CanSuspend = false; -+ -+ CVariant canHibernate = CDBusUtil::GetVariant("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "can_hibernate"); -+ -+ if ( !canHibernate.isNull() ) -+ m_CanHibernate = canHibernate.asBoolean(); -+ else -+ m_CanHibernate = false; -+ -+ m_CanReboot = ConsoleKitMethodCall("CanRestart"); -+} -+ -+bool CConsoleUPowerSyscall::Powerdown() -+{ -+ CDBusMessage message("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", "Stop"); -+ return message.SendSystem() != NULL; -+} -+ -+bool CConsoleUPowerSyscall::Suspend() -+{ -+ CDBusMessage message("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "Suspend"); -+ return message.SendSystem() != NULL; -+} -+ -+bool CConsoleUPowerSyscall::Hibernate() -+{ -+ CDBusMessage message("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "Hibernate"); -+ return message.SendSystem() != NULL; -+} -+ -+bool CConsoleUPowerSyscall::Reboot() -+{ -+ CDBusMessage message("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", "Restart"); -+ return message.SendSystem() != NULL; -+} -+ -+bool CConsoleUPowerSyscall::CanPowerdown() -+{ -+ return m_CanPowerdown; -+} -+bool CConsoleUPowerSyscall::CanSuspend() -+{ -+ return m_CanSuspend; -+} -+bool CConsoleUPowerSyscall::CanHibernate() -+{ -+ return m_CanHibernate; -+} -+bool CConsoleUPowerSyscall::CanReboot() -+{ -+ return m_CanReboot; -+} -+ -+bool CConsoleUPowerSyscall::HasDeviceConsoleKit() -+{ -+ bool hasConsoleKitManager = false; -+ CDBusMessage consoleKitMessage("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", "CanStop"); -+ -+ DBusError error; -+ dbus_error_init (&error); -+ DBusConnection *con = dbus_bus_get(DBUS_BUS_SYSTEM, &error); -+ -+ consoleKitMessage.Send(con, &error); -+ -+ if (!dbus_error_is_set(&error)) -+ hasConsoleKitManager = true; -+ else -+ CLog::Log(LOGDEBUG, "ConsoleKit.Manager: %s - %s", error.name, error.message); -+ -+ dbus_error_free (&error); -+ -+ bool hasUPower = false; -+ CDBusMessage deviceKitMessage("org.freedesktop.UDisks", "/org/freedesktop/UDisks", "org.freedesktop.UDisks", "EnumerateDevices"); -+ -+ deviceKitMessage.Send(con, &error); -+ -+ if (!dbus_error_is_set(&error)) -+ hasUPower = true; -+ else -+ CLog::Log(LOGDEBUG, "UPower: %s - %s", error.name, error.message); -+ -+ dbus_error_free (&error); -+ dbus_connection_unref(con); -+ -+ return hasUPower && hasConsoleKitManager; -+} -+ -+bool CConsoleUPowerSyscall::ConsoleKitMethodCall(const char *method) -+{ -+ CDBusMessage message("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", method); -+ DBusMessage *reply = message.SendSystem(); -+ if (reply) -+ { -+ dbus_bool_t boolean = FALSE; -+ -+ if (dbus_message_get_args (reply, NULL, DBUS_TYPE_BOOLEAN, &boolean, DBUS_TYPE_INVALID)) -+ return boolean; -+ } -+ -+ return false; -+} -+#endif -diff -Naur xbmc-29490/xbmc/linux/ConsoleUPowerSyscall.h xbmc-29490.patch/xbmc/linux/ConsoleUPowerSyscall.h ---- xbmc-29490/xbmc/linux/ConsoleUPowerSyscall.h 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-29490.patch/xbmc/linux/ConsoleUPowerSyscall.h 2010-04-25 23:12:52.125484748 +0200 -@@ -0,0 +1,50 @@ -+/* -+ * Copyright (C) 2005-2009 Team XBMC -+ * http://www.xbmc.org -+ * -+ * This Program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2, or (at your option) -+ * any later version. -+ * -+ * This Program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with XBMC; see the file COPYING. If not, write to -+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -+ * http://www.gnu.org/copyleft/gpl.html -+ * -+ */ -+ -+#ifdef HAS_DBUS -+#include "IPowerSyscall.h" -+ -+class CConsoleUPowerSyscall : public IPowerSyscall -+{ -+public: -+ CConsoleUPowerSyscall(); -+ virtual ~CConsoleUPowerSyscall() { } -+ -+ virtual bool Powerdown(); -+ virtual bool Suspend(); -+ virtual bool Hibernate(); -+ virtual bool Reboot(); -+ -+ virtual bool CanPowerdown(); -+ virtual bool CanSuspend(); -+ virtual bool CanHibernate(); -+ virtual bool CanReboot(); -+ -+ static bool HasDeviceConsoleKit(); -+private: -+ static bool ConsoleKitMethodCall(const char *method); -+ -+ bool m_CanPowerdown; -+ bool m_CanSuspend; -+ bool m_CanHibernate; -+ bool m_CanReboot; -+}; -+#endif -diff -Naur xbmc-29490/xbmc/linux/LinuxStorageProvider.h xbmc-29490.patch/xbmc/linux/LinuxStorageProvider.h ---- xbmc-29490/xbmc/linux/LinuxStorageProvider.h 2010-04-24 22:43:12.000000000 +0200 -+++ xbmc-29490.patch/xbmc/linux/LinuxStorageProvider.h 2010-04-25 23:12:52.126484868 +0200 -@@ -22,6 +22,7 @@ - #include "IStorageProvider.h" - #include "HALProvider.h" - #include "DeviceKitDisksProvider.h" -+#include "UDisksProvider.h" - #include "PosixMountProvider.h" - - class CLinuxStorageProvider : public IStorageProvider -@@ -32,7 +33,9 @@ - m_instance = NULL; - - #ifdef HAS_DBUS -- if (CDeviceKitDisksProvider::HasDeviceKitDisks()) -+ if (CUDisksProvider::HasUDisks() ) { -+ m_instance = new CUDisksProvider(); -+ } else if (CDeviceKitDisksProvider::HasDeviceKitDisks()) - m_instance = new CDeviceKitDisksProvider(); - #endif - #ifdef HAS_HAL -diff -Naur xbmc-29490/xbmc/linux/Makefile.in xbmc-29490.patch/xbmc/linux/Makefile.in ---- xbmc-29490/xbmc/linux/Makefile.in 2010-04-24 22:43:12.000000000 +0200 -+++ xbmc-29490.patch/xbmc/linux/Makefile.in 2010-04-25 23:12:52.127484639 +0200 -@@ -7,7 +7,7 @@ - - CXXFLAGS+=-fPIC #-DHAS_SDL - --SRCS=ConvUtils.cpp XEventUtils.cpp XFileUtils.cpp XHandle.cpp XSyncUtils.cpp XTimeUtils.cpp XMemUtils.cpp XThreadUtils.cpp NetworkLinux.cpp LinuxResourceCounter.cpp LinuxTimezone.cpp XRandR.cpp XCriticalSection.cpp XLCDproc.cpp HALManager.cpp HALPowerSyscall.cpp ConsoleDeviceKitPowerSyscall.cpp DBusUtil.cpp DBusMessage.cpp ZeroconfAvahi.cpp ZeroconfBrowserAvahi.cpp HALProvider.cpp PosixMountProvider.cpp DeviceKitDisksProvider.cpp -+SRCS=ConvUtils.cpp XEventUtils.cpp XFileUtils.cpp XHandle.cpp XSyncUtils.cpp XTimeUtils.cpp XMemUtils.cpp XThreadUtils.cpp NetworkLinux.cpp LinuxResourceCounter.cpp LinuxTimezone.cpp XRandR.cpp XCriticalSection.cpp XLCDproc.cpp HALManager.cpp HALPowerSyscall.cpp ConsoleDeviceKitPowerSyscall.cpp DBusUtil.cpp DBusMessage.cpp ZeroconfAvahi.cpp ZeroconfBrowserAvahi.cpp HALProvider.cpp PosixMountProvider.cpp DeviceKitDisksProvider.cpp UDisksProvider.cpp ConsoleUPowerSyscall.cpp - - LIB=linux.a - -diff -Naur xbmc-29490/xbmc/linux/UDisksProvider.cpp xbmc-29490.patch/xbmc/linux/UDisksProvider.cpp ---- xbmc-29490/xbmc/linux/UDisksProvider.cpp 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-29490.patch/xbmc/linux/UDisksProvider.cpp 2010-04-25 23:12:52.129484321 +0200 -@@ -0,0 +1,385 @@ -+/* -+ * Copyright (C) 2005-2009 Team XBMC -+ * http://www.xbmc.org -+ * -+ * This Program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2, or (at your option) -+ * any later version. -+ * -+ * This Program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with XBMC; see the file COPYING. If not, write to -+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -+ * http://www.gnu.org/copyleft/gpl.html -+ * -+ */ -+#include "UDisksProvider.h" -+#ifdef HAS_DBUS -+#include "Util.h" -+#include "AdvancedSettings.h" -+#include "LocalizeStrings.h" -+#include "log.h" -+ -+CUDiskDevice::CUDiskDevice(const char *DeviceKitUDI) -+{ -+ m_DeviceKitUDI = DeviceKitUDI; -+ m_UDI = ""; -+ m_MountPath = ""; -+ m_FileSystem = ""; -+ m_isMounted = false; -+ m_isMountedByUs = false; -+ m_isRemovable = false; -+ m_isPartition = false; -+ m_isFileSystem = false; -+ m_isSystemInternal = false; -+ m_PartitionSizeGiB = 0.0f; -+ Update(); -+} -+ -+void CUDiskDevice::Update() -+{ -+ CStdString str = CDBusUtil::GetVariant("org.freedesktop.UDisks", m_DeviceKitUDI.c_str(), "org.freedesktop.UDisks.Device", "IdUsage").asString(); -+ m_isFileSystem = str.Equals("filesystem"); -+ if (m_isFileSystem) -+ { -+ CVariant properties = CDBusUtil::GetAll("org.freedesktop.UDisks", m_DeviceKitUDI.c_str(), "org.freedesktop.UDisks.Device"); -+ -+ m_UDI = properties["IdUuid"].asString(); -+ m_Label = properties["IdLabel"].asString(); -+ m_FileSystem = properties["IdType"].asString(); -+ if (properties["DeviceMountPaths"].size() > 0) -+ m_MountPath = properties["DeviceMountPaths"][0].asString(); -+ m_isMounted = properties["DeviceIsMounted"].asBoolean(); -+ -+ m_PartitionSizeGiB = properties["PartitionSize"].asUnsignedInteger() / 1024.0 / 1024.0 / 1024.0; -+ m_isPartition = properties["DeviceIsPartition"].asBoolean(); -+ m_isSystemInternal = properties["DeviceIsSystemInternal"].asBoolean(); -+ if (m_isPartition) -+ { -+ CVariant isRemovable = CDBusUtil::GetVariant("org.freedesktop.UDisks", properties["PartitionSlave"].asString(), "org.freedesktop.UDisks.Device", "DeviceIsRemovable"); -+ -+ if ( !isRemovable.isNull() ) -+ m_isRemovable = isRemovable.asBoolean(); -+ else -+ m_isRemovable = false; -+ } -+ else -+ m_isRemovable = properties["DeviceIsRemovable"].asBoolean(); -+ } -+} -+ -+bool CUDiskDevice::Mount() -+{ -+ if (!m_isMounted && !m_isSystemInternal && m_isFileSystem) -+ { -+ CLog::Log(LOGDEBUG, "UDisks: Mounting %s", m_DeviceKitUDI.c_str()); -+ CDBusMessage message("org.freedesktop.UDisks", m_DeviceKitUDI.c_str(), "org.freedesktop.UDisks.Device", "FilesystemMount"); -+ message.AppendArgument(""); -+ const char *array[] = {}; -+ message.AppendArgument(array, 0); -+ -+ DBusMessage *reply = message.SendSystem(); -+ if (reply) -+ { -+ char *mountPoint; -+ if (dbus_message_get_args (reply, NULL, DBUS_TYPE_STRING, &mountPoint, DBUS_TYPE_INVALID)) -+ { -+ m_MountPath = mountPoint; -+ CLog::Log(LOGDEBUG, "UDisks: Sucessfully mounted %s on %s", m_DeviceKitUDI.c_str(), mountPoint); -+ m_isMountedByUs = m_isMounted = true; -+ } -+ } -+ -+ return m_isMounted; -+ } -+ else -+ CLog::Log(LOGDEBUG, "UDisks: Is not able to mount %s", toString().c_str()); -+ -+ return false; -+} -+ -+bool CUDiskDevice::UnMount() -+{ -+ if (m_isMounted && !m_isSystemInternal && m_isFileSystem) -+ { -+ CDBusMessage message("org.freedesktop.UDisks", m_DeviceKitUDI.c_str(), "org.freedesktop.UDisks.Device", "FilesystemUnmount"); -+ -+ const char *array[1]; -+ message.AppendArgument(array, 0); -+ -+ DBusMessage *reply = message.SendSystem(); -+ if (reply) -+ m_isMountedByUs = m_isMounted = false; -+ -+ return !m_isMounted; -+ } -+ else -+ CLog::Log(LOGDEBUG, "UDisks: Is not able to unmount %s", toString().c_str()); -+ -+ return false; -+} -+ -+CMediaSource CUDiskDevice::ToMediaShare() -+{ -+ CMediaSource source; -+ source.strPath = m_MountPath; -+ if (m_Label.empty()) -+ source.strName.Format("%.1f GB %s", m_PartitionSizeGiB, g_localizeStrings.Get(155).c_str()); -+ else -+ source.strName = m_Label; -+ source.m_iDriveType = !m_isSystemInternal ? CMediaSource::SOURCE_TYPE_REMOVABLE : CMediaSource::SOURCE_TYPE_LOCAL; -+ source.m_ignore = true; -+ return source; -+} -+ -+bool CUDiskDevice::IsApproved() -+{ -+ return (m_isFileSystem && m_isMounted && m_UDI.length() > 0 && (m_FileSystem.length() > 0 && !m_FileSystem.Equals("swap")) && !m_MountPath.Equals("/")); -+} -+ -+#define BOOL2SZ(b) ((b) ? "true" : "false") -+ -+CStdString CUDiskDevice::toString() -+{ -+ CStdString str; -+ str.Format("DeviceUDI %s: IsFileSystem %s HasFileSystem %s " -+ "IsSystemInternal %s IsMounted %s IsRemovable %s IsPartition %s", -+ m_DeviceKitUDI.c_str(), BOOL2SZ(m_isFileSystem), m_FileSystem, -+ BOOL2SZ(m_isSystemInternal), BOOL2SZ(m_isMounted), -+ BOOL2SZ(m_isRemovable), BOOL2SZ(m_isPartition)); -+ -+ return str; -+} -+ -+CUDisksProvider::CUDisksProvider() -+{ -+ dbus_error_init (&m_error); -+ m_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &m_error); -+ -+ dbus_bus_add_match(m_connection, "type='signal',interface='org.freedesktop.UDisks'", &m_error); -+ dbus_connection_flush(m_connection); -+ if (dbus_error_is_set(&m_error)) -+ { -+ CLog::Log(LOGERROR, "UDisks: Failed to attach to signal %s", m_error.message); -+ dbus_connection_unref(m_connection); -+ m_connection = NULL; -+ } -+} -+ -+CUDisksProvider::~CUDisksProvider() -+{ -+ DeviceMap::iterator itr; -+ -+ for (itr = m_AvailableDevices.begin(); itr != m_AvailableDevices.end(); ++itr) -+ delete m_AvailableDevices[itr->first]; -+ -+ m_AvailableDevices.clear(); -+ -+ if (m_connection) -+ { -+ dbus_connection_unref(m_connection); -+ m_connection = NULL; -+ } -+ -+ dbus_error_free (&m_error); -+} -+ -+void CUDisksProvider::Initialize() -+{ -+ CLog::Log(LOGDEBUG, "Selected UDisks as storage provider"); -+ m_DaemonVersion = atoi(CDBusUtil::GetVariant("org.freedesktop.UDisks", "/org/freedesktop/UDisks", "org.freedesktop.UDisks", "DaemonVersion").asString()); -+ CLog::Log(LOGDEBUG, "UDisks: DaemonVersion %i", m_DaemonVersion); -+ -+ CLog::Log(LOGDEBUG, "UDisks: Querying available devices"); -+ std::vector devices = EnumerateDisks(); -+ for (unsigned int i = 0; i < devices.size(); i++) -+ DeviceAdded(devices[i].c_str(), NULL); -+} -+ -+bool CUDisksProvider::Eject(CStdString mountpath) -+{ -+ DeviceMap::iterator itr; -+ CStdString path(mountpath); -+ CUtil::RemoveSlashAtEnd(path); -+ -+ for (itr = m_AvailableDevices.begin(); itr != m_AvailableDevices.end(); ++itr) -+ { -+ CUDiskDevice *device = itr->second; -+ if (device->m_MountPath.Equals(path)) -+ return device->UnMount(); -+ } -+ -+ return false; -+} -+ -+std::vector CUDisksProvider::GetDiskUsage() -+{ -+ std::vector devices; -+ DeviceMap::iterator itr; -+ -+ for(itr = m_AvailableDevices.begin(); itr != m_AvailableDevices.end(); ++itr) -+ { -+ CUDiskDevice *device = itr->second; -+ if (device->IsApproved()) -+ { -+ CStdString str; -+ str.Format("%s %.1f GiB", device->m_MountPath.c_str(), device->m_PartitionSizeGiB); -+ devices.push_back(str); -+ } -+ } -+ -+ return devices; -+} -+ -+bool CUDisksProvider::PumpDriveChangeEvents(IStorageEventsCallback *callback) -+{ -+ bool result = false; -+ if (m_connection) -+ { -+ dbus_connection_read_write(m_connection, 0); -+ DBusMessage *msg = dbus_connection_pop_message(m_connection); -+ -+ if (msg) -+ { -+ char *object; -+ if (dbus_message_get_args (msg, NULL, DBUS_TYPE_OBJECT_PATH, &object, DBUS_TYPE_INVALID)) -+ { -+ result = true; -+ if (dbus_message_is_signal(msg, "org.freedesktop.UDisks", "DeviceAdded")) -+ DeviceAdded(object, callback); -+ else if (dbus_message_is_signal(msg, "org.freedesktop.UDisks", "DeviceRemoved")) -+ DeviceRemoved(object, callback); -+ else if (dbus_message_is_signal(msg, "org.freedesktop.UDisks", "DeviceChanged")) -+ DeviceChanged(object, callback); -+ } -+ dbus_message_unref(msg); -+ } -+ } -+ return result; -+} -+ -+bool CUDisksProvider::HasUDisks() -+{ -+ bool hasUDisks = false; -+ CDBusMessage message("org.freedesktop.UDisks", "/org/freedesktop/UDisks", "org.freedesktop.UDisks", "EnumerateDevices"); -+ -+ DBusError error; -+ dbus_error_init (&error); -+ DBusConnection *con = dbus_bus_get(DBUS_BUS_SYSTEM, &error); -+ -+ message.Send(con, &error); -+ -+ if (!dbus_error_is_set(&error)) -+ hasUDisks = true; -+ else -+ CLog::Log(LOGDEBUG, "UDisks: %s - %s", error.name, error.message); -+ -+ dbus_error_free (&error); -+ dbus_connection_unref(con); -+ -+ return hasUDisks; -+} -+ -+void CUDisksProvider::DeviceAdded(const char *object, IStorageEventsCallback *callback) -+{ -+ CLog::Log(LOGDEBUG, "UDisks: DeviceAdded (%s)", object); -+ -+ if (m_AvailableDevices[object]) -+ { -+ CLog::Log(LOGWARNING, "UDisks: Inconsistency found! DeviceAdded on an indexed disk"); -+ delete m_AvailableDevices[object]; -+ } -+ -+ CUDiskDevice *device = NULL; -+ device = new CUDiskDevice(object); -+ m_AvailableDevices[object] = device; -+ -+ if (g_advancedSettings.m_handleMounting) -+ device->Mount(); -+ -+ CLog::Log(LOGDEBUG, "UDisks: DeviceAdded - %s", device->toString().c_str()); -+ if (device->m_isMounted && device->IsApproved()) -+ { -+ CLog::Log(LOGNOTICE, "UDisks: Added %s", device->m_MountPath.c_str()); -+ if (callback) -+ callback->OnStorageAdded(device->m_Label, device->m_MountPath); -+ } -+} -+ -+void CUDisksProvider::DeviceRemoved(const char *object, IStorageEventsCallback *callback) -+{ -+ CLog::Log(LOGDEBUG, "UDisks: DeviceRemoved (%s)", object); -+ -+ CUDiskDevice *device = m_AvailableDevices[object]; -+ if (device) -+ { -+ if (device->m_isMounted && callback) -+ callback->OnStorageUnsafelyRemoved(device->m_Label); -+ -+ delete m_AvailableDevices[object]; -+ m_AvailableDevices.erase(object); -+ } -+} -+ -+void CUDisksProvider::DeviceChanged(const char *object, IStorageEventsCallback *callback) -+{ -+ CLog::Log(LOGDEBUG, "UDisks: DeviceChanged (%s)", object); -+ -+ CUDiskDevice *device = m_AvailableDevices[object]; -+ if (device == NULL) -+ { -+ CLog::Log(LOGWARNING, "UDisks: Inconsistency found! DeviceChanged on an unindexed disk"); -+ DeviceAdded(object, callback); -+ } -+ else -+ { -+ bool mounted = device->m_isMounted; -+ device->Update(); -+ if (!mounted && device->m_isMounted && callback) -+ callback->OnStorageAdded(device->m_MountPath, device->m_Label); -+ else if (mounted && !device->m_isMounted && callback) -+ callback->OnStorageSafelyRemoved(device->m_Label); -+ -+ CLog::Log(LOGDEBUG, "UDisks: DeviceChanged - %s", device->toString().c_str()); -+ } -+} -+ -+std::vector CUDisksProvider::EnumerateDisks() -+{ -+ std::vector devices; -+ CDBusMessage message("org.freedesktop.UDisks", "/org/freedesktop/UDisks", "org.freedesktop.UDisks", "EnumerateDevices"); -+ DBusMessage *reply = message.SendSystem(); -+ if (reply) -+ { -+ char** disks = NULL; -+ int length = 0; -+ -+ if (dbus_message_get_args (reply, NULL, DBUS_TYPE_ARRAY, DBUS_TYPE_OBJECT_PATH, &disks, &length, DBUS_TYPE_INVALID)) -+ { -+ for (int i = 0; i < length; i++) -+ devices.push_back(disks[i]); -+ -+ dbus_free_string_array(disks); -+ } -+ } -+ -+ return devices; -+} -+ -+void CUDisksProvider::GetDisks(VECSOURCES& devices, bool EnumerateRemovable) -+{ -+ DeviceMap::iterator itr; -+ -+ for (itr = m_AvailableDevices.begin(); itr != m_AvailableDevices.end(); ++itr) -+ { -+ CUDiskDevice *device = itr->second; -+ if (device && device->IsApproved() && device->m_isSystemInternal != EnumerateRemovable) -+ devices.push_back(device->ToMediaShare()); -+ } -+} -+#endif -diff -Naur xbmc-29490/xbmc/linux/UDisksProvider.h xbmc-29490.patch/xbmc/linux/UDisksProvider.h ---- xbmc-29490/xbmc/linux/UDisksProvider.h 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-29490.patch/xbmc/linux/UDisksProvider.h 2010-04-25 23:12:52.130485628 +0200 -@@ -0,0 +1,86 @@ -+#pragma once -+/* -+ * Copyright (C) 2005-2009 Team XBMC -+ * http://www.xbmc.org -+ * -+ * This Program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2, or (at your option) -+ * any later version. -+ * -+ * This Program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with XBMC; see the file COPYING. If not, write to -+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -+ * http://www.gnu.org/copyleft/gpl.html -+ * -+ */ -+#include "IStorageProvider.h" -+#ifdef HAS_DBUS -+#include "DBusUtil.h" -+ -+class CUDiskDevice -+{ -+public: -+ CUDiskDevice(const char *DeviceKitUDI); -+ ~CUDiskDevice() { } -+ -+ void Update(); -+ -+ bool Mount(); -+ bool UnMount(); -+ -+ bool IsApproved(); -+ -+ CStdString toString(); -+ -+ CMediaSource ToMediaShare(); -+ -+ CStdString m_UDI, m_DeviceKitUDI, m_MountPath, m_FileSystem, m_Label; -+ bool m_isMounted, m_isMountedByUs, m_isRemovable, m_isPartition, m_isFileSystem, m_isSystemInternal; -+ float m_PartitionSizeGiB; -+}; -+ -+class CUDisksProvider : public IStorageProvider -+{ -+public: -+ CUDisksProvider(); -+ virtual ~CUDisksProvider(); -+ -+ virtual void Initialize(); -+ virtual void Stop() { } -+ -+ virtual void GetLocalDrives(VECSOURCES &localDrives) { GetDisks(localDrives, false); } -+ virtual void GetRemovableDrives(VECSOURCES &removableDrives) { GetDisks(removableDrives, true); } -+ -+ virtual bool Eject(CStdString mountpath); -+ -+ virtual std::vector GetDiskUsage(); -+ -+ virtual bool PumpDriveChangeEvents(IStorageEventsCallback *callback); -+ -+ static bool HasUDisks(); -+private: -+ typedef std::map DeviceMap; -+ typedef std::pair DevicePair; -+ -+ void DeviceAdded(const char *object, IStorageEventsCallback *callback); -+ void DeviceRemoved(const char *object, IStorageEventsCallback *callback); -+ void DeviceChanged(const char *object, IStorageEventsCallback *callback); -+ -+ std::vector EnumerateDisks(); -+ -+ void GetDisks(VECSOURCES& devices, bool EnumerateRemovable); -+ -+ int m_DaemonVersion; -+ -+ DeviceMap m_AvailableDevices; -+ -+ DBusConnection *m_connection; -+ DBusError m_error; -+}; -+#endif -diff -Naur xbmc-29490/xbmc/PowerManager.cpp xbmc-29490.patch/xbmc/PowerManager.cpp ---- xbmc-29490/xbmc/PowerManager.cpp 2010-04-24 22:43:14.000000000 +0200 -+++ xbmc-29490.patch/xbmc/PowerManager.cpp 2010-04-25 23:12:52.132484681 +0200 -@@ -35,6 +35,7 @@ - #ifdef __APPLE__ - #include "osx/CocoaPowerSyscall.h" - #elif defined(_LINUX) && defined(HAS_DBUS) -+#include "linux/ConsoleUPowerSyscall.h" - #include "linux/ConsoleDeviceKitPowerSyscall.h" - #ifdef HAS_HAL - #include "linux/HALPowerSyscall.h" -@@ -74,6 +75,8 @@ - #elif defined(_LINUX) && defined(HAS_DBUS) - if (CConsoleDeviceKitPowerSyscall::HasDeviceConsoleKit()) - m_instance = new CConsoleDeviceKitPowerSyscall(); -+ else if (CConsoleUPowerSyscall::HasDeviceConsoleKit()) -+ m_instance = new CConsoleUPowerSyscall(); - #ifdef HAS_HAL - else - m_instance = new CHALPowerSyscall(); diff --git a/packages/mediacenter/xbmc/url b/packages/mediacenter/xbmc/url index a97051b150..0aac1ae6ab 100644 --- a/packages/mediacenter/xbmc/url +++ b/packages/mediacenter/xbmc/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xbmc-29605.tar.bz2 +http://sources.openelec.tv/svn/xbmc-29740.tar.bz2 From 9f8260ab5fb5b7097f7f1d55493216af66abbbdb Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 3 May 2010 05:56:30 +0200 Subject: [PATCH 156/171] xbmc-theme-PM3-HD: - update to xbmc-theme-PM3-HD-29740 - make install script executable --- packages/mediacenter/xbmc-theme-PM3-HD/install | 0 packages/mediacenter/xbmc-theme-PM3-HD/url | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 packages/mediacenter/xbmc-theme-PM3-HD/install diff --git a/packages/mediacenter/xbmc-theme-PM3-HD/install b/packages/mediacenter/xbmc-theme-PM3-HD/install old mode 100644 new mode 100755 diff --git a/packages/mediacenter/xbmc-theme-PM3-HD/url b/packages/mediacenter/xbmc-theme-PM3-HD/url index 1c5183dbb3..14e5a13571 100644 --- a/packages/mediacenter/xbmc-theme-PM3-HD/url +++ b/packages/mediacenter/xbmc-theme-PM3-HD/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xbmc-theme-PM3-HD-29605.tar.bz2 +http://sources.openelec.tv/svn/xbmc-theme-PM3-HD-29740.tar.bz2 From fab5b8dedd50bdb0679351283b9b45611959b9f6 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 3 May 2010 05:56:48 +0200 Subject: [PATCH 157/171] xbmc-theme-Confluence: - update to xbmc-theme-Confluence-29740 --- packages/mediacenter/xbmc-theme-Confluence/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mediacenter/xbmc-theme-Confluence/url b/packages/mediacenter/xbmc-theme-Confluence/url index 6cbaee5ac4..3515dba1a9 100644 --- a/packages/mediacenter/xbmc-theme-Confluence/url +++ b/packages/mediacenter/xbmc-theme-Confluence/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xbmc-theme-Confluence-29605.tar.bz2 +http://sources.openelec.tv/svn/xbmc-theme-Confluence-29740.tar.bz2 From 6963b672808e41ba41fd7107ce881feaab016b67 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 3 May 2010 05:57:26 +0200 Subject: [PATCH 158/171] mkpkg_xbmc: - remove any previous theme file --- tools/mkpkg/mkpkg_xbmc | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/mkpkg/mkpkg_xbmc b/tools/mkpkg/mkpkg_xbmc index e22781a15e..43dae07746 100755 --- a/tools/mkpkg/mkpkg_xbmc +++ b/tools/mkpkg/mkpkg_xbmc @@ -19,6 +19,7 @@ echo "cleaning sources..." echo "seperating theme..." rm -rf xbmc-theme-Confluence-$SVN_REV mv xbmc-$SVN_REV/addons/skin.confluence xbmc-theme-Confluence-$SVN_REV + rm -rf xbmc-theme-PM3-HD-$SVN_REV mv xbmc-$SVN_REV/addons/skin.pm3-hd xbmc-theme-PM3-HD-$SVN_REV echo "cleaning sources..." From b222d1407830d578bc6d2647a64c2e66a29c09a1 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 3 May 2010 05:58:24 +0200 Subject: [PATCH 159/171] mkpkg_xbmc-pvr: - adapt mkpkg_xbmc-pvr to newest svn --- tools/mkpkg/mkpkg_xbmc-pvr | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tools/mkpkg/mkpkg_xbmc-pvr b/tools/mkpkg/mkpkg_xbmc-pvr index 9a143245ad..f09a387f46 100755 --- a/tools/mkpkg/mkpkg_xbmc-pvr +++ b/tools/mkpkg/mkpkg_xbmc-pvr @@ -18,13 +18,14 @@ echo "cleaning sources..." echo "seperating theme..." rm -rf xbmc-pvr-theme-Confluence-$SVN_REV - mv xbmc-pvr-$SVN_REV/skin/Confluence xbmc-pvr-theme-Confluence-$SVN_REV + mv xbmc-pvr-$SVN_REV/addons/skin.confluence xbmc-pvr-theme-Confluence-$SVN_REV + rm -rf xbmc-pvr-theme-PM3-HD-$SVN_REV + mv xbmc-pvr-$SVN_REV/addons/skin.pm3-hd xbmc-pvr-theme-PM3-HD-$SVN_REV echo "cleaning sources..." - rm -rf xbmc-pvr-$SVN_REV/visualizations/XBMCProjectM/win32 + rm -rf xbmc-pvr-$SVN_REV/visualisations rm -rf xbmc-pvr-$SVN_REV/lib/libSDL-* rm -rf xbmc-pvr-$SVN_REV/lib/libcurl-* - rm -rf xbmc-pvr-$SVN_REV/skin rm -rf xbmc-pvr-$SVN_REV/project for i in "Changelog" "Fake\ Episode\ Maker" "MingwBuildEnvironment" \ @@ -40,7 +41,9 @@ echo "cleaning sources..." echo "packing sources..." tar cvjf xbmc-pvr-$SVN_REV.tar.bz2 xbmc-pvr-$SVN_REV tar cvjf xbmc-pvr-theme-Confluence-$SVN_REV.tar.bz2 xbmc-pvr-theme-Confluence-$SVN_REV + tar cvjf xbmc-pvr-theme-PM3-HD-$SVN_REV.tar.bz2 xbmc-pvr-theme-PM3-HD-$SVN_REV echo "remove temporary sourcedir..." rm -rf xbmc-pvr-$SVN_REV - rm -rf xbmc-pvr-theme-Confluence-$SVN_REV \ No newline at end of file + rm -rf xbmc-pvr-theme-Confluence-$SVN_REV + rm -rf xbmc-pvr-theme-PM3-HD-$SVN_REV \ No newline at end of file From 20d13e6fde4eeba41858d5462e774257fccf8895 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 4 May 2010 00:42:32 +0200 Subject: [PATCH 160/171] xbmc: - update to xbmc-29759 --- packages/mediacenter/xbmc/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mediacenter/xbmc/url b/packages/mediacenter/xbmc/url index 0aac1ae6ab..306975395f 100644 --- a/packages/mediacenter/xbmc/url +++ b/packages/mediacenter/xbmc/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xbmc-29740.tar.bz2 +http://sources.openelec.tv/svn/xbmc-29759.tar.bz2 From 9af6a4e37bd88d5578d910a258b2db44578666f2 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 4 May 2010 00:42:51 +0200 Subject: [PATCH 161/171] xbmc-theme-Confluence: - update to xbmc-theme-Confluence-29759 --- packages/mediacenter/xbmc-theme-Confluence/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mediacenter/xbmc-theme-Confluence/url b/packages/mediacenter/xbmc-theme-Confluence/url index 3515dba1a9..c4a759a223 100644 --- a/packages/mediacenter/xbmc-theme-Confluence/url +++ b/packages/mediacenter/xbmc-theme-Confluence/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xbmc-theme-Confluence-29740.tar.bz2 +http://sources.openelec.tv/svn/xbmc-theme-Confluence-29759.tar.bz2 From e6ff7dcceeb2868b74f2bc4b0a2f139634d5d1ef Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 4 May 2010 00:43:09 +0200 Subject: [PATCH 162/171] xbmc-theme-PM3-HD: - update to xbmc-theme-PM3-HD-29759 --- packages/mediacenter/xbmc-theme-PM3-HD/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mediacenter/xbmc-theme-PM3-HD/url b/packages/mediacenter/xbmc-theme-PM3-HD/url index 14e5a13571..00fb3566c4 100644 --- a/packages/mediacenter/xbmc-theme-PM3-HD/url +++ b/packages/mediacenter/xbmc-theme-PM3-HD/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xbmc-theme-PM3-HD-29740.tar.bz2 +http://sources.openelec.tv/svn/xbmc-theme-PM3-HD-29759.tar.bz2 From 4f3970404c090fb8bc6f7162712eb87407f1d963 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 4 May 2010 11:08:38 +0200 Subject: [PATCH 163/171] LVM: - update to LVM2.2.02.64 --- packages/sysutils/LVM2/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/LVM2/url b/packages/sysutils/LVM2/url index 5d60e08e67..20f12b2c86 100644 --- a/packages/sysutils/LVM2/url +++ b/packages/sysutils/LVM2/url @@ -1 +1 @@ -ftp://sources.redhat.com/pub/lvm2/LVM2.2.02.63.tgz +ftp://sources.redhat.com/pub/lvm2/LVM2.2.02.64.tgz From f8af0e6544939a549e9f1499b60494dbe2aa909c Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 5 May 2010 21:45:00 +0200 Subject: [PATCH 164/171] new package: - add transmission bittorent daemon --- packages/image/install | 3 ++ packages/network/transmission/build | 31 +++++++++++++ .../transmission/config/transmission.conf | 26 +++++++++++ .../transmission/init.d/43_transmission | 43 +++++++++++++++++++ packages/network/transmission/install | 24 +++++++++++ packages/network/transmission/url | 1 + projects/ION/options | 3 ++ projects/generic/options | 3 ++ projects/intel/options | 3 ++ 9 files changed, 137 insertions(+) create mode 100644 packages/network/transmission/build create mode 100644 packages/network/transmission/config/transmission.conf create mode 100644 packages/network/transmission/init.d/43_transmission create mode 100644 packages/network/transmission/install create mode 100644 packages/network/transmission/url diff --git a/packages/image/install b/packages/image/install index ef78007ecd..499c3f864a 100755 --- a/packages/image/install +++ b/packages/image/install @@ -67,6 +67,9 @@ case "$2" in # Network support [ "$NETWORK" = yes ] && $SCRIPTS/install network +# Transmission BitTorrent support + [ "$TRANSMISSION" = yes ] && $SCRIPTS/install transmission + # Graphic support [ ! "$DISPLAYSERVER" = no ] && $SCRIPTS/install $DISPLAYSERVER diff --git a/packages/network/transmission/build b/packages/network/transmission/build new file mode 100644 index 0000000000..bca83f05c9 --- /dev/null +++ b/packages/network/transmission/build @@ -0,0 +1,31 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/build toolchain +$SCRIPTS/build zlib +$SCRIPTS/build openssl +$SCRIPTS/build curl + +cd $PKG_BUILD + +./configure --host=$TARGET_NAME \ + --build=$HOST_NAME \ + --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --disable-debug \ + --disable-static \ + --enable-shared \ + --enable-largefile \ + --disable-gtk \ + --disable-libnotify \ + --disable-libappindicator \ + --disable-libcanberra \ + --disable-gconf2 \ + --disable-nls \ + --enable-cli \ + --disable-mac \ + --enable-daemon \ + +make diff --git a/packages/network/transmission/config/transmission.conf b/packages/network/transmission/config/transmission.conf new file mode 100644 index 0000000000..b42588e335 --- /dev/null +++ b/packages/network/transmission/config/transmission.conf @@ -0,0 +1,26 @@ +# Setup Transmission BitTorrent daemon + +# start transmission at boot ( yes / no ) + TRANSMISSION_START="no" + +# Allow RPC access to a comma-delimited whitelist of IP addresses. +# Wildcards can be specified in an address by using '*'. Default: +# "127.0.0.1" Example: "127.0.0.*,192.168.1.*" + TRANSMISSION_IP="127.0.0.1,192.168.0.*" + +# use authentification for the web frontend ( yes / no ) + TRANSMISSION_AUTH="yes" + +# username for logging to the webfrontend + TRANSMISSION_USER="openelec" + +# password for logging to the webfrontend + TRANSMISSION_PWD="openelec" + +# incoming dir for not completed files (relative to downloaddir / +# "none" for disabling incoming dir) + TRANSMISSION_INCDIR="incoming" + +# watch dir for .torrent files (relative to downloaddir / +# "none" for disabling watch dir) + TRANSMISSION_WATCHDIR="watch" diff --git a/packages/network/transmission/init.d/43_transmission b/packages/network/transmission/init.d/43_transmission new file mode 100644 index 0000000000..aa02d5def5 --- /dev/null +++ b/packages/network/transmission/init.d/43_transmission @@ -0,0 +1,43 @@ +# start transmission bt daemon +# +# runlevels: openelec, textmode + +[ -f /storage/.config/transmission.conf ] && . /storage/.config/transmission.conf || exit 0 + +( + if [ "$TRANSMISSION_START" = "yes" ]; then + + progress "Starting Transmission BT daemon" + + TRANSMISSION_ARG="$TRANSMISSION_ARG -w /storage/downloads" + TRANSMISSION_ARG="$TRANSMISSION_ARG -e /var/log/transmission.log" + TRANSMISSION_ARG="$TRANSMISSION_ARG -g /storage/.cache/transmission" + TRANSMISSION_ARG="$TRANSMISSION_ARG -a $TRANSMISSION_IP" + + if [ "$TRANSMISSION_AUTH" = "yes" ]; then + TRANSMISSION_ARG="$TRANSMISSION_ARG -t" + TRANSMISSION_ARG="$TRANSMISSION_ARG -u $TRANSMISSION_USER" + TRANSMISSION_ARG="$TRANSMISSION_ARG -v $TRANSMISSION_PWD" + else + TRANSMISSION_ARG="$TRANSMISSION_ARG -T" + fi + + if [ "$TRANSMISSION_INCDIR" = "none" ]; then + TRANSMISSION_ARG="$TRANSMISSION_ARG --no-incomplete-dir" + else + TRANSMISSION_ARG="$TRANSMISSION_ARG --incomplete-dir \ + /storage/downloads/$TRANSMISSION_INCDIR" + $IONICE mkdir -p /storage/downloads/$TRANSMISSION_INCDIR + fi + + if [ "$TRANSMISSION_WATCHDIR" = "none" ]; then + TRANSMISSION_ARG="$TRANSMISSION_ARG --no-watch-dir" + else + TRANSMISSION_ARG="$TRANSMISSION_ARG --watch-dir \ + /storage/downloads/$TRANSMISSION_WATCHDIR" + $IONICE mkdir -p /storage/downloads/$TRANSMISSION_WATCHDIR + fi + + transmission-daemon $TRANSMISSION_ARG + fi +)& \ No newline at end of file diff --git a/packages/network/transmission/install b/packages/network/transmission/install new file mode 100644 index 0000000000..03aaad243e --- /dev/null +++ b/packages/network/transmission/install @@ -0,0 +1,24 @@ +#!/bin/sh + +. config/options + +$SCRIPTS/build zlib +$SCRIPTS/build openssl +$SCRIPTS/build curl + +PKG_DIR=`find $PACKAGES -type d -name $1` + +mkdir -p $INSTALL/usr/sbin + cp $PKG_BUILD/daemon/transmission-daemon $INSTALL/usr/sbin + cp $PKG_BUILD/daemon/transmission-remote $INSTALL/usr/sbin + +mkdir -p $INSTALL/usr/bin + cp $PKG_BUILD/cli/transmissioncli $INSTALL/usr/bin + +mkdir -p $INSTALL/usr/share/transmission/web + cp -R $PKG_BUILD/web/* $INSTALL/usr/share/transmission/web + find $INSTALL/usr/share/transmission/web -name "Makefile*" -exec rm -rf {} ";" + rm -rf $INSTALL/usr/share/transmission/web/LICENSE + +mkdir -p $INSTALL/usr/config + cp $PKG_DIR/config/transmission.conf $INSTALL/usr/config \ No newline at end of file diff --git a/packages/network/transmission/url b/packages/network/transmission/url new file mode 100644 index 0000000000..3b77ff5833 --- /dev/null +++ b/packages/network/transmission/url @@ -0,0 +1 @@ +http://mirrors.m0k.org/transmission/files/transmission-1.93.tar.bz2 \ No newline at end of file diff --git a/projects/ION/options b/projects/ION/options index 90aa5c90fb..081c8cfc81 100644 --- a/projects/ION/options +++ b/projects/ION/options @@ -71,6 +71,9 @@ # build and install Samba Server (yes / no) SAMBA_SERVER="yes" +# build and install Transmission BitTorrent daemon (yes / no) + TRANSMISSION="yes" + # todo (need for vdr?) SERVICES="yes" diff --git a/projects/generic/options b/projects/generic/options index 9445078e59..9c32b7efbf 100644 --- a/projects/generic/options +++ b/projects/generic/options @@ -71,6 +71,9 @@ # build and install Samba Server (yes / no) SAMBA_SERVER="yes" +# build and install Transmission BitTorrent daemon (yes / no) + TRANSMISSION="yes" + # todo (need for vdr?) SERVICES="yes" diff --git a/projects/intel/options b/projects/intel/options index a2f9a43a21..ccba140b6f 100644 --- a/projects/intel/options +++ b/projects/intel/options @@ -71,6 +71,9 @@ # build and install Samba Server (yes / no) SAMBA_SERVER="yes" +# build and install Transmission BitTorrent daemon (yes / no) + TRANSMISSION="yes" + # todo (need for vdr?) SERVICES="yes" From eea35d47b1d61f82bf5f247b3942b3c45a56f370 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Thu, 6 May 2010 00:23:33 +0200 Subject: [PATCH 165/171] xbmc: - update to xbmc-29818 --- packages/mediacenter/xbmc/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mediacenter/xbmc/url b/packages/mediacenter/xbmc/url index 306975395f..2d2f808d42 100644 --- a/packages/mediacenter/xbmc/url +++ b/packages/mediacenter/xbmc/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xbmc-29759.tar.bz2 +http://sources.openelec.tv/svn/xbmc-29818.tar.bz2 From bfb405965da5350badef613ee80c5571c7f49963 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Thu, 6 May 2010 00:23:51 +0200 Subject: [PATCH 166/171] xbmc-theme-Confluence: - update to xbmc-theme-Confluence-29818 --- packages/mediacenter/xbmc-theme-Confluence/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mediacenter/xbmc-theme-Confluence/url b/packages/mediacenter/xbmc-theme-Confluence/url index c4a759a223..fc60dd88b9 100644 --- a/packages/mediacenter/xbmc-theme-Confluence/url +++ b/packages/mediacenter/xbmc-theme-Confluence/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xbmc-theme-Confluence-29759.tar.bz2 +http://sources.openelec.tv/svn/xbmc-theme-Confluence-29818.tar.bz2 From 86ef8ae6818f483b0c656830b8ab35a7c4f7f0b2 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Thu, 6 May 2010 00:24:13 +0200 Subject: [PATCH 167/171] xbmc-theme-PM3-HD: - update to xbmc-theme-PM3-HD-29818 --- packages/mediacenter/xbmc-theme-PM3-HD/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mediacenter/xbmc-theme-PM3-HD/url b/packages/mediacenter/xbmc-theme-PM3-HD/url index 00fb3566c4..15cf6f9d5f 100644 --- a/packages/mediacenter/xbmc-theme-PM3-HD/url +++ b/packages/mediacenter/xbmc-theme-PM3-HD/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xbmc-theme-PM3-HD-29759.tar.bz2 +http://sources.openelec.tv/svn/xbmc-theme-PM3-HD-29818.tar.bz2 From 96aa512a4dcc0954bfc43d9c0ab5900b8ff21c80 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Thu, 6 May 2010 00:24:58 +0200 Subject: [PATCH 168/171] transmission: - dont build and install transmissioncli and transmission-remote --- packages/network/transmission/build | 2 +- packages/network/transmission/install | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) mode change 100644 => 100755 packages/network/transmission/build mode change 100644 => 100755 packages/network/transmission/install diff --git a/packages/network/transmission/build b/packages/network/transmission/build old mode 100644 new mode 100755 index bca83f05c9..f5d9252226 --- a/packages/network/transmission/build +++ b/packages/network/transmission/build @@ -24,7 +24,7 @@ cd $PKG_BUILD --disable-libcanberra \ --disable-gconf2 \ --disable-nls \ - --enable-cli \ + --disable-cli \ --disable-mac \ --enable-daemon \ diff --git a/packages/network/transmission/install b/packages/network/transmission/install old mode 100644 new mode 100755 index 03aaad243e..8be2bf7b95 --- a/packages/network/transmission/install +++ b/packages/network/transmission/install @@ -10,10 +10,6 @@ PKG_DIR=`find $PACKAGES -type d -name $1` mkdir -p $INSTALL/usr/sbin cp $PKG_BUILD/daemon/transmission-daemon $INSTALL/usr/sbin - cp $PKG_BUILD/daemon/transmission-remote $INSTALL/usr/sbin - -mkdir -p $INSTALL/usr/bin - cp $PKG_BUILD/cli/transmissioncli $INSTALL/usr/bin mkdir -p $INSTALL/usr/share/transmission/web cp -R $PKG_BUILD/web/* $INSTALL/usr/share/transmission/web From 60910917e4fe32aaacd810b821bfea00c8393c87 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Thu, 6 May 2010 00:25:20 +0200 Subject: [PATCH 169/171] autoupdate: - fix locking --- packages/sysutils/autoupdate/scripts/autoupdate.devel | 8 +++----- packages/sysutils/autoupdate/scripts/autoupdate.release | 8 +++----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/packages/sysutils/autoupdate/scripts/autoupdate.devel b/packages/sysutils/autoupdate/scripts/autoupdate.devel index e5a128b163..6686975359 100755 --- a/packages/sysutils/autoupdate/scripts/autoupdate.devel +++ b/packages/sysutils/autoupdate/scripts/autoupdate.devel @@ -6,8 +6,6 @@ if [ ! -f /var/lock/update.lock ]; then if [ "$AUTOUPDATE" = "manually" -o "$AUTOUPDATE" = "auto" ]; then - # locking autoupdate - touch /var/lock/update.lock # sleep a bit, maybe we have a lot of work ;-) usleep 30000000 @@ -42,14 +40,14 @@ if [ ! -f /var/lock/update.lock ]; then # show a message if a new version is avaible send_message "New update avaible: r$NEW_VERSION - please update manually" - # remove locking - rm -rf /var/lock/update.lock - elif [ "$AUTOUPDATE" = "auto" ]; then # show a message if a new version is avaible send_message "New update avaible: r$NEW_VERSION - downloading and extract the new version..." + # locking autoupdate + touch /var/lock/update.lock + # downloading the new version wget -c $UPDATEURL/$NEW_IMAGE.tar.bz2 -P /tmp diff --git a/packages/sysutils/autoupdate/scripts/autoupdate.release b/packages/sysutils/autoupdate/scripts/autoupdate.release index 3d1f5cdfdf..0216872fdf 100755 --- a/packages/sysutils/autoupdate/scripts/autoupdate.release +++ b/packages/sysutils/autoupdate/scripts/autoupdate.release @@ -6,8 +6,6 @@ if [ ! -f /var/lock/update.lock ]; then if [ "$AUTOUPDATE" = "manually" -o "$AUTOUPDATE" = "auto" ]; then - # locking autoupdate - touch /var/lock/update.lock # sleep a bit, maybe we have a lot of work ;-) usleep 30000000 @@ -49,14 +47,14 @@ if [ ! -f /var/lock/update.lock ]; then # show a message if a new version is avaible send_message "New update avaible: $NEW_VERSION - please update manually" - # remove locking - rm -rf /var/lock/update.lock - elif [ "$AUTOUPDATE" = "auto" ]; then # show a message if a new version is avaible send_message "New update avaible: $NEW_VERSION - downloading and extract the new version..." + # locking autoupdate + touch /var/lock/update.lock + # downloading the new version wget -c $UPDATEURL/$NEW_IMAGE.tar.bz2 -P /tmp From e3cd3c8753ed9f29bbb5e76a7b42a14dd1b89720 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Thu, 6 May 2010 00:26:10 +0200 Subject: [PATCH 170/171] xf86-video-nvidia: - update to NVIDIA-Linux-x86-195.36.24 - update to NVIDIA-Linux-x86_64-195.36.24 --- packages/x11/driver/xf86-video-nvidia/url | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/x11/driver/xf86-video-nvidia/url b/packages/x11/driver/xf86-video-nvidia/url index 9daaa44db8..adb112d0a8 100644 --- a/packages/x11/driver/xf86-video-nvidia/url +++ b/packages/x11/driver/xf86-video-nvidia/url @@ -1,2 +1,2 @@ -ftp://download.nvidia.com/XFree86/Linux-x86/195.36.15/NVIDIA-Linux-x86-195.36.15-pkg0.run -ftp://download.nvidia.com/XFree86/Linux-x86_64/195.36.15/NVIDIA-Linux-x86_64-195.36.15-pkg0.run +ftp://download.nvidia.com/XFree86/Linux-x86/195.36.24/NVIDIA-Linux-x86-195.36.24-pkg0.run +ftp://download.nvidia.com/XFree86/Linux-x86_64/195.36.24/NVIDIA-Linux-x86_64-195.36.24-pkg0.run From 4c12e3dec02d2d5df8e2751e9fca187600e098ca Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Thu, 6 May 2010 01:05:33 +0200 Subject: [PATCH 171/171] xorg-server: - update to xorg-server-1.7.7 --- packages/x11/xserver/xorg-server/url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x11/xserver/xorg-server/url b/packages/x11/xserver/xorg-server/url index 44f6c589ee..f25610e0d0 100644 --- a/packages/x11/xserver/xorg-server/url +++ b/packages/x11/xserver/xorg-server/url @@ -1 +1 @@ -http://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.7.6.902.tar.bz2 \ No newline at end of file +http://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.7.7.tar.bz2 \ No newline at end of file